LINUX.ORG.RU

Функциональщина: кложура или где?

 , ,


2

5

Собственно хотел причаститься к современному миру ФП. Последнее, что было - пролог в универе. Таки хотел бы узнать у тех, кто уже настрадался, начать ли точить clojure или сие поделие недостойно моего скудного запаса времени. Если не clojure, тогда кто?

★★

Если раньше занимался/занимаешься джавой - кложура. Если нет - где.

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

Не знаю. В чем их разница? Что посоветуете? Я далек от ФП, хочу расширить свое мировосприятие.

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

Функциональщиной можно заниматься на любом(ну почти, наверное) языке.
Хаскель — чистый функциональный язык.

Bad_ptr ★★★★★
()
Последнее исправление: Bad_ptr (всего исправлений: 1)

Хаскель или скала, если jvm.

KblCb ★★★★★
()

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

mathcrosp ★★
()

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

Scala, Ruby, Python, Java 8, C#.

Можно и Clojure, но будет навязчивый перекос в многие фичи лиспа, не связаные с ФП как таковым.

Хаскель можно почитать учебник, тоже кое-что становится понятным, но слишком много борьбы с самим языком, который тоже усиленно борется против тебя. Как С++.

Сходи на Coursera

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 1)

Haskell

пролог в универе.

Ну то логическое, но после пролога в хаскель будет втянуться гораздо проще. Поначалу.

yoghurt ★★★★★
()

Кроме хаскеля ни на что тратить времени смысла нет.

anonymous
()

Последнее, что было - пролог в универе.

если есть опыт такой, то конечно стоит с эрлангом поупражняться, хотя это язык-практик со специфической реализацией ФП.

Но смотря для чего ФП, конечно... Если для параллельных вычислений на мега-кластере, то...

swwwfactory ★★
()

Собственно хотел причаститься к современному миру ФП... Если не clojure, тогда кто?

Это не имеет значения.

ФЯП изучают не для того, чтобы писать программы; у них другая цель — смотреть на всех, как на говно. Вот представь, подходит к тебе начальник с утречка в понедельник, да спрашивает, мол, где обещанный код. А ты ему такой с вертушки: «Да вы, быдлокодерня, ничего не понимаете! Ща я на анафорических макросах пандорический захват сделаю, получится метациркулярный вычислитель, и усё будет!»

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

anonymous
()

clojure, scala это хоть энтерпрайзный джава-мирок, в отличии от всякой маргинальщины, на которой даже дебаг-аутпут сделать нельзя.

crowbar
()

Если серьёзно, кажущиеся преимущества лиспа сильно преувеличены местными кукаретиками, говнолитиками и кококодемиками. На синтетических примерах макросы позволяют экономить несколько строк. Но перед промышленной разработкой ПО стоят проблемы совершенно другого масштаба, и лисповые макросы их не решают. Это и обусловило фиаско лиспа как промышленного языка. Поэтому на сегодняшний день он является тем, чем является, — скриптовым языком для AutoCAD, языком конфигов для Emacs и GIMP, да языком для сугубо академических поделок и быстрых прототипов.

Чтобы не быть голословным, приведу в качестве примера эпический тред. Чувак обсчитывал фотографии по BAYER-паттерну. Ему не понравилось, что сишный код якобы слишком корявый, и спросил, можно ли его улучшить c помощью лисповых макросов. Так ему там выкатили «пылающую маргинальностью» портянку скобкоговна, по сравнению с которой исходный сишный код был образцом читаемости. Вот вам и преимущества лисп-макросов на практике.

anonymous
()

Если не clojure, тогда кто?

Clojure - это вообще последнее, на что стоит смотреть. Рич Хикки - мерзкий говнюк. Само его существование является оскорблением наследия Лиспа, гения МакКарти и всех тех трудов, которые Лисперы вкладывали в дело за последние годы. Тот факт, что Clojure работает на JVM - это мелочь по сравнению с прочими смертными грехами, каковых настолько много (и которые так меня бесят), что я здесь даже половины не перечислю.

Ну что, начнем со сваливания в кучу функций и значений? В нормальном Лиспе головные формы распознаются моментально, потому что они, блядь, идут в начале списка. Когда с этим облажались в Scheme, было уже довольно хреново; еще хуже стало, когда на те же грабли наступил Пол «Поглядите-я-даже-не-знаю-что-такое-интерактивная-разработка» Грэм. И что, никто ничему не научился на их ошибках? Ах, ну да, в Scheme попытались это вылечить так называемыми «гигиеническими макросами», которые были хотя бы юзабельны, несмотря на убогость. В Clojure даже того нет - это просто смешно.

Но это еще не самое плохое. В Clojure слишком много синтаксиса! Похоже, что Хикки в качестве модели выбирал Haskell. Я не припомню другого языка, в котором было бы столько синтаксиса. В виде Кложуры мы получили самый синтаксически тяжеловесный лисп-подобный язык на сегодняшний день. («Лисп-подобный» - потому что, за исключением самых поверхностных моментов, на самом деле в Кложуре нет ничего от Лиспа.) Самые обычные вещи, которые тривиально реализуются в терминах головных форм, в Clojure превращаются в мешанину из скобок и разделителей, даже в элементарнейших случаях. [foo] вместо (list foo), {:foo bar} вместо (dict :foo bar)...

Лямбда. Это слово пишется как «lambda», а не «fn». Не так уж и сложно набрать, правда, мистер Хикки? Что, руку вывихнул, пока дрочил на собственное дутое ЧСВ? Надеюсь, руки у тебя отсохнут и отвалятся, а сам ты сдохнешь. Потому что ты угробил Лисп для огромного количества людей. Ты даже не можешь напечатать «lambda»? Серьезно? Не верю.

И да, к слову об ABCL. Он уже есть и прекрасно работает на JVM. Нет никаких причин плодить еще один диалект.

anonymous
()

Хотелось бы не только для обладания «знания-в-вакууме», но и чтобы язык/технологию можно было использовать в «реальном коде». Все понятно, что каждой задаче свой инструмент и т.д и т.п., речь сейчас не об этом.

Спасибо всем, кто уже отписался.

maverik ★★
() автор топика

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

x4DA ★★★★★
()

начать ли точить clojure или сие поделие недостойно моего скудного запаса времени

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

Последнее, что было - пролог в универе.

Он все таки строго логический. И поминать как ФП не есть правильно.

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

Текст остаётся актуальным, пока не перестанет вызывать массовый разрыв пуканов у маргиналиев.

А вам бомбит с каждым разом всё более и более люто.

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

дебил

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

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

превращаются в мешанину из скобок

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

maloi ★★★★★
()

Сейчас многие с хаскеля переходят на C#.

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

ага, видел эту ссылку недавно в одной из эфшарпо-рассылок.

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

Браво! Не могу оценить достоверность написанного, но какие эмоции!

Это тупая копипаста. Более того, в ней не названо ни одного факта за исключением того, что ABCL действительно существовал еще до Clojure. Так что это сплошные эмоции.

По сабжу. Полезно изучать Haskell, не столько для реальной работы, сколько для приобщения к миру ФП. Lisp можно изучать на основе EmacsLisp или Scheme. Имея все это в бэкграунде уже легко переходить на Clojure. Причем уже не для целей просто поизучать для себя, а для промышленной разработки.

Kostafey
()

Существует только один функциональный язык, заслуживающий изучения: xslt.

anonymous
()

я на скалу переползаю.

AndreyKl ★★★★★
()

Для знакомства именно с ФП в принципе подойдет Ocaml или (лучше и практичнее) F#. Если нравится ява-мир, то потом можно осваивать скалу. Хаскелль лучше отложить на третью очередь, кложуру - на четвертую. Практических вещей на последних двух скорее всего не напишешь, но для общего образования очень даже ничего.

ovk48 ★★★
()
Последнее исправление: ovk48 (всего исправлений: 1)

Всем спасибо за ответы :)

maverik ★★
() автор топика

Предлагаю упарываться хаскелем или эрлангом. Упорин хороший, я проверял.

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

Эм, я почему-то всегда считал, что в лиспоподобных языках всего синтаксиса - скобки и пробелы, а всё остальное уже наворачивается дальше. Видимо зря я SICP не дочитал :(

Dark_SavanT ★★★★★
()

В кложуре ФП используется активно, порой даже изящнее, чем в более протухших лиспах, но если хочется ФП по хардкору, бери хаскель.

Пролог в общем-то не ФП, а логическое программирование. В кложуре кстати такое тоже есть, core.logic.

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

Пролог в общем-то не ФП, а логическое программирование. В кложуре кстати такое тоже есть, core.logic.

Угу, миниКанрен. Тут ОПу имеет смысл The Reasoned Schemer почитать: «the goal of the book is to help ... the logic programmer think functionally».

Но на самом деле, нужно ли бежать на ФЯ при логическом бэкграунде? Может, стоит взглянуть на языки, сочетающие в себе элементы обеих парадигм? Скажем: Mercury, Oz, или новорожденный Picat, если хочется подальше от цацкеля и статической типизации.

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

Но на самом деле, нужно ли бежать на ФЯ при логическом бэкграунде?

Наверное я немного непонятно написал: имелось ввиду, что последнее, что было похоже на ФП, было в виде prolog, хотя как тут сказали - это логический язык. А так я обычный императивщик с довольно большим стажем.

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

Вот представь, подходит к тебе начальник с утречка в понедельник

Лиспер с утра в понедельник на работе? В своём ли ты уме?

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

Хватит и прототипа, который на emacs lisp набросан на скорую руку. Желчные ононимусы, конечно, потом всё на плюсах будут переписывать, чтобы быстрее и ынтырпрайзней, на за полгода от их честной компашки выхлопа будет только сожжёный мегаватт, да стопицот корок.

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

Не перестаю восхищаться вашим упорством в игнорировании фактов! То лисповой работы нет, то программы на лиспе не работают, то их вообще написать невозможно...

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

Наверное я немного непонятно написал: имелось ввиду, что последнее, что было похоже на ФП, было в виде prolog, хотя как тут сказали - это логический язык. А так я обычный императивщик с довольно большим стажем.

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

dave ★★★★★
()

Категоричнейшим образом убеждён, что начинать надо с ML-ей. Тут из более-менее живых на выбор sml, OCaml и F#.

Zenom ★★★
()

Да вобщем, есть два production ready ф. языка - Common Lisp и Erlang. Второй причем - только в распределенных системах.

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

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

Лиспер с утра в понедельник на работе? В своём ли ты уме?

Внезапно, но таки да, очень что-то в тему

lovesan ★★
()

Короче. Феерическая расстановка точек над фп.

Ф.Я. делятся на «для удобной работы» и «для дрочить»

Для «дрочить»:
- Хаскель (нежизнеспособное говно. язык для прикола, причем основной прикол - ставить палки в колеса тем кто пишет код)
- Все ML (туда же)
- Scala туда же
- Clojure (кривой и непродуманный вариант лиспа максимум для скриптования)
- Racket (херня просто для подрочить - ни библиотек, ни компиляторов нормальных, ни IDE, зато гигиенические макросы)
- Много что еще, в т.ч. хипстерское говно вроде Rust

Некоторые языки вроде Racket, правда, пригодны для обучения студентоты разным простейшим базовым концепциям в SE и SA.

Для работы:
- Erlang. Причем не столько потому, что ф.я., а потому, что Э. это очень крутое воплощение Actor Model, применимое на практике. Язык кстати невероятно императивный, если подумать. Плюс куча батареек из OTP.
- CL. Стандартизированный ANSI, ориентированный на high performance, невероятно гибкий - подходит как командам разработчиков, причем даже индусам(есть de-facto стандарты написания кода и пр.), так и одиночкам(т.к. язык по факту позволяет делать что угодно лишь бы воображения хватало). Куча библиотек(ну не как у Java, но все же), мощные IDE(от коммерческих до SLIME) и т.д.

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