Написать пост

«Какой функциональный язык программирования стоит выбрать начинающему разработчику?» — советы от пользователей Reddit

Аватарка пользователя Мария Кривоченко

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

Недавно пользователь под ником 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.

А что бы вы посоветовали, начинающим изучать функциональное программирование?
Следите за новыми постами
Следите за новыми постами по любимым темам
1К открытий3К показов