LINUX.ORG.RU

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

 ,


5

1

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

★★★★★

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

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

ObjC один из самых популярных языков нынче
популярных

Доооо, миллионы мух не могут ошибаться.

ПХП тоже один из самых популярных языков. И 1C. И ОС Windows тоже. На том же Коболе в данный момент работает больше кода, чем на всех явах-сишарпах вместе взятых. И? Что сказать-то хотел?

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

это не все

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

почти на уровне guitar pro (ну, не считая синтеза), а жрёт сравнимо

Не могу судить, ни одной не юзал.

сложи мне π×e

а как это делают процы, которые не умеют ни делить, не умножать?

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

Ха. Множественное наследование специально отобрали у таких обезьянок, потому что это инструмент, которым нужно уметь пользоваться. Неосиляторы такие неосиляторы. За объяснениям про МН идите к упомянутому уже здесь Бертрану Мейеру.

По поповоду литературы. Так она для профессионалов как раз и нужна. И многие идиомы, в духе RAII(в твоей любимой яве это try-with-resources), виды гарантий безопасности исключений и пр. пришли именно из среды C++ разработчиков. Твоя Java ничего не дала и давно бы отправилась на свалку истории, если бы не толпы обезьянок, которых легче престрелить, чем научить программировать.

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

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

о, да, игры - наше всё. Пионэр?

Не могу судить

и не суди

а как это делают процы, которые не умеют ни делить, не умножать?

как-как, неточно

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

Доооо, миллионы мух не могут ошибаться.

но выше же речь шла о мейнстриме, не?

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

Так советовали же уже Буча и Мейера. Это две книги(одна от Буча, другая от Мейера).

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

о, да, игры - наше всё. Пионэр?

Но это показатель. Так как есть с чем сравнивать просто. Да тотже нетбинс, требует минимум 500 метров оперы. А некоторые ставят гиг. Так как летает при 500.

как-как, неточно

Медленно, но точно также, как и обычные процы.

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

Да тотже нетбинс, требует минимум 500 метров оперы.

а сколько вижуал студия жрёт, например?

Медленно, но точно также, как и обычные процы.

я тебе не про это тут толкую

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

Нет, С++ нормальный язык. То что лично вы пишете врайтонли код говорит лишь о вашем неосиляторстве и не очем более. Ну или просто сказок наслушались. Пишите на ява - ваш уровень не позволяет давать вам в руки полноценные инструменты.

Я не пишу write only код. Я когда-то _писал_ на плюсах вполне себе нормальный, читабельный, масштабируемый, переносимый код.
Про яву vs c++, так я 10 раз подумаю сначала и все равно возьму яву. Данное решение может говорить только об опыте и умении работы с обоими.

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

Чтобы не выстреливать в ногу, нужно разбираться в том, что делаешь, в том, как работает машина и т.д. и т.п. Это дисциплинирует и делает из программиста программиста. Сишечка в этом плане еще лучше, но ее сложнее применять для больших проектов(но можно).

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

Человек, называющий такое убожество, как ява, «лучшим», профнепригоден...

Человек, неумеющий читать контекст, понимать прочитанное, видеть тему треда, читать то, что написано топикстартером - типичный анонимус лора.

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

Не согласен. РНР конечно нельзя назвать великим и могучим. Но! Это как говорить, что самокат хуже велосипеда. Это два разных языка, для разных задач. Хотя мне не хватает в с++ foreach.

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

Увы не вам мне о программировании рассказывать.

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

а сколько вижуал студия жрёт, например?

ну это еще то подделие. Но, возможностей у вижуала поболее, чем у нетбинса. Хотя, он меня столько же бесит, как и нетбинс.

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

Разговор за ц++:

- э, пацанчик, слыш, есь плюсик перегруженный?
- нееээ, нету, братка, барыга заболел
- а скобчка есть?
- ээ ты чо, за скобочку больше дают и я тяжелые не употребляю

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

я вижу тут любят всем 4.2 тыкать))) особенно учитывая, что его не было) Про 11 стандарт спасибо, осталось его заюзать... по умолчанию явно не он идет.

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

по умолчанию явно не он идет.

хватит нести чушь. RTFM

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

Выше книжечку цитировали. Ну и, ЕМНИП, в «Искусстве» было.

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

был

В чем?

хватит нести чушь. RTFM

Ни один пример из вики не заработал. Расскажи, что нужно сделать, чтобы заработало, может что то поставить?

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

Возможно кому-то интересно, но это явно не то, чего желал топикстартер. Там же обычная трепня про пришествие ФП и про «ООП и ФП совместимы», к тому же не очень-то для новичка тема трёпа.

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

Бессмысленный класс с public static void main могли придумать только идиоты.

А бессмысленную (с точки зрения папуаса) фразу «My name is XXX, what's your name?» придумали имбецилы.

Просто ты некомпетентен в Java. Поэтому сигнатура метода main тебе кажется бессмысленной. Для специалиста здесь каждое ключевое слово находится на своём месте.

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

C, C++, Java/C#, Scala, Haskell, Python/Ruby покрывают все.

Это задание из перечисленного ряда убрать лишнее? :) Хаскель-то тут при чем?

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

Поэтому вместо экспертного мнения ты получишь здесь 100500 тонн говна на ООП и 9000 советов учить лисп, хаскель, Smalltalk, Brainfuck, Agda2 и Coq

Хороший программист должен, как минимум, ознакомиться со всем вышеперечисленным. А на чем писать конкретный проект исходят из ТЗ и рынка.

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

В промышленных или «мейнстрим» языках (Java, C++, C#) единство есть. Python пытается их догнать

В каком месте, кроме производительности?

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

А потом выясняется, что в юзабельном языке: чистых функций нет, автоматического каррирования нет, чтобы скомпозировать функции сложнее не нишеспецифичных (+3) или (++ «hi») накостыляйте монадки сами, control-flow извольте изобразить из if/for/while, ну и библиотеки все написаны такими же юзабельными, - пользоваться невозможно.

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

Ну и да, это все ненужно, потому что «прагматичным» программистам, в отличие от «академиков», корректный код писать не нужно, а нужно поскорее закрыть тасочку в жире.

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

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

<fat>

есть же std::for_each

</fat>

<even_more_fat>

тебе что, сложно написать

for(namespace1::namespace2::SuperClass::SuperSubClass::const_iterator it = pMyObject->m_MegaContainer.begin(); it != pMyObject->m_MegaContainer.end(); ++it)

?

</even_more_fat>

А в новом стандарте есть уже range-based for.

DELIRIUM ☆☆☆☆☆
()
Последнее исправление: DELIRIUM (всего исправлений: 1)
Ответ на: комментарий от anonymous

А потом выясняется, что в юзабельном языке: чистых функций нет

Чисто писать никто не запрещает хоть на бейсике.

автоматического каррирования нет

Можно сделать, если надо.

чтобы скомпозировать функции сложнее не нишеспецифичных (+3) или (++ «hi») накостыляйте монадки сами
скомпозировать
монадки

Ненужно.

control-flow извольте изобразить из if/for/while

От control-flow зависит, можно делать триггерами.

ну и библиотеки все написаны такими же юзабельными, - пользоваться невозможно.

Для Python много хороших библиотек.

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

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

Ну и да, это все ненужно, потому что «прагматичным» программистам, в отличие от «академиков», корректный код писать не нужно, а нужно поскорее закрыть тасочку в жире.

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

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

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

Студия уже на сишарпе. Более ранние версии не тормозили так, кстати.

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

Haskell тут для определенного круга людей и задач=)

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

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

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

динамически-типизированные яп
рабочие
прототипы

Ну это вообще бессмыслица. С какими-то допущениями можно признать, что любые 2 из 3 условий еще кое-как выполняться вместе могут.

И поэтому

Нет, не поэтому.

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

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

anonymous
()
  • Не слушай тех, кто советует тебе С++ как ООП язык и труды его создателя. В С++ очень плохая реализация ООП.
  • Не слушай тех, кто тебе советует выучить java, чтобы понять ООП. У нее свой подход, отличный от классики.
  • Не слушай тех, кто тебе советует Lisp, он очень далек от ООП и ближе к ФП. Фактически в Lisp (CLOS) - это объектная модель через призму метапрограммирования и функциональщины.
  • Хочешь настоящего ООП? Учи Smalltalk и Eiffel - это единственные языки, которые а) являются эталоном реализации ООП; б) являются представителями своего подхода к ООП (именно вариативность реализации, а не просто «обрезанная» объектная модель).
  • Изучи паттерны ООП, попытайся понять - зачем оно вообще надо.
  • Пойми, что наиболее лаконичный код ты сможешь писать через ФП, попытайся понять Lisp, осознать, что макросы позволяют сократить код, а в сочетании с объектами - становятся почти серебряной пулей.
  • Выучи Erlang. Пойми, что ООП - не нужно больше тебе, ты достиг сатори и можешь писать через ФП все, что тебе надо. Алгоритмы станут красивыми, а волосы останутся мягкими и шелковистыми.
Amphetamine-encoder
()
Ответ на: комментарий от Amphetamine-encoder

Так много было употреблено слово «ОПП», что почти вселило уверенность в обладание четким его определением. Не соизволите поделиться?

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

Почти годно. Smalltalk только лишний.

anonymous
()

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

dizza ★★★★★
()
Последнее исправление: dizza (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.