Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ООП маст дай! 
:(
    Опции темы
djamshud
Дата 26.9.2010, 22:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 1
Всего: 39



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

Список терминов:
ООП - объектно-ориентированный подход в нынешних мэинстримных инкарнациях, соответственно и ОО-проектирование и ОО-программирование, по контексту обычно понятно.
Dataflow programming - подход к программированию, когда большую часть внимания уделяют алгоритмам управления движения и модификации данных. Алгоритмы собственно обработки либо стандартны, либо реализуются в виде подпрограмм. У данного подхода очень велика доля повторно реально используемого кода.

Где применяют ООП?.. Да почти везде, на всех уровнях разработки ПО. Стоит лишь сказать, что ООП используется сразу при проектировании всей системы. К сожалению адепты неверно поняли системный анализ и решили, что ООП - суть его воплощение. Разделить одну большую проблему на множество локальных - несомненно правильно. Устанавливать связи между ними в духе ООП - убийстов проекта на корню, это создает множество статичных связей, которые очень сложно разрывать или модифицировать при дальнейшем развитии проекта. Поэтому многие ключевые связи делают динамичными, что в итоге превращается в костыли в коде и неудобство взаимодействия модулей.

Адепты часто пропагандируют максимальное абстрагирование при решении поставленных задач. Если мне нужно съесть яблоко, зачем абстрагироваться до поедания сферических фруктов в вакууме? Мне это не поможет съесть ни яблока, ни ананаса.

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

Пример.
Допустим, есть некоторые агрегаторы данных. Из одного мы данные получаем, обрабатываем в несколько этапов, в другой отправляем. Очень естественное, натуральное решение выглядит примерно так:
Код

sock=$(tcp 0.0.0.0:80 listen)
read ${sock} | http in | cgi | http out | write $(sender ${sock}) -- эта цепочка - описание действия,
которое необходимо выполнить при появлении новых данных в агрегаторе. Понятно, что очень
сильно упрощенная, понятно, что в реальности будет скорее всего разветвленной.

Решение в процедурном стиле очевидно и чуть менее естественно. ООП-решение будет либо неповоротливым ###м, либо, в идеале, реализует такую же dataflow. Но зачем каждый раз заниматься ее реализацией, когда можно пользоваться специлизированными средствами?

Все есть объект - еще один лозунг адептов. Вранье. Инкапсуляция без сомнения удобна, но огромная ошибка - страться инкапсулировать все и во всем. При программировании на самом нижнем уровне это стрельба из пушки по воробьям, на самом высоком - и вовсе бесполезная затея, инкапсуляция высоких материй неестественна. В ООП под инкапсуляцией кроме объединения данных и кода еще подразумевается и сокрытие этих самых данных и кода. Зачем? Вам что, жалко? Если я что-то сломаю, ССЗБ. Из-за этого повторное использование кода зачастую становится невозможным: а есть такая же, но с перламутровыми пуговицами?

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

Когда я использую ООП.
1. Когда естественная сущность элегантно представляется в виде объекта и нескольких обрабатывающих его методах. Этакий "С с классами".
2. Когда писал (и сейчас хочу сильно пропатчить) библиотеку контейнеров. ООП в данном случае весьма хорош: на низком уровне не используется, а вот в средний - что составляет большую часть задачи - он прекрасно вписывается.
3. Когда писал ядро компилятора. Опять же в основном программирование происходило на среднем уровне, а вся информация о типах и лексемах гонялась по RTTI. Уже при его программировании я осознал удобность датафлоу и весь синтаксический анализатор приспособил именно для такой обработки последовательностей лексем.

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

Ну и мнение светил: http://citforum.ru/gazeta/165/

Это сообщение отредактировал(а) djamshud - 27.9.2010, 15:42


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
mes
Дата 26.9.2010, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



А. Вы предлагаете :
1. отказаться от ООП в пользу процедурного программирования
2. -//- в пользу некоего другого стиля ? тогда какого ?
3. не поклоняться ООП и использовать его лучшие стороны.
4. или что то другое ?


Б. что лично Вы видите плохого в ООП ?



--------------------
PM MAIL WWW   Вверх
djamshud
Дата 26.9.2010, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 1
Всего: 39



3, поэтому когда-то 1, когда-то 2.

Кстати говоря в статье или по какой-то ссылке в ней хорошо написано, как сильно изуродована изначальная концепция ООП, заложенная в смолтоке, в современных реализациях в С++ и прочих Явах.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
mes
Дата 26.9.2010, 23:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(djamshud @  26.9.2010,  22:00 Найти цитируемый пост)
Кстати говоря в статье или по какой-то ссылке в ней хорошо написано, как сильно изуродована изначальная концепция ООП, заложенная в смолтоке, в современных реализациях в С++ и прочих Явах

тогда еще уточняющий вопрос, так Вы против ООП или против С++ реализации ООП ?



--------------------
PM MAIL WWW   Вверх
djamshud
Дата 26.9.2010, 23:14 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 1
Всего: 39



Лично я плохого в ООП вижу то, что как им, так и напрямую следующими из него костылями из паттернов откровенно промывают мозги в университетах. По себе знаю и по знакомым. После этого, попробовав и хорошенько освоив процедурный подход, сейчас стараюсь самые высокоуровневые вещи реализовывать функционально, реже императивно, на своем диалекте баша, совместимом с С++ и С; реализация основных модулей на С, иногда "С с классами и темплейтами", над этим иногда выстраивается интерфейс из "C с классами и наследованием". Поэтому на буст и большую часть бестолковой стандартной библиотеки С++ смотрю как на ###.

Добавлено через 2 минуты и 33 секунды
mes, лично я не против ни С++ с его реализацей ООП, ни ООП вообще. Я за то, чтобы это перестало быть панацей. Сейчас в современном программировании складывается ситуация, что дураков заставили богу молиться, а они лбы себе расшибают.

Добавлено через 3 минуты и 19 секунд
ЗЫ. За решетку угодили фекалии:).


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Vasay
Дата 26.9.2010, 23:21 (ссылка) |    (голосов:5) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 2
Всего: 73



когда человек что-то не понимает, он это отвергает.

Не утверждаю, что ООП наше все  (и не буду утверждать, ибо имел дело с задачами, где ООП не место), но он занял свою нишу, доказав состоятельность. 


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
djamshud
Дата 26.9.2010, 23:25 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 1
Всего: 39



Vasay, пруфы, пруфы в студию! Я привел пруф с кучей пруфов внутри. За "непонимание" незачет - в статье рассказывают о мнении (обоснованном!) светил программирования.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
mes
Дата 26.9.2010, 23:28 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(djamshud @  26.9.2010,  22:14 Найти цитируемый пост)
так и напрямую следующими из него костылями из паттернов 

 не согласен ни с "костылями" , ни с "напрямую следующими"


Цитата(djamshud @  26.9.2010,  22:14 Найти цитируемый пост)
откровенно промывают мозги в университетах

не было бы ооп, промывали бы чем нибудь другим..
промывка сама по себе плоха, особенно учитывая что промывают основываясь на принципах как минимум 10летней давности

Цитата(djamshud @  26.9.2010,  22:14 Найти цитируемый пост)
над этим иногда выстраивается интерфейс из "C с классами и наследованием"

хочу уточнить, что "С с классами" это более чистое ООП, чем текущий С++, в котором задействаны и другие подходы.. 

Цитата(djamshud @  26.9.2010,  22:14 Найти цитируемый пост)
. Поэтому на буст и большую часть бестолковой стандартной библиотеки С++ смотрю как на ###.

ни стл, ни буст не являются инструментами  ООП как таковые.

Цитата(djamshud @  26.9.2010,  22:14 Найти цитируемый пост)
 Я за то, чтобы это перестало быть панацей. 

учитывая подправки, не понятно , что подразумевается под "это " . Большинство сказанного не относится к ООП.

Цитата(djamshud @  26.9.2010,  22:14 Найти цитируемый пост)
Сейчас в современном программировании складывается ситуация, что дураков заставили богу молиться, а они лбы себе расшибают.

так может проблема все таки в дураках ?
smile

Добавлено через 10 минут и 2 секунды
Цитата(djamshud @  26.9.2010,  22:25 Найти цитируемый пост)
в статье рассказывают о мнении (обоснованном!) светил программирования. 

боюсь насчет "С с классами" они тоже не лучшего впечатления )


--------------------
PM MAIL WWW   Вверх
djamshud
Дата 26.9.2010, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 1
Всего: 39



mes,

>не согласен ни с "костылями" , ни с "напрямую следующими"

Напрямую следуют - потому что все придумано для ООП. Костыли, потому что современное ООП без них не может.

>не было бы ооп, промывали бы чем нибудь другим..

Пейте дети молоко, будете здоровы. Лучше бы чем-нибудь полезным промывали, да хоть тем же православным смолтоковском ООП.

>хочу уточнить, что "С с классами" это более чистое ООП, чем текущий С++, в котором задействаны и другие подходы..

Именно поэтому я его и использую.

>ни стл, ни буст не являются инструментами  ООП как таковые.

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

>учитывая подправки, не понятно , что подразумевается под "это "

"Это" - собственно современный ООП (я все же в основном смотрю с позиций С++) и вся система палок и веревок для того, чтобы этим можно было пользоваться.

>так может проблема все таки в дураках ?

Проблема в тех, кто управляет;)

Добавлено @ 23:43
>боюсь насчет "С с классами" они тоже не лучшего впечатления )

Так я не отстаиваю их позиций, у меня свое мнение:). Хоть во многом и схожее.

Да кстати, для тех, кто не читал, но осуждает: там никто не говорит о полном "запрете" ООП.

Это сообщение отредактировал(а) djamshud - 26.9.2010, 23:43


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Vasay
Дата 26.9.2010, 23:44 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 2
Всего: 73



Цитата(djamshud @  26.9.2010,  23:25 Найти цитируемый пост)
Vasay, пруфы, пруфы в студию! Я привел пруф с кучей пруфов внутри. 



Какой тебе нужен пруф? большинство прикладного ПО пишется с применением ООП. 


Цитата

За "непонимание" незачет - в статье рассказывают о мнении (обоснованном!) светил программирования.


Если бы все "Светилы" были бы согласны с тем что ООП не нужен - его бы не было .

Добавлено через 2 минуты и 49 секунд
djamshud

Так я не понял, вам не нравится ООП, или его реализация в С++ ?


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
mes
Дата 26.9.2010, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(djamshud @  26.9.2010,  22:40 Найти цитируемый пост)
Да кстати, для тех, кто не читал, но осуждает: там никто не говорит о полном "запрете" ООП.

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

Цитата(djamshud @  26.9.2010,  22:40 Найти цитируемый пост)
Напрямую следуют - потому что все придумано для ООП.

ООП патерны лишь малая толика от общего числа паттернов
smile

Цитата(djamshud @  26.9.2010,  22:40 Найти цитируемый пост)
Пейте дети молоко, будете здоровы. Лучше бы чем-нибудь полезным промывали, да хоть тем же православным смолтоковском ООП.

так все таки претензия к ООП или к С++ ?! ведь против православного ООП ничего против не имеете.. 


Цитата(djamshud @  26.9.2010,  22:40 Найти цитируемый пост)
Стандартная библиотека, особенно ее развите за последние лет десять, и буст - это еще одни костыли, на этот раз для поддержания убого ООП, заложенного в С++. 

буст костыль, но не для поддержания ООП.  ну взять хотя бы самое на мой взгляд первоочередное в бусте :  bind - это поддержка функционального программирования.. 
кстати автор стл, тоже против ООП. 

Цитата(djamshud @  26.9.2010,  22:40 Найти цитируемый пост)
"Это" - собственно современный ООП (я все же в основном смотрю с позиций С++) и вся система палок и веревок для того, чтобы этим можно было пользоваться.

современный С++ далек от современного ООП.. или для Вас все что с классами то ООП ? 

Цитата(djamshud @  26.9.2010,  22:40 Найти цитируемый пост)
Проблема в тех, кто управляет;)

решается соблюдением заповеди: не сотвори себе кумира.
smile

Добавлено через 2 минуты и 49 секунд
Цитата(djamshud @  26.9.2010,  22:40 Найти цитируемый пост)
Так я не отстаиваю их позиций, у меня свое мнениеsmile. Хоть во многом и схожее.

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


--------------------
PM MAIL WWW   Вверх
djamshud
Дата 27.9.2010, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 1
Всего: 39



Vasay, я на ночь глядя прочитал совсем не то, что вы написали:) Пруф не надо.

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

>Если бы все "Светилы" были бы согласны с тем что ООП не нужен - его бы не было .

А кто говорит про всех? Я говорю про отдельно взятых светил, которые не троллинга ради хаят ООП. Незачет за то, что вы считаете их непонимающими.

>Так я не понял, вам не нравится ООП, или его реализация в С++ ?

Мне не нравится современные инкарнации ООП в С++, Яве или С#. С последними двумя я не сильно знаком, но из того знакомства, что было, да и по многочисленным публикациям я делаю вывод, что в них ООП создавалась под впечатлением плюсовой реализации, с какими-то уточнениями и другим синтаксисом.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
mes
Дата 27.9.2010, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 1
Всего: 250



Цитата(djamshud @  26.9.2010,  23:05 Найти цитируемый пост)
Мне не нравится современные инкарнации ООП в С++, Яве или С#. 

вот хоть понятно что.. а терь можно узнать пару тройку фактов почему ?


--------------------
PM MAIL WWW   Вверх
Vasay
Дата 27.9.2010, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

Репутация: 2
Всего: 73



Цитата

Вас заставили в этом поверить учителя-адепты, из-за чего ООП и занял свою "нишу"


Как раз в тех двух областях, в которых я получал свое образование (и некоторое время работал) - ООП не нужен  smile  (и когда-то я тоже плохо понимал - зачем мне нужен этот ооп)

Цитата

С последними двумя я не сильно знаком, но из того знакомства, что было, да и по многочисленным публикациям я делаю вывод, что в них ООП создавалась под впечатлением плюсовой реализации, с какими-то уточнениями и другим синтаксисом.


Первое впечатление, обычно ошибочно. В данный момент Вы занимаетесь именно тем, что "отвергаете то чего не понимаете".

Это сообщение отредактировал(а) Vasay - 27.9.2010, 00:14


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
djamshud
Дата 27.9.2010, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Пердупержденный
***


Профиль
Группа: Завсегдатай
Сообщений: 1655
Регистрация: 23.11.2009

Репутация: 1
Всего: 39



mes, камень не в ваш огород.

>ООП патерны лишь малая толика от общего числа паттернов

Все, что я видел - так или иначе крутится вокруг ООП. Можно ссылок на большую часть?

>так все таки претензия к ООП или к С++ ?! ведь против православного ООП ничего против не имеете.. 

Так православный ООП и его нынешние мэинстримные инкарнации - небо и земля. И я еще раз повторяю: я не против никакого ООП, я за то, чтобы средства использовали по назначению.

>буст костыль, но не для поддержания ООП.

Да, если быть точным, это костыль для того, чтобы этим ООП можно было решать практические задачи. Вот только беда, функциональщина является совершенно инородной в том С++, что задумывался когда-то. Сейчас язык к сожалению превратился в ужаснейшую помойку и только "С с классами" его и спасает (для меня - трезвомыслящего человека:) ).

>современный С++ далек от современного ООП.

Современный - плохое слово, согласен и уже исправился. Я не особо слежу за развитием языков, чтобы говорить о современном ООП. Правильно - мэинстримный ООП.

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

Не вижу больших разногласий и запостил ссылку на нее, потому что разделяю большую часть выдвинутых там позиций. В стартовом сообщении я свое ИМХО высказал предельно ясно. Сейчас мэинстрим для решения почти любой задачи: провести системный анализ, на его основе разработать объектно-ориентированную модель с изначальным уклоном в реализацию на мэинстримных С++/С#/Java ну и собственно набыдлокодить это чудо-юдо.

Добавлено через 11 минут и 24 секунды
Vasay, а я работаю в тех областях, где ООП с радостью применяют. И сам применял, пока не понял, что он только вредит. Статистика, анализ, моделирование, в частности - имитационное распределенных процессов.


--------------------
'Cuz I never walk away from what I know is right
Alice Cooper - Freedom
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.1400 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.