Эликсир для программистов на Python

Android

Member
Регистрация
05.07.2019
Сообщения
86
Оценка реакций
26
36E72FED-0512-4809-9956-7BDD672EBDC8.jpeg

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

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

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

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

Программирование на Python было настолько хорошим, что стало скучно. Я пробовал некоторые языки здесь и там, но ничего не застряло. Мне пришлось ждать, пока Эликсир найдет что-то достаточно интересное.
Elixir - это функциональный язык высокого уровня, который компилируется в Erlang. Erlang существует с 1986 года, и это язык, разработанный с учетом конкретной области: телекоммуникации. Erlang оказался вполне способным и вне этого, и с современными стеками, опирающимися на множество мелких компонентов, Erlang стал интересным выбором. Эликсир сделал это тоже красиво.

В Elixir есть макросы, которые являются более жесткой формой метапрограммирования, но также и более мощными. Метапрограммирование Python может иметь большое значение, но есть структуры, которые можно упростить только с помощью макроса.

В Elixir есть Phoenix, одна из самых совершенных веб-фреймворков благодаря встроенным возможностям веб-сокетов. Библиотека live view, недавнее дополнение к экосистеме Elixir, позволяет использовать веб-сокеты и Elixir вместо AJAX, что позволяет писать веб-приложения без написания JavaScript. В Python есть Django, и хотя люди из Python могут быть более чем довольны им, я боюсь этого, так как это заставляет вас делать вещи в стиле Django и только так. Феникс, с другой стороны, остается в стороне.

Elixir имеет Plug (http-серверы) и Ecto (ORM). Они не являются частью стандартной библиотеки, но поддерживаются командой Elixir. Наличие стандартных библиотек для общих функций означает, что вам не нужно изучать 4 разных библиотеки для одной и той же работы. В некоторых случаях они могут не подходить для проекта, но разработчики были достаточно внимательны, чтобы сделать их настраиваемыми и пригодными для повторного использования. Чтобы быть немного более техническими, Plug и Ecto - это в основном наборы макросов и интерфейсов, поэтому они невероятно многократно используются. В Python только запросы достигли аналогичного статуса; для http-серверов существует множество фреймворков, каждый со своей реализацией. Существует как минимум четыре основных ORM (Django, SqlAlchemy, Peewee, Pony).

Эликсир компилируется в Эрланг. Erlang запускает собственную виртуальную машину, BEAM. BEAM перезапускается самостоятельно в случае ошибки, поддерживает распределение по узлам и параллелизм. Он имеет ETS и другой механизм для хранения данных в памяти, почти как встроенный Redis. Есть и другие функции, но это болевые точки Python при развертывании приложения.

Благодаря BEAM Elixir может быть развернут без докера, что устраняет уровень сложности из стека без каких-либо недостатков. Python без докера, это почти самоубийство.

Как функциональный язык, Elixir отлично справляется с обработкой данных. Если у вас есть кодовая база с множеством опций конфигурации, которые нужно обойти, Python легко загромождается, и нет элегантного способа справиться с этим. В Elixir есть оператор канала, который облегчает чтение цепочек функций. В Python вы не часто видите цепочки функций, но когда они есть, они уродливы, и вы ничего не можете с ними поделать.

У Elixir есть и другие возможности, но именно эти имеют реальное значение при сравнении с Python. В нем больше понятий и больше сложности, но также его сложнее освоить. Пока что это был единственный недостаток, который влияет на мою работу.
Надеюсь эта информация была вам полезна.