December 19th, 2009

glider

Usage first

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

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

Такой подход мне симпатичен не только потому, что он устраняет необходимость писать бойлерплейт деклараций классов, методов и свойств, но и потому, что top-down дизайн более веселый - лично мне себя гораздо труднее удержать в фокусе, когда я пишу что-то совсем отвлеченное от главной идеи.