Skip to content

maxbarsukov-itmo/functional-programming-0

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Лабораторная работа 0

tomoko-kuroki

Elixir is a dynamic, functional language for building scalable and maintainable applications.

Выполнил: Барсуков Максим Андреевич,
Студент группы P3315

Преподаватель: Пенской Александр Владимирович.


Для прохождения данного курса я решил использовать Elixir, позионирующийся как функциональный язык программирования, потомок Erlang, предназначенный для написания неубиваемых распределённых систем, а более конкретно больших soft-realtime систем и IoT штук.

Как Ruby-enjoyer, я давно поглядывал на Elixir, но плотно с ним взаимодействовать побаивался. Я думаю, курс ФП даст мне отличную возможность поближе с ним познакомиться.

Вещи, которые мне нравятся (по крайней мере, на первый взгляд) в Elixir и выгодно выделяют его на фоне остальных претендентов на роль ЯПа для курса ФП:

  • приспособлен к разработке параллельных и конкуррентных программ. Эликсир способен запускать мильоны процессов-акторов, работающих асинхронно, с различными приоритетами и всем таким. Эти процессы не делят память и общаются через пересылку сообщений.
  • приспособлен к разработке распределённых систем. Все основные проблемы написания распределённых систем вроде сихнронизации монотонных часов, общения между машинами, поиска машин, heartbeat-ы, группы процессов уже включены в язык.
  • приспособлен к разработке отказоустойчивых систем. Что делают кубы, когда падает сервис? Они перезапускают его. Эрланг делает то же самое, только не с сервисами, а с процессами, что значит что неожиданное исключение в одной части функционала никак вообще никак не заденет другой функционал. Гоферы пытаются достичь того же с помощью микросервисов, а в Elixir такой функционал из коробки.
  • тулинг. В отличие от Erlang с его хэдерами, makefile-ами и прочими пыльными приколами, эликсир за секунды позволяет создать проект, скомпилировать его, сконфигурировать его, собрать артефакт, скачать зависимости и т.д. в стандартах всех современных языков.

Кроме того, отдельно мне нравится то, что Elixir, не в пример многим другим функциональным языкам, действительно используется в промышленной разработке крутых вещей по всему миру (и даже существуют вакансии в РФ).

Для лабораторной работы №4 я хочу выбрать что-то, что сможет действительно раскрыть преимущества Elixir (описанные выше) и OTP. Поэтому мне было бы интересно сделать относительно простую распределенную Key-Value базу данных, либо брокер сообщений c AMQP.

Что нужно выбрать Что выбрал я
Язык программирования Elixir
Компилятор/интерпретатор elixir-v1.17.2 (поддерживает Erlang/OTP 27)
Система сборки mix
Стиль кодирования christopheradams/elixir_style_guide
Система автоматического форматирования mix format
Lint tools credo + dialyxir + ex_check
Инструменты тестирования espec, ex_machina, faker и mox

Для изучения Elixir я планирую использовать книгу Elixir In Action (и, опицонально, Designing Elixir Systems With OTP), рекомендованную на официальном сайте Elixir.

elixir-and-elm

Лицензия

Проект доступен с открытым исходным кодом на условиях Лицензии MIT.

Авторские права 2024 Max Barsukov

Поставьте звезду ⭐, если вы нашли этот проект полезным.