Текстовый юникс-вей vs запросы к БД.
Когда
vitus_wagner в очередной раз толкает у себя в ЖЖ глобальные идеи на тему "как нам обустроить IT" там всегда всплывает ключевым аспектом unix-way в его аспекте "используем множество мелких программ, увязывая их через текстовый ввод-вывод".
Я же постоянно там на это отвечаю, что счетаю нужным увязывание сделать строго типизированным, чтобы быть уверенным, что это дело не поломается, когда в какой-нибудь мелкой утилите поменяют формат ввода или вывода.
И там же у
vitus_wagner как-то было обсуждение, как этот подход скрестить с GUI-программами, потому что у них другая модель, не текстовый ввод-вывод, а ожидание событий от пользователя.
Вот сейчас сижу смотрю на свою почту в Mozilla Thunderbird и понимаю, что мне не хватает там возможности сделать запрос типа "все непрочитанные письма из всех ящиков с сортировкой по дате и отметками к какому из проектов оно относится".
Т.е. если по хорошему, то в любой гуманной проге работающей со большими объемами структурированных данных, подобно реляционной(не обязательно, главное наличие схемы/типов/структуры) БД, должна быть вкручена некая консоль с REPL, где можно было бы на ходу пилить запросы, сохранять их для будущего использования, итд.
Я в самодельном фреймворке, на котором основано несколько штук наших оперденей, сделал похожую вещь - она уже 5 лет используется на полную катушку, вплоть до того, что можно разрабатывать новый функционал вообще не открывая средства разработки - прямо в рабочей проге. (про одну из возможностей Firebird на которой это построено, будет отдельный пост).
Сейчас в бзодотнетовском варианте хотелось бы сделать то же самое, только еще более навороченное, с запоминанием промежуточных результатов, итд (похоже на натуральный REPL, типа GHCi или F# консоли), но это надо мозг расшевеливать будет сильно.
Т.е. основная идея: текстовый unix-way это конечно очень хорошо, но хочется статической типизации.
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
Я же постоянно там на это отвечаю, что счетаю нужным увязывание сделать строго типизированным, чтобы быть уверенным, что это дело не поломается, когда в какой-нибудь мелкой утилите поменяют формат ввода или вывода.
И там же у
![[livejournal.com profile]](https://www.dreamwidth.org/img/external/lj-userinfo.gif)
Вот сейчас сижу смотрю на свою почту в Mozilla Thunderbird и понимаю, что мне не хватает там возможности сделать запрос типа "все непрочитанные письма из всех ящиков с сортировкой по дате и отметками к какому из проектов оно относится".
Т.е. если по хорошему, то в любой гуманной проге работающей со большими объемами структурированных данных, подобно реляционной(не обязательно, главное наличие схемы/типов/структуры) БД, должна быть вкручена некая консоль с REPL, где можно было бы на ходу пилить запросы, сохранять их для будущего использования, итд.
Я в самодельном фреймворке, на котором основано несколько штук наших оперденей, сделал похожую вещь - она уже 5 лет используется на полную катушку, вплоть до того, что можно разрабатывать новый функционал вообще не открывая средства разработки - прямо в рабочей проге. (про одну из возможностей Firebird на которой это построено, будет отдельный пост).
Сейчас в бзодотнетовском варианте хотелось бы сделать то же самое, только еще более навороченное, с запоминанием промежуточных результатов, итд (похоже на натуральный REPL, типа GHCi или F# консоли), но это надо мозг расшевеливать будет сильно.
Т.е. основная идея: текстовый unix-way это конечно очень хорошо, но хочется статической типизации.
no subject
А так оно сломается при сборке у нас, что гораздо проще поправить, чем копаться в мегабайтах логов с продакшена без возможности посмотреть, что же там у пользователей на самом деле происходит.
no subject
Вот у нас есть команда, выдающая в stdout список файлов. Мы ее решили тайком отрефакторить, поменяв без объявления войны вид ожидаемой выдачи. Все разлетелось, как выяснилось при тестировании.
А в другом проекте тоже есть команда, выдающая список объектов типа "элемент списка файлов". Мы ее решили тайком отрефакторить, поменяв без объявления войны тип "список элементов списка файлов" на "список элементов списка обыкновенных файлов". Все разлетелось, как выяснилось при тестировании.
Что-то не могу найти различий. Общее есть, а различий - нет.
no subject
no subject
В скриптах одно из основных преимуществ -- это возможность позднего связывания компонентов. В какой момент времени вы предлагаете делать проверку типов?
no subject
no subject
К тому же eval и ему подобные вещи станут невозможны.
no subject
no subject
Версионирование интерфейса происходит и без того достаточно редко, а версионирование реализации (багфиксы) имеют слабое отношение к такому же для интерфейсов. Иногда бываит, но чаще нет.
no subject
no subject
no subject