LINUX.ORG.RU

Объекты провалились


0

0

Опубликован перевод статьи Ричарда П. Гэбриэла, в которой автор наглядно демонстрирует нежизнеспособность парадигмы объектно-ориентированного программирования в ее теперешнем виде, в частности на примере ее воплощения в Java. Будущее -- за новыми идеями (или хорошо забытыми старыми).

За перевод спасибо Александру Майбороде ака HandleX.

>>> Подробности

anonymous

Проверено: ivlad ()

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

а из своего опыта могу сказать, что работая одно время в крупной конторе со своим ИТ отделом в 50 человек (это только программисты, не админы) - и вправду часто получалось очень грустно, что написать сначала бывало проще, чем копаться в чужих недокумментированных (про автодокумментирование там вообще никто слышал - я первый рассказал:) интерфейсах.

да, и язык программированияя там был вижуал васик 6.0 перемешанный с дотнет. это вообще сказка была, когда у меня все работало, а на клиенстком коме писало: прога написана для дотнет билда 2020, а здесь установлен 2019, обновите :-) (цифры с потолка взял)

o1o
()
Ответ на: комментарий от o1o

99% "программистов" пользоваться ООП не умеют. А лезут. Поэтому и приходится переписывать чужой код и ругать ООП. Как бы выгнать леммингов из программирования?

Yampp
()
Ответ на: комментарий от Yampp

99% "певцов и музыкантов" не умеют нормально ни петь ни играть. А играть как Гилмор вообще могут единицы. Попса приходит туда где есть деньги. Благодаря Delphi программистом себя может назвать каждый после прочтения статьи в журнале Какер. Теперь попса есть в программировании. Если ты знаешь и умеешь пользоватся ООП, а заодно CVS, Doxygen и другими страшными и непонятными вещами, то попса тебе не проблема.

anonymous
()
Ответ на: комментарий от anonymous

Дык мне это досталось в виде распечатки. Так что про 8 и лишние скобочки я сам знаю, вопрос был про ошибки в логике программы. Это конечно не однострочник на перле, но тоже внушает. Ещё очень инетересный вопрос:

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

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

ugoday ★★★★★
()
Ответ на: комментарий от anonymous

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

ugoday ★★★★★
()

Взгляд со стороны. Писать приходится редко но замечаю такую вещь. Например, надо поставить точку на экране. Цветную. Лет десять назад это было очень просто. Сегодня для этого надо подключть чудовищных размероов ОО библиотеку, породить кучу new объектов, послать им тучу сообщений и только где-то в самом конце получить вожделенную точку. Да, она будет в красивом окне с заголовком, прокрутками, с масштабируемыми координатами и поворотами, полупрозрачная и с цветовыми профилями в моделях CMYK/HSV/Жопа_c_ручкой. Однако эта библиотека будет грузится полчаса и сожрес 100Mb памяти. Нахуа ?

anonymous
()
Ответ на: комментарий от anonymous

>> Нахуа ?

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

Ron
()
Ответ на: комментарий от anonymous

> Например, надо поставить точку на экране. Цветную. Лет десять назад это было очень просто.

Не надо ля-ля. Просто это было только на специализированных компах. А я в 94 году уже программил немножко. Так вот. Прежде чем точку ставить, не плохо было бы в графику войти. Тогда, если помнишь, в основном в тексте работали. При входе в графику главное было выбрать - какой видеоадаптер используешь и в каком режиме. Ибо VGA уже во всю рулил, но и EGA полно было. Да и CGA бродили по окраинам, в лице "Поисков". Причём, следует отметить, что чётких способов определить какой перед тобой видеоадаптер было проблематично. BIOS давал некоторую универсальность, но был настолько тормозноой... На прямую работать? Хех, открой книжку Майкла Абраша "Zen of Graphic Programming" и посмотри чего стоила тогда работа с графикой, может изменишь мнение.

> Однако эта библиотека будет грузится полчаса и сожрес 100Mb памяти.

У меня на компе на каждая гамешка по 100 Мб жрёт, где ты такие библиотеки достаёшь? А кроме того, сейчас скорости винтов меряются десятками мегабайт в секунду, а памяти к гигабайту ползёт. Нашёл с чем сравнивать - в 94 4 мега было очень неплохо, а сокрость винта до мега в секунду не дотягивала.

> Да, она будет в красивом окне с заголовком, прокрутками, с масштабируемыми координатами и поворотами, полупрозрачная и с цветовыми профилями в моделях CMYK/HSV/Жопа_c_ручкой.

Вот взять бы сейчас тебя, посадить за комп 94 года, дать ПО того времени и заставить написать программку, типа WordPad'а, т.е. что бы текст набирать могла, созранять/грузить. Масштабирование/прокрутка, форматирование/шрифты. И печать. На разных принтерах. И что бы работала в графике, с менбшками там всякими. Ну в общем был в те времена (или чуть позже) аналог, "Слово и Дело" назывался. И пиши - без применения ООП и с нуля. Да, начинать будешь с "голого" DOS'а. Никаких форточек и монстроидальных библиотек. Что сам напрограмишь - то и вдело сможешь пустить. Памяти под большие текстовые файлы потребуется? Легко, только её количестов проверять сам будешь и, при необходимости, EMS/XMS сам обрабатывать будешь. Я бы посмотрел как быстро ты сдашся и начнёшь всех крыть из "материала заказчика".

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

atrus ★★★★★
()
Ответ на: комментарий от anonymous

> Завтра будет хорошая погда? да/скорее да, чем нет/не знаю/скорее нет, чем да/нет.

Право же, не знаю, каких чудес все от этой "нечёткой логики" ждут. Читал я её. Азы самые, разумеется. Но достаточно, чтобы раскрыть тебе страшный секрет оной нечёткой логики: ВРАНЬЁ! ВСЁ ТАМ ЧЁТКО!

От того, что, по сути дела, функцию назвали "нечётким значением" _ничего_ принципиально не изменится. От того, что наопределяли чуток функторов -- аналогично. Ибо все они определены именно "чётко". Как и подобает математике.

С уважением -- Смоляное Чучелко

anonymous
()
Ответ на: комментарий от anonymous

> В первом случае инкапсуляции нет. Во втором она есть?

(Случаи для краткости опускаю, как и разбор мелких ошибок;)

Странный вопрос. В первом случае инкапсуляции нет. Во втором -- есть. А как иначе?

Кстати, одну твою ошибку я таки не пропущу: ежели речь идёт о getters/setters, то и строки второго примера должны записываться как o.a=b; intc = o.a;

И какой вывод о внутренней реализации ты можешь сделать из этих строк? Например, ты можешь сказать, что в объекте o присутствует член a? Ты можешь изменить оный a, буде, предположим, он присутствует, не меняя при этом члена d -- если я _не_захочу_ предоставлять тебе такой возможности?

С уважением -- Смоляное Чучелко

anonymous
()
Ответ на: комментарий от anonymous

>Ибо все они определены именно "чётко". Как и подобает математике
А никто и не собирается идти вразрез математике... Ты ж не будешь искать способы из 2+2 сделать 5?

anonymous
()
Ответ на: комментарий от anonymous

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

anonymous
()
Ответ на: комментарий от atrus

Ты ламер. Мне в 89-м году, чтоб точку поставить, достаточно было послать на терминалку (Тектроникс) строку из ~6 символов. Ничего никуда не переключая, и не про какие сраные попсовые CGA/EGA/VGA не думая. А что сейчас? А сейчас даже эмуляции того тектроникса нигде не найдёшь. Скучно. В жопе IT, после того, как быдло в него набежало...

А по поводу редактора с наворотами на уровне софта начала 90-х и без ООП (и хули ж ты, ублюдок, решил, что ООП - последний писк? ООПом ламеры играются с начала 70-х) - посмотри на emacs. Нет там никакого ипучего ООП. И нах не надо. Но всё сделано очень даже правильно. На правильном языке.

Antichrist
()
Ответ на: комментарий от Antichrist

несгибаемый антихрист скучает по временам терминалов и отсутствию ВГА. Я тож иногда скучаю по текстовым режммам и ВТ100, но обычно 150 накатишь и легче становится:) И емакс не кажется таким уж шедевром;)

anonymous
()
Ответ на: комментарий от swar0g

Кстати на Асемблере достаточно просто под винду писать - Апи он и в африке апи - библиотек в виндах куча - сиди и вызывай функции как хош и ООП нету и места мало занимает и скорость прикольная.

ASTAROT
()
Ответ на: комментарий от int19h

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

А юзвери продалжают тихо материться в очередной раз проапгрейживать очередное глюкало.

dsa
()
Ответ на: комментарий от ASTAROT

>Кстати на Асемблере достаточно просто под винду писать - Апи он и в африке апи - библиотек в виндах куча - сиди и вызывай функции как хош и ООП нету и места мало занимает и скорость прикольная.

>ASTAROT * (*) (16.08.2004 9:57:41)

Ты смотри и адепты Саши Усова подвалили :)

dsa
()
Ответ на: комментарий от lenin

> Видите-ли, atrus, жизнь - она такая, что работать приходится не только и не столько со своим кодом.

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

dsa
()
Ответ на: комментарий от atrus

>Тогда пусть так честно и говорит. Мол, C++ - паршивый язык. Или объекты в C++ реализованы хуже некуда. Он-то собственно что предлагает? Откатится от объектов и искать новое?

Lisp,CLOS,Ocaml,JSP Custom Tags.

dsa
()

Статейка конечно хорошо написана, но учитывая что в ней нет ни одной ссылки на реальность, а только умозаключения не имеет практической пользы, ИМХО:)

PS. Я заметил что есть несколько "волшебных" слов употребление которых на форуме заставляет анонимусов выползти из норок и вызывает нескончаемые потоки флейма :) И почему то все эти слова из одной области: ООП,ООД,С++ и т.д. Откуда такая реакция на "провалившуюся" концепцию?

KIV
()
Ответ на: комментарий от ASTAROT

Ага, и думай потом - тут ставить префикс-подчёркивание, тут убрать, лепи библиотеки импорта и файлы описания, тут пихай параметры в стэк в таком порядке, тут в другом, тут сам очищай стэк, тут ни в коем случае, собирай и лови оверфловы, просто сказка, вы вообще чего-нибудь серьёзное на асме писали под винду?

anonymous
()
Ответ на: комментарий от ASTAROT

>Я вспомнил молодость!!! ура

1. А я вспомнил маму этого кодера злым матерным словом.

2. Ну не фига себе у тебя молодость была. Сочуствую.

>Ну что - вполне понятная прога на Бейсике)))

А раз ты такой умный, то ответь на вопрос, какие расчётные формулы используются. Файл результата выполнения программы у меня есть. Он не вполне совпадает с тем, что должна выводить эта "программа".

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

ugoday ★★★★★
()
Ответ на: комментарий от anonymous

>> ООП - лажа, его применение в больших проектах даёт эффект обратный желаемому. как ни крути (с) >Подозреваю этот вывов следствие вашего "богатого" опыта ;-)

Ключевое слово - "нашего". Всё таки уже, если начинасть с TP 5.5, когда ОО пошло в массы прошло достаточно времени, что бы сделать какие-то выводы.

Вот то, что я в первый раз услышал от широко в узких кругах известного Александра Кротова в году где-то 97-98 - "ОО программирование требует тщательного, затратного, безошибочного проектирования".

А много ли у нас грамотных проектировщиков (да ещё знакомых с предметной областью)? Отсюда и головняки... А "функциональщина", в виде Lisp'а по которой, так скорбят старики - она, как раз прощала огрехи проектирования.

dsa
()
Ответ на: комментарий от anonymous

>Ну и на чем легче описать интерфейс - на HTML или на Си?

На JavaServer Faces

dsa
()
Ответ на: комментарий от anonymous

>И емакс не кажется таким уж шедевром;)

Ха. Emacs ему шедевром не кажется. Предложи лучшую замену!

ugoday ★★★★★
()

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

zZzZ
()
Ответ на: комментарий от ASTAROT

>Кстати на Асемблере достаточно просто под винду писать - Апи он и в африке апи - библиотек в виндах куча - сиди и вызывай функции как хош и ООП нету и места мало занимает и скорость прикольная.

Ага а самое прикольное, наверное, это реализация бизнес логики на асме:) На асме с БД пообщаться, анализ данных провести - самое то %)

KIV
()
Ответ на: комментарий от KIV

Неужели Антихрена зовут также как и меня, пойду повешусь.. а заместо стульев подставлю стопку книг по ООП..

Oksiv
()
Ответ на: комментарий от int19h

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

Все наоборот. Это ООП-идолопоклонникам надо до функционального доучиваться. Неучи.

Cybem ★★
()
Ответ на: комментарий от Shaman007

>Ну а что есть в Smalltalk или ML, чего нет в Java или C++ и без чего я не смогу жить и писать программы?

Ну так и не рассуждайте об авторе и статье! Вам следует плотно посидеть в библиотеке и многому поучится.

Cybem ★★
()

Мля, опять вопли про "серебрянную пулю". Ну и кто автору статьи виноват? Или он хочет универсальную парадигму, которую и учить не надо будет, и сама все за него делать будет? :-/

Spectr ★★★
()

Да автор статьи всетаки прав, 90% обсуждающих совершенно не понимают смысла написанного, тут дело не в том что ООП плох или хорош, его ниша всегда останется и будет очень весомой в рамках проекта, дело наверное всетаки в том что любой глобальный прект заранее не продумаеш и не реализуеш в полном объеме, проект должен иметь потенцию к расширению во времени и самоорганизации, а здесь к сажелению класические реализации ООП никак не дотягивают. Новые парадигмы со временем появятся с применением ООП или без него это неважно.

anonymous
()
Ответ на: комментарий от Spectr

>Мля, опять вопли про "серебрянную пулю". Ну и кто автору статьи виноват? Или он хочет универсальную парадигму, которую и учить не надо будет, и сама все за него делать будет? :-/

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

dsa
()
Ответ на: комментарий от dsa

20 лет назад были lisp и фортран.

lisp'у нас учил яйцеголовый проф. математики, который потом съебался в

штаты, так шта всем пришлось хуярить на фортране :)

Sun-ch
()
Ответ на: комментарий от anonymous

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

Oksiv
()
Ответ на: комментарий от Oksiv

>как могут программы самообучаться...

Какая нынче аграниченная молодежь :(

Работы по АI ведутся уже более 40 лет.

Sun-ch
()

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

И очень бы хотелось вновь увидеть работу модераторов. С ними было как-то чище...

frost_ii ★★★★★
()

"Я на собственном опыте перенёс это. До того, как я ушел изучать поэзию в 1995 году, моя карьера исследователя вращалась вокруг языка программирования LISP. Когда я вернулся в 1998, я обнаружил, что моя область исследований оказалась уничтоженной."

Обидили убогого. Отобрали копеечку...

vada ★★★★★
()
Ответ на: комментарий от vada

>До того, как я ушел изучать поэзию в 1995 году,

А зря смеешься, этот человек занимается исследованием, видишь какой круг

интересов. Это тебе не бухалтерию на явке кодить :)

Sun-ch
()
Ответ на: комментарий от Sun-ch

>А зря смеешься, этот человек занимается исследованием, видишь какой круг

>интересов. Это тебе не бухалтерию на явке кодить :)

Да кто смеется? Во времена перестройки (депрессии) к нам на работу в ВЦ пришла училка русского языка из школы. Программером пришла после каких-то убогих курсов. Она говорила: - "Мне освоить любой язык программирования нетрудно. Я же лингвист"

Вот этот теоретик из таких.

Херня, а не статья.

А вот для флейма! У Станислава Лема есть очень интересная идея. Может кто помнит. Это в "Непобедимый" и "Раздвоение личности". Помоему так называлось. Там у него идея супер оружия, которое состоит из малюсеньких хреновенок, которые объеденяясь в рой получают способность формировать адаптирующуюся к условиям супер интелектуальную систему.

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

Народ! Вперед! Это не провокация! :)

vada ★★★★★
()
Ответ на: комментарий от vada

Как много в мире Войн Голда Нищеты которая порождает вот такую вот ебанутость (пошел на хуй котороче ...)

anonymous
()
Ответ на: комментарий от vada

Ха-ха-ха, природа уже создала юнификацию давно, зоологию надо было учить, а не только ботанику.

anonymous
()
Ответ на: комментарий от anonymous

>public bit128 get(){ return store; }

>public double get(){ return (double)store; }

>public long get(){ return (long)store; } }

>Вот настоящее скрытие реализации и не надо гнать!

Цитата из MSDN: "Overloading functions with argument lists of the same types, based on return type alone, is an error. "

Знатоки, блин.

anonymous
()
Ответ на: комментарий от anonymous

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

Ждем ..

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.