TGViewer
Артур Думчев Артур Думчев @dumch_code · 1.08K subscribers
Post #124 1.45K
Об изучении новых языков программирования.

На заре карьеры наткнулся на книгу The Pragmatic Programmer и бросил ее после совета изучать по одному ЯП каждый год.

Бросил, чтобы выполнить рекомендацию! 2018-тый год, 3 года опыта, Java и Kotlin за пазухой. Нужно было наверстывать упущенное.

К настоящему моменту успел поработать с разной степенью погруженности со следующими языками: Scheme, Clojure, Dart, Python, Fennel, TypeScript, Go.
Хочу поделиться наблюдениями и рекомендациями.

1. Параллельно с языком надо учиться чему-то еще

- Так для меня
Scheme был языком введения в Computer Science (прочел и проработал SICP).
- Изучая
Clojure, научился делать backend, frontend и full-stack (очень удобно шарить кодовую базу).
- Dart был введением в кросплатформенные фреймворки. Боль при выходе новых версий дарта позволила понять, за что так ценят обратную совместимость в Java.
- С Fennel научился конфигурировать локальный сетап (
1300 коммитов в дотфайлах).
- Читая книжки по Go, реализовал на нём интерпретатор (
книга), компилятор (книга 2), и оркестратор (книга).

2. Сам язык должен чему-то учить.

- Scheme показал, что если ЯП
гомоиконичен, то на нём можно выразить всё, на что хватит воображения. Это намного сильнее, чем DSL в Kotlin. Что любопытно, грамматику самого Scheme можно описать на салфетке.
- Clojure закрепил многое, чему научил Scheme, а также познакомил с
STM, персистентными структурами данных, ad hoc и subtype полиморфизмом в одном (multimethods), ленивостью. Научился писать на ЯП, который навязывает иммутабельность и ссылочную прозрачность.
- Главная находка в лиспах (Clojure, Scheme, Fennel) — REPL. REPL — это не консоль, как в Python или JS, а способ модифицировать запущенную программу прямо из редактора кода (даже если программа запущена на удаленном сервере). Обратная связь от разработки снижается до миллисекунд. Не знаю языков, кроме Лиспов, которые имеют настолько же мощный REPL.
Отсутствие выбора в Go — это лучший выбор. Когда все проблемы решаются одним способом, то разработчики — вместо споров — решают задачи.

3. Крайности позволяют охватить весь спектр (
штанга Насима Талеба).

Идея в том, что изучение максимально высокоуровневого языка (Lisp или Haskell) и низкоуровневого (вроде C или Zig) позволяет покрыть всё посередине.
Пример: пишешь на языке с нестрогой (слабой) статической типизацией (С) — выбирай язык со сторогой динамической типизацией (Lisp или Haskell). Плаваешь в терминах — читай
Ликбез по типизации.
~8 лет назад я зашел со стороны высокоуровневых языков с динамической типизацией. После Scheme/Clojure по плану был C, но я сбился с пути. Сейчас взялся за Rust, чтобы навесить блинов на другой конец штанги. За новогодние праздники прорешал
rustlings и пробежался по rust lang book. Pattern matching, обработка ошибок, стектрейсы и мощь компилятора впечатлили. Осталось только что-то на расте написать.

Резюме: изучайте языки, которые того стоят
🙂
Pragprog The Pragmatic Programmer, 20th Anniversary Edition Andy and Dave wrote this seminal, classic book to help their clients create better software and rediscover the joy of coding. For over 20 years, the Pragmatic philosophy has spawned hundreds of our books, screencasts, audio books, and thousands of your careers…
  • 🔥 21
  • 🤯 10
  • 👾 5
  • 👍 3
  • 🤝 2
More from @dumch_code
  1. Sep 22, 2026Подход, когда модель переписывает PR, — это альтернатива Spec Driven Development (SDD). Ес…
  2. Sep 21, 2026там по качеству тоже все хорошо)
  3. Sep 21, 2026дело даже не в объеме
  4. Sep 21, 2026было - стало
  5. Sep 21, 2026Первый фидбек от коллеги на пост выше.
  6. Sep 17, 2026Новый подход к code review в эру агентов В далекие времена, где-то 1-2 месяца назад, когда…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →