Home

For The Record - система Птолемея

Mar. 15th, 2008

07:22 pm - система Птолемея

Previous Entry Add to Memories Tell a Friend Next Entry

Иногда, глядя на нонешнее состояние программирование, когда сложность странным образом оправдывается господствующими теориями, хочется сравнить это дело с системой Птолемея, где эпициклоиды очень даже неплохо предсказывали движение планет... а тех, кто предлагал систему попроще иной раз просто сжигали живьём, чтоб не лезли со своей ахинеей.

Ну вы поняли.

Comments:

From:[info]9000
Date:March 16th, 2008 03:17 am (UTC)

(Link)
Очень хотелось бы услышать про системы попроще.
Обещаю не сжигать.
(Reply) (Thread)
[User Picture]
From:[info]ivan_ghandhi
Date:March 16th, 2008 04:22 am (UTC)
(Link)
Я не уверен что их есть у меня.

(Reply) (Parent) (Thread)
[User Picture]
From:[info]plakhov
Date:March 17th, 2008 08:02 am (UTC)
(Link)
Ну, навскидку.
Все ООП (classes, namespaces, packages/assemblies etc, private/protected/public) заменить на явное описание dependency graph (т.е. код делится на высокоуровневые компоненты, возможно, вложенные, и пишутся правила - кто про кого знает; по умолчанию, если правила нет, один компонент другого знать и использовать не должен). Это мегаупрощение, но с точки зрения архитектуры результат получается гораздо строже и чище. Для Java/C# выигрыш не так очевиден, там и родное ООП довольно неплохое, а вот для С++ даже моя homebrew реализация DG оказалась очень полезной (в реальных проектах, со всем legacy, прямо на ходу внедренная; конечно, у нас было в дополнение к ООП, а не вместо).

Но в mainstream, боюсь, это не пойдет, т.к. на каждую помянутую ООП-сущность сверх того, что это dependency graph node/link, еще и понавешано очень много дополнительных рюшечек (assemblies компилируются по отдельности, а class имеет методы, в которых можно не писать this в явном виде, а protected тесно связано с мертворожденным механизмом наследования реализации и тп). Взять и все это выкинуть - уже слишком радикально.
(Reply) (Parent) (Thread)
From:[info]9000
Date:March 28th, 2008 04:00 pm (UTC)
(Link)
Рассмотрим нормальную систему деления на модули (как в java, D, да хоть в Modula-2) и makefile над ней :) Чем она недостаточна?

Одна из без C++ -- в отсутствии явной модульности.
(Reply) (Parent) (Thread)
[User Picture]
From:[info]plakhov
Date:March 29th, 2008 09:24 am (UTC)
(Link)
Я и написал, что для Java это не так очевидно, т.к. родные механизмы у нее вполне usable.

Если вкратце, то выигрыш может быть получен за счет того, что 1) dependency graph - это в общем случае именно граф, а не дерево, 2) в качестве dependency graph nodes часто имеет смысл рассматривать не только сборки (в зависимости от языка - packages, assemblies etc), но и более мелкие запчасти (вплоть до отдельных методов или констант), и 3) разнородные механизмы контроля зависимостей (как минимум зависимости между сборками и области видимости private-public-protected) можно было бы задавать унифицированно. Подробнее и с примерами я сейчас не могу, у меня цейтнот.

Когда будет время, я напишу пост о том, как работал Arch и в чем он превосходил классическое ООП по крайней мере концептуально (я в любом случае собирался это как-нибудь сделать), и, если интересно, оставлю Вам комментарий, чтобы Вы заглянули.
(Reply) (Parent) (Thread)
[User Picture]
From:[info]faceless_lady
Date:March 16th, 2008 06:06 am (UTC)
(Link)
отчего ж не понять...
сжечь все фреймворки модные и всю написанную о них брехню.
легче дышать будет
(Reply) (Thread)
[User Picture]
From:[info]trurle
Date:March 16th, 2008 11:06 am (UTC)
(Link)
И все книги про лямбды и замыкания, а так же паттерны дизайнов.
Я человек в принципе гуманный, и авторам этих фолиантов готов предоставить возможность зарабатывать себе на жизнь посредничеством в недвижимости или на бензоколонке.
(Reply) (Parent) (Thread)
From:[info]9000
Date:March 28th, 2008 04:02 pm (UTC)

(Link)
а если лямбду обозвать delegate или callback, а замыкание -- скажем, anonymous class-ом, то позволено ли им будет остаться жить?
(Reply) (Parent) (Thread)
[User Picture]
From:[info]trurle
Date:March 28th, 2008 08:18 pm (UTC)
(Link)
Можно! самое главное - не делать вид что анонимные классы это самое великое изобретение человеческого ума после резаного хлеба.
(Reply) (Parent) (Thread)
[User Picture]
From:[info]freedom_of_sea
Date:March 16th, 2008 02:38 pm (UTC)

как я перестал программировать и завел друзей

(Link)
когда появилась windows я обнаружил что разучился программировать. Писать две страницы непонятного текста мне претило.
(Reply) (Thread)
[User Picture]
From:[info]and2u
Date:March 24th, 2008 09:48 am (UTC)
(Link)
Главное, что система Птолемея работает (см. http://tenet.narod.ru/ptolemey.htm). :-)
(Reply) (Thread)