For The Record - система Птолемея
Mar. 15th, 2008
07:22 pm - система Птолемея
Иногда, глядя на нонешнее состояние программирование, когда сложность странным образом оправдывается господствующими теориями, хочется сравнить это дело с системой Птолемея, где эпициклоиды очень даже неплохо предсказывали движение планет... а тех, кто предлагал систему попроще иной раз просто сжигали живьём, чтоб не лезли со своей ахинеей.
Ну вы поняли.

Обещаю не сжигать.
Все ООП (classes, namespaces, packages/assemblies etc, private/protected/public) заменить на явное описание dependency graph (т.е. код делится на высокоуровневые компоненты, возможно, вложенные, и пишутся правила - кто про кого знает; по умолчанию, если правила нет, один компонент другого знать и использовать не должен). Это мегаупрощение, но с точки зрения архитектуры результат получается гораздо строже и чище. Для Java/C# выигрыш не так очевиден, там и родное ООП довольно неплохое, а вот для С++ даже моя homebrew реализация DG оказалась очень полезной (в реальных проектах, со всем legacy, прямо на ходу внедренная; конечно, у нас было в дополнение к ООП, а не вместо).
Но в mainstream, боюсь, это не пойдет, т.к. на каждую помянутую ООП-сущность сверх того, что это dependency graph node/link, еще и понавешано очень много дополнительных рюшечек (assemblies компилируются по отдельности, а class имеет методы, в которых можно не писать this в явном виде, а protected тесно связано с мертворожденным механизмом наследования реализации и тп). Взять и все это выкинуть - уже слишком радикально.
Одна из без C++ -- в отсутствии явной модульности.
Если вкратце, то выигрыш может быть получен за счет того, что 1) dependency graph - это в общем случае именно граф, а не дерево, 2) в качестве dependency graph nodes часто имеет смысл рассматривать не только сборки (в зависимости от языка - packages, assemblies etc), но и более мелкие запчасти (вплоть до отдельных методов или констант), и 3) разнородные механизмы контроля зависимостей (как минимум зависимости между сборками и области видимости private-public-protected) можно было бы задавать унифицированно. Подробнее и с примерами я сейчас не могу, у меня цейтнот.
Когда будет время, я напишу пост о том, как работал Arch и в чем он превосходил классическое ООП по крайней мере концептуально (я в любом случае собирался это как-нибудь сделать), и, если интересно, оставлю Вам комментарий, чтобы Вы заглянули.
сжечь все фреймворки модные и всю написанную о них брехню.
легче дышать будет
Я человек в принципе гуманный, и авторам этих фолиантов готов предоставить возможность зарабатывать себе на жизнь посредничеством в недвижимости или на бензоколонке.
как я перестал программировать и завел друзей