Форум: "Прочее";
Текущий архив: 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