Основные языки
Основные языки
Сейчас давайте посмотрим, какие бывают языки программирования, не углубляясь в код - обзорно. Не каждому айтишнику нужно знать код, поэтому алгоритмы, терминал, фреймворки, структуры данных, асинхронность, понятие кода и все тонкости языков будет рассматривать отдельно. Чуть позднее мы отдельно рассмотрим конфигурационные форматы и основы базы данных.
Ниже вы получите общую картину, а в следующих статьях раздела - более детальный разбор по типам языков и практическим сценариям.
Для начала нужно понять, а какие бывают языки, что за непонятные названия и как они вообще работают? Нам не нужно сейчас углубляться в особенности объектно-ориентированного программирования, изучать функции и методы.
Важный момент - не ведитесь на популисткие заявления или рассуждения на тему популярности языков, не пытайтесь "выбрать язык". Старайтесь учить сначала базовое программирование, затем объектно-ориентированные языки. Если планируете развиваться в IT, лучше изучать и фронт, и бэк, поэтому одними языками программирования не обойтись, понадобятся языки запросов, разметки и стилей.
К примеру, язык Python могут называть простым из-за лаконичности, но под поверхностью лежит ряд тонкостей — неочевидное поведение изменяемых значений по умолчанию, динамическая типизация, ленивые вычисления в генераторах, особенности области видимости (LEGB-правило), механизм дескрипторов, особенности работы с GIL в многопоточности и т.д. Эти аспекты требуют от разработчика глубокого понимания того, как устроен интерпретатор CPython и как реализованы базовые конструкции языка.
А уровень знания языка определяется глубиной понимания его парадигм и особенностей реализации, а также, разумеется, опытом. На практике всё определяется опытом решений - чем джун хуже сеньора? Тем, что опытный уже сталкивался с проблемами, знает как их решить, возможно сохранил себе код с вариантом решения, или имеет даже рабочие проекты. Опыт формирует у разработчика репертуар паттернов поведения, он понимает, какие последствия это повлечёт — с точки зрения производительности, читаемости, сопровождаемости, масштабируемости и совместимости. Различие между джуном и сеньором проявляется не столько в технической грамотности, сколько в глубине осмысления компромиссов. Младший разработчик может корректно реализовать алгоритм, но не всегда предвидит, как его решение поведёт себя при изменении контекста — например, при росте объёма данных, в многопоточной среде или при интеграции с внешними системами. Сеньор же, сталкиваясь с похожей проблемой ранее, обладает ментальной моделью возможных исходов и готов выбрать решение, минимизирующее риски. Кроме того, опыт позволяет эффективно использовать инструментарий: от отладки и профилирования до управления зависимостями и конфигурацией. Накопленные фрагменты рабочего кода, шаблоны архитектурных решений, знание "подводных камней" конкретной экосистемы (например, особенностей работы с асинхронностью в Python или управлением памятью в Java) — всё это составляет практическую компетентность, которую невозможно воспроизвести только чтением документации.
Есть разные индикаторы популярности языков, к примеру TIOBE:
https://www.tiobe.com/tiobe-index/
Там можно заметить немалый такой процент популярности языков Си, C++, visual-basic, Delphi, и даже Fortran. Это старые языки, и у них процент ой какой большой. Поэтому, когда кто-то говорит о том, что язык устарел - можете показать пальцем на место "устаревших" языков в рейтинге.

Кроме того, не забывайте о факте перенасыщения рынка - если вы будете представителем популярного языка, значит вы будете представителем часто встречающихся конкурентов-специалистов, поэтому не нужно бежать за единственным Python, я бы порекомендовал Java, C#, Go, и JavaScript. Можно и C++, но там тоже специалистов довольно много, причём сильнейших. Узкие специалисты не нужны, нужны многопрофильные, которые смогут переключиться на новые технологии или вернуться к старым. Помните это.
Для долгосрочного развития рекомендуется овладеть как минимум одним языком из следующих групп:
- Системный/низкоуровневый: C, C++
- Бизнес-приложения/экосистема: Java, C#
- Веб и скриптовые задачи: JavaScript, TypeScript
- Современные языки с акцентом на производительность и простоту: Go, Rust
- Язык общего назначения с широким применением: Python
Единая таблица низкий / средний / высокий / ультравысокий уровень с примерами языков из энциклопедии — в статье Языки программирования. Теория абстракций — 4.02. Уровни абстракции.
Отдельно рассматриваются языки запросов (SQL), разметки (HTML, XML), стилей (CSS) и конфигурационные форматы (YAML, JSON), но они выходят за рамки классического понимания "языков программирования".
Но давайте сделаем краткий обзор языков, а их отдельные тонкости рассмотрим потом.
Как выбирать первый язык без перегруза
Первый язык задаёт траекторию обучения на 1–3 года. Поэтому полезно выбирать по целям и текущему уровню подготовки.
| Если ваша цель | Рациональный старт |
|---|---|
| Веб и интерфейсы | JavaScript (плюс HTML/CSS) |
| Универсальный вход в backend/автоматизацию/данные | Python |
| Корпоративный backend и enterprise | Java или C# |
| Мобильная разработка | Kotlin (Android) или Swift (iOS) |
Что обычно не берут первым языком без профильной цели
- Assembler
- C
- C++
- Rust
- HDL-языки
Почему так
- эти языки требуют хорошей базы по памяти, сборке и отладке
- новичку сложнее получать быстрый практический результат
- высокая сложность на старте часто снижает мотивацию
Расшифровка терминов
- HDL — Hardware Description Language, язык описания цифровой схемы
- порог входа — объём знаний, который нужен до первого рабочего результата
Полезные переходы
- Языки программирования и уровни абстракции
- Frontend и backend обзор
- Какой язык программирования выбрать
Краткий обзор языков
Мир языков программирования огромен и разнообразен. За более чем семь десятилетий истории вычислительной техники было создано несколько тысяч языков, каждый из которых решал свои задачи: от обучения школьников до управления ядерными реакторами, от построения веб-сайтов до создания видеоигр с реалистичной физикой. Языки различаются по уровню абстракции, парадигмам, среде исполнения, целевой платформе и философии разработки.
Ниже представлен обзор наиболее значимых языков и технологий, сгруппированных по категориям. Классификация помогает сориентироваться в многообразии инструментов и понять место каждого из них в общей картине IT.
Play ITЗагрузка интерактивного демо…
На странице "1" каждого раздела языка в энциклопедии тот же интерактивный блок помогает быстро вспомнить суть языка перед углублением в синтаксис и практику.
Образовательные и визуальные языки
Scratch — визуальный язык программирования, разработанный в Массачусетском технологическом институте (MIT). Код в Scratch собирается из графических блоков-кубиков по принципу конструктора Lego: блоки перетаскиваются на рабочее поле и соединяются между собой, формируя логические цепочки. Такой подход позволяет осваивать базовые концепции программирования — циклы, условия, переменные, события — без необходимости писать текстовый код. Scratch широко используется в школах и кружках для детей, а также применяется исследователями в области педагогики и когнитивистики.
Историческая база
Ряд языков заложил фундамент всей современной индустрии. Именно в них впервые появились концепции, без которых невозможно представить разработку сегодня.
Fortran (FORmula TRANslation) — первый в истории высокоуровневый язык программирования, созданный в 1957 году компанией IBM. Fortran разрабатывался для научных и инженерных расчётов, и до сих пор применяется в вычислительной физике, метеорологии и моделировании климата. Многие алгоритмы линейной алгебры и численных методов изначально были реализованы именно на Fortran.
Lisp (1958 год) — один из старейших языков высокого уровня, породивший целый ряд революционных концепций — динамическую типизацию, рекурсию, функции высшего порядка, сборку мусора, гомоиконичность (единство структуры кода и данных). Lisp повлиял на большинство современных функциональных и мультипарадигменных языков.
COBOL (1959 год) — язык бизнес-программирования, созданный для обработки финансовых и административных данных. На COBOL до сих пор работают более 40% мировых банковских систем, а общий объём существующего кода превышает 200 миллиардов строк. Язык отличается многословным синтаксисом, близким к английскому языку, и рассчитан на высокую надёжность при работе с большими объёмами транзакций.
Basic (1964 год) — язык, появившийся как доступная альтернатива сложному Fortran и предназначавшийся для обучения студентов. Basic дал миру простые команды PRINT, GOTO и FOR, и на полвека стал основой начального обучения программированию. В 1980-е годы BASIC поставлялся практически с каждым персональным компьютером.
Pascal (1970 год) — учебный язык, созданный Никлаусом Виртом для преподавания структурного программирования. Pascal отличается строгой типизацией и чётким синтаксисом, благодаря чему долгое время использовался в школах и вузах. На основе Pascal были созданы промышленные диалекты Delphi и Object Pascal.
APL (A Programming Language, 1966 год) — язык массивной обработки данных, использующий специальные математические символы. APL позволяет записывать сложные операции над массивами в одну строку кода и до сих пор применяется в финансах и актуарных расчётах.
Simula (1967 год) — первый язык с поддержкой объектно-ориентированного программирования. В Simula впервые появились классы, объекты, наследование и виртуальные методы, ставшие основой для C++, Java, C# и большинства современных языков.
Prolog (1972 год) — язык логического программирования, в котором программа представляет собой набор фактов и правил. Prolog применялся в экспертных системах, обработке естественного языка и доказательстве теорем.
Erlang (1986 год) — язык, созданный компанией Ericsson для телекоммуникационных систем. Erlang обеспечивает высочайшую отказоустойчивость, горячую замену кода и массивный параллелизм. На Erlang построены системы обмена сообщениями WhatsApp и RabbitMQ.
Ada (1983 год) — язык, разработанный по заказу Министерства обороны США для встроенных систем и критически важных приложений. Ada применяется в авионике, космических аппаратах, железнодорожной автоматике и медицинском оборудовании благодаря строжайшей проверке типов и контрактному программированию.
Классические императивные языки
C (Си) — базовый язык системного программирования, созданный Деннисом Ритчи в 1972 году в Bell Labs. На ядре Си работают операционные системы Windows, macOS, Linux, а также большинство встроенных систем, компиляторов и драйверов. Си предоставляет прямой доступ к памяти и аппаратным ресурсам, требует глубокого понимания архитектуры компьютера: структуры данных вроде хэш-таблиц или списков необходимо реализовывать вручную. Си стал основой для C++, C#, Objective-C, Java и многих других языков.
C++ — расширение языка Си, добавившее поддержку объектно-ориентированного программирования, шаблонов, исключений и стандартной библиотеки. C++ отличается огромной выразительной мощностью и применяется в игровых движках (Unreal Engine), высокопроизводительных вычислениях, системном ПО, браузерах и финансовых платформах. Ручная работа с указателями и отсутствие автоматической сборки мусора делают язык сложным в освоении, но обеспечивают максимальный контроль над ресурсами.
Скриптовые и веб-языки
Python — высокоуровневый язык общего назначения, созданный Гвидо ван Россумом в 1991 году. Python считается одной из лучших баз для начинающих разработчиков благодаря отсутствию фигурных скобок и точек с запятой: структура программы определяется отступами. Язык отличается огромной стандартной библиотекой и богатой экосистемой пакетов, применяется в веб-разработке, анализе данных, машинном обучении, автоматизации и научных вычислениях.
JavaScript — язык, изначально созданный для добавления интерактивности веб-страницам и ставший "королём веб-разработки". Синтаксис JavaScript отличается гибкостью и иногда непоследовательностью, однако любой веб-разработчик неизбежно сталкивается с JS в своей карьере: язык работает в браузере, на сервере (Node.js), в мобильных приложениях и даже во встроенных системах. Экосистема JavaScript включает десятки фреймворков, пакетных менеджеров и инструментов сборки.
TypeScript — надстройка над JavaScript, разработанная Microsoft и добавляющая статическую типизацию. TypeScript компилируется в обычный JavaScript и применяется в крупных проектах, где строгая проверка типов помогает выявлять ошибки на этапе разработки. TypeScript стал стандартом для современных фреймворков Angular, NestJS и множества коммерческих продуктов.
PHP — серверный скриптовый язык, появившийся в 1995 году и ставший одним из самых популярных инструментов веб-разработки. На PHP работают WordPress, Wikipedia, Facebook (в прошлом) и миллионы других сайтов. Современные версии PHP поддерживают строгую типизацию, ООП и асинхронность, а фреймворки Laravel и Symfony обеспечивают промышленное качество разработки.
Lua — лёгкий встраиваемый скриптовый язык, созданный в 1993 году в Бразилии. Lua отличается компактностью и высокой скоростью выполнения, благодаря чему стал стандартом для игровых движков — Roblox, World of Warcraft, Garry's Mod и многие другие игры используют Lua для скриптовой логики. Lua также применяется во встроенных системах и конфигурационных файлах (Nginx, Redis).
Ruby — динамический язык, созданный Юкихиро Мацумото в 1995 году с акцентом на удовольствие программиста от работы. Ruby обрёл широкую популярность благодаря веб-фреймворку Ruby on Rails, который задал стандарты для быстрой разработки веб-приложений и повлиял на архитектуру Django, Laravel и ASP.NET MVC.
Bash и PowerShell — языки сценариев для автоматизации задач в командной строке. Bash является стандартной оболочкой в Linux и macOS, PowerShell — в Windows и кроссплатформенной среде. Эти языки позволяют автоматизировать рутинные операции — работу с файлами, управление процессами, настройку систем, развёртывание приложений.
Языки разметки, стилей и запросов
HTML (HyperText Markup Language) — язык разметки гипертекста, описывающий структуру веб-страницы — заголовки, абзацы, таблицы, формы, изображения. HTML формально относится к языкам разметки, однако вместе с CSS и JavaScript составляет основу веба.
CSS (Cascading Style Sheets) — язык каскадных таблиц стилей, отвечающий за внешний вид HTML-документов — цвета, шрифты, расположение элементов, анимации, адаптивность. В связке с HTML и JavaScript эти технологии образуют Тьюринг-полную систему, способную реализовывать сложные алгоритмы прямо в браузере.
SQL (Structured Query Language) — язык структурированных запросов для работы с реляционными базами данных. SQL позволяет читать, изменять, добавлять и удалять данные, описывать структуру таблиц, создавать индексы и представления. Стандарт SQL поддерживается всеми основными СУБД — PostgreSQL, MySQL, Oracle, Microsoft SQL Server, SQLite.
Языки для статистики и науки
R — язык, созданный специально для статистических вычислений и визуализации данных. R обладает богатейшей библиотекой пакетов для анализа данных, машинного обучения и построения графиков (ggplot2), широко применяется в биоинформатике, экономике, социологии и медицинских исследованиях.
Julia — современный язык для научных вычислений, сочетающий скорость C с удобством Python. Julia разработана для высокопроизводительных численных расчётов и применяется в математическом моделировании, физике, машинном обучении и финансах.
JVM-платформа
Java — объектно-ориентированный язык, созданный в 1995 году компанией Sun Microsystems. Прорыв Java обеспечила виртуальная машина JVM: исходный код компилируется в байт-код, который выполняется на любой платформе с установленной JVM. Java стала стандартом корпоративной разработки, применяется в банковских системах, Android-приложениях, больших данных и микросервисной архитектуре.
Kotlin — современный язык, разработанный JetBrains и ставший официальным языком разработки под Android. Kotlin полностью совместим с Java, работает на JVM и отличается лаконичным синтаксисом, безопасной обработкой null-значений и поддержкой функционального программирования.
Scala — гибридный язык, сочетающий объектно-ориентированную и функциональную парадигмы. Scala работает на JVM и применяется в высоконагруженных системах (Twitter, LinkedIn), а также в обработке больших данных через Apache Spark.
Clojure — современный диалект Lisp для платформы JVM. Clojure предоставляет функциональную парадигму, неизменяемые структуры данных и отличную поддержку параллелизма.
Платформа .NET
C# (C-Sharp) — объектно-ориентированный язык, созданный Microsoft как ответ на Java. C# является основным языком платформы .NET, применяется в корпоративных приложениях, веб-сервисах (ASP.NET), десктопных программах и разработке игр на движке Unity. C# отличается строгой типизацией, богатой стандартной библиотекой и постоянным развитием (LINQ, async/await, pattern matching).
F# — функционально-ориентированный язык платформы .NET, развивающий идеи OCaml. F# применяется в финансовых моделях, обработке данных и сложных бизнес-логиках, где функциональный подход обеспечивает краткость и надёжность.
Мобильная разработка
Swift — язык, созданный Apple для разработки под iOS, macOS, watchOS и tvOS. Swift заменил Objective-C, предлагая современный синтаксис, безопасную работу с памятью и высокую производительность.
Dart — язык, разработанный Google и ставший основой фреймворка Flutter. Dart позволяет создавать кроссплатформенные приложения для мобильных устройств, веба и десктопа из единой кодовой базы. Углубление — раздел Dart, Flutter, галерея виджетов (Lab).
Системные языки нового поколения
Go (Golang) — язык, созданный в Google Робертом Гризмером, Робом Пайком и Кеном Томпсоном. Go отличается простым синтаксисом, быстрой компиляцией, встроенной поддержкой параллелизма (горутины) и автоматической сборкой мусора. Go стал стандартом для облачной инфраструктуры — Docker, Kubernetes, Prometheus и Terraform написаны именно на нём.
Rust — системный язык, созданный Mozilla и ставший одним из самых популярных среди низкоуровневых программистов. Rust заменяет классический сборщик мусора механизмом "проверки заимствований" (borrow checker), гарантирующим безопасность памяти на этапе компиляции без накладных расходов во время выполнения. Rust применяется в операционных системах, браузерах, блокчейне и высокопроизводительных сервисах.
V — молодой язык, примечательный автоматическим освобождением памяти на этапе компиляции (без сборщика мусора) и скоростью компиляции порядка миллиона строк в секунду. V предлагает синтаксис, близкий к Go.
Zig — современный аналог Си, упрощающий разработку за счёт отсутствия макросов, скрытых потоков управления и неявных преобразований типов. Zig поддерживает кросс-компиляцию C и C++ из коробки.
Nim — язык, сочетающий скорость Си с лаконичным синтаксисом, напоминающим Python. Nim компилируется в C, C++ или JavaScript и применяется там, где важна производительность без потери читаемости.
Carbon — экспериментальный язык, разрабатываемый Google как преемник C++ с полной двусторонней совместимостью. Carbon призван обеспечить плавную миграцию с C++ без необходимости переписывать весь существующий код.
Функциональные языки
Haskell — наиболее известный чисто функциональный язык с ленивыми вычислениями и строгой статической типизацией. Haskell ввёл в массовое использование концепции неизменяемости данных, монад и системы типов Хиндли-Милнера. Язык сложен в освоении, но оказывает огромное влияние на развитие других языков.
OCaml — функциональный язык с сильной системой типов, применяемый в компиляторах, статическом анализе кода и финансовых системах.
Elm — функциональный язык для фронтенд-разработки, компилирующийся в JavaScript. Elm гарантирует отсутствие ошибок времени выполнения и известен дружелюбными сообщениями компилятора.
Elixir — функциональный язык, работающий на виртуальной машине BEAM (Erlang). Elixir применяется для построения высоконагруженных распределённых систем и веб-приложений (фреймворк Phoenix).
Специализированные языки
Solidity — язык для написания смарт-контрактов в блокчейне Ethereum и совместимых сетях. Solidity позволяет создавать децентрализованные приложения (dApps) и токены.
Hack — диалект PHP, разработанный Facebook для обеспечения строгой типизации при огромных масштабах социальной сети. Hack работает на виртуальной машине HHVM.
Эзотерические языки
Эзотерические языки создаются ради эксперимента, шутки или проверки границ вычислимости. Они редко применяются в промышленной разработке, но демонстрируют богатство идей в теории языков программирования.
INTERCAL (1972) — пародия на Fortran, известная ключевым словом PLEASE: при недостаточной вежливости программиста код отказывается компилироваться.
Brainfuck — язык экстремального минимализма с восемью командами. Программы на Brainfuck крайне сложны для написания и чтения.
Malbolge — язык, названный в честь восьмого круга ада из "Божественной комедии" Данте. Написание программ на Malbolge считается практически невозможным без помощи автоматических генераторов.
Chef — язык, программы в котором оформлены как кулинарные рецепты. Результатом выполнения программы "Hello World" является рецепт суфле.
Shakespeare — язык, в котором программы выглядят как пьесы эпохи Возрождения. Переменные представляются персонажами, а операции — репликами диалога.
Piet — язык, код которого представляет собой абстрактное цветное изображение в стиле Пита Мондриана. Программа выполняется при движении указателя по цветовым областям.
LOLCODE — язык, основанный на интернет-мемах с котами. Программы начинаются с ключевого слова HAI и завершаются KTHXBYE.
EmojiCode — язык, полностью состоящий из эмодзи, где блоки кода выделяются символами арбузов, винограда и других изображений.
HolyC — диалект Си, созданный Терри Дэвисом для операционной системы TempleOS. HolyC применялся как язык системного скриптинга и прикладного программирования внутри ОС.
Низкоуровневое представление
Ассемблер — язык мнемонических команд, напрямую управляющих регистрами процессора. Каждая инструкция ассемблера соответствует одной машинной команде. Ассемблер применяется в системном программировании, драйверах, загрузчиках и в ситуациях, где критична максимальная производительность.
Машинный код — последовательность двоичных данных (нулей и единиц), непосредственно исполняемых процессором. Машинный код является самым низким уровнем представления программы.
Кремний и транзисторы — физическая основа вычислительной техники. Миллиарды транзисторов на микросхеме образуют логические элементы (И, НЕ, ИЛИ), из которых собираются регистры, сумматоры, блоки управления и памяти.
Квантовая электродинамика — физическая теория, описывающая взаимодействие фотонов и заряженных частиц. Принципы квантовой механики применяются при создании квантовых компьютеров, где кубиты заменяют классические биты и позволяют решать задачи, недоступные традиционным вычислительным системам.
Сводная таблица языков по категориям
| Категория | Языки |
|---|---|
| Образовательные | Scratch |
| Историческая база | Fortran, Lisp, COBOL, Basic, Pascal, APL, Simula, Prolog, Erlang, Ada |
| Классические императивные | C, C++ |
| Скриптовые и веб | Python, JavaScript, TypeScript, PHP, Lua, Ruby, Bash, PowerShell |
| Разметка и запросы | HTML, CSS, SQL |
| Статистика и наука | R, Julia |
| JVM-платформа | Java, Kotlin, Scala, Clojure |
| Платформа .NET | C#, F# |
| Мобильная разработка | Swift, Dart |
| Системные нового поколения | Go, Rust, V, Zig, Nim, Carbon |
| Функциональные | Haskell, OCaml, Elm, Elixir |
| Специализированные | Solidity, Hack |
| Эзотерические | INTERCAL, Brainfuck, Malbolge, Chef, Shakespeare, Piet, LOLCODE, EmojiCode, HolyC |
| Низкоуровневое представление | Ассемблер, машинный код, транзисторы, квантовая электродинамика |