LINUX.ORG.RU

Посоветуйте «легкий» язык для понимания принципов ООП


0

2

Сейчас хочу, не уделяя большого внимания особенностям синтаксиса, более глубоко постичь ООП. Что-то экзотическое (Erlang, OCaml, Smalltalk) не подходит. Что лучше выбрать? Сейчас на рассмотрении Python. Вроде бы всем подходит.

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

Может быть, но так оно скорее только для определённого вида широколобых мозговитых людей. Для обычного человека чтение и счёт множества скобок на единицу кода удовольствия точно не доставляет (как там лисп расшивровыватся, lost in a sea parentheses) и рассеивает внимание. Стиль именования «переменных» тоже не самый лучшый и удобный для восприятия. Синтаксис по удобству чтения проигрывает почти всем современным ЯП.

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

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

SBCL, LispWorks, AllegroCL — вменяемые реализации? пример програм у Архимага есть. пример вменяемой реализации OCaml под винду и пример программ на нем приведете?

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

хотелось бы увидеть вменяемую реализацию

sbcl, clisp, clozure, lispworks, allegro, scieneer.

и пример программы, из реальной жизни

stumpwm

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

Синтаксис по удобству чтения проигрывает почти всем современным ЯП.

Люди, которые писали (а не только читали про них в срачах на ЛОРе) на разных ЯП, в один голос утверждают, что лисповый код читается легко.

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

> Может быть, но так оно скорее только для определённого вида широколобых мозговитых людей. Для обычного человека чтение и счёт множества скобок на единицу кода удовольствия точно не доставляет (как там лисп расшивровыватся, lost in a sea parentheses) и рассеивает внимание.

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

Стиль именования «переменных» тоже не самый лучшый и удобный для восприятия

что? пример?

Синтаксис по удобству чтения проигрывает почти всем современным ЯП.

ничем не проигрывает, если юзать индентацию (что требуется и в любом другом ЯП). особо унылые эстеты могут переписать readtable

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

конфигурировать было одно удовольствие, макрой обернул что нужно и вуаля, никакого ненужного копипаста =)

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

SBCL, LispWorks, AllegroCL — вменяемые реализации? пример програм у Архимага есть.



нет, сие есть пустое теоретизирование

пример вменяемой реализации OCaml


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

под винду


не имею понятия что имеется ввиду и что значит «под винду»? Microsoft Visual OCaml?

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

за лиспом же ничего кроме 60-ти летней теории нет.

Да уж конечно! :-D

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

> нет, сие есть пустое теоретизирование

реальные реализации, в том числе и коммерческие — пустое теоретизирование?

к сожаление от программирования на OCaml есть много мешающих и отвлекающих факторов

т.е. нету вменяемых реализаций?

не имею понятия что имеется ввиду и что значит «под винду»? Microsoft Visual OCaml?

т.е. 90% рынка десктопов окамлисто не интересуют?

korvin_ ★★★★★
()

Тут, я вижу, python не в почете, однако IMHO python - в качестве стартового языка для изучения принципов ООП - самое то. Да и не стартового тоже, если уж на то пошло.

Ну или можно джаву учить, тоже, так сказать, win-win в некотором роде.

Но только не PHP!

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

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

реальные реализации, в том числе и коммерческие — пустое теоретизирование?


именно, без применения/использования в реальной жизни. разговоров много, за 60 лет успехов не заметно.

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

судя по нику это призрак, следовательно он уже мертв =/

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

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

то же самое можно сказать и о CL

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

Спасибо, что вспомнили меня, очень приятно :)

Он ярый приверженец «Smalltalk всегда и для всех задач вперде»

Нет, а то бы я не стал писать свой баклан на CL. Просто как эталон «ООП» Smalltalk выглядит очень и очень неплохо, и упоминать о нём я стараюсь(лся) только в этом контексте.

Другое дело, ещё и подходит для решения ряда задач (!), но это уже дело вкуса :)

P.S. Всем чмоки в этом чати!

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

> Это потому что всё public и можно на ходу добавлять функции в классы и отдельные экземпляры?

Ну да, можно. Но вот нужно ли? Насколько я помню, GVR где-то писал, что изначально предполагалось, что python будут пользоваться взрослые люди, т.е. люди, понимающие, что если фича есть, то это еще не означает, что ее нужно тут же рваться использовать налево-направо. А так, как мне кажется, python вполне соответствует критериям ОО языка (знаете, этому списку из книг\википедии: инкапсуляция, наследование, полиморфизм, - ну, правда, полиморфизм с duck typing не очень-то сочетается). Да и вообще, в python все - объект. Какие тут еще могут быть споры об ориентации?

4.2

А что, «имхо» в цитату не влезло? Ну да ладно, я понимаю.

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

Наоборот, python здесь в почете, но для старта изучения ООП - совсем не то.

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

> Ибо после того как тебе в начале дают только процедурное программирование, затем очень трудно вникнуть в суть ООП.

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

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

> Это потому что всё public и можно на ходу добавлять функции в классы и отдельные экземпляры?

Ну да, можно. Но вот нужно ли?

Этот вопрос отдаётся на откуп кодеру. Благодаря этой же динамичности языка можно контролировать операции над элементами объекта, в т.ч. можно сделать «классический» класс со статическими членами.

mikki
()

java или c# в сочетании с правильной литературой по ООП - вполне норм.

Можно d (по книжке Александреску). Хотя да, слегка экзотичненько.

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

>то же самое можно сказать и о CL

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

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

tommy ★★★★★
()

Таки Smalltalk (в реализации Squeak).

Сгодится и Ruby.

На Java/C#/С++ глубоко постичь ООП будет сложновато. Там будет много отвлекающих моментов и хаков для эффективности выполнения программ.

Python... ну тогда и PHP можно. Элементы ООП и там и там есть, и неплохие, если НЕ нужно глубоко постигать ООП, то и сгодятся.

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

> Python... ну тогда и PHP можно. Элементы ООП и там и там есть, и неплохие, если НЕ нужно глубоко постигать ООП

А можно поинтересоваться у гуру, каких именно «глубоких» идей ООП не хватает в Питоне?

tailgunner ★★★★★
()

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

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

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

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

Угу. Держаться нужно классического подхода: Кнут, кому тяжело — Сейджевик и прочие. [[ Автор, надеюсь, что-нибудь подобное уже осилил? ]] И вообще, учитывая закон протекающих абстракций, давать ООП для неподготовленного человека просто опасно, это вершки без корешков. Типична ситуация, когда во имя высшей справедливости нестыковки модели и реальности игнорируются, развивается тенденциозность мышления, человек фактически склонен решать проблемы, которые сам себе и создал. Приучили работать молотком, во всех проблемах видит гвозди, в таком духе. :-/

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

По сравнению с объектной парадигмой более важной считаю модульность. Вот чего новички часто не понимают в упор — это важности ортогонолизации программы, разделения её на независимые и хорошо управляемые куски, достижения выразительности и простоты. У Leo Brodie хорошо об этом расписано (Thinking Forth).

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

По теме ООП плюсую за питон: и не слишком сложно, и наверняка пригодятся навыки на рынке труда. CLOS, что добрые маньяки советуют, можно трогать только после овладения самим CL (который чтобы там ни говорили, язык совсем не лёгкий в изучении). Полезно, если дорастёшь. А дорастает где-то порядка процента программистов, по самым оптимистичным подсчётам.

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

> Подавляющая масса других ОО-языков - всего лишь жалкая пародия на сияющий монумент CLOS;

есть метаобъектный протокол, с помощью которого можно создавать свои объектные системы;

Ога, оба сбоку прикручены. Встроенные типы - не объекты, MOP с ними нифига не работает - нашёл, чем хвастаться. Такой «мета-объектный» протокол в любом питоне есть, даже лучше.

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

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

+inf

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

Буря, скоро грянет буря =)

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

Встроенные типы - не объекты, MOP с ними нифига не работает - нашёл, чем хвастаться

CLOS все встроенные не-CLOS типы маппит:

* (class-of 123)

#<BUILT-IN-CLASS FIXNUM>

built-in-class - это класс метаобъекта (метакласс, класс класса). Или поясняй, что ты там имел в виду, или слив засчитан.

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

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

Я-то думал, что даже самый последний тролль на ЛОРе уже знает про вагон качественных реализаций, как и коммерческих, так и свободных. И что Коммон Лисп - это не pure-fp язык. И что софт на лиспе не только пишут, но ещё и пользуются им. А тут такой побег из криокамеры... Ты ещё скажи, что лисповую работу не найти.

mv ★★★★★
()

FreePascal же, и, для начала, томики Кнута.

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

> Странно, что никто до сих пор scala никто не посоветовал. Имхо бери ее.

Мартин Одерский любит равняться на хаскель, а ты тут советуешь скалу для новичков... Срыв шаблона натуральный.

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

найти лисповую работу и применимость лиспа не для выполнения единичных задач (буквально) это разные вещи. качественные реализизации лисп - об этом слысла нет говорить. если есть качественная реализация/платформа - её используют. даже когда плохой сам язык (Java, C++, в котором смысл появился вероятно только после появления написанного под него Qt). есть качественный инструмент - его используют. а лисп не используют в реальной жизни.за столько лет можно было написать платформу/реализацию/диалект и тд применимый в реальной жизни, а не для программирования под заказ с тем что-бы обязательно это было написано на лиспе (просто потому что работодатель так хочет, он так привык, а не потому что это действительно оптимально и необходимо).

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

найти лисповую работу и применимость лиспа не для выполнения единичных задач (буквально) это разные вещи. качественные реализизации лисп - об этом слысла нет говорить. если есть качественная реализация/платформа - её используют.

Я пользуюсь.

LispWorks(R): The Common Lisp Programming Environment
Copyright (C) 1987-2009 LispWorks Ltd.  All rights reserved.
Version 6.0.1
Enterprise edition, €3600 per user. Если ты думаешь, что LispWorks Ltd. пилит государственные бабки, полученные от продажи нефти, и поэтому им не важно, сколько лицензий в год купят, то ты глубоко ошибаешься.

даже когда плохой сам язык (Java, C++, в котором смысл появился вероятно только после появления написанного под него Qt). есть качественный инструмент - его используют. а лисп не используют в реальной жизни.за столько лет можно было написать платформу/реализацию/диалект и тд применимый в реальной жизни, а не для программирования под заказ с тем что-бы обязательно это было написано на лиспе (просто потому что работодатель так хочет, он так привык, а не потому что это действительно оптимально и необходимо).

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

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