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

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

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

10 ответов

11 просмотров

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

Когда-то пописывал хеловорлды на Хаскеле. Эликсир как язык удивления не вызвал, сложнее было вникнуть в 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

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

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

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
DS
8
Карта сайта