Об информационном обществе 6 |
[Mar. 5th, 2007|05:20 pm] |
Люди за 100000 лет худо-бедно научились классифицировать типы наблюдаемых объектов, но до сих пор абсолютно неумеют классифицировать типы отношений между объектами, хотя казалось бы тип умственной деятельности тот же... да вот клин какой-то вбит и не даёт рассудить человеку ничего путного о таком простом объекте как тип оношений.
Все руководства, мануалы, статьи и хауты дружно лажают, когда речь заходит о межпрограмных взаимодействиях (нет-нет я не буду ничего умничать про семафоры и параллельные вычисления!) Простейшие вещи: настроить пару-тройку программ, чтобы они знали друг о друге то, что им нужно знать - любой кулхацкер расскажет вам чо надо прописать и в какие в конфиги, но на вопрос: "откуда программа узнает в какой конфиг она должна посмотреть?" в лучшем случае смолчит, сэкономив время слушателей, на пространной болтовне об Архитектуре(tm).
Вопрос всякий раз остайтся "на самостоятельное изучение". Грустно и утомительно исследовать столь простые вещи, как творение рук человеческих... зная что исследование вовсе не необходимо.
И снова вспоминаю что мы живём в Информационном Обществе(tm), члены которого в большинстве затрудняются рассудить о простейших движениях информации в элементарных информационных системах, а основополагающий вопрос IT: "кто кому какую инфу сообщает?" ставит их в тупик. Не заточен современный Объектно Ориентированный мозг для понимания процессов обработки инфы. |
|
|
Comments: |
--- Долгая история. Все дело в том, что местные программисты пошли по неверному пути. Этот путь называется объектно ориентированный подход в программировании. На самом деле это мина с часовым механизмом в красивой упаковке. В очень красивой упаковке. © П. Шумил. «Иди, поймай свою звезду»
Витус, а конструктив какой? Каким путём надо идти, если не ООП?
Головой думать. Не существует "единственно верного пути" (тм). С этим - к Зюганову.
Общий принцип такой - если существует математическая модель, описывающая данную проблемную область, то подход, базирующийся на этой модели - заведомо эффективнее, чем объектный. Пример - реляционные БД с их ER-моделированием или растровые GIS.
Если не существует, и нет возможности притянуть хотя бы за уши - тогда можно и объектным подходом пользоваться.
Но ключевым здесь является видение всей системы в целом и аккуратная декомпозиция её на объекты и отношения. OOD в первую очередь. А уж понадобится ли OOP - это после декомпозиции смотреть надо. Может быть система декомпозируется на что-то такое простое, что можно будет в императивном или функциональном стиле это реализовать.
В общем, применять UML на стадии проектирования - куда полезнее чем C++ или Java на стадии реализации. Но и UML - не панацея.
мне uml именно как язык не понравился очень сильно, он не проясняет а скорее путает, он изначально заточен под ООП причём аж сквозит, он навязывает некий подход вместо того чтобы отражать ситуацию, а все остальные приятные фишки они как бы сбоку, поэтому гораздо удобнее пользоваться старыми проверенными способами записи: ER-диаграммами Диаграммами состояний КА Диаграммами потоков данных (подобными тем которые применяются в телефонии - очень удобные)
ER диаграммы и диаграммы состояний КА - это примеры ситуаций, когда у нас ЕСТЬ специальная математика под нашу задачу - реляционная алгебра или теория конечных автоматов. В этих случаях, несомненно, надо использовать её.
А более общаяя (поэтому более сложная и менее поддающаяся оптимизации) объектная модель должна применяться в тех случаях, когда более частные модели не подходят. И то, если при декомпозиции удается свести систему к группе подсистем, каждая из которых описывается более частной теорией, после этого разбиения на подсистемы про ОО следует забыть.
Совершенно с Вами согласен. Однако есть ещё такая статья ( http://russian.joelonsoftware.com/Articles/FiveWorlds.html), Вы её, наверное, читали, но всё равно. Есть такие типы ПО ("одноразовые программы"), которые исполняют 4-5 раз, потом думают, что "а если другой критерий применить?" (критерии эти мы должны сами из головы выдумывать). Ну и т. д. Так вот там именно ООП даёт такую гибкость, которой сложно достичь с помощью неООП. ООП и ФП считаю (как неспец) ортогональными понятиями, друг другу не мешающими.
прочетал два раза. не смешно. | |