Имя: Пароль:
JOB
Работа
Про провал ООП
,
0 izekia
 
23.07.12
16:41
http://blogerator.ru/page/oop_why-objects-have-failed
забавная статья, правда немного скомкана, и мало что по сути, но если задуматься: насколько оправдана эта парадигма?
Она скорее как 1С, легка для понимания и применения, но в итоге ее простота оказывается мнимой, так же как и остальные преимущества.
Не говоря уже о дополнительных конструкциях делающих код менее выразительным.
60 khimiki
 
24.07.12
11:03
59+  Согласитесь,
ДанныеДляПечати.СобратьДанныеПоРеализацияТоваровУслуг(ТекущееОснование)

выглядит куда более привлекательным, чем вся эта тряхомундия.
61 Ненавижу 1С
 
гуру
24.07.12
11:05
(60) хм... а разве не
ДанныеДляПечати = ТекущееОснование.СобратьДанныеДляСчетФактуры();
62 khimiki
 
24.07.12
11:10
(61) Это что вообще такое?! У меня есть экземпляр класса, печатающего документ, назовем класс как ПечатникДокумента, я создаю его экземпляр

печатникДокумента = new ПечатникДокумента(); и вывожу документ на печать


печатникДокумента.Распечатать(ДокументОснование);
63 khimiki
 
24.07.12
11:12
62+ А Вы написали код в стиле 1С, который к ООП не имеет никакого отношения.
64 Ненавижу 1С
 
гуру
24.07.12
11:12
(62) все это прекрасно, но тогда надо разных печатников делать, ведь от типа основания зависит алгоритм получения данных
65 khimiki
 
24.07.12
11:13
(64)Зачем!? ПОЛИМОРФИЗМ
66 Serginio1
 
24.07.12
11:13
60 А если бы была перегрузка методов то можно писать единообразно для всех типов документов
ДанныеДляПечати=СобратьДанные(Док). Аналогично можно и 61 прикрутить через Хэлперы (статические методы this) либо как в 61 можно написать через метод объекта или менеджер объекта с передачей этого объекта.
Просто в 8 ке куча атавизмов.
67 Ненавижу 1С
 
гуру
24.07.12
11:15
(65) где полиморфизм?
68 Ахиллес
 
24.07.12
11:16
От уже договоритесь... вот введёт в 9.0 одинэс ООП, вот тогда заплачите горючими слезами.
69 khimiki
 
24.07.12
11:16
(66) Перегрузка немного не то. Класс ПечатникДокумента может делать другой человек, что он там делает и как - его забота. Я просто использую его класс в своих целях.
70 khimiki
 
24.07.12
11:17
(67) Полиморфизм, наряду с абстракцией и наследованием, позволяет не делать того, чего вы боитесь в (64). Вообще - то это основы ООП...
71 Господин ПЖ
 
24.07.12
11:18
что и требовалось доказать... 2 человека уже не могут договориться как это будет...
72 Господин ПЖ
 
24.07.12
11:19
нах эти бантики в учетных системах? их задачи совсем иные...
73 Serginio1
 
24.07.12
11:19
(69) Ну почему. Если у тебя нет доступа к классу, или ты не хочешь его расширять, хотя хэлперы мне очень нравятся, то перегрузка ведет к единоообразию, которая кстати довольно часто применяется в патерне визитер
http://www.rsdn.ru/article/patterns/VisitorPattern.xml#ECLAC
74 khimiki
 
24.07.12
11:20
(72) Вы просто не пробовали писать учётные системы с применением ООП. Код становится понятнее и доступнее, чем в 1С.
75 khimiki
 
24.07.12
11:22
(73) Просто я сторонник виртуальных методов, сами понимаете, сколько людей, столько и предпочтений.
76 Господин ПЖ
 
24.07.12
11:22
>Вы просто не пробовали писать учётные системы с применением ООП

не надо меня лечить... насмотрелся в свое время на "убийцев 1Ц"... как только вменяемый тимлид, сидящий с утра до ночи на проекте, переставал куячить по пальцам своим архаравцам - все скатывалось в УГ примерно через полгода...
77 Ненавижу 1С
 
гуру
24.07.12
11:23
khimiki я так и не понял как вы избавитесь от монстра из (46)
78 Господин ПЖ
 
24.07.12
11:24
(77) бугага...
79 khimiki
 
24.07.12
11:24
(76) применением ООП
80 khimiki
 
24.07.12
11:25
79 Конкретно - таблицей виртуальных методов
81 Serginio1
 
24.07.12
11:25
(75) Я тоже, но для 1С есть Модуль объекта и модуль менеджера в котором можно помещать нужные методы используя двойную диспетчерезацию
82 Жан Пердежон
 
24.07.12
11:25
(0) одна вода в статье
83 Ненавижу 1С
 
гуру
24.07.12
11:26
(79)(80) это все общие слова, набросайте решение
84 khimiki
 
24.07.12
11:26
(81)1С и ООП - совершенно разные вещи, не имеющие ни одной точки пересечения.
85 khimiki
 
24.07.12
11:27
(83)Честное слово лень повторять любой учебник по объектно - ориентированному программированию.
Философия С++. Введение в стандартный С++
Философия С++. Практическое программирование

Там ответы на 80% ваших вопросов.
86 Господин ПЖ
 
24.07.12
11:31
с вами ООП точно кранты...
87 khimiki
 
24.07.12
11:35
(86)ООП прекрасно живёт и существует, с нами или без нас, нет разницы. Что, повторюсь, не отменяет ни структурное программирование, ни декларативное, ни программирование с стиле 1С, которому в мировой практике нет пока названия.
Любой язык и любая технология, находящая применение, достойна уважения.
88 mikeA
 
24.07.12
11:44
(77) легко:

ДанныеДляПечати= Вычислить("СобратьДанныеДляПечати" + ТекущееОснование.Метаданные().Имя + "(ТекущееОснование)");

метапрограммирование рулит )))
89 Serginio1
 
24.07.12
11:45
(87) Почему это нет? 1C это чистой воды двойная диспетчеризация с использованием Idispatch или его аналогов.
90 Jolly Roger
 
24.07.12
11:45
(9) >а по сути когда начинаешь писать возникают проблемы с проектированием

если за всю жизнь ума хватило освоить только палку-копалку, то да, экскаватор будет только мешать...
91 Serginio1
 
24.07.12
11:46
(88) Сам очень часто использую такой подход, но у него есть один минус тяжело понять откуда этот метод вызывается не зная деталей. А так комменты рулят.
92 khimiki
 
24.07.12
11:55
(89) Вы хотите перевести тему дискуссии к обсуждению достоинств и недостатков COM технологии?
93 Ненавижу 1С
 
гуру
24.07.12
11:56
(85) скользкий ты какой-то
94 khimiki
 
24.07.12
11:59
(93)С чего бы это? Просто для того, чтобы рассуждать о ООП нужно быть знакомым с его положениями. А у меня нет желания знакомить новичков с этой технологией. Почитайте книги, там всё есть.
95 Кокос
 
24.07.12
12:02
(0) чем не устраивает ООП? даже 1С(включая 77) построен на принципах ООП. конечно дальнейшее наследование закрыто но построенно таки на его принципах. И вплоне успешно работает.
96 Serginio1
 
24.07.12
12:05
(94) Нет не хочу. Мне нравится C# где можно использовать и вывод типов, и ФП (Linq очень нравится) и ООП и динамики (двойная диспетчеризация).
Едмнственно пока не реализован патерн матчинг
97 Flyd-s
 
24.07.12
12:07
(58), у меня не возникало с этим куском кода проблем.
98 Flyd-s
 
24.07.12
12:07
(60), а если не только по РеализацииТоваровУслуг надо?
99 Flyd-s
 
24.07.12
12:09
(62), да, но всю кашу надо будет куда-то в класс засунуть
100 Steel_Wheel
 
24.07.12
12:12
(87) >> нет названия
Предметно-ориентированное?
101 Steel_Wheel
 
24.07.12
12:15
(77) Общий тип, куча предков, вызов перегруженной функции с параметром типа предок
102 Serginio1
 
24.07.12
12:19
(95) Скорее на утинной типизации wiki:%D3%F2%E8%ED%E0%FF_%F2%E8%EF%E8%E7%E0%F6%E8%FF
103 khimiki
 
24.07.12
12:26
(96)Да, С# очень правильный язык программирования, очень правильный. Надеюсь со временем он вытеснит 1С как класс с рынка учётных систем.
104 khimiki
 
24.07.12
12:27
103+ А я на ADO.NET пока застрял. А что, Linq действительно кульная штучка?
105 Serginio1
 
24.07.12
12:30
(104) Особенно Linq to EF. Там и запрося аля 1С.
Ну вообщето в том же Linq to EF это можно делать в том числе и для запросов аля 1С OjectQuery

string entitySQL = " SELECT p, p.Filling " +
"FROM PartyContext.Pinatas AS p "
"WHERE p.Filling.Description='Candy'";
var query=context.CreateQuery<DbDataRecord>(entitySQL);
query.MergeOption = System.Data.Objects.MergeOption.NoTracking;
var pinatasWithFilling=query.ToList();

Или v8: ADO.NET EF и 1С
106 Ненавижу 1С
 
гуру
24.07.12
12:41
(101) так он молчит, зато пишет про распальцовку личную
107 khimiki
 
24.07.12
14:16
(100) >> нет названия
Предметно-ориентированное?

Я говорил про мировую практику, а не про нашу рашу, которая, как известно, всегда идёт своим, особенным путём.
108 khimiki
 
24.07.12
14:17
(106) А о чём с вами разговаривать, если вы про полиморфизм не знаете? Может мне вас читать - писать поучить?
109 iceman2112
 
24.07.12
14:52
бред.
110 Serginio1
 
24.07.12
16:22
(62) Проще использовать метод менеджера как статический класс. Кстати в Delphi есть перекрытие виртуальных статических методов ссылки на которые хранятся с отрицательным смещением в VMT
111 Serginio1
 
24.07.12
16:23
110 поправка как статический метод класса
112 Ndochp
 
24.07.12
17:01
(107) У меня в учебнике (вроде переводном) по VB его стиль назывался предметно ориентированным. На первый взгляд ВБ с 1С схож, но его я глубоко не копал.
113 Serginio1
 
24.07.12
17:17
114 Rie
 
24.07.12
17:37
(112) VBA - предметно-ориентированный. Но предметно-ориентированные и объектно-ориентированные - это как бы перпендикулярно (назначение языка и структура/парадигма языка). Для 1Сика и VBA есть термин object-based (но адекватных переводов на русский язык мне не встречалось).
115 Flyd-s
 
24.07.12
17:59
(0), прочитал. Какое-то собрание сторонников шапочки из фольги
116 Ненавижу 1С
 
гуру
25.07.12
07:01
(108) поучи бабушку, откуда мысль, что не знаю?
117 napagokc
 
25.07.12
08:06
Еще не дочитал статью до конца, но на мой взгляд налицо идет сравнение теплого с мягким. Люди просто спорят о разных вещах.
Я согласен с высказыванием Никлауса Вирта - ООП лишь надстройка над структурным программированием. И что? Чем это плохо-то? Противники ООП придираются к тому, что сторонники ООП в своих разработках используют уже готовые объекты! Какая связь концепции ООП и работы конечного программиста с ней? Лично я когда пишу свои собственные программы для себя лично, использую только базовые объекты. Таким образом у меня получаются программы без лишних данных - в моих объектах отсутствуют неиспользуемые поля и методы. И чем плохо такое программирование? Или противники ООП скажут, что это уже структурное программирование, а вовсе не ООП? Учитывая то, что у меня практически отсутствуют процедуры, не являющиеся методами объектов, а сами объекты тесно связаны между друг другом...
Я хочу сказать, что концепция ООП ни разу не исключает все положительные стороны процедурного программирования. А быстрота разработки, при использовании ООП, заключается в том, что сами программы разрабатываются быстрее. Да, такие программы могут жрать дофига лишних ресурсов. Да, это может быть похоже на приведенное в статье фото (http://blogerator.ru/uploads/pix2012/2010/oop2-failed-3.jpg). Но согласитесь, что разработать такую модель (если предположить, что она рабочая) значительно проще, чем создавать телефон со встроенным фотоаппаратом? ЗНАЧИТЕЛЬНО проще! А, как известно, чей продукт раньше выйдет на рынок, тот и сорвет весь куш! К тому времени, когда конкурирующая фирма изобретет наконец свой первый телефон со встроенным фотоаппаратом, лидирующая на рынке фирма уже выпустит вторую или третью модель телефона, который тоже будет содержать встроенный фотоаппарат. Только у лидирующей фирмы уже будет все отлажено, устранен целый ряд багов, про которые в конкурирующей фирме еще может быть даже не известно.

В общем, пока меня статья не убедила. Просто спорят о разных вещах. Продолжу читать дальше. :)
118 Jolly Roger
 
25.07.12
08:22
(117) да чо там читать-то?... эта хрень затеяна исключительно ради флуда и привлечения внимания...
119 Evpatiy
 
25.07.12
08:25
Все кроме 1С - г0вно, конфигуратор - наше все!
Где голосовалка?
120 Xapac_2
 
25.07.12
08:28
(0) а где недостатки ООП то?  чета не нашел. по пунктам. каике-то бла бла
121 Птах
 
25.07.12
08:45
(0) Статья еретическая. Авторам - жечь пятки и сечь жпо.
122 Xapac_2
 
25.07.12
08:49
а вообще я так понял мол, за ооп погнались и часто до маразма доходит
то что можно по простому, все там придумывают какието иерархии, когда можно одну мизерную функцию написать.

вообщем как обычно все в меру.
123 НафНаф
 
25.07.12
08:51
про паттерны еще никто не писал
124 napagokc
 
25.07.12
08:55
Не, статья верная, но спор идет о разных вещах, на сколько я понял. Противники ООП считают ООП злом из-за того, что из-за наследования конечный класс приобретает слишком много лишних полей и методов. Это совершенно верно, но кто запрещает написать свою собственную иерархию классов? Без всяких излишеств, используя достоинства ООП... Кривость рук? А если писать собственную иерархию, то все аргументы противников ООП уходят в никуда - вообще ни одного аргумента нет против.
125 Ненавижу 1С
 
гуру
25.07.12
08:56
(124) написание собственное иерархии уже минус
126 Xapac_2
 
25.07.12
08:59
УПП без ООП!!! доказательство, что без ООП жизнь есть!
127 Ненавижу 1С
 
гуру
25.07.12
09:00
(126) УПП? да разве это жизнь ))
128 napagokc
 
25.07.12
09:07
(125) Серьезно? А без собственной иерархии, простым структурным программированием писать аналогичную программу легче, да? Если нет, то какой же это минус тогда? Нет минуса. Есть только плюсы в ООП.
129 quest
 
25.07.12
09:12
Лисперы те еще троли... Прекрасно осознавая что кроме скобок (по сути AST) нет ничего лучше, издеваются над другими языками. И получается у них, что то ООП фигня, то АОП - чушь, то ФП - херня.. А сами обзавелись наверное одной из самых лучших реализаций ООП, четко вывереной методлогией использования агентов и как ни странно - той самой функциональщиной.
130 quest
 
25.07.12
09:13
а Грэм ООП в своей On Lisp неслабо так потролил :)
131 NS
 
25.07.12
09:14
(112) Схож, или всё-таки 1С это и есть VB?
132 Ненавижу 1С
 
гуру
25.07.12
09:19
(128) работать, когда можно не работать это минус
133 napagokc
 
25.07.12
09:24
(132) Ты уводишь разговор в сторону. Если ты хочешь писать как можно меньше своего кода - созданные в ООП классы тебе в помощь. Тут налицо явный плюс ООП. Если ты хочешь написать компактный код, не жрущий лишних ресурсов - пиши свою собственную иерархию. Это немного усложнит задачу, но даже при таком подходе ты не проиграешь просто структурному программированию.
А значит, ООП никак не хуже структурного программирования, но в некоторых случаях может иметь целый ряд больших плюсов.
134 Ненавижу 1С
 
гуру
25.07.12
09:25
(133) я с тобой полностью согласен
135 NS
 
25.07.12
09:25
(133) А процедуры и функции объединенные в библиотеки не помогают писать меньше своего кода?
136 napagokc
 
25.07.12
09:26
(135) ты не поверишь, но используя ООП можно использовать те же самые процедуры и функции из сторонних библиотек!
137 NS
 
25.07.12
09:28
(136) И казалось бы - причем тут ООП...
138 Sserj
 
25.07.12
09:29
(126) Не ври, в 1С каждый справочник, документ, отчет, обработка наследник базового класса а значит ООП есть :)
139 napagokc
 
25.07.12
09:30
(137) В том-то и дело, что не надо уводить разговор к задачам, где ООП использовать нет необходимости. Я не знаю таких программистов, которые используют ООП просто потому, что знают его, а не потому, что это действительно облегчит задачу.
140 Sserj
 
25.07.12
09:30
(139) А я знаю - это все кто пишет на яве. Потому что там прото нельзя писать не используя хоть один класс :)
141 napagokc
 
25.07.12
09:31
(140) Напомню, что мы говорим о концепции ООП, а не о конкретном языке программирования
142 Jstunner
 
25.07.12
09:31
(135) помогают, но расширить возможности библиотек без использования наследования и полиморфизма довольно проблематично.
Пример: без простейшего ООП, библиотеку, рисующую фигуры, с предопределенными треугольником и прямоугольником, сложно заставить рисовать пятиконечную звезду.
143 Sserj
 
25.07.12
09:36
(141) неправда ваша, досвловно "не знаю таких программистов, которые используют ООП просто потому, что знают его", фактически если программист пишет на современных языках ява, сишарп и многих других он просто обязан использовать ООП, потому как без него на этих языках просто невозможно писать.
144 Rie
 
25.07.12
09:39
(143) А что мешает писать на Java или C#, НЕ используя ООП?
145 NS
 
25.07.12
09:42
(143) А я знаю. Каждая первая шахматная программа, несмотря на предупреждения опытных товарищей - пишется с использованием ООП. А потом переписывается с нуля, когда человек понимает что ООП тут нафик не сдался.
146 Sserj
 
25.07.12
09:42
(144) Хотяб бы то что любой метод или поле, в том числе и точки входа обязаны быть внутри классов. И хочешь или нет классы придется делать а классы как минимум наследуются от базовых ну и собственно ООП уже используется.
147 Jstunner
 
25.07.12
09:46
(145) шахматы - известная и законченная модель, маловероятно, что когда нибудь появится  новая фигура или ход
148 Rie
 
25.07.12
09:47
(146) И что? Делаешь статические классы - и не мучаешься.
149 Rie
 
25.07.12
09:49
+(148) Да и почему напрягает ключевое слово class? ООП - это ведь технология. Не применяй её - и пиши хоть на Java, хоть на C#, хоть на Smalltalk.
150 Jstunner
 
25.07.12
09:49
(146) достаточно использовать классы только как пространство имен.
151 Xapac_2
 
25.07.12
09:50
(148)+100500 именно так и делаю "библиотечки"
152 Sserj
 
25.07.12
09:52
(148) Но таки делаешь же статичный, но таки класс - ООП в действии.

(149) Можно любой пример на яве рабочий без использования class, вот действительно стало до жути интересно.
153 NS
 
25.07.12
09:52
(147) Не понимаю о чем ты. Любая готовая программа это законченная модель.
154 Rie
 
25.07.12
09:57
(152) Тебе шашечки или ехать? Какое отношение к ООП имеют статические классы? Или для тебя ООП и ключевое слово class - синонимы?
155 Кирпич2
 
25.07.12
10:05
ХорОш про ООП! Давайте про goto уже.
156 Rie
 
25.07.12
10:08
Можно совместить и обсудить goto из метода базового класса внутрь произвольной функции класса-наследника...
157 Кирпич2
 
25.07.12
10:09
(156) Вот вот
158 Кирпич2
 
25.07.12
10:11
+157 Ведь это форменное безобразие. Хорошо что никакой язык этого не позволяет. А то мучались бы. И страдали.
159 Stagor
 
25.07.12
10:28
"Противники ООП считают ООП злом из-за того, что из-за наследования конечный класс приобретает слишком много лишних полей и методов. "
ага!
но вроде, как в Руби (или др. языке) можно выборочно наследовать и даже динамически.