четверг, 30 июня 2011 г.

Отладка поточных интерфейсов

Их отладка очень напоминает медитативный процесс созерцания движения алгоритма по дереву разбора. Глубже по ветке внутрь, выше к стволу и опять обратно.
Когда всё работает даже не задумываешься как оно устроено, но вот когда глючит - вот тут набегаешься. И потеря фокуса внимания - лишь малая проблема.
Приходится рисовать или помнить всё дерево объектов, что созданы поточными интерфейсами и хорошо бы ещё некоторую дополнительную информацию. Решив писать проект для скорости на Delphi 7 я пришёл к тому, что через два года уже не так просто отойти от этой системы в сторону Net.
А в самой среде отладка даже с "Окном просмотра" не так комфортна как в Visual Studio. Там хоть дерево можно было посмотреть. Тут же приходиться медитировать над тем, что же работает и что может быть причиной отказа.
В общем сложилось впечатление, что поточные интерфейсы очень капризный инструмент. Мощь его велика, но когда она оборачивается против тебя, чувствуешь, что многое ещё предстоит изучить.
Как я понял - поточные интерфейсы не для слабых духом.

Поточные интерфейсы (Fluent Interfaces)

Работаю над внутренним языком и увидел, что поточные интерфейсы обеспечивают более читабельный код. Но как при любой уборке - в месте реализации этих интерфейсов вечно творится хаос.
Ведь для поддержания их работоспособности нужно учитывать зависимости. Любимая ООП парадигма отходит на второй план: тут уже не до сокрытия информации - нужно знать кто и когда тебя вызвал, чтобы можно было вернуться на уровень назад.
В общем впечатления двоякие: код пишется легче, его уровень выше и ближе к предметной области; поддержка поточных интерфейсов приводит к увеличению связей. Хорошо ещё можно всё это спрятать в один модуль. Но это напоминает уборку с заметанием мусора под шкаф или ковёр. Вроде всё чисто, но есть "тайные места", где увеличено количество мусора.

Надо будет попробовать рефакторить этот спагетти код поддержки. Может поточные интерфейсы можно реализовать соблюдая чистое ООП?

среда, 29 июня 2011 г.

DSL и с чем его едят

Последнее время увлёкся созданием DSL как внутренних, так и внешних. Это очень увлекательно и меняет подход к программированию.

Как на другом понятийном уровне пишешь. Да, не спорю - поточные интерфейсы замучаешься отлаживать, но при этом получается красивый и читабельный код, что немаловажно. Мы ведь читаем код в 10 раз больше, чем пишем.

Одна проблема с внешними DSL в том, что приходится создавать компилятор или интерпретатор. А эта задачка "не по зубам" молодым и средним программистам.

Но результат того стоит. Помню, на свинцовом заводе Сергиевский Игорь создал свой интерпретатор формул для бухгалтерии. Мотивировал тем, что: "Запарили они меня с этими изменениями..." Так в результате бухгалтера на этом языке, близком к русскому, натворили такие формулы, что диву даешься.

Писать программу с несколькими языками это как думать на нескольких языках. Тренирует мозги очень хорошо.

Развиваешь код, получаешь красивую систему. И к тому же в придачу к инвестициям - расширяемость и гибкость системы увеличивается на порядок.

Ученики и иже с ними

За последние два года я имел счастье общаться и обучать двоих программистов. И могу сказать, что они такие все разные. Но при этом умницы и очень мне помогли познать себя и посмотреть на других.

Хочу поблагодарить их.

* Андрей Вытнов - генератор идей и интересный собеседник, удачи тебе в новых начинаниях и на новом месте

* Ирина Кувшинова - умница, глубоко вникает в проблему и показывает пути решения, которые видит своим светлым разумом. Да и просто красивая женщина. Мне приятно было работать с тобой. Счастья в новой семейной жизни.


Что интересно - так это то, что программирование вдоём действительно интересно. Это и общение, и общие интересы и радость достижения.