За последние пару лет я заметил консолидацию в выборе языка программирования в коммерческих проектах и ​​проектах с открытым исходным кодом. Индустрия программного обеспечения постоянно меняется, но, похоже, существует постоянный интерес и инвестиции в несколько языков: JavaScript, Python, Java и Go — «Большая четверка».

Я начал видеть Большую четверку в нескольких местах. В Отчете JetBrains о состоянии экосистемы разработчиков за 2019 год Большая четверка указана в разделе Ключевые выводы. В отчете Hacker News Hiring Trends за декабрь 2019 года Большая четверка занимает первые четыре места в рейтинге 10 лучших языков программирования (включая TypeScript и JavaScript). В Опросе разработчиков StackOverflow за 2019 год три из Большой четверки находятся в верхней части списка наиболее востребованных языков, за исключением Java. GitHub также активно участвует в Большой четверке, что можно увидеть на GitHut и в анализе Петра Срочковского.

Почему именно эти языки? Я думаю, это связано с несколькими событиями, которые произошли за последнее десятилетие или около того.

  • JavaScript уже был вездесущим в качестве стандартного языка веб-платформы, но с выпуском Node.js (2009 г.) он распространился на дополнительные области: инструменты сборки, управление пакетами и разработка на стороне сервера. Node.js позволил создать веб-приложение полностью на JavaScript, используя только инструменты JavaScript. Esprima (2012 г.) и Babel (2015 г.) позволили анализировать и преобразовывать JavaScript из самого себя, открывая футуристические языковые функции и расширения.
  • Экосистема Python построена на базе существующих серверных и научных вычислений с помощью Flask (2010 г.) и scikit-learn (2010 г.), что позволяет быстро создавать прототипы приложений. Такие утилиты, как pip (2011 г.) и Requests (2011 г.), помогли упростить управление пакетами и HTTP-запросами. С выпуском TensorFlow (2015 г.), Keras (2015 г.) и PyTorch (2016 г.) Python быстро стал выбором по умолчанию для машинного обучения.
  • Java вошла в предыдущее десятилетие как скучный корпоративный язык. Потребовался выпуск Java 8 (2014 г.), чтобы возобновить интерес сообщества, и язык начал включать в себя столь необходимые улучшения, выпускаемые по регулярному графику. Java сохранила свою популярность, заимствуя функции у своих более лаконичных и выразительных конкурентов и получая такие инновации, как GraalVM. Хотя другие языки JVM (например, Scala, Kotlin, Clojure) пытались вытеснить его, они не добились большого успеха.
  • Go (2009 г.) изначально появился как смутно ориентированный на системы язык без очевидного применения. Потребовался Docker (2013), чтобы сделать Go жизнеспособным языком для инфраструктурного программного обеспечения. Terraform (2014) и Kubernetes (2015) помогли еще больше укрепить доверие к Go, и язык продолжал значительно улучшаться, сохраняя при этом стабильность.

Останется ли «Большая четверка» стабильной? Может быть, на какое-то время. Можно увидеть, как каждый из языков может быть вытеснен. JavaScript может исчезнуть, если популярность Node.js снизится и/или у браузеров появится привлекательный альтернативный язык. Python может исчезнуть, если не будет достаточно большого домена, в котором он может быть очень продуктивным (он уже потерял домен DevOps, чтобы перейти). Java еще долго останется с C# в качестве единственного реального соперника. Go может быть заменен языком, бросающим вызов его преимуществам — лаконичному синтаксису, богатой стандартной библиотеке и быстрой нативной компиляции — например, Kotlin, Rust или Swift.

Размышление о «Большой четверке» заставило меня задуматься о том, существует ли «малая четверка» — аналог коммерческой, ориентированной на тенденции и утилитарной природы «большой четверки». «Маленькая четверка» может и не привести к получению работы или славе в области открытого исходного кода, но она помогает развить более глубокое понимание программного обеспечения и делает программирование интересным. Для меня в «Маленькую четверку» входят C, Lisp, оболочка и подстановочный знак. C — это небольшой, но мощный мост между языком и машиной. Lisp также небольшой и мощный, соединяющий теорию и приложение. Оболочка необходима для работы с командной строкой, но она также полезна для набросков приложений (иногда быстрее, чем «настоящие» языки). Наконец, подстановочным знаком является любой интересный язык за пределами Большой четверки, такой как Erlang, Prolog, Red или Smalltalk.

«Большая четверка» — JavaScript, Python, Java и Go — сегодня доминирует в мире программного обеспечения. Каждый язык имеет зрелую экосистему, оптимизированную для конкретных областей, с минимальным дублированием между языками. Важно быть знакомым с каждым из «Большой четверки» — они постоянно возникают в реальной разработке программного обеспечения. Конечно, «большая четверка» может измениться по мере изменения тенденций, но ее нынешняя динамика делает изучение альтернатив невыгодным. Если «большая четверка» сохранится, разработка программного обеспечения может вступить в период стабильности и продуктивности, когда вопрос о том, какой язык использовать, больше не важен — вам всегда понадобится более одного.