LINUX.ORG.RU

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


0

2

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

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

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

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

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

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

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

Заказчику совершенно пофиг на чём написана система, дающая ему конкурентное преимущество. Пофиг совершенно. Он покупает решение, а не язык программирования.

но не пишут.

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

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

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

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

устраивающих программистов, а не лисп программистов. которых единицы во всём мире.

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

>На вот, посмотри лисповую карту.
Предлагаю еще провести перепись лисперов и повесить на них навигаторы. И конечно же поместить на эту страничку: http://premier.gov.ru/patron/

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

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

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

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

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

он четко сказал - лисп это экзотика, со всем из этого вытекающим

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

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

А есть вообще двери, в которые ты пролезаешь? По-моему, тебе даже ангарные ворота тесноваты будут.

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

Если серьезно, то у лиспа есть много хороших сторон. Но до широкого использования ему не то что далеко, а просто никогда не дойти. Совсем никогда. Сколько бы ни внушали лисперы что лисп читаем - он не станет читаемым. Можно пересилить себя, попрограммировать на нем, привыкнуть. Как и на GNU Assembler. Но это сделают еденицы и будут потом тешить свое ЧСВ. И не безосновательно, если осилить его угребищную нечеловеческую форму записи, то тогда всплывут его положительные стороны и повысят производительность труда. Из всех этих рассуждений никак не следует что (a (b c a (b a c) b (b s b) b s c (b (b (b (b a)))))) будет нравиться большинству. Потому что это нечитаемо большинству программистов. Обратное - ложь. А Java читаема даже начинающим.

А для души это вполне может быть нормальным ЯП, и даже для продакшна (если он с душой совпадает).

И да, у меня Gentoo и я учу Haskell. Потому что скучно. Скучна Ubuntu с Java, они работают, прекрасно и всегда, но хочется чего-то посложнее и поразнообразней. Конечно у такого необычного много своих плюсов и чтобы до них достучаться - надо осилить. Но при этом понимать что Gentoo не будет стоять у моей мамы и серьезную корпоративщину на >200 разработчиков на Haskell скорее всего не напишут. Не найдут осиливших, да и матана много. Иногда надо просто RPC подергать, в БД посохранять и страничку нарисовать, без матана. И в гробу они видели монады и pure-functional

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

А есть вообще двери, в которые ты пролезаешь? По-моему, тебе даже ангарные ворота тесноваты будут.

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

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

Из всех этих рассуждений никак не следует что (a (b c a (b a c) b (b s b) b s c (b (b (b (b a)))))) будет нравиться большинству.

Кому-то a(b(c, a, b(a, c), b, b(s, b), b, s, c, b(b(b(a)))) разве понятней?

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

Не поверишь. Именно так выглядит код на Lisp для не лисперов. Достаточно постов Love5an чтобы навсегда для себя установить «Лисп - табу»

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

Не поверишь. Именно так выглядит код на Lisp для не лисперов.

Это от незнания синтаксиса. Сишный код тоже страшно выглядит для тех, кто Си не знает. А плюсовый код с темплейтами - даже для тех, кто Си хорошо знает. Что-то не припоминаю, чтобы были проблемы с восприятием какой-либо лисповой конструкции после того, как про неё в книжке прочитал.

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

Вот по этому ты и программируешь на лиспе. Разве не очевидно? А у других - по другому. Осилить можно что угодно. Вопрос: нужно ли, стоит ли, есть ли альтернативы? Не нужно, не стоит и альтернативы есть. Нормальные продакшн языки. А маргинальщину сам учу, для себя, просто так. И мне нравится.

vertexua ★★★★★
()

по теме - можешь попробовать Obj-C

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

Вот по этому ты и программируешь на лиспе. Разве не очевидно? А у других - по другому. Осилить можно что угодно.

Я о том же. Если инженер по специальности «Котло- и Реакторостроение» может осилить лисп и найти по нему работу, то быть причастным к IT/CS и утверждать, что лисп - сложный язык, работы нет, et cetera, это если и не собственный приговор, то должно заставить о многом задуматься.

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

Вопрос в потребности. Нет потребности в лиспе. «Не нужен». Лисперы утверждают что Лисп - лучшее решение всех задач. Можешь или согласиться или сказать что сам не утверждаешь. А остальные утверждают. Странно что на лучшем ЯП в мире программирует так мало людей. И это после такого количества лет. И на молодости не выехать.

Лисп не будет никогда широко распространен. Потому что С++ надо изучить, Java надо изучить, а Лисп надо осилить. Синтаксис с такой нотацией - маргинален by-design. Разные синтаксические конструкции повышают читаемость и только в теории повышают сложность. Вменяемое количество ключевых слов только помогает. А верить что (a b c) - универсально решение по крайней мере странно

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

> работы нет

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

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

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

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

Мой знакомый, оставшийся в глухом Барнауле, создал контору, пишущую игрушки. Дал интересную и высокооплачиваемую работу двум десяткам людей. Со временем их купила более крупная контора, сделав знакомого ещё более обеспеченным. А мог бы стонать, что кроме 1C в Барнауле ничего не найти. Просто уйма народа, менее талантливого в организационных делах, тупо свалила в более денежные места.

Детство кончилась, в суровом капиталистическом мире сопли никто подтирать не будет.

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

Достаточно постов Love5an чтобы навсегда для себя установить «Лисп - табу»

Тоже мне нашёл лиспера, my ass. Тролль это, по должности. Срать ему на людей, что он старательно демострирует и лексиконом, и исходниками своими. Верный последователь своего кумира Erik Naggum, ото ж. Ты поменьше принимай за чистую монету то, что в инете, а тем более на ЛОРе набрасывают. Язык вообще нельзя изучать, основываясь на субъективных впечатлениях, нужно практиковать.

Если уж говорить за исходники, ты в той теме, где лисповский код приводился, сырцы от quasimoto видел? http://www.linux.org.ru/forum/development/5294218/page1#comment-5298517 (комментарий) А разобраться пробовал? Потому что вот это — маленькая демка того, зачем CL нужен и может здорово помочь. А затачивать CL и бороться с Си, Ада или C++ по скорости скомпилированного кода, призывать переписать весь проект на CL и утверждать, что будет всё зашибись — вот это натуральное задротство и есть.

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

> Вот меня эти упаднические настроения бесят нереально. Нет работы по месту твоего нахождения - смени его на то, где работа есть.

да завались ее - на Java/C/C++/C#/Obj-c etc., это проблема только для совсем уж маргинальщиков

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

Заметка №154 из книги «Занимательные лисперы»:
Лисперы настолько суровы, что готовы сменить место жительство, лишь бы программировать на лиспе

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

> Лисперы настолько суровы, что готовы сменить место жительство, лишь бы программировать на лиспе

Даже если и так - это не нормально? Нормально - всю жизнь прожить в одном городе? — ИМХО, уныло.

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

Заметка №154 из книги «Занимательные лисперы»: Лисперы настолько суровы, что готовы сменить место жительство, лишь бы программировать на лиспе

Ты себе не представляешь, но так живёт целая страна. США зовётся. Люди именно едут жить туда, где есть работа. Когда там банкротится завод, на обслуживании которого работает 99% процентов близлежащего города, население снимается с места и едет туда, где есть другой завод. Нет, конечно, и правительство может вмешаться, и какие-то деньги безработным платить, но люди понимают, что если они получат нормальную полноценную работу в другом месте, то жить будут гораздо жирнее, чем на соц.пособие.

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

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

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

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

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

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

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

Если мотивация пеерезда: Там есть лисп! — то да. это ненормально и очень сильно похоже на фанатизм.

Я так всю жизнь работу искал, вообще-то. «Там хотя бы есть линукс!», «Там есть низкоуровневое программирование под линукс!» (и больше денег), «Там есть ядро!» (и лучше жить), теперь и «Там есть лисп!» (ещё больше перспектив на жирное будущее). Так бы был 1С-ником или php'шником, пил с горя водку по вечерам из-за нереализованного потенциала.

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

> CLOS, что добрые маньяки советуют, можно трогать только после овладения самим CL

для понимания текста AMOP глубокие познания CL не нужны.

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

ну а не так чтоли? :) да, я знаю что там можно это сделать костылем. но костыль - это всегда костыль.

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

> На вот, посмотри лисповую карту.

даже медведи в сибири юзают лисп.

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

> для понимания текста AMOP глубокие познания CL не нужны.

зато нужны для практического программирования. Зачем CL, если его не знать толком? Автор же просил лёгкий в освоении язык. CL — мимо, кривая обучения пологая.

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

ну а не так чтоли?

всё так, вот только к ООП это вообще никакого отношения не имеет. по слогам: ни-ка-ко-го

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

> зато нужны для практического программирования. Зачем CL, если его не знать толком? Автор же просил лёгкий в освоении язык. CL — мимо, кривая обучения пологая.

автор хотел ООП, а не CL, AMOP про ООП, а не про CL. всё сходится.

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

> всё так, вот только к ООП это вообще никакого отношения не имеет. по слогам: ни-ка-ко-го

а вот википедия с тобой несогласна.

Инкапсуляция обеспечивается следующими средствами

Контроль доступа
Поскольку методы класса могут быть как чисто внутренними, обеспечивающими логику функционирования объекта, так и внешними, с помощью которых взаимодействуют объекты, необходимо обеспечить скрытость первых при доступности извне вторых. Для этого в языки вводятся специальные синтаксические конструкции, явно задающие область видимости каждого члена класса. Традиционно это модификаторы public, protected и private, обозначающие, соответственно, открытые члены класса, члены класса, доступные только из классов-потомков и скрытые, доступные только внутри класса. Конкретная номенклатура модификаторов и их точный смысл различаются в разных языках.

(с) http://ru.wikipedia.org/wiki/Объектно-ориентированное_программирование#.D0.9E...

isden ★★★★★
()

Что лучше выбрать?

Ну конечно Perl.

user_ml
()

Ruby

Ruby, Python

P.S. Мне у руби код больше нравится, чисто эстетически.

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

А что делать с языками, где «внутреннюю» функцию можно определить в замыкании, и которая будет видна только в этом самом замыкании?

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

Когда там банкротится завод, на обслуживании которого работает 99% процентов близлежащего города, население снимается с места и едет туда, где есть другой завод


Man Detroit. Это моногородок типа нашего Тольятти. В блогах есть фееричные фотографии тамошних мест.

В США климат другой во-первых, там можно жить в перевозных трейлерах, трейлер-парки для нищебродов даже есть. Удобства минимальные горячей воды даже нет, телевизор в такой трейлер не влезет

вобщем ничего хорошего в цыганском кочевом образе жизни нет

Karapuz ★★★★★
()

Принципы ООП настолько просты, что для их понимания вообще можно бумажкой и карандашом обойтись. Это вообще не rocket science.

А вот практическая реализация ООП может разниться от языка к языку. Выбрав язык, ты изучишь не ООП, а его конкретную реализацию. Перебравшись, скажем, с C++ на Common Lisp (или наоборот) тебе придется ломать привычную картину — реализации и идеологии слишком разные. Лучше выбери себе актуальную задачу под ООП и решай ее хоть на чем-нибудь. Я думаю, что из большинства приведенных языков можно выбрать любой. Такая вот ИМХА.

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

> «внутреннюю» функцию можно определить в замыкании, и которая будет видна только в этом самом замыкании

сломал мозг пытаясь представить себе это в контексте области видимости методов объекта.
метод объекта разве может быть замыканием? замыкание может быть в составе метода, но чтобы сам метод был замыканием...
если ты про аналогию с private методами - то расскажи как вызвать замыкание из другого метода объекта.

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

(defgeneric bar (obj))

(flet ((private-foo ()
         "hello from foo"))
  (defmethod bar ((obj foo))
    (private-foo)))

(private-foo)
=> Undefined operator private-foo in form (private-foo).
   [Condition of type undefined-function]

(bar (make-instance 'foo))
=> "hello from foo"
mv ★★★★★
()
Ответ на: комментарий от isden

если ты про аналогию с private методами - то расскажи как вызвать замыкание из другого метода объекта.

Определяй методы внутри одного замыкания.

mv ★★★★★
()

И все же я бы советовал Вам брать один из диалектов Smalltalk. Как правильно заметили - принципы ООП очень просты, сложнее научиться думать в рамках этой парадигмы. Чистая императивщина проще, как в прочем и недо-ООП в исполнении цэпэпэ или пистон. В большинстве своем более или менее полно парадигма ООП реализована в большинстве языков не в полной мере. Очень часто реализацию классов и объектов путают с настоящей реализацией ООП. К примеру о какой реализации ООП можно говорить, если не все элементы программы есть объекты. Так же часто не реализовывают общение между объектами по средствам сообщений, что так же является не полной реализацией ООП. По большому счету программа написанная в стиле ООП - это классы и их объекты, которые общаются друг с другом по средствам обмена сообщениями. От входящего сообщения зависит дальнейшее действие. Такой подход я пока встречал только в Smalltalk и его диалектах. Поэтому советую почитать BlueBook (Smalltalk-80) и Pharo by Example (Pharo). Можно конечно взять VisualWorks или Squeak!, но они имеют ряд недостатков. Минус первой - нативная (на сколько это возможно, говоря о smalltalk) и платная для коммерческих приложений, а вторая - слишком громоздкая и запутанная. Недороботки «сквика» исправили в Pharo и приблизили его еще больше к Smalltalk-80

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

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

Код говорит о том, что метод(ы) можно определить в замыкании.

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

> А вот практическая реализация ООП может разниться от языка к языку

именно поэтому AMOP хорош, ибо показывает, как можно реализовать это самое ООП =)

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