metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2010-03-17 07:48 pm

Текстовый юникс-вей vs запросы к БД.

Когда [livejournal.com profile] vitus_wagner в очередной раз толкает у себя в ЖЖ глобальные идеи на тему "как нам обустроить IT" там всегда всплывает ключевым аспектом unix-way в его аспекте "используем множество мелких программ, увязывая их через текстовый ввод-вывод".

Я же постоянно там на это отвечаю, что счетаю нужным увязывание сделать строго типизированным, чтобы быть уверенным, что это дело не поломается, когда в какой-нибудь мелкой утилите поменяют формат ввода или вывода.
И там же у [livejournal.com profile] vitus_wagner как-то было обсуждение, как этот подход скрестить с GUI-программами, потому что у них другая модель, не текстовый ввод-вывод, а ожидание событий от пользователя.

Вот сейчас сижу смотрю на свою почту в Mozilla Thunderbird и понимаю, что мне не хватает там возможности сделать запрос типа "все непрочитанные письма из всех ящиков с сортировкой по дате и отметками к какому из проектов оно относится".

Т.е. если по хорошему, то в любой гуманной проге работающей со большими объемами структурированных данных, подобно реляционной(не обязательно, главное наличие схемы/типов/структуры) БД, должна быть вкручена некая консоль с REPL, где можно было бы на ходу пилить запросы, сохранять их для будущего использования, итд.

Я в самодельном фреймворке, на котором основано несколько штук наших оперденей, сделал похожую вещь - она уже 5 лет используется на полную катушку, вплоть до того, что можно разрабатывать новый функционал вообще не открывая средства разработки - прямо в рабочей проге. (про одну из возможностей Firebird на которой это построено, будет отдельный пост).

Сейчас в бзодотнетовском варианте хотелось бы сделать то же самое, только еще более навороченное, с запоминанием промежуточных результатов, итд (похоже на натуральный REPL, типа GHCi или F# консоли), но это надо мозг расшевеливать будет сильно.


Т.е. основная идея: текстовый unix-way это конечно очень хорошо, но хочется статической типизации.

[identity profile] volodymir-k.livejournal.com 2010-03-19 10:44 am (UTC)(link)
Идея например COM в том, что в реестре регистрируется библиотека типов, предоставляемых объектов, и при запуске скрипта на выполнение бейсиком делается попытка разрулить все вызовы методов объекта в программе (на этапе скажем синтаксического анализа и перевад в байт-код), и если будет структурная ошибка, то сказать прямо сразу, а не через например 5 часов необратимых операций.

Версионирование интерфейса происходит и без того достаточно редко, а версионирование реализации (багфиксы) имеют слабое отношение к такому же для интерфейсов. Иногда бываит, но чаще нет.