Skip to content

Commit e1b696a

Browse files
committed
docs: 📚 update README
1 parent 81267dd commit e1b696a

File tree

2 files changed

+32
-3
lines changed

2 files changed

+32
-3
lines changed

.resources/elixir-and-elm.png

808 KB
Loading

README.md

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,46 @@
11
# Лабораторная работа 0
22

3-
<img alt="tomoko-kuroki" src="./.resources/tomoko-kuroki.gif" height="281">
3+
<img alt="tomoko-kuroki" src="./.resources/tomoko-kuroki.gif" height="140">
44

55
> Elixir is a dynamic, functional language for building scalable and maintainable applications.
66
77
**Выполнил**: Барсуков Максим Андреевич,<br>**Студент группы** P3315
88

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

11-
1211
---
1312

14-
...
13+
Для прохождения данного курса я решил использовать Elixir, позионирующийся как функциональный язык программирования, потомок Erlang, предназначенный для написания неубиваемых распределённых систем, а более конкретно больших soft-realtime систем и IoT штук.
14+
15+
Как Ruby-enjoyer, я давно поглядывал на Elixir, но плотно с ним взаимодействовать побаивался. Я думаю, курс ФП даст мне отличную возможность поближе с ним познакомиться.
16+
17+
Вещи, которые мне нравятся (по крайней мере, на первый взгляд) в Elixir и выгодно выделяют его на фоне остальных претендентов на роль ЯПа для курса ФП:
18+
19+
- приспособлен к разработке параллельных и конкуррентных программ. Эликсир способен запускать мильоны процессов-акторов, работающих асинхронно, с различными приоритетами и всем таким. Эти процессы не делят память и общаются через пересылку сообщений.
20+
- приспособлен к разработке распределённых систем. Все основные проблемы написания распределённых систем вроде сихнронизации монотонных часов, общения между машинами, поиска машин, heartbeat-ы, группы процессов уже включены в язык.
21+
- приспособлен к разработке отказоустойчивых систем. Что делают кубы, когда падает сервис? Они перезапускают его. Эрланг делает то же самое, только не с сервисами, а с процессами, что значит что неожиданное исключение в одной части функционала никак вообще никак не заденет другой функционал. Гоферы пытаются достичь того же с помощью микросервисов, а в Elixir такой функционал из коробки.
22+
- тулинг. В отличие от Erlang с его хэдерами, makefile-ами и прочими пыльными приколами, эликсир за секунды позволяет создать проект, скомпилировать его, сконфигурировать его, собрать артефакт, скачать зависимости и т.д. в стандартах всех современных языков.
23+
24+
Кроме того, отдельно мне нравится то, что Elixir, не в пример многим другим функциональным языкам, действительно используется в промышленной разработке крутых вещей по всему миру (и даже существуют вакансии в РФ).
25+
26+
27+
Для лабораторной работы №4 я хочу выбрать что-то, что сможет действительно раскрыть преимущества Elixir (описанные выше) и OTP. Поэтому мне было бы интересно сделать относительно простую распределенную Key-Value базу данных, либо брокер сообщений c AMQP.
28+
29+
30+
| Что нужно выбрать | Что выбрал я |
31+
| --- | --- |
32+
| Язык программирования | [`Elixir`](https://elixir-lang.org/) |
33+
| Компилятор/интерпретатор | [`elixir-v1.17.2`](https://github.com/elixir-lang/elixir/releases/tag/v1.17.2) (поддерживает [`Erlang/OTP 27`](https://www.erlang.org/downloads/27)) |
34+
| Система сборки | [`mix`](https://hexdocs.pm/mix/Mix.html) |
35+
| Стиль кодирования | [`christopheradams/elixir_style_guide`](https://github.com/christopheradams/elixir_style_guide) |
36+
| Система автоматического форматирования | [`mix format`](https://hexdocs.pm/mix/Mix.Tasks.Format.html) |
37+
| Lint tools | [`credo`](https://github.com/rrrene/credo) + [`dialyxir`](https://github.com/jeremyjh/dialyxir) + [`ex_check`](https://github.com/karolsluszniak/ex_check) |
38+
| Инструменты тестирования | [`espec`](https://github.com/antonmi/espec), [`ex_machina`](https://github.com/beam-community/ex_machina), [`faker`](https://github.com/elixirs/faker) и [`mox`](https://github.com/dashbitco/mox) |
39+
40+
41+
Для изучения Elixir я планирую использовать книгу [Elixir In Action](./books/elixir-in-action-3rd-ed.pdf) (и, опицонально, [Designing Elixir Systems With OTP](./books/designing-elixir-systems-with-otp.rar)), [рекомендованную](https://elixir-lang.org/learning.html#books) на официальном сайте Elixir.
42+
43+
<img alt="elixir-and-elm" src="./.resources/elixir-and-elm.png" height="140">
1544

1645

1746
## Лицензия <a name="license"></a>

0 commit comments

Comments
 (0)