Довольно давно я кругами хожу около таких языков, как: Lisp, Haskell, Nemerle, Arc.
Цель изучения — сугубо для саморазвития как специалиста: узнать что-то новое, подняться на иной уровень мышления, "схватить" абстрактные принципы, используя конкретный инструмент. Где-то я слышал, что "на латыне не говорят, но если её учить, начинаешь лучше понимать английский". Так и здесь: подозрительно много адекватных и умных людей регулярно повторяют, а то и жалеют, что не учили этого в своё время, Lisp(Scheme) в частности.
Но, поскольку не привык распыляться на многое, то мне проще что-то одно выбрать и более-менее серьёзно освоить, а уже потом, с "поставленной базой" оглядываться вокруг. В этом и состоит вопрос к аудитории. Поймите меня правильно, я бы очень не хотел лицезреть какой-нибудь холивор. Мне нужно выслушать простые конструктивные аргументы "за" и "против" от живых людей, знакомых с предметной областью. Вопрос возник от того, что все "официальные" обзоры оперируют как раз теми понятиями к изучению которых я подбираюсь, и грамотно оценить, где я окажусь через год-два изучения определённого языка я несколько не в состоянии.
Вариант "потыкать туториалы для каждого языка и написать хелоуворлд" уже пройден. Ничего такой вариант особо дать не может, потому как я на семантику упор делаю, а не на синтаксис.
Бэкграунд: С++ программист, интересующийся математикой, компиляторостроением, операционками, и ещё всем, что есть в этом мире.
Список кандидатов
Common Lisp
Scheme
Haskell
Nemerle
Arc
Здравствуйте, Кирилл Блаженнов, Вы писали:
КБ>Бэкграунд: С++ программист, интересующийся математикой, компиляторостроением, операционками, и ещё всем, что есть в этом мире.
ну раз математика в списке интересов на первом месте , то
КБ>Haskell
Здравствуйте, Кирилл Блаженнов, Вы писали:
КБ>Цель изучения — сугубо для саморазвития как специалиста: узнать что-то новое, подняться на иной уровень мышления, "схватить" абстрактные принципы, используя конкретный инструмент.
Подняться на уровень мышения можно только увеличением масштаба проекта и за счет времени которое ты проводишь в работе.
Язык программирования тоже важен, но масштаб и время важнее. Более того — если масштаб проектов на тыщу строчек максимум, как у студентов, то здесь самый распрекрасный ФЯ будет буксовать и толку не будет вовсе, дальше циклов на таких проектах все равно не уйдешь.
>Где-то я слышал, что "на латыне не говорят, но если её учить, начинаешь лучше понимать английский".
Истинная правда, только если начнешь учить именно английский, то эффект будет гораздо заметней.
>Так и здесь: подозрительно много адекватных и умных людей регулярно повторяют, а то и жалеют, что не учили этого в своё время, Lisp(Scheme) в частности.
Просто прошли мимо. каждому наверняка представлялись возможности, но проходили мимо.
С правильными языками такого не бывает — один раз увидел и обязательно чтото попробовал.
КБ>Список кандидатов
... КБ>Haskell
...
булшит скипнул. Хаскель ! и еще я бы предложил тебе, как сиплюснику, попробовать Питон или Руби.
Здравствуйте, Кирилл Блаженнов, Вы писали:
КБ>Лисп и диалекты, я так понял, никому не нужны?
Тот или другой язык — вылезет и сам, если понадобится.
Сейчас в мире есть ну может тока .NET-технологии, С++, Java, Delphi (скорее в СНГ).
Не тратьте время зря
Вспомните, был же и Пролог, была и Ада когда-то...
Здравствуйте, Кирилл Блаженнов, Вы писали: КБ>Лисп и диалекты, я так понял, никому не нужны?
Просто на этом форуме лисперов меньше, чем любителей хаскеля. Впрочем, scheme тебе уже порекомендовали. Хороший язык.
Здравствуйте, Ikemefula, Вы писали: MC>>Скажи, а что он делает в теме про ФП? I>Питон это мультипарадигма.
ФП там все равно кот наплакал. Только first-class функции и замыкания.
Здравствуйте, Кирилл Блаженнов, Вы писали:
КБ>Довольно давно я кругами хожу около таких языков, как: Lisp, Haskell, Nemerle, Arc.
Учи все три (кроме последнего). Хуже не будет. Тем более, что они с одной стороны очень тесно связаны, а с другой — это три разных культуры.
Изучив Хаскель ты узнаешь что писать код можно и на чистом ФП (функционального программирования). Побочным эффектом будет на проч вывихнутый мозг от того, что все на свете может быть функцией. Но зато после того как мозг начнет заживать, ты сможешь смотреть на мир иначе.
Изучив Лисп ты узнаешь, что используя только список, макры и какую-то матерь можно писать краткие и мощные программы. Побочным эффектом будет рябь в глазах от скобок и вывих мозга от того, что все на свете может быть макросом. Зато когда мозг встанет на место, ты поймешь, что смотреть на мир иначе можно с разных точек зрения.
Изучив Немерле после Лиспа и Хаскеля ты практически не получишь вывих мозга, так как в оном просто сочетаются возможности вышеупомянутых языков. Однако ты снова сможешь смотреть на мир иначе, так как поймешь, что всю мощь ФП и МП (метапрограммирования) можно получить в промышленном языке (т.е. использовать в реальном мире, а не только для поднятия ЧСВ) работающем под распространенной платфоромй (.Net), а другие языки используемые на этой платформе даже рядом не стояли. Так же ты увидишь, что ФП, МП и ИП (императивное программирование) могу не противоречить друг-другу, а дополнять друг-друга.
Если же ты изучишь Немерле первым, то может случиться одно из двух. Ты с легкостью их освоишь, так как тебе придется изучать в основном новый синтаксис. Или ты просто не сможешь осилить Лисп и Хаскель, так как тебе будет скучно (особо нового ведь в них уже не будет) и ты уже привыкнешь к Сишной нотации и тебя будет раздражать их причудливый синтаксис.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали: VD>Вот только в лиспе разве ФП больше?
Ну как-то побольше, мне кажется. Например, в схеме идеоматична иммутабельность, перзистентные структуры данных (мутабельность используется только по необходимости), рекурсия. В питоне все наоборот.
Здравствуйте, Mr.Cat, Вы писали:
MC>Здравствуйте, VladD2, Вы писали: VD>>Вот только в лиспе разве ФП больше? MC>Ну как-то побольше, мне кажется. Например, в схеме идеоматична иммутабельность, перзистентные структуры данных (мутабельность используется только по необходимости), рекурсия. В питоне все наоборот.
Ну, Комон Лисп к лиспу относится куда больше чем Схема. А в нем императивных конструкций пожалуй больше чем в шарпе будет. Так что ФП там как раз не сильно больше. Скорее духу ФП-шного больше.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Я бы посоветовал ещё обратить внимание на erlang. Он имеет реальное практическое применение и использует модные сейчас многоядерные процы по прямому назначению.
А просто для ознокомления с ФЯ советовал бы OCaml (наиболее простой, по-моему).