LINUX.ORG.RU

OCaml и его состояние

 , ,


0

6

Хотелось бы узнать по сабжу. На сколько жив/пригоден для продакшена? Какие основные области применения? Как обстоят дела с вебом? Его плюсы/минусы по сравнению с Haskell, Scala, Clojure?

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

Про пригодность для прода сказать сложно, смотря какой прод и какие люди в команде.

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

По основной работе - вебня, различные сетевые сервисы

я не понимаю, простите. Возьму в пример себя, я разработчик - пишу софт за деньги. У меня не стоит вопрос, как там OCaml и его состояние для продакшена. У меня уже есть проект на котором я работаю, и весь стек технологий определен пять лет назад. Предположим, мы начнем другой проект и будем думать над его архитектурой. Каким именно путем мы должны прийти к решению пилить, например, бекенд для вебни на Окамле, а не на джаве, питоне, джаваскрипте, шарпе, го и т.д.? И как мы должны убедить нашего работодателя в это инвестировать? И главно, зачем???

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

Ну вот пять лет назад у вас кто-то пошёл на форум, спросил, мол, чё, как, жив ли Python, годится ли для подставить применение, использует ли кто в проде. Поэтому у вас всё определено и вопрос не стоит.

на 50% ирония

anonymous
()

Ну тут вопрос насколько команда готова/пригодна к применению окамла. Людей искать в команду на окамл будет полной залупой, либо доучивать по месту.

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

Dark_SavanT ★★★★★
()
Последнее исправление: Dark_SavanT (всего исправлений: 1)
Ответ на: комментарий от entropy-ronin

По основной работе - вебня, различные сетевые сервисы.

есть в телеге 5 человек активно пишущих на камле ? если да, то можешь разводить работодателя на проект (вебня на OCaml).

для души на локалхосте - подходит всё что угодно.

MKuznetsov ★★★★★
()

выбери на работе какую-нибудь минорную задачу, реши её с помощью микросервиса на ocaml

настрой там мониторинг, ci

пусть поработает полгодика

эти полгода занимайся чем-нибудь другим

через полгода залезь снова в сервис чтобы поправить баг

вот тут ты и поймёшь – надо ли оно тебе

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

На окамле не писал, но прочитал несколько книг. Напрягло, что есть два стиля API: официальный и от Jane Street, и они расходятся.

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

А так окамл мне тоже очень интересен. Хотя тот же F# кажется мне много-много проще, даже с его вычислительными выражениями.

anonymous
()

Дополню. Из этой четверки языков, безусловно, наиболее подходящей для прода будет Scala, но лично я ее не очень люблю. Может от того, что много лет потратил на нее. Видел использование Scala в проде под хорошими нагрузками. Язык Scala пригодный, но недопроектированный. Особенно больше всего меня бесит for-comprehension, который не стал почему-то чем-то похожим на вычислительные выражения F#. Кстати, F# - еще один хороший кандидат, учитывая, что .NET должен быть даже и для Эльбрусов e2k.

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

Язык Scala пригодный, но недопроектированный

Третья версия решает часть проблем, но довольно больше количество людей всё ещё сидит на 2.12-2.13 и никуда мигрировать не собирается.

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

Решает проблему с избыточным использованием имплиситов?.. Смотрел, читал, пробовал. Картинку в новой книге Одерского видел. Переводная книга лежит на столе. Есть купленный электронный оригинал нового издания на инглише (как раз успел еще купить во время).

Все же, не понимаю, почему они так привязались к этому for- comprehension. Ну, проигрывает же вычислительным выражениям F# почти по всем статьям! Это сколько новых вещей можно было бы сделать! Какой бы импульс дало языку! И не нужно было бы догонять котлин с его сопрограммами! Ну, ладно. Хозяин - барин

anonymous
()

Как и все остальные функциональные языки нужен только для подпитывания своего эго. Ну ещё немножко для написания функции вычисления чисел фибоначчи (когда последний раз тебе нужен был фибоначчи?😏).

ox55ff ★★★★★
()

Как обстоят дела с вебом?

С вебом у OCaml все отлично, ReasonML или ReScript и можно даже фронт писать на OCaml. Вообще трансляторы в js у OCaml появились очень давно (например тому же ocamljs уже больше 15 лет), тогда практически ни у каких других языков их не было.

anonymous
()

Лично мне после F# асинков окамловские решения показались какими-то переусложненными.

Та же песня с модулями, функторы, конечно, крутые, но я думаю они такие нужны в 2% случаев. А вот typeclass’ов из хаскеля прям не хватает.

По тулингу проблем не было, я заводил VSCode с полоборота.

Если что, я не настоящий окамльщик и возможно не достиг их дзена.

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

как мы должны убедить нашего работодателя в это инвестировать? И главно, зачем???

Затем, что мне как специалисту должно быть интересно в этом участвовать. Код пишут не «стеки технологий», а люди.

no-such-file ★★★★★
()
Ответ на: комментарий от anonymous

Только пока ты нищий джун. А через 20 лет в профессии, когда ты в принципе можешь и не работать, деньги уже не так важны. Не ну если прям Камаз бабла подвезут, можно и в питоне поковыряться, так уж и быть. Но вообще больше мотивируют интересные идеи, задачи, инструменты и т.д. В общем, пирамида Маслоу, всё такое.

no-such-file ★★★★★
()
Ответ на: комментарий от lovesan

А что ты не админ? А кто? В какой организации мисье имеет честь трудиться и на какой позиции? Серьезно, вдруг ты сейчас окажешься главным инженером эппла, я тогда буду долго извиняться и побегу убеждать своих ПМов срочно перепиливать проект на окамле или говнямле или чего ты соизволишь порекоммендовать как продакшен-реди решение.

FishHook
()

Когда я в это влез: в качестве среды разработки - только EMACS. Без среды разработки нет смысла использовать. Используется в экстремистской организации facebook, на нём написан hack и infer. В целом работает, хотя бывают проблемы с пакетами, которые нужно скачивать с их сайта раздачи пакетов.

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

Когда я в это влез: в качестве среды разработки - только EMACS

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

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

У недругов тоже надо уметь брать полезное, ценное. Кстати, Ocaml может быть неплох для обучения студентов. Сам я не преподавал, но вижу, как кипят мозги у них от того же хаскеля, хотя им и преподают самые-самые элементарные азы. А Ocaml концептуально много проще, особенно если сильно не вдаваться в модули. Вполне может помочь приобщить народ к ФП. А то с пониманием ФП, вообще, все плохо, что и демонстрирует этот сайт наряду с RSDN. И наверное, эта проблема общая с тем же Западом

anonymous
()

На сколько жив/пригоден для продакшена?

На полшишечки. Зависит от продакшена.

Какие основные области применения?

Основная область применения OCaml – реализация Coq.

Как обстоят дела с вебом?

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

Его плюсы/минусы по сравнению с Haskell

Плюсы: меньше шансов отстрелить себе жопу ленивостью (но к ней быстро привыкаешь).

Минусы: сильно меньше готовых библиотек на каждый чих, с тулингом всё тоже довольно грустно, куча стороннего кода застряла в 90х-ранних 2000х и может не собираться.

Scala, Clojure?

От отсутствия JVM сплошные плюсы.

// hateyoufeel

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

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

А нахрен тут OCaml, если есть SML?

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

А нахрен тут OCaml, если есть SML?

У OCaml’а ООП еще есть, правда весьма своеобразный, но вполне пригодный для объяснения азов, в SML ООП разве что только через модули объяснять.

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

Его Jane Street использует и весьма успешно, так что OCaml ещё долго будет актуален.

Справедливости ради, там на нём 65 что-ли человек пишет, включая всяких reliability engineer’ов. И нанимают обычно PhD’ей из лиги плюща. Так что, среднестатистическому ЛОРовцу должно быть ни тепло, ни холодно от того, что там в этой башне из слоновой кости происходит. До OCaml’а у них был VBScript и Excel, а каждую строку кода лично просматривали основатели («партнёры»). В 2005м попробавили переписать на Java, но его было больно ревьювить. На OCaml перешли случайно, чисто потому, что один из стажёров использовал его для автоматизации своей работы (PhD в процессе получения, лига плюща, OCaml – якобы единственный ЯП, который он знал), считая, что код всё равно пойдёт на выброс. В конце концов, стажёр стал главой разработки. Все конкуренты из области высокочастотного трейдинга (ещё актуальна эта тема?) на тот момент использовали C++ и Java (по информации ныне безпричинно удалённого модераторами треда на SO).

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

Справедливости ради, там на нём 65 что-ли человек пишет, включая всяких reliability engineer’ов.

Даже если они перестанут использовать OCaml то ему ничего не угрожает, сам же язык на гособеспечении в французском институте INRIA. Кроме это есть еще и консорциум, тоже французский OCamlPro с вполне приличным числом участников.

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

А нахрен тут OCaml, если есть SML? А чем может похвастаться SML? В отличии от Ocaml, он фрагментирован, то есть разные компиляторы с разными фичами и то, что собирается одним диалектом не соберётся с другим. В силу меньшей распространённости многие вещи, типа репозитория пакетов придётся делать самому. Некоторые диалекты не умеют собирать под не x64. В то время как Ocaml взлетел, у него есть репозиторий пакетов. Не так много, как хотелось бы, но всё же достаточно для многих вещей.

anonymous
()

На сколько жив/пригоден для продакшена?

Язык активно развивается. Недавно в язык добавили алгебраические эффекты и поддержку использования нескольких ядер

Какие основные области применения?

Язык универсальный, это не php, который используется почти только для веб сервисов. На нём можно и графические приложения писать, и работу с иходным кодом, и многое другое.

Как обстоят дела с вебом?

Веб - это понятие растяжиемое. Можно в js/wasm компилировать, можно веб серверы делать.

Его плюсы/минусы по сравнению с Haskell, Scala, Clojure?

Хаскель - ленивый язык. И из-за лени там легко может возникнуть leak space, которая приведёт к тому, что программа будет пожирать память гигабайтами. Из-за чистоты некоторые вещи будет весьма проблематично реализовать. Язык подобен игрушке для математиков, и код будет крайне сложно понять, по крайней мере в начале освоения. Нуждается в специальной поисковой системе hoogle, без неё понять и половину кода не получится. На нём нужна постоянная бдительность, так как по ошибке можно очень легко существенно замедлить программу. В языке несколько типов строк несовместимых между собой, приодически ломается api. Для борьбы с этим придумали замораживать срез пакетов https://www.stackage.org/, на данный момент это единственный известный мне язык с такой проблемой. У хаскеля очень медленный компилятор, и написать проект, который будет компилироватся полчаса вполне реально. Предоставляет крайне много абстракций, возникает фрагментация, есть варианты решения одной и той же задачи с разными подходами, ещё больше повышается порог входа.

Скала - язык из мира jvm, что позволяет интегрировать с другими языками на этой платформе. Запуск кода не самый быстрый. Тоже не малый порог входа, тоже медленный компилятор. В нескольких вещах, которые я сравнивал будет существенно многословнее, по сравнению с ocaml.

Clojure - динамически типизированный язык, в отличии от haskell, scala, ocaml, как следствие ошибки, которые были бы отловлены в любом из этих языков, будут всплывать в рантайме. Интерпретируется, со всемы вытекающими плюсами и минусами. Выполняется на jvm, что позволяет интегрировать с другими языками на этой платформе. Запуск кода не самый быстрый.

Ocaml - быстрая компиляция, мощная система типов, предотвращающая кучу ошибок, вроде null pointer exception(как и в хаскеле), но всё же более простая и как следствие легче в освоении. Можно за несколько минут выучить синтаксис, и понимать почти весь код(возможно тут кложа подойдёт). Можно собрать статический бинарник(как и в хаскеле). Думаю, этот язык лучше всего рекомендовать для изучения. Нет проблем из-за ленивых вычислений, при необходимости можно без проблем работать с изменяемыми данными(как скала). Достаточно быстрый, компилируется в нативный код

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

Напрягло, что есть два стиля API: официальный и от Jane Street, и они расходятся.

Они совместимы друг с другом, при желании можно постепенно переходить с одного на другой, можно смешивать, можно использовать по отдельности. Это не python, где переход с 2-ой на 3-ю версию превратился в кошмар.

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

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

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

И как мы должны убедить нашего работодателя в это инвестировать? И главно, зачем???

А как убедить работадателя переписать с голанга на сишарп или наоборот? Или с джаваскрипта на джаву? И главное зачем?

anonymous
()