vak: (Default)
[personal profile] vak
"...Крупный критик ООП -... известный специалист по программированию - Александр Степанов, который работая в Bell Labs участвовал в создании C++ вместе c Бьерном Страуструпом, а впоследствии, уже по приглашению в HP Labs, написал Standard Template Library (STL). Александр Александрович полностью разочаровался в парадигме ООП, в частности он пишет: "Я уверен, что ООП методологически неверна. Она начинает с построения классов. Это как если бы математики начинали бы с аксиом. Но реально никто не начинает с аксиом, все начинают с доказательств. Только когда найден набор подходящих доказательств, лишь тогда на этой основе выводится аксиома. Т.е. в математике вы заканчиваете аксиомой. Тоже самое и с программированием: сначала вы должны начинать развивать алгоритмы, и только в конце этой работы приходите к тому, что вы в состоянии сформулировать четкие и непротиворечивые интерфейсы. Именно из-за этой неразберихи в ООП так популярен рефакторинг - из-за ущербности парадигмы вы просто обречены на переписывание программы, уже в тот самый момент, когда только задумали её спроектировать в ООП-стиле".

(отсюда)

Date: 2010-09-22 18:21 (UTC)
From: [identity profile] chtovimenitebe.livejournal.com
В математике обычно начинают с аксиом и развивают их теореммами. Что он имел в виду, я не понял. В програмировании важна хорошая голова, а методологии могут быть разные.
ООП я тоже не люблю вместе с его основателем Арафатом.

Date: 2010-09-22 18:39 (UTC)
From: [identity profile] kondybas.livejournal.com
Имел он в виду, что отталкивался от аксиомы линейности выполнения кода, и спроектировал СТЛ без поддержки реентерабельности и сопроцессовости. Разумеется, теперь нужен тотальный рефакторинг кода - либо недоступность бонусов от прогресса архитектур.

А не надо было верить в серебряную пулю. Чрезмерные ожидания ведут к излишней фрустрации.
(deleted comment)

Date: 2010-09-22 19:46 (UTC)
From: [identity profile] kondybas.livejournal.com
Строго говоря, набор аксиом устаканивается довольно рано в любой дисциплине, и всякая новая идея почти неминуемо редукционизмом сводится к базовым примитивам. Выродить действительно новую аксиому удается единицам. Та же аксиома о параллельных просуществовала несколько тысяч лет, прежде, чем была обобщена Лобачевским-Риманом. А вообще, конечно, аксиомы не выдумывают, и не подбирают. Они сами, как грибы, проклевываются из повседневной практики.

В вычтехнике аксиоматика не сильно поменялась со времен Тьюринга-Винера. Переменная, операция, поток - вот и все. Как в геометрии точка, прямая и плоскость. Все остальное - и объекты в т.ч. - всего лишь производные от базовых примитивов.

Date: 2010-09-25 15:35 (UTC)
From: [identity profile] tihii-bred.livejournal.com
Переменная, операция, поток...

А как же лямбда?

Тьюринг и Винер это замечательно, но почему же все забывают Чёрча и МакКарти?

Date: 2010-09-22 20:17 (UTC)
From: [identity profile] chtovimenitebe.livejournal.com
Нет. Всё и всегда начинается с аксиоматики её полноты и непротиворечивости. И лишь после этого ...

Date: 2010-09-25 08:57 (UTC)
From: [identity profile] chtovimenitebe.livejournal.com
Отсюда только следует, Сергей, что он ещё не закончил творение и, так и корпит.

Date: 2010-09-22 18:58 (UTC)
From: [identity profile] http://users.livejournal.com/_kalle_/
Крутая статья. Особенно понравилось вот это:


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


Он (Гэбриэл) бы ещё опыты Лысенко вспомнил.

Date: 2010-09-22 20:03 (UTC)
From: [identity profile] chtovimenitebe.livejournal.com
Надо заметить что в GPS используется сразу специальная и общая теории относительности. На спутниках время замедляется из-за скорости, а на Земле из-за гравитации, причем на земле сильнее. Поправка существенная.

Date: 2010-09-22 20:21 (UTC)
From: [identity profile] http://users.livejournal.com/_kalle_/
И что же, это доказывает существование эфира? :)

Date: 2010-09-22 21:36 (UTC)
From: [identity profile] chtovimenitebe.livejournal.com
Эфир хорошо выводит из обморока.

Я хотел подтвердить Вашу правоту, и только. ))
(deleted comment)

Date: 2010-09-22 19:28 (UTC)
From: [identity profile] g-sim.livejournal.com
имхо это не синонимы.. (

Date: 2010-09-22 19:27 (UTC)
From: [identity profile] g-sim.livejournal.com
Ой, максималисты все какие...
Я и ООП уважаю, и STL ещё больше КУ...
Но зачем же мебель ломать?
(deleted comment)

Date: 2010-09-22 22:12 (UTC)
From: [identity profile] evgen2.livejournal.com
"разработчик STL разочаровался в парадигме ООП"

это прямо исторический анекдот...

Спрашивается - чего ж раньше эти ребята жопой думали, а не головой ?

Date: 2010-09-25 09:42 (UTC)
From: [identity profile] evgen2.livejournal.com
Ну не знаю.
У меня подобный опыт образовался сразу же, при попытке портировать какое-то поделие, использующее STL, когда выяснилось, что дебуггер не способен отловить задницу при инициализации, до попадания в main()

поделием было как бы не wxWindows, тоже весь из себя ООП-пнутый и который еще тот монстр. Чего не тронешь - пересобирать нужно все и т.д. и т.п.

Date: 2010-09-25 14:50 (UTC)
From: [identity profile] anatoly borodin (from livejournal.com)
Инициализация до main — тот ещё аццтой.

Date: 2010-09-30 00:41 (UTC)
From: [identity profile] alex904.livejournal.com
Вобще-то STL в основе своей использует парадигму generic programming, а не ООП. Прородитель STL жил в виде шаблонов Ады.

Date: 2010-09-22 23:56 (UTC)
From: [identity profile] sasha474.livejournal.com
Давно это понял. Наделают классов, жeть берёт, миллионы линий кода для того, чтобы сделать (a+b)
From: [identity profile] bowhill.livejournal.com
Ну об ограниченности иерархической модели не вчера стало известно. И кого это остановило...

Date: 2010-09-23 07:00 (UTC)
From: [identity profile] ak04.livejournal.com
Страуструпа надо поубивать конечно. ООП - это страшная вещь в которой проще запутаться, чем сделать что-либо.
Во-первых нихрена непонятно как все это будет выполняться.
Во-вторых невозможно писать быстрый код. А если возможно - то нужно такие ухищрения вытворять, что диву даешься. До сих пор нет ни одной приличной библиотеки матричных вычислений. Только поделки недоделанные. А казалось бы все для этого. Можно плюсики и минусики переопределять. А вот хрен.
В-третьих убить страуструпа можно хотя бы за библиотеку стандартного вывода. Работает медленно, писать надо больше. Верните мне мой printf.
Я уж молчу, что чего-нибудь аналогичного по мощности scanf в С++ нет. А если есть - то это такой бред и тормоза при компиляции, что беда, беда, беда.

Date: 2010-09-30 00:39 (UTC)
From: [identity profile] alex904.livejournal.com
Про скорость Си++ - бред. Читаем основы... я серьезно. Я понимаю, если бы этот вопрос всплывал в начале 90-х, а сейчас это упоминать для специалиста просто стыдно. scanf есть как в Си, так и в Си++. Какие проблемы!? Потоки оптимизированы до блеска, работают быстрее зачастую, чем стандартнобиблиотечные функции. Друге дело, что неудобные они и плохочитаемые часто для ввода-вывода. Ну и boost есть для тех, кто любит изысканные вещи с конвертированием и форматированием.
Вот основы:
http://www.amazon.com/Inside-Object-Model-Stanley-Lippman/dp/0201834545/ref=sr_1_1?s=gateway&ie=UTF8&qid=1285807115&sr=8-1
http://www.amazon.com/Imperfect-Practical-Solutions-Real-Life-Programming/dp/0321228774/ref=sr_1_1?s=gateway&ie=UTF8&qid=1285807136&sr=8-1

Ну и в онлайне читаем (сначала и вдумчиво) Калева:
http://www.informit.com/guides/content.aspx?g=cplusplus

Date: 2010-09-23 09:22 (UTC)
From: [identity profile] tim-caper.livejournal.com
Гм. Чего именно не ожидал?

Date: 2010-09-25 09:49 (UTC)
From: [identity profile] evgen2.livejournal.com
Я пользую C++ "почти как С".
Т.е. свои классы в виде структур с функциями, никаких библиотек, никаких особых ООП извратов, наследование очень ограниченное, переопределение операций - очень редко.
Работает в промышленных условиях годами.

Date: 2010-09-26 18:24 (UTC)
From: [identity profile] panchul.livejournal.com
Да, в таком виде C++ пользуемый. Проблема в том, что всякие Стенфорды обучают всяких девочек наворотить иерархию классов на ровном месте, а когда они приходят на производство, это все превращается в борьбу против собственного кода (и кода других С++ девочек), в ущерб решению реальных проблем.

Date: 2010-10-17 19:39 (UTC)
From: [identity profile] dom3d.livejournal.com
Я тоже почти на 100% согласен. Имею опыт 18 лет разработки CAD/CAM.

Date: 2010-09-25 15:39 (UTC)
From: [identity profile] tihii-bred.livejournal.com
Моя основная претензия к С++ -- попытка переделать переносимый ассемблер в ЯВУ.

Теряются как плюсы переносимого ассемблера, так и не приобретаются свойства нормального ЯВУ -- ни нормальной статической типизации, ни нормального лэйт-биндинга.

Date: 2010-09-27 10:01 (UTC)
From: [identity profile] tim-caper.livejournal.com
Вот за что уважаю Гради Буча: у него открытым текстом перечислены случаи, когда НЕ надо использовать ООП.

ООП != С++

Date: 2010-09-25 15:19 (UTC)
From: [identity profile] tihii-bred.livejournal.com
Как видно, многие считают что С++ и ООП это почти синонимы. Однако..

"I invented the term Object-Oriented and I can tell you I did not have C++ in mind."
-- Alan Kay

Date: 2010-09-26 18:17 (UTC)
From: [identity profile] panchul.livejournal.com
Особенно страшная вещь связанная с С++ - это когда софтверные люди, которые не понимают хардвер, начинают использовать C++ классы для моделирования хардверных объектов, И (та-та-та-та) начинают использовать inheritance. Блядь, PCI Express - это НЕ "особый случай" UART с виртуальными функциями! Тех, кто ставит часть сигналов в base class и часть - в derived класс, нужно ставить к стенке и расстреливать из пулемета, пинать ногами, отправлять на поля совхоза Тарасовский. Это создание дополнительной сущности на ровном месте (идиотское и произвольное разделение объектов на группы), которую невозможно поддерживать, так как содержание становится разбросанным по разным файлам и перемешанным с несвязанными вещами.

К счастью, в нашей организации этот вид ереси на текущий момент изничтожен. Немудрено, что акции прут вверх.
Edited Date: 2010-09-26 18:26 (UTC)
From: [identity profile] skolk.livejournal.com
- IMHO, сущность вполне обоснованная,- узел, типичная реализация которого содержит SerDes, линейный кодек и FEC по вкусу. Еще там модемы встречаются... Только почему родителем делается этот канальный уровень, а не наоборот, "абстрактная общая шина с отдельным пространством ВВ", мне не понять.
From: [identity profile] skolk.livejournal.com
поймался на том, что кодеки могут быть по любую сторону от SerDes. Книги для программистов иногда создают об этом (местоположеннии кодеков относительно SerDes) неверное впечатление.
From: [identity profile] panchul.livejournal.com
Это все очень хорошо то тех пор, пока не появляется новый кусок конкретного хардвера на Верилоге, который нужно в эту схему встроить. Если поместить в base class слишком мало, то он становится бесполезным, если слишком много, то зачем иерархия, если в пополаме, то нужно противно разделять. Anyway, ты бываешь в штатах или Европе? Можно было бы тусоваться и обсуждать в чем тут драма, и как это делать лучше.

Date: 2010-09-30 00:33 (UTC)
From: [identity profile] alex904.livejournal.com
Степанов сам не рад, что попал в "критики" ООП. Вобще-то в оригинальной статье он расхвалилвал алгоритмы. Идея была в том, что сам по себе ООП без generics - мертв. Си++ сам по себе неидеален, но именно в нем появилась возможность эффективно имплементировать generics. То, что его вписали в главные критики ООП он хорошо знает. Я с ним проработал два года в Адоби (год назад он ушел в Амазон), имею уникальную книгу второго издания Страуструпа 1999-го года, которая подписана Страуструпом и Степановым. :) Участвовал в семинарах по c0xx и могу с достоверностью заявить, что большего сторонника классического ООП, чем Степанов в Адоби не было. Все основные продукты пишутся исключительно на нем родимом и в ближейшее время никто не собирается переходить на что-то другое.

Date: 2010-10-17 19:59 (UTC)
From: [identity profile] dom3d.livejournal.com
Я уже 18 лет занимаюсь разработкой CAD/CAM программ. Более 6 лет использовал C.
Когда я узнал про существование C++ то очень сильно жалел, что не перешел на него раньше.

Чем хорош C c классами для меня.
1. Удобство работы. Для поверхности все функции в одном месте
2. Наследование
3. Полиморфизм. Механизм виртуальных функций это самое ценное. Это просто волшебство.

Страуструуп сам пишет, что не ожидал такой популярности STL. Ненавижу STL из за алгоритмов и еще нек, херни. Шаблоны люблю.

Проектирование систем или программ начинают с функций, но не с классов или алгоритмов. Функцию можно запихнуть и в класс.
Вначале нужно знать что мы хоти сделать, а потом думаем как.