LINUX.ORG.RU

История изменений

Исправление byko3y, (текущая версия) :

В Ruby всё работает по принципу утки. Просто вызываем метод, соответствующий соглашению о вызове, и надеемся, что у объекта он есть

Вот именно. Например, операция сложения не «есть у объекта» — она выполняется над объектом. Как правило, большинство операций выполняются над более чем одним объектом, и выполняются они именно «над ним», а не «в нем». Адепты класс-ориентированного программирования с ноги запихивают методы работы с объектами в сами объекты, и делают вид, что так понимать код стало проще. В реальности даже при обучении желторотого студня очень тяжело объяснить ему что такое класс, потому что класс ничего не делает, не хранит никакого состояния, не выполняет никаких действий — и при этом всё приложение каким-то магическим образом строится именно за счет классов.

Но после обучения возникает то, что я бы назвал «эффект хаскеля»: чем сложнее был успешно изученный предмет, тем меньше желания у изучившего от этого предмета отказаться. Отсюда мы получили столько фанатов хаскеля, которое парадоксально на фоне прикладной бесполезности этого языка. Конечно, данный феномен не ограничивается хаскелем и вообще IT — точно так же математики-физики забуриваются в свои аутичные фантазии, и бесконечно кончают от того, какие замечательные абстракции сегодня они освоили.

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

Оно не работает в случае C++, когда пытаемся на классах построить модель предметной области, она никак не строится, делаем в каждой дырке множественное наследование, всё окончательно запутывается, а стоимость поддержки улетает в космос, потому что для понимания всех костылей кодовой базы нужен целый отдел вундеркиндов, а для правок — магия
Дополню, что C++ имеется в виду в старом стиле, когда писали без шаблонов. С нормальными шаблонами всё стало лучше

А это уже отдельный подвид содомии. В C++ есть утиная типизация в форме безтиповых обобщений, на которой можно писать аккуратный код вообще без создания классов. Причем, она не появилась пару лет назад, это никакой не «старый стиль» — так пишут и на жаве тоже, и до сих пор. Просто, со временем до некоторых доходит, что так писать нельзя.

Исправление byko3y, :

В Ruby всё работает по принципу утки. Просто вызываем метод, соответствующий соглашению о вызове, и надеемся, что у объекта он есть

Вот именно. Например, операция сложения не «есть у объекта» — она выполняется над объектом. Как правило, большинство операций выполняются над более чем одним объектом, и выполняются они именно «над ним», а не «в нем». Адепты класс-ориентированного программирования с ноги запихивают методы работы с объектами в сами объекты, и делают вид, что так понимать код стало проще. В реальности даже при обучении желторотого студня очень тяжело объяснить ему что такое класс, потому что класс ничего не делает, не хранит никакого состояния, не выполняет никаких действий — и при этом всё приложение каким-то магическим образом строится именно за счет классов.

Но после обучения возникает то, что я бы назвал «эффект хаскеля»: чем сложнее был успешно изученный предмет, тем меньше желания у изучившего от этого предмета отказаться. Отсюда мы получили столько фанатов хаскеля, которое парадоксально на фоне прикладной бесполезности этого языка. Конечно, данный феномен не ограничивается хаскелем и вообще IT — точно так же математики-физики забуриваются в свои аутичные фантазии, и бесконечно кончают от того, какие замечательные абстракции сегодня они освоили.

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

Оно не работает в случае C++, когда пытаемся на классах построить модель предметной области, она никак не строится, делаем в каждой дырке множественное наследование, всё окончательно запутывается, а стоимость поддержки улетает в космос, потому что для понимания всех костылей кодовой базы нужен целый отдел вундеркиндов, а для правок — магия
Дополню, что C++ имеется в виду в старом стиле, когда писали без шаблонов. С нормальными шаблонами всё стало лучше

А это уже отдельный подвид содомии. В C++ есть утиная типизация в форме безтиповых обобщений, на которой можно писать аккуратный код вообще без создания классов. Причем, она никуда не делать, это никакой не «старый стиль» — так пишут и на жаве тоже, и до сих пор. Просто, со временем до некоторых доходит, что так писать нельзя.

Исходная версия byko3y, :

В Ruby всё работает по принципу утки. Просто вызываем метод, соответствующий соглашению о вызове, и надеемся, что у объекта он есть

Вот именно. Например, операция сложения не «есть у объекта» — она выполняется над объектом. Как правило, большинство операций выполняются над более чем одним объектом, и выполняются они именно «над ним», а не «в нем». Адепты класс-ориентированного программирования с ноги запихивают методы работы с объектами в сами объекты, и делают вид, что так понимать код стало проще. В реальности даже при обучении желторотого студня очень тяжело объяснить ему что такое класс, потому что он ничего не делает, не хранит никакого состояния, не выполняет никаких действий — и при этом всё приложение каким-то магическим образом строится именно за счет классов.

Но после обучения возникает то, что я бы назвал «эффект хаскеля»: чем сложнее был успешно изученный предмет, тем меньше желания у изучившего от этого предмета отказаться. Отсюда мы получили столько фанатов хаскеля, которое парадоксально на фоне прикладной бесполезности этого языка. Конечно, данный феномен не ограничивается хаскелем и вообще IT — точно так же математики-физики забуриваются в свои аутичные фантазии, и бесконечно кончают от того, какие замечательные абстракции сегодня они освоили.

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

Оно не работает в случае C++, когда пытаемся на классах построить модель предметной области, она никак не строится, делаем в каждой дырке множественное наследование, всё окончательно запутывается, а стоимость поддержки улетает в космос, потому что для понимания всех костылей кодовой базы нужен целый отдел вундеркиндов, а для правок — магия
Дополню, что C++ имеется в виду в старом стиле, когда писали без шаблонов. С нормальными шаблонами всё стало лучше

А это уже отдельный подвид содомии. В C++ есть утиная типизация в форме безтиповых обобщений, на которой можно писать аккуратный код вообще без создания классов. Причем, она никуда не делать, это никакой не «старый стиль» — так пишут и на жаве тоже, и до сих пор. Просто, со временем до некоторых доходит, что так писать нельзя.