«Какой функциональный язык программирования стоит выбрать начинающему разработчику?» — советы от пользователей Reddit
Начинающий разработчик решил изучать функциональное программирование и не уверен, какой язык ему выбрать. Рассказываем, что ему посоветовали.
2К открытий13К показов
Недавно пользователь под ником HistoricalAccess9501 рассказал, что интересуется функциональным программированием, но не знает, с какого языка ему начать:
Множество людей советовали мне изучить Haskell, Scala, Clojure, Erlang или Lisp, потому что они помогут хорошо понять функциональное программирование. Но я не уверен, за какой стоит взяться в первую очередь. У меня есть опыт работы с Python и JS, но я ни разу не сталкивался с функциональными языками программирования, поэтому также хочется знать, какие языки для чего используются: приложения, сайты, игры, машинное обучение и так далее.
В ответ HistoricalAccess9501 получил несколько дельных советов.
UdPropheticCatgirl
Я думаю, что любой из потомков и диалектов Lisp подойдет, например, SBCL или Clojure (и, возможно, Racket).
Можно взяться за Elixir, Erlang и Gleam, особенно чтобы разобраться в BEAM. Если вы хорошо знакомы с акторами и IPC. Scala великолепен, но многим отличается от большинства функциональных языков, поэтому не стоит учить его в первую очередь. Еще я бы не брался за Haskell и вместо него учил OCaml.
Что касается сфер применения:
- Scala используется для построения дата-пайплайнов, и для бэкенда на Java.
- Clojure — оптимальный Lisp, для работы в 2024, в основном если пишете бэкенд на Java.
- SBCL сегодня встречается редко, я сталкивался с ним только во время работы с HFT, еще в какой-то момент его часто использовали в сфере ИИ, но не уверен, продолжают ли сейчас.
- Elixir — снова бэкенд, особенно если работаете с распределенными системами.
- Erlang — король распределенных систем, часто используется в телекоме.
- Haskell подходит, только если вам не о чем поговорить с курьером и перед партией в D&D.
- OCaml используется примерно в двух финтех-компаниях и некоторыми небольшими анализаторами в Meta, вот и все.
VicariousAthlete
F# просто замечательный — мой лучший опыт в этой сфере. Сейчас мы используем его в создании масштабных систем (заказ еды онлайн).
nandryshak
Сначала определите, какие концепции вы хотите изучить, а потом подберите под нее язык. Не забудьте про популярность языка — хорошее сообщество и большой набор инструментов упростят обучение.
- Функции первого класса, составные функции и прочее? — Javascript, Racket.
- Все вышеперечисленное плюс неизменяемые объекты? — Clojure.
- Все вышеперечисленное плюс хорошая система типов? Typescript.
- Все вышеперечисленное плюс, Хиндли-Милнер и математика? — Haskell.
<…>
Joewoof
Сложно выбрать. Самый простой и популярный — Scala, но это мультипарадигмальный язык. Haskell слишком редкий. Что-то среднее?
Наверное, OCaml. Он преподается как первый в Кембридже, у него хорошая репутация. Если хотите что-то более практичное, то выбирайте Elixir.
0xAERG
Если вы знакомы с JS и хотите что-то похожее, советую попробовать изучить ReScript. Он функциональный, компилируется в JavaScript, а синтаксис похож на смесь OCalm и JS. <…>
davadds0
В университете я изучал Erlang и Scheme.
Рекомендую сначала изучить Erlang (сначала хорошо освоить vanilla Erlang), а затем — OTP, что-то вроде библиотеки/фреймворка Erlang, это спасет вас от монотонной работы. А еще будет удобно создавать сложные распределенные системы с помощью Erlang/OTP. <…>
Peiple
Из необычного — R, который полезен на практике. Он не такой хардкорный, как Haskell, но содержит большинство концепций функционального программирования. В основном используется в Data Science. <…>
Frenchslumbe
Самый легкий в освоении — Lips.
Простой и последовательный синтаксис (но при этом очень выразительный). К тому же, изучив Lips, будет проще с его диалектами и языками-потомками. <…>
Также советую ClojureScript. Это реализация Clojure, с компиляцией в JavaScript.
А что бы вы посоветовали, начинающим изучать функциональное программирование?
2К открытий13К показов