Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2013.06.30;
Скачать: [xml.tar.bz2];

Вниз

ООП vs ФП   Найти похожие ветки 

 
Kerk ©   (2013-02-04 19:20) [0]

Интересное мнение по-моему, давайте пофлеймим немного:

Вот смотри, люди начали писать программы. Оказалось, что есть некий набор принципов, которые позволяют упростить написание программ. И люди начали использовать эти принципы. Их никто не называл и не называет ООП. Внезапно оказалось, что эти принципы наиболее легко и естественно используются в рамках определенной парадигмы - эту парадигму назвали «функциональное программирование» (по сути это и есть программирование в соответствии с указанными принципами, программирование заточенное под них). Никакого ООП, опять же, и близко еще не было. К сожалению, рантайм реального процессора был очень далек от рантайма таких языков и потому они ТОРМОЗИЛИ. Надо было писать на чем-то более низкоуровневом. Люди пытались и там использовать все те же принципы - но изза низкоуровневости языка это уже не было легко, изящно и просто. Это было криво и костыльно. Тогда пришла идея - ввести в язык ряд встроенных средств, которые бы упрощали использование этих принципов (то есть сделать эдакий набор стандартизованных универсальных костылей). Сказано - сделано. Вот этот набор стандартизованных костылей и назвали ООП. Но те самые принципы, использование которых ООП должно упрощать в низкоуровневых язычках, как и раньше, наиболее легко, полно и удобно выражаются именно в рамках ФП. Потому что именно ФП - программирование в соовтетствие с этими принципами. А ООП - это просто костыль. Исторически сложившийся казус.


 
icelex ©   (2013-02-04 19:27) [1]

прикольно: написано много, а не сказано ничего


 
Rouse_ ©   (2013-02-04 19:45) [2]

А мне кажется чушь. Во вторых про какой такой низкоуровневый язык идет речь, в который ввели ООП?


 
брат Птибурдукова   (2013-02-04 19:50) [3]


> Rouse_ ©   (04.02.13 19:45) [2]
С точки зрения ФП ВСЯ эта ваша процедурщина — низкоуровневые языки...


 
Rouse_ ©   (2013-02-04 19:52) [4]


> брат Птибурдукова   (04.02.13 19:50) [3]
> С точки зрения ФП ВСЯ эта ваша процедурщина — низкоуровневые языки...

Ну может быть тогда я не верно понимаю сам принцип ФП :)


 
брат Птибурдукова   (2013-02-04 19:58) [5]


> Ну может быть тогда я не верно понимаю сам принцип ФП
Так шо ж непонятного? «некий набор принципов, которые позволяют упростить написание программ» ≡ «функциональное программирование»


 
Пит   (2013-02-04 19:58) [6]

Удалено модератором


 
Inovet ©   (2013-02-04 20:06) [7]

> [0] Kerk ©   (04.02.13 19:20)
> в низкоуровневых язычках

Из маленьких язычков разгорится большой флейм.


 
TUser ©   (2013-02-04 20:38) [8]

Ерунда какая-то. ООП - императивная штуковина, при чем тут функциональщина? Это вообще мало имеющие отношение друг к другу вещи. Имхо.


 
Pavia ©   (2013-02-04 20:47) [9]


> Kerk ©   (04.02.13 19:20) 

У вас всё шиворот на выворот.


 
имя   (2013-02-04 21:12) [10]

Удалено модератором


 
KilkennyCat ©   (2013-02-04 21:14) [11]

часть людей просто крутит гайки, а часть рассуждает, как оно все так изумительно странно по резьбе.


 
имя   (2013-02-04 21:17) [12]

Удалено модератором


 
Inovet ©   (2013-02-04 21:25) [13]

Удалено модератором


 
Kerk ©   (2013-02-04 21:27) [14]

Переведу для тех, кто не читатель, а писатель. Ничего личного :)

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

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


 
Игорь Шевченко ©   (2013-02-04 21:28) [15]


> Вообще, выделить из ООП какие-то уникальные определяющие
> идеи намного сложнее, чем кажется.


Буч старается


 
alexdn ©   (2013-02-04 21:39) [16]

Я уже говорил как то, что ооп это действительно костыль, причём для виндовс..


 
Игорь Шевченко ©   (2013-02-04 21:40) [17]

я процитирую, с позволения:

"Объектно-ориентированное программирование - это методология программирования, основанная на представлении программы в виде совокупности объектов, каждый из которых является экземпляром определенного класса, а классы образуют иерархию наследования.
...
ООП использует в качестве базовых элементов объекты, а не алгоритмы.
...
Для объектно-ориентированного стиля концептуальная база - это объектная модель. Она имеет четыре главных элемента:
- абстрагирование
- инкапсуляция
- модульность
- иерархия
Эти элементы являются главными в том смысле, что без любого из них модель не будет объектно-ориентированной. Кроме главных, имеются еще три дополнительных элемента:
- типизация
- параллелизм
- сохраняемость
Эти элементы полезны в объектной модели, но не обязательны.
"
Г. Буч, "Объекно-ориентированный анализ и проектирование"


 
Игорь Шевченко ©   (2013-02-04 21:41) [18]

alexdn ©   (04.02.13 21:39) [16]

В цитатник! Автор, пиши еще!


 
Игорь Шевченко ©   (2013-02-04 21:42) [19]

И еще одна цитата:

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

Эрик Реймонд, "Искусство программирования для UNIX"


 
Inovet ©   (2013-02-04 21:42) [20]

> [16] alexdn ©   (04.02.13 21:39)
> костыль, причём для виндовс..

Расшифруй постулат.


 
Игорь Шевченко ©   (2013-02-04 21:43) [21]

Inovet ©   (04.02.13 21:42) [20]

Просим! Просим!


 
alexdn ©   (2013-02-04 21:45) [22]

> Inovet ©   (04.02.13 21:42) [20]
> > [16] alexdn ©   (04.02.13 21:39)
> > костыль, причём для виндовс..
>
> Расшифруй постулат.
а что тут расшифровывать ооп: наследование, инкапсуляция, полиморфизм, а обьекты, это как правило что то относящееся к vcl


 
antonn ©   (2013-02-04 21:47) [23]


> а что тут расшифровывать ооп: наследование, инкапсуляция,
>  полиморфизм, а обьекты, это как правило что то относящееся
> к vcl

=)


 
Inovet ©   (2013-02-04 21:48) [24]

> [22] alexdn ©   (04.02.13 21:45)
> а обьекты, это как правило что то относящееся к vcl

Т.е. ООП было придумано для создания VCL?


 
alexdn ©   (2013-02-04 21:51) [25]

> Inovet ©   (04.02.13 21:48) [24]
нет конечно, но оно появилось примерно в конце турбопоскаля, как раз когда усложнилась работа с графикой, меню и всё прочее.


 
alexdn ©   (2013-02-04 21:51) [26]

паскаля)


 
Kerk ©   (2013-02-04 21:59) [27]


> Игорь Шевченко ©   (04.02.13 21:40) [17]
>
> Для объектно-ориентированного стиля концептуальная база
> - это объектная модель. Она имеет четыре главных элемента:
>
> - абстрагирование
> - инкапсуляция
> - модульность
> - иерархия
> Эти элементы являются главными в том смысле, что без любого
> из них модель не будет объектно-ориентированной. Кроме главных,
>  имеются еще три дополнительных элемента:
> - типизация
> - параллелизм
> - сохраняемость
> Эти элементы полезны в объектной модели, но не обязательны.

А что из первых четырех не ФП? Разве что иерархия. Т.е. наследование. Мы знаем два вида наследования - наследование интерфейса и наследование реализации. Через наследование интерфейса в ООП реализуют полиморфизм, который в ФП цветет пышным цветом, а наследование реализации нам легко заменит аггрегрегация.

Я не совсем понял, что он имеет ввиду под параллелизмом и сохраняемостью.

В целом, объект в ООП - это типичный абстрактный тип данных, которые в ФП существуют испокон веков.  Тем более что системы типов в ФП традиционно куда более мощные.


 
Inovet ©   (2013-02-04 22:01) [28]

> [26] alexdn ©   (04.02.13 21:51)
> паскаля)

А Си++ тоже придумали, чтобы для Виндоус менюшки рисовать? Да и объектный турбопаскаль под ДОСом работал.


 
Kerk ©   (2013-02-04 22:01) [29]

У alexdn тоже интересная версия, конечно.


 
KilkennyCat ©   (2013-02-04 22:03) [30]

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

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


 
KilkennyCat ©   (2013-02-04 22:05) [31]


> Inovet ©   (04.02.13 22:01) [28]
</I
С придумали из-за хеадеров в общем, и для меня в частности, чтобы мучался.


 
antonn ©   (2013-02-04 22:06) [32]


> Программирование в машкодах штука слишком долгая, а значит
> - затратная и низкорентабельная.

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


 
alexdn ©   (2013-02-04 22:14) [33]

> Игорь Шевченко ©   (04.02.13 21:42) [19]
> Одной из причин того, что ОО-языки преуспели в большинстве
> характерных для них
> предметных областей (GUI-интерфейсы, моделирование, графические
> средства),
вот примерно про это ж я и говорил.


 
alexdn ©   (2013-02-04 22:17) [34]

Вообще Гейтс большим путаником был, его "Окна" грандиозная афера 20-го века..)


 
брат Птибурдукова   (2013-02-04 22:27) [35]


> alexdn ©   (04.02.13 21:45) [22]
тема взаимоотношения GD, GDI и VCL не раскрыта...


 
Игорь Шевченко ©   (2013-02-04 22:30) [36]

Kerk ©   (04.02.13 21:59) [27]

Я ничего не знаю про ФП ;) Расскажи ?


 
Inovet ©   (2013-02-04 22:34) [37]

> [35] брат Птибурдукова   (04.02.13 22:27)
> тема взаимоотношения GD, GDI и VCL не раскрыта...

Это, видимо, вторая часть постулата, где про костыль.


 
Игорь Шевченко ©   (2013-02-04 22:59) [38]

alexdn ©   (04.02.13 22:14) [33]


> вот примерно про это ж я и говорил.


То есть, один раз ты эту цитату уже видел ? :)


 
знайка   (2013-02-04 23:16) [39]


> Вообще Гейтс большим путаником был
 уж был так был


 
KilkennyCat ©   (2013-02-04 23:50) [40]

а копи-пасте некоторых кусков ассемблерного кода с последующими небольшими изменениями, это ООП?



Страницы: 1 2 3 4 вся ветка

Форум: "Прочее";
Текущий архив: 2013.06.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.003 c
15-1360737140
O'ShinW
2013-02-13 10:32
2013.06.30
Соединить точки без пересечений. Графы.


15-1360919042
O'ShinW
2013-02-15 13:04
2013.06.30
Хвалюсь! :)


2-1352485025
Новичок
2012-11-09 22:17
2013.06.30
Посоветуйте ехе-пакер


15-1361084311
Kolan
2013-02-17 10:58
2013.06.30
iTXt png чанк на objective-c


15-1361133005
Юрий
2013-02-18 00:30
2013.06.30
С днем рождения ! 18 февраля 2013 понедельник





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский