Сегодня хочу рассказать тебе о прекрасном функциональном языке для написания неубиваемых распределённых систем, а более конкретно вебни на бэке, больших soft-realtime систем, IoT говен и оперденей. Называется он Elixir, а работает он на виртуальной машине real humanBEAM, на которой ещё работает язык Erlang.
Немного истории
Эликсир это современный язык, построенный поверх языка Erlang с блекджеком и лисповыми макросами. У этих языков полный интероп в обе стороны, но при этом эликсир лишает вас этого удовольствия написания. Сам язык Erlang появился в компании Ericsson как язык для написания максимально отказоустойчивых телекоммуникационных систем. Именно из желания создать среду для написания максимально отказоустойчивых систем появились все основные фичи.
Основные фичи
⚹ Ахуенно приспособлен к разработке параллельных и конкуррентных программ. Эликсир способен запускать мильоны процессов-акторов, работающих асинхронно, с различными приоритетами и всем таким. Эти процессы не делят память и общаются через пересылку сообщений.
⚹ Ахуенно приспособлен к разработке распределённых систем. Все основные проблемы написания распределённых систем вроде сихнронизации монотонных часов, общения между машинами, поиска машин, heartbeat-ы, группы процессов, gossip-ы уже включены в язык. Любая достаточно сложная распределённая программа содержит заново написанную, неспецифицированную, глючную и медленную реализацию половины языка Erlang. (с)
⚹ Ахуенно приспособлен к разработке отказоустойчивых систем. Что делают кубы, когда падает сервис? Они перезапускают его. Эрланг делает то же самое, только не с сервисами, а с процессами, и это значит что неожиданное исключение в одной части функционала никак вообще никак не заденет другой функционал. Гоферы пытаются достичь того же с помощью микросервисов, а в Elixir такой функционал изкоробки.
⚹ Ахуенный тулинг. В отличие от эрланга с его хэдерами, makefile-ами и прочими пыльными приколами, эликсир за секунды позволяет создать проект, скомпилировать его, сконфигурировать его, собрать артефакт, скачать зависимости и всё такое в стандартах всех современных языков. Серьёзно, местный билдтул (mix) гораздо лучше чем забугорские cargo, npm, go и gem.
Нахуя
Ты хочешь нормально спать по ночам? Ты хочешь отказаться от ночных дежурств? Ты хочешь сэкономить на этих богомерзких девопсах и прочих сисянах? Ты устал дебажить очередной дата-рейс ебучих горутин?
Я хочу спать по ночам. Как вкатиться?
Чтобы успешно найти работу на эликсире, нужно уже иметь некоторый опыт разработки за деньги и понимание того какое же говно это ваше ойти. Желательно от одного года в вебе. Самый быстрый способ обучения это в то же время и самый эффективный способ, поэтому синтаксис и стандартная либа постигается вот тут https://elixirschool.com/ru
Более подробное описание внутренностей, хороших практик и хитростей стандартной либы описывается вот тут. Тут будет эрланг, но это не должно быть проблемой https://learnyousomeerlang.com/
Тому, кто ценит своё время, я советую начать писать какой-нибудь проектик параллельно с чтением книжек. Чтобы стать джуном на эликсире опытному бэкендеру нужно не больше месяца.
Рыночек
Средняя температура по больнице зарплата у эликсирщика традиционно больше чем у любого друогого языка как минимум в два раза, поэтому поменять голанг или питон на эликсир будет выгодно. Вакансии на рынке РФ существуют, искать можно на hhрю или в чатиках в телеге t.me/proelixir. Забугорных вакансий значительно больше и они охотно нанимают разработчиков с опытом. Самое важное качество при найме это не знание самого языка, а софт-скиллы и общее понимание веб-разработки как таковой, так что придётся социализироваться.
Здравствуйте! Я - Elixir разработчик. Это моя профессия. Так сложилось исторически.
Когда-то я разработал Erlang. Теперь это язык поддерживающий параллельные легковесные процессы и асинхронность. Теперь на нём удобно разрабатывать распределённые системы. Теперь на нём написан RabbitMQ.
Я разработал OTP. Этот фреймворк я применил про разработке огромного разнообразия высоконадёжного телекоммуникационного оборудования. OTP стала неотъемлемой частью экосистемы Erlang.
Я разработал BEAM и ERTS. Вместе они позволяют коду на Erlang эффективно распараллеливаться и надёжно выполняться на разных узлах распределённой системы.
Я обогатил Erlang метапрограммированием и полиморфизмом создав новый язык Elixir, который можно применять везде!
Я создал Phoenix. Фреймворк с отличной производительность и масштабированием объединяющей в себе всё необходимое для веб разработки.
Да, я - Elixir разработчик! И я устал извиняться за это... Я разработчик по праву рождения. Я проектирую и имплементирую. Бойтесь!
Да, реально. За доллары сильно проще чем не за доллары. На ~5к можно рассчитывать если миддл. Если сеньор, то как добазаришься, тут нет верхней планки, средняя это 7-10к где-то.
а как вы без типов живете? меня вот заебал фронтенд (из за конченных дебилов фронтендеров западных с которыми я не хочу работать в одной компании) хочу свитчнуться на какой-нибудь сложжный язык который любят программисты, хаскель учил но судя по всему вакансий по нему особо нет, на элексире вроде есть вакансси, скалу не хочу потому что там вроде как джаву надо знать, раст не хочу потому что мне кажется он душный какойто
Из того что я видел в вакансиях это бэкэнды, вебсайты (любые, от ecommerce до стриминга видео и приложений), телеком, сервисы, брокеры, ML, нейросети, IoT, алготрейдинг, боты в телеге
Да какие тут вопросы, ещё более мёртвая вещь чем Ruby и Rails И явно не для вкатунов, не представляю как на нём работу искать, очень редко на hh может мелькнуть вакансия
>>3351068 (OP) >Вакансии на рынке РФ существуют, искать можно на hhрю или в чатиках в телеге t.me/proelixir. Десяток вакансий за последний год. Да на дельфи работы больше.
>>3351068 (OP) Хочу сделать табличку, в которую клиенты компании будут ходить и смотреть данные из нашей БД. Чтобы была сортировка, фильтрация по столбцам, поиск, выбор колонок и т.д. С одной стороны хочется, чтобы писать кода надо было минимум, потому что люди, которые будут это в будущем поддерживать, скорее всего, далеки от современной веб-разработки. С другой хочется, чтобы всё было прозрачно, а не спрятано за кучей слоёв фреймворка, чтобы мне одному проще было в этом разобраться.
Собственно, я придумал только два варианта: 1) Elixir + Phoenix LiveView. Не уверен, насколько мало надо писать в итоге кода, но выглядит как то, что мне нужно. Проблема в том, что кроме меня в эликсире вряд ли кто-то захочет разбираться. 2) Go. Просто в тупую получать запрос и генерить HTML в ответ. Максимально прозрачно, но много кода. Зато если что, разрабов будет проще найти.
>>3406487 Это дохлый тред, если ты не понял. > Зато если что, разрабов будет проще найти. Я бы на твоём месте отталкивался от этого. Эликсир, кмк, язык отличный, но слишком нишевый, чтобы с ним можно было уверенно экспериментировать в профессиональной среде, потому как сотрудников ты действительно не найдёшь.
Забеги на elixirforum.com, там достаточно лояльное сообщество, спроси про свои беды. Тебя направят, помогут определиться.
>>3406487 >Проблема в том, что кроме меня в эликсире вряд ли кто-то захочет разбираться.
Эликсир проще чем руби и питон, там разбираться не нужно. Эликсир с нуля учится за две недели. В год можно изучить до 26 эликсиров.
> Хочу сделать табличку, в которую клиенты компании будут ходить и смотреть данные из нашей БД. Чтобы была сортировка, фильтрация по столбцам, поиск, выбор колонок и т.д.
Здравствуйте. Хочу для себя, обучения ради обучения, потыкать эликсир и переписать свою программу на питоне на Elixir. Изначально на питоне хотел сделать прототип, чтобы переписать потом, но так уж вышло, что сделал полноценную программу, но цели всё равно достигнуть хочу. Так вот, программа запускает отдельные процессы через multiprocessing, которые могут работать сутками, а то и больше, общение идёт через mutliprocessing.Pipe через мои "сообщения", если угодно, а именно датаклассы с параметрами разными. Хочу попробовать переписать на эликсир её. Подходит ли этот язык для таких "долго работающих" задач и удобное ли взаимодействие с этими процессами, отслеживание упало/не упало, обработкак ошибок, запросы по сети делать на сайты, доступ к БД, файлой системе?
Хочу сделать запуск процедур по расписанию точково (как scheduled сообщения в телеге) - как это сделать в эликсирчике с фениксом? реббит с scheduled tasks плагином не варик так как оно сносно работает только с датами в скором будущем + потенциально проебывать некоторые запуски не оч хорошо поэтому нужна запись в базу
>>3351068 (OP) Если оформлять вкат в эликсир здорового человека - по-хорошему нужно освоить эрланг для начала? 5 лет назад внезапно столкнулся на работе с эрлангом, рефакторил старый сервер, было сложно пердолиться, но парадигма языка запала в душу с тех пор. С элексиром я так понимаю карьерные перспективы становятся кратно выше.