169 похожих чатов

Привет! Решил изучить что-то новое, сам я пишу на питоне.

Всегда хотелось попробовать функциональный язык. Выбор пал на эликсир и теперь возник вопрос. Каков был опыт перехода из мира ООП у вас в ФП, также ещё что вы читали/смотрели для того, чтобы освоить эликсир?

10 ответов

15 просмотров

Я из джавы, в эликсир и безмерно рад

Когда-то пописывал хеловорлды на Хаскеле. Эликсир как язык удивления не вызвал, сложнее было вникнуть в OTP.

Мне зашла вот эта книга, чтобы как-то понять ФП - https://grokkingsimplicity.com

я по работе кусок монолита с рельсы на эликсир переписывал - так и вкатывался. для меня было сложно осознать пару концептов, но когда осознал - всё очень быстро пошло. после ООП-языков могут быть сложности. а так - стандартный путь. пытаешься делать в лоб и гуглишь всё непонятное

Поставили задачу перещелать чаты. Сел - переписал. Получилось говно, но опыт поимел

Bogdan
Что за концепты кстати ?

мне очень долго не давалось переписать дважды вложенный цикл с внешними обновляемыми переменными, потому что в эликсире так не сделаешь. тебе нужно всегда новую переменную размечать. плюс у тебя нет по сути классического цикла - у тебя есть итератор или map/reduce, где всё вычисление внутри производится в изолированной анонимной функции. поэтому я для себя выделил по итогу два больших концепта, которые надо осознать для перекатывания с распространённого ЯП на функциональный: - почти полная невозможность модификации переменных - нужно при каждом изменении результат заново переназначать (добавил что-то в map - размечаешь новый map из этого результата) - анонимные функции/замыкания. я был знаком с замыканиями в js, но там это не очень хорошо сделано, у тебя всегда есть откуда угодно доступ к внешним переменным. а тут нет - ты можешь замкнуть что-то внутри функции и только таким образом внешние переменные прокинуть куда-либо глубже, но модифицировать из замыкания что-то снаружи никак нельзя вот когда я эти две вещи полностью осознал и научился применять, остальное вообще никаких проблем не стало вызывать. а фишки OTP со всеми этими genserver, async/await и прочим было делом техники освоить, вообще не вызвало затруднений

Anton Lapshin
мне очень долго не давалось переписать дважды влож...

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

Bogdan
Ну да имутабельность к счастью в Эликсире имеется,...

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

У меня коллега писал про опыт перехода с php, советую, если заинтересован https://medium.com/from-php-to-elixir

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта