LINUX.ORG.RU

понять суть ООП

 ,


5

1

собственно САБЖ подскажите что почитать/посмотреть, чтобы вникнуть в предметную область. Понимаю, что пишу как-то не так, ибо передаю методам кучу параметров и почти не использую свойств.

★★★★★

Последнее исправление: cetjs2 (всего исправлений: 2)

Ответ на: комментарий от dizza

Что тут может быть не понятно?

Тут все понятно, только озвучиваете ли вы «коллективное мнение»? А то судя по комментам, это не совсем так: кто-нибудь другой может дать сильно отличающееся определение, добавив «что тут может быть непонятного?»).

Вот пример: понять суть ООП (комментарий) - под это можно и акторы подогнать.

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

Точное определение это одно. А понятно - это другое.

Это вы себе должны сказать, ибо изначально был реквест «четкое». Или это корректировка к собственному посту?

Из точного ..

Вот, сразу видно (из _proposal_), что устоялось).

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

Устоявшееся определение, это третья категория (это про наследование, инкапсуляцию, полиморфизм :) Пусть ТС сам выбирает.

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

An object is a first-class, dynamically dispatched behavior.

Интересно, в рамках подобного определения интерфейсы - не обязательно на объектах (их можно реализовать в compile-time). Следовательно и «компонентная парадигма» - не обязательно надстройка над ООП.

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

Там вроде дальше разжовывается что такое dynamically, получается что в compile time нельзя. Таким же макаром хаскелевские тайпклассы не катят как ООПшные интерфейсы.

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

Таким же макаром хаскелевские тайпклассы не катят как ООПшные интерфейсы.

Ну да, правда если (afaiu) используется Existensials / GADTs - уже будут элементы.

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

Но все равно лисп это не тот язык, который нужно учить для понимания концепций ООП

Верно, CL - не академический язык.

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

чистых функций нет
автоматического каррирования нет
скомпозировать функции
монадки
control-flow

Но ведь перечисленное не даёт никаких преимуществ, не повышает производительность разработчика, не делает процесс разработки более эффективным, а программы — более качественными. Это — миф, насаждаемый адептами маргинальных течений (ФЯП в данном случае). Доказательств этим утверждениям на практике нет.

пользоваться невозможно.

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

Но не следует обобщать свой неудачный опыт. 99% ПО, которым пользуемся мы с вами, написано без использования монад, каррирования, чистых функций, композиций, анафорических лямбд, пандорических захватов и зигохистоморфных препроморфизмов.

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

Структуры, к которым прилепили функции
ООП тривиальная надстройка для процедурных языков

Доооо, Проффесианализмом™ за версту несёт, аж смердит.

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

Верно, CL - не академический язык.

Но и промышленным он, очевидно, тоже не является.

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

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

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

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

99% ПО, которым пользуемся мы с вами, написано без использования ... чистых функций ...

epic fail

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

epic fail

Что не так? Месье не знает определения «чистых функций»?

Впрочем, если учитывать, что в воздухе густо запахло superhackkiller1997'ом, это неудивительно.

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

Хотя мне не хватает в с++ foreach.

Зачем оно тебе там? Тебе что, сложно C-v C-c нужное количество раз понажимать?

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

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

Тогда уж скорее как у эсперанто.

Такая же кучка задротов-евангелистов и адептов-неадекватов, считающих объект поклонения «самым совершенным языком», свои проповедники и гуру, и Stable 0.01% Marketshare Since 1950's™ ©

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

Не слушай тех, кто тебе советует Lisp, он очень далек от ООП и ближе к ФП.

Ты сделал мне реально смешно. ФП даже без tail recursion?

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

Но ведь перечисленное не даёт никаких преимуществ, не повышает производительность разработчика, не делает процесс разработки более эффективным, а программы — более качественными.

[Citation needed]

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

Функциональщина - меньшее зло, нежели ООП. И что предлагаешь в альтернативу Erlang?

Amphetamine-encoder
()
Ответ на: комментарий от auto12884839

Tail recursion не поддерживается в стандарте, но это не значит, что она не поддерживается в компиляторах CL. SBCL - ее прекрасно поддерживает. А из всех свободных реализаций - он, на сколько мне известно, таргет-компилятор для большинства библиотек.

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

Лисп? ООП-язык? Да Вы упороты

Месье, держите себя в руках.

Перевожу для публики. В тебе люто взбурлил юношеский нонконформизм, и ты решил перелезть с одного маргинального языка на другой. Зная, что ООП — это мейнстримная парадигма, ты (сознательно или подсознательно) отвергаешь её, так как это идёт вразрез с нонконформизмом и желанием не быть как все. Поэтому ты пытаешься отрицать связь лиспа с ООП.

Но в этом случае тебя ждёт фейл. ООП, хоть и кривое, там всё-таки есть. Hint: Common Lisp Object System aka CLOS.

P.S. И да, если хочется совсем лютой маргинальщины, гарантированно не содержащей ООП, то стоит смотреть в сторону Haskell, Epigram, Coq, Omega, Agda2 и подобных.

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

Не слушай тех, кто тебе советует Lisp, он очень далек от ООП и ближе к ФП.

Вообще-то, ФП — это: типы как объекты, каррированные функции как стрелки, HOFs как экспоненциалы, чистота, ссылочная прозрачность, аппликативность и свободные (при совпадении доменов-кодоменов) композиции, equational theory settings / reasoning как следствие, в терминах ТК, в том числе, начальные алгебры / финальные ко-алгебры как фреймворк для описания индуктивных рекурсивных данных (как выход - результаты, значения) и ко-индуктивных ко-рекурсивных потоков данных (как вход); функторы, монады, Kleisli категории - многие индуктивные [возможно] рекурсивные типы данных которые функторы (начиная с Identity, Maybe и List), также, обычные суммы, произведения и степени, то есть кортежи/записи, объединения/варианты и функции - writer, error и reader/environment, для функций более специального вида - prompt, parser, state и cont, par/conc/async как cont для fork/join/io/done языка; функторы, ко-монады, coKleisli категории - ко-индуктивные ко-рекурсивные типы данных которые функторы (простейшие потоки и деревья, например), те же произведения и степени (суммы?), указатели и изменяемые подструктуры (линзы, как функции в), зипперы; свободные монады вокруг типов данных которые функторы - iteratees (которые сами по себе потоки, то есть финальные коалгебры для соответвующих (строго-позитивных таки) функторов), разные языки (eDSL на ADT) и их интерпретаторы; ко-свободные ко-монады для типов данных которые функторы - ?; (под)категории и стрелки - линзы (категория, тензор, но не вполне стрелка), обычные функции, Kleisli стрелки, coKleisli стрелки, стрелки biKleisli категорий, функции ограниченные типом - списки-в-списки, потоки-в-потоки, деревья-в-деревья, сигналы-в-сигналы и поведения-в-поведения (как оно применяется в FRP) и т.п., автоматы, симуляции, преобразователи, некоторые языки-eDSL-на-ADT, опять же; монадические трансформеры как определённого вида натуральные трансформации для определённого вида функторов над разными монадами - WriterT, ErrorT, ReaderT, StateT, ContT, MaybeT, ListT и т.д., например, ReaderT (ConstEnvironment, MutableScope, Resources) IO - эффекты, injectable read-only / write окружение, список ресурсов пополняемый их захватами по мере выполнения и автоматически освобождаемый в конце; полугруппы, моноиды, сворачиваемые и обходимые типы и т.п. категорные и алгебраические типы и классы как «паттерны» и средства декомпозиции.

Где это всё в лиспе?

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

Ты тут очень много буллшита написал, не имеющего прямого отношения к идеологии ФП. К тому же, буллшит в тексте повторяется. И даже в этом буллшите, обусловленном своеобразностью именно хаселля, а не ФП, есть вещи, которые легко можно найти в CL.

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

Месье не знает определения «чистых функций»?

Отсутствия side-эффектов недостаточно; скажем, cos(x) - уже не подходит?

густо запахло superhackkiller1997

Чем знаменит? Хм.. где-то этот «идиоматический» оборот уже был, смотрите, чтоб не поистерся.

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

[Citation needed]

Если верить адептам, то использование лиспа/хаскеля/whatever на порядки повышает производительность труда разработчика, позволяет уделывать десяток жабабыдлокодеров одним мизинцем, делает программы более качественными, код более выразительным, а лобковые волосы — мягкими и шелковистыми.

В то же время, большинство популярных программ страдают от плохой управляемости, раздувания кодовой базы и медленного развития. Если бы вышеприведённый миф имел место, то лисперы/хаскелисты/whoever давно бы предложили аналог того же злополучного Firefox, или OpenOffice, или GNOME/KDE, который бы развивался динамичнее, работал быстрее и был бы выше качеством.

Но ведь этого не происходит.

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

Ты тут очень много буллшита написал
буллшит
в буллшите

Разумеется, для людей, некомпетентных в ФП, всё вышеприведённое — «птичий язык».

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

Haskell, Epigram, Coq, Omega, Agda2 и подобных.

лол, чувак собрался torrent-клиент пилить, а ты ему Agda2 и Coq, бггг.

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

Да есть подозрения что вы тот же, кто форсит «зигохистоморфный препроморфизм».

А в целом ощущение этакого деструктивное скрытого самобичевания..

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

Tail recursion не поддерживается в стандарте, но это не значит, что она не поддерживается в компиляторах CL.

Ну так и не надо передёргивать, говоря про коммон лисп как фп. Будем говорить про фп-компиляторы.

auto12884839
()

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

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

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

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

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

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

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

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

Рынок рос, и ростёт, тотальная деградация в среднем каждов, барадачи уходят, а новые не хотят пилить на какой-то жалкой сишки и асм - им хочется жавы, сишарпа. Пока мир держится на 50летних постстудентах тех времён.

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

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

Некому будет поддерживать ВМ, ОС и иные основы мира тех, кто выше. Все захотят быть высоко, ибо хочет этого почти каждый.

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

Возможно царь успеет покарить мир и направить людей на путь истинный, пока не поздно и создать новую пирамиду, объединив скиллбейзед движения. И то эта новая, более правильная система станет на страже битиков. Конец.

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

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

Мне без разницы - язык маргинальный или мейнстримовый, главное, чтобы он решал мои задачи. Tcl решает мои задачи. CL может решать мои задачи + имеет свои плюшки. Почему бы тогда не сменить инструмент?

Зная, что ООП — это мейнстримная парадигма, ты (сознательно или подсознательно) отвергаешь её, так как это идёт вразрез с нонконформизмом и желанием не быть как все.

См.выше. И да, ООП - далеко не новая парадигма. Напомнить когда была придумана та же Simula?

Поэтому ты пытаешься отрицать связь лиспа с ООП.

Я не отрицаю, я говорю, что CL - не ООП-язык. Это мультипарадигменный язык с функциональными корнями и мощными макрами. С таким набором базтулзов, естественно было реализовано ООП в рамках концепция CL. Но это не «чистое» ООП, как в том же Smalltalk, Eiffel.

Но в этом случае тебя ждёт фейл. ООП, хоть и кривое, там всё-таки есть. Hint: Common Lisp Object System aka CLOS.

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

P.S. И да, если хочется совсем лютой маргинальщины, гарантированно не содержащей ООП, то стоит смотреть в сторону Haskell, Epigram, Coq, Omega, Agda2 и подобных.

Почему тогда ней Erlang? Там тоже ООП нет как такового. И да - смотрел Clean, даже писал для себя небольшие программки - мне ближе Lisp-семейство.

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

лол, чувак собрался torrent-клиент пилить, а ты ему Agda2 и Coq, бггг.

Его истинная цель — не torrent-клиент, а смотреть на всех, как на говно.

Тут вышеперечисленное подходит как нельзя лучше. Вот представь, подходит к тебе начальник с утречка в понедельник, да спрашивает, мол, где обещанный код. А ты ему такой с вертушки про анаморфизмы, катаморфизмы, топосы Гротендика, иерархию Хомского да перцептроны Минского. И смотришь на него, как на говно. Начальник покраснеет, побледнеет, задышит тяжко, но ни слова не скажет и возвратится, шатаясь, в свой кабинет. Сеньоры полопаются от зависти, жуниоры притихнут в благоговении, а девки так просто потекут.

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

Ну так и не надо передёргивать, говоря про коммон лисп как фп. Будем говорить про фп-компиляторы.

Ок, только как вы собираетесь рассматривать язык без его реализации? Сферический Perl6 идеален. Реализации его - мягко отличаются.

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

В то же время, большинство популярных программ страдают от плохой управляемости, раздувания кодовой базы и медленного развития. Если бы вышеприведённый миф имел место, то лисперы/хаскелисты/whoever давно бы предложили аналог того же злополучного Firefox, или OpenOffice, или GNOME/KDE, который бы развивался динамичнее, работал быстрее и был бы выше качеством.

В то же время большинство Топоров страдают от плохой управляемости, излишнего веса и медленного развития (принципиально не менялись со времён каменного века, аха). Если бы вышеприведённый миф имел место, то whoever давно сокрушали бы черепа врагов Топором, который бы развивался динамичнее, работал быстрее и был бы выше качеством.

пофикшено, во имя Веществ.

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

Его истинная цель — не torrent-клиент, а смотреть на всех, как на говно.

+1. Фрейд, как всегда, зрил в корень (рота, молчать!) всех проблем. Если ты освоил Agda2 и Coq, тебе не нужно запилить торрент-клиент для самоутверждения. Запиливание чего-либо - удел лузеров, неспособных ни на что выдающееся.

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

опровергнуть не могу, но попетросянить случая не упущу

Перевёл для широкой публики. Не благодари.

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

Кстати, а что не так

Очевидно, что не сам термин, а контекст употребления (с какой-то целью акцентируется аспекты, позволяющие использовать «маргинальщина».. ну что очевидные вещи расписывать).

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

Ок, только как вы собираетесь рассматривать язык без его реализации?

По спекам?

Сферический Perl6 идеален. Реализации его - мягко отличаются.

ну и что? Я тоже.

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

Перевёл для широкой публики. Не благодари.

Ты злой. Я не буду тебя благодарить.

auto12884839
()
Ответ на: комментарий от Amphetamine-encoder

Интересные выводы делаешь, анон.

Этот вывод сделан на основе многочисленных наблюдений на ЛОРе и вне его пределов.

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

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

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

По спекам?

По спецам много идеальных языков.

ну и что? Я тоже.

По твоей логике - Никола Тесла такой же бесполезный человек как и ты. Ведь в спеках человека - «гениальность» является недокументированной фичей, которой у тебя нет.

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

Этот вывод сделан на основе многочисленных наблюдений на ЛОРе и вне его пределов.

ЛОР не лучшее место для того, чтобы делать выводы)

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

На ЛОРе профессиональных программистов почти нет, в большинстве своем тролли вроде тебя.

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

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

Amphetamine-encoder
()
Ответ на: комментарий от auto12884839

Ладно, не обижайся.

С топорами вот какая петрушка. Лисперы/хацкелисты/whoever утверждают, что их топор прочнее алмаза, легче алюминия, в бою раскаляется до 7000°C за счёт термоядерной реацкии внутри, работает как бумеранг, развивает при этом скорость 10М и поражает врага автоматически.

Но на поверку оказывается, что их топор — из говна, а люди давно перешли на бензо/электропилы.

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

По спецам много идеальных языков.

Ы? По спецам или по спекам? Судя по спецам, идеальной вообще является поместь бейсика с уайтспейсом.

По твоей логике - Никола Тесла такой же бесполезный человек как и ты.

Я никогда с этим не спорил.

Ведь в спеках человека - «гениальность» является недокументированной фичей,

Ты /0, мил человек. Как может фича одновременно пребывать в спеках и быть недокументированной?

которой у тебя нет.

Ты делаешь крайне странные, не соответствующие очевидным наблюдаемым фактам заявления. Я больше не буду с тобой разговаривать из-за этого.

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