LINUX.ORG.RU

Потрогать палочкой функциональщину

 


1

3

Привет всем. На фоне последних тем про всякие там лиспы и хаскелли возникло желание тоже стать «крутым» (ибо знание линукса уже крутостью не является) и поглядеть какой-нибудь из них.

А если серьезно, то хочется какой-нибудь функциональный язык, но не древний как экскременты мамонта и такой, чтобы хоть с вероятностью 0.0001 я мог бы применить в разработке. Что посоветуете? F#? Haskell? Scheme? Lisp?

★★

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

И в добавок, что кроме SICP почитать? (чтобы не сильно было завязано на конкретном языке).

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

чтобы хоть с вероятностью 0.0001% я мог бы применить в разработке.

Scala. Она, конечно, не чисто функциональная, зато вероятность применения не нулевая.

tailgunner ★★★★★
()

Скалу с кложурой заюзай. Будет тебе вся java-инфраструктура искаропки. В разработке применяются.

Hertz ★★★★★
()

Если будешь ковырять F#, то для начала будет нужна VS2010 (Голый Express подойдёт, на него можно накатить плагин с F#), т.к. в начале будет оч. туго с пониманием вывода типов.

Lisp не функциональный ЯП, хотя там можно писать и в функциональном стиле.

Я соглашусь с tailgunner, бери Scala.

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

Плюсую за scala. У нас она уже в реально работающих проектах пользуется. Правда пока в виде смеси java и scala кода.

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

Читай документацию к выбранному тобой языку, так надёжнее и практичнее. А бызовые идеи там везде одинаковы.

Ед. что, простой и понятный разбор идей функций высших порядков я видел в первом томе Мира лиспа. Правда ближе к концу.

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

Спасибо всем. Добавил в закладки fprog.ru

Ок, сейчас вот реально смотрю таки clojure vs scala. Вроде как, scala выглядит пободрее. Можно в двух словах `pros&cons` для каждого?

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

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

Попробуй все сам и сделай выбор.

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

Если будешь ковырять F#, то для начала будет нужна VS2010 (Голый Express подойдёт, на него можно накатить плагин с F#), т.к. в начале будет оч. туго с пониманием вывода типов.

Старьё, бери F# 3.0

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

Ох, а оно реально нужно? Или там таки уже ввели атрибут для обязательности хвостовой рекурсии (это ед. чего реально иногда не хватало).

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

Scala более классический ЯП, эдакий C#, только более функциональный. Собственно можно писать в ООП или ФП стиле в зависимости от потребностей.

Clojure лиспобразный и функциональный ЯП. Лисповость даёт макросы, а функциональщина - простоту паралелизма без косяков с изменяемыми состояниями. Но за это приходися платить большим порогом вхождения. Т.е. на Scala ты сможешь писать код через 3-4 часа, а на Clojure чераз пару дней (имеется в виду код для решения конкретных простых задачек по 1-2к строк кода).

Norgat ★★★★★
()

C# или даже C++. Там вполне достаточно элементов функциональщины. Больше не надо.

anonymous
()

На фоне последних тем про всякие там лиспы и хаскелли возникло желание тоже стать «крутым»

Попса, уже не модно.

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

а теперь добавь fprog.ru/planet — агрегатор русскоязычных блогов по функциональщине

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

теперь читай programming in scala одерского и/или beginning scala поллака. ну и числа так 18 на курсере начнется курс по скале.

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

Scala более классический ЯП, эдакий C#, только более функциональный.

Тогда уж и Scala нифига не функциональная, но позволяет писать в функциональном стиле.

Автору. Если занимаешься вебом, то я бы выбирал между clojure и Scala, причем clojure концептуально чище и ближе к ФП. Если десктопными приложениями, то между F# и Common Lisp (LispWorks / Allegro CL). Если теориями, то Haskell. Еще может быть полезен Ocaml перед тем, как приступить к изучению Haskell.

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

в своем блоге отт постоянно исправляет этот список, добавляя всякие новые книги.

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

Ох, а оно реально нужно? Или там таки уже ввели атрибут для обязательности хвостовой рекурсии (это ед. чего реально иногда не хватало).

type Конечно = member val X = 0 with get, set //hallelujah
nCdy ★
()

чтобы хоть с вероятностью 0.0001 я мог бы применить в разработке

Да забей.

Что посоветуете?

Agda 2.

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

Или там таки уже ввели атрибут для обязательности хвостовой рекурсии (это ед. чего реально иногда не хватало).

Это я не понимаю, что значит «для обязательности хвостовой рекурсии» ?

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

А если не секрет, что Вы делаете с помощью CL?

В последнее время это компиляторы/трансляторы, а вообще по-разному. Иногда использую ECL в качестве встраиваемого скриптового языка.

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

А вот за ссылку на курсеру вообще большое данке!

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

Scheme. И забудьте о SICP, в таком случае, читайте Sketchy Scheme, к примеру.

мог бы применить в разработке

J

buddhist ★★★★★
()
Ответ на: комментарий от nCdy
[tailrec]
let rec foo x = ...

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

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

И ради этого ставить 3й F#? Имхо, бредово, особенно если учесть, что в ООП стиле писать легче на C#, разбавляя его модулями из F# (и не нужно никаких классов писать на F#, в крайнем случае - расширить шарповый класс).

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

В последнее время это компиляторы/трансляторы

Всегда умиляюсь таким заявлениям. Такое впечатление, что люди пишут по компилятору в месяц %)

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

Единственное, ради чего вроде стоит поставить 3й F# - провайдеры. Но я в них не особо копался, поэтому хз с чем их едят.

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

И ради этого ставить 3й F#? Имхо, бредово, особенно если учесть, что в ООП стиле писать легче на C#, разбавляя его модулями из F# (и не нужно никаких классов писать на F#, в крайнем случае - расширить шарповый класс).

не только ради этого, но F# позволяет писать ООП код, у меня нет предрассудков по этому поводу и желания для каждого класса цеплять C# проект нет тоже.

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

Всегда умиляюсь таким заявлениям.

Ну так ты известный лошок.

Такое впечатление, что люди пишут по компилятору в месяц %)

Поддержка одного большого компилятора - задача долгая. Наше местное поделие на C++ еще много человеколет сожрет. Платформа развивается, новые алгоритмы оптимизации появляются, да и язык меняется, хоть и медленно.

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

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

Единственное, ради чего вроде стоит поставить 3й F# - провайдеры. Но я в них не особо копался, поэтому хз с чем их едят.

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

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

Не, ну уж про кого-нибудь, но про tailgunner ты явно не в тему.

Да ну? Он последние десять (!!!) лет не меняется. Умнее не становится. Уже столько лет даже ocaml освоить не осиливает. Лошок и есть. Лу-у-у-узер!

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

Ну так ты известный лошок.

Я ждал тебя :)

Кроме того, многие пишут компиляторы DSL [...] их действительно можно клепать по парочке в неделю.

И компиляторы арифметических выражений.

ну да кого мнение дебилки-то волнует

Вполне очевидно, что мое мнение тебя волнует %)

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

И компиляторы арифметических выражений.

Я тебе уже говорил про типичные компилируемые DSL, используемые внутри компиляторов. Тот же Datalog, например (ты только тупо поржал, гы-гы-гы, потому что ты, очевидно, дебил). Да хотя бы на Tablegen в LLVM посмотри, дебил.

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

Еще может быть полезен Ocaml перед тем, как приступить к изучению Haskell.

Почему?

Если теориями, то Haskell.

И снова вопрос, почему?

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

Я тебе уже говорил

Мой же сосед, говорит, что пять женщин

За день имеет, а сам долгожитель,

Старше меня лет на десять, не меньше"...

- «А кто Вам мешает? И Вы говорите».

Тот же Datalog, например (ты только тупо поржал, гы-гы-гы

А вот здесь ты лжешь.

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

А вот здесь ты лжешь.

Сява, ты опупел. Искать мне пруфлинк лениво, но дело было именно так.

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

Сява, ты опупел.

Обиделся штоле?

Искать мне пруфлинк лениво

Пруфов от тебя никто и не ждал.

P.S. Был рад тебя видеть, продолжим срач в другом месте и другом времени.

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

Я трогал Haskell. Говорят, что он хорош. Чтобы потрогать лучше всего брать что-то популярное, но с не сильно упоротыми фанатами.

В разработке никак не применял. Но ту же Scala можно применить только если JVM.

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

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

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

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

Всегда умиляюсь таким заявлениям. Такое впечатление, что люди пишут по компилятору в месяц %)

Не понял, чему ты умиляешься.

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

Простая для новичка книжка о схеме (не умаляю крутости SICP, но он — не учебник по языку), в которой язык рассматривается во всей полноте.

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

Девальвации термина «компилятор».

«Компилятор» может использоваться как в смысле «продукт» (ГЦЦ, например), так и в более широком смысле решения задач обработки языков. «Продукты» каждый месяц я и правда не выпускаю.

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