В определенный момент времени ты понимаешь, что владеть единственным языком программирования становится недостаточно, и приходит осознание, что приша пора добавить что-то в свой репертуар.
Остановился на Elixir - функциональный язык для разработки параллельных систем на основе виртуальной машины Erlang
.
Подходит для того, чем сейчас занимаюсь, из всей функциональщины хоть сколько нибудь популярный (ладно, еще Scala
есть)
и это тема в целом интересна.
Нет, естественно, кроме моего первого языка – Python
, я встречался с многими другими,
многие из которых я могу читать / понимать / писать что-то простое (Julia
, F#
, C
, Java
, …). Но, по аналогии
с естественными языками – есть большая разница между “свободно владеть” и уметь “неловко спросить дорогу у прохожего”.
Новый язык открывает перспективу для новых технологий, концепций и техник программирования, которые дают больше инструментов для решения проблем. Однако для этого нужно крепкое понимание языка. Что я подразумеваю под этим?
- Решать несложные задачи с
leetcode
, не напрягаясь вспонминая синтаксис и не заглядывая всё время в гугл. - Уметь сделать простой проект, вроде змейки, http-сервера, и т.д.
- Понимать и применять концепции, специфичные для этого ЯП.
Всё это здорово, но как добиться всего этого? Для меня всегда было соблазнитально просто найти Udemy-курс (заблокирован для оплаты россиянам) или ролик на Youtube (скоро будет заблокирован :)), но это почти всегда работает плохо.
Большим вдохновением здесь мне послужил Зед Шоу и его книга Learn Python 3 the Hard Way
.
Во-первых, это именно учебник, а не просто справочный материал.
Во-вторых, её подход прямо противоположный большинству того, что я видел в онлайн курсах и Youtube-роликах:
там мы обычно читаем/смотрим “а вот так делается функция, повторяйте за мной”, выполняем (хорошо если) 1-2 упражнения и
едем дальше. После 4-х часового ролика голова остаётся почти такой же пустой, как и до, хорошо если запомнили что вообще есть в языке.
В Книгах Шоу много внимания уделено зубрёжке базовых вещей - зубрим основные ключевые слова, затем основные конструкции языка. Даже если понимания нет сейчас, оно придёт потом, зато мы можем сразу читать весь синтаксис. Если рассмотрели словари - повторяем пока руки сами не смогут написать словарь без напряжения мозга. Если изучаем функцию, нужно найти 5 способов сломать её, починить обратно и понять, почему так устроено.
- Синтаксис:
- Ключевые слова (хотя бы основные).
- Второй уровень:
- Как присвоить значение переменной?
- Как создать функцию?
- Как написать
if-else
конструкцию (а если она не используется в языке, что её заменяет)? - …
- Концепции, специфичные для языка:
- У
Elixir
это будут, например, атомы, что-то более сложное, вроде акторной модели лучше оставить на потом. - (Если кто-то впервые пробует функцональный язык, то тут здорово прибавится вещей, например, pattern-matching)
Все эти вещи легко можно найти в документации языка. И никакие курсы не нужны.
Затем, когда мы чувствуем себя чуть увереннее, можно начать решать задачки и сделать пару простых проектов для закрепления результата.
Еще хороший ролик на тему:
С таким планом я надеюсь не застрять в этот раз в освоении нового и уверенно использовать новые инструменты в работе.