7 марта 2026
На первый взгляд может быть непонятно, зачем рассматривать историю развития языков программирования? Ну, были когда-то старые языки и пропали, кому какая разница? Если взглянуть на рейтинг их популярности, (например, TIOBE), окажется, что среди активно развивающихся языков вроде Python, Java и C# довольно много «старых». Например, C++ появился в 1980-ом. C в 1972-ом, COBOL в 1959-ом, Fortran в 1957-ом. Но, несмотря на «возраст», они прочно удерживают свои ниши до сих пор. Пережив языки, которые проектировались для продвижения более «правильного» дизайна, но в итоге оказались забытыми.
Давайте посмотрим на эволюцию языков программирования, чтобы найти основную причину, побуждавшую их авторов раз за разом изобретать очередной синтаксис.
В 1950 году появился первый компьютер, способный выполнять команды. Правда понимать он мог только единицы и нули. Программисту ничего не оставалось кроме как писать команды в двоичном виде. Причём эти команды у каждого компьютера были свои.
Например, вот так выглядел машинный код для сложения двух чисел:
Естественно программисты быстро поняли, что если каждый день писать только числа, то можно потратить всю жизнь и ничего не добиться. Тем более, что отлаживать и переносить такие программы - адский труд. Поэтому довольно быстро пришла идея - придумать каждой числовой команде понятное человеку текстовое название.
Так появился ассемблер – первый язык программирования низкого уровня. А вместе с ним компилятор, чтобы из текстовых команд, понятных человеку, переводить обратно в двоичное представление понятное компьютеру.
Вот пример сравнения двух чисел на ассемблере, аналог конструкции if-else:
Согласитесь, программа стала более читаемой?
Лично я сталкивался с ассемблером только во время учёбы в универе. Тогда меня поразило, что, несмотря на его близость к «железу», базовые принципы понять довольно легко и уже на первом лабораторном занятии написать свой «Hello, World!».
В 1964 году преподавателями Дартмутского Колледжа был придуман высокоуровневый язык для начинающих программистов под названием Basic. Этот язык является родоначальником целого семейства, однако на начальном этапе не поддерживал даже процедуры. Вот так выглядела минимальная программа на Basic:
Тут с читаемостью уже всё хорошо, а if-else вообще можно написать в одну строку.
Интересный факт. Каждую строку исходного кода нужно было нумеровать вручную. Для редактирования строки её нужно было набрать заново в терминале с указанием номера. Строки было принято нумеровать не подряд, а с шагом 10, чтобы при необходимости можно было вставить новую строку между ними.
Всё, что было до этого, предполагало написание программ единым потоком мыслей без какой-либо структуры. Идея о том, что программу можно разделить на относительно независимые участки кода и затем их переиспользовать, получила название процедурного программирования.
В 1957 году появился первый язык высокого уровня Fortran. В то время основными пользователями компьютеров были учёные, поэтому язык создавался под их потребности, т.е. научные расчёты. Fortran – это сокращение от Formula Translator. Основной структурной единицей в нём являются процедуры, поэтому язык называется процедурным.
Fortran был революцией для своего времени — впервые программисты могли писать почти как на английском, не думая о машинном коде. При этом он жёстко стандартизован, благодаря чему легко переносится на различные платформы. Язык до сих пор используется в научных расчётах благодаря оптимизации и большому коду наследия. Последний стандарт языка вышел в ноябре 2023 года, т.е. совсем недавно.
В 1959 году был разработан COBOL (common business-oriented language) на основе более раннего языка FLOW-MATIC, созданного под руководством Грейс Хоппер. Кстати, за это она впоследствии получила звание контр-адмирала флота США и почётный титул «бабушки Кобола».
Этот язык был максимально приближен к естественному языку и предназначался для обработки бизнес-данных. Его плюсом была хорошая читаемость и самодокументируемость, а минусом - многословность.
Кстати, на момент написания статьи (март 2025), COBOL в рейтинге популярности занимает 20-е место. Он до сих пор используется в финансовых системах (особенно на мэйнфреймах IBM) и обрабатывает значительную часть банковских транзакций в мире. Всего на нём написано порядка 220 миллиардов строк кода! Последний стандарт также вышел в 2023 году.
Параллельно с COBOL в 1958-1960 годах появился ALGOL (ALGOrithmic Language) для описания алгоритмов в научных и инженерных задачах. Стал первым языком с блочной структурой, вложенными операторами, формализованной грамматикой. Первым стандартом является ALGOL 60. Язык был популярен в Европе, в том числе в СССР, в качестве языка как практического программирования, так и языка публикации алгоритмов в научных работах. Однако в США и Канаде не смог превзойти распространённый там Fortran.
Вот так выглядит сложение двух чисел:
Синтаксис с характерным обрамлением блоков с помощью begin и end впоследствии оказал заметное влияние на целое семейство Pascal-подобных языков.
Крайне важным свойством Алгола стала возможность организации рекурсивных процедур. До этого момента у промышленных языков, в том числе у Фортрана и Кобола, возможность рекурсивного вызова отсутствовала. Однако были и недостатки: язык не предусматривал какой-либо стандартный ввод-вывод, из-за чего разные реализации языка были несовместимы между собой.
На основе Algol 60 швейцарский учёный Никлаус Вирт создал Pascal. Это процедурный язык со статической типизацией, созданный специально для обучения, воспитал не одно поколение программистов.
Вот так выглядит программа для сложения двух чисел на Pascal.
Обратите внимание на структурированность и отделение объявления переменных от логики самого метода.
В настоящий момент Pascal практически не используется для обучения программистов - его нишу занял Python.
В 1972 году Деннис Ритчи разработал язык Си. Это процедурный язык со статической типизацией. Конструкции языка Си изначально разрабатывались таким образом, чтобы они легко компилировались в машинные инструкции, благодаря чему нашёл применение в тех нишах, где раньше использовался только ассемблер.
Синтаксис языка Си оказал значительное влияние на дальнейшее развитие языков программирования, такие как C++, Java, C# и т.д. Согласитесь, это уже довольно близко к тому, с чем большинство из нас имеет дело каждый день. Язык C в 2026 году занимает 2-ю строчку в рейтинге TIOBE, хотя языку уже более 50 лет!
Попытка объединять не просто отдельные инструкции, а целые процедуры, привела к дальнейшему развитию процедурного программирования, которое со временем эволюционировало в объектно-ориентированное. Этот подход дал нам три базовых принципа:
В 1967 году норвежские программисты Кристен Нюгор и Оле-Йохан Даль создали язык Simula, который на тот момент не считался ООП-языком (да и концепция эта ещё не была до конца сформирована). Однако он имел при этом основные синтаксические конструкции, присущие современным объектно-ориентированным языкам. Simula можно считать объектным расширением Algol 60.
Вот так на Simula можно описать класс, представляющий информацию о человеке.
Он содержит поля с именем и возрастом, а также метод инициализации (конструктор), set-метод и метод для вывода на экран.
Считается, что язык в значительной степени опередил время, однако программисты 1960-х годов оказались не готовы воспринять ценности языка. В итоге Simula не выдержал конкуренции с другими языками программирования. Прохладному отношению к языку способствовало и то обстоятельство, что его реализация была весьма неэффективна, в том числе из-за сборки мусора.
В 1980 году появился Smalltalk – первый объектно-ориентированный язык. Его парадигмой является принцип «всё есть объект». Взаимодействие между объектами происходило пересылкой сообщений. Также в Smalltalk использовалась сборка мусора – автоматическое удаление ненужных объектов. Smalltalk дал миру ООП в чистом виде: классы, объекты, сообщения, наследование.
В Smalltalk все действия производятся путём посылки сообщений объектам.
В данном случае сообщение - это show: 'Hello, world!', и оно посылается объекту Transcript. Обратите внимание на отсутствие привычных нам скобочек и точки перед show.
1983 год – датский программист Бьёрн Страуструп, которому не хватало выразительности языка Си, создал язык С++. При этом он вдохновлялся концепциями Simula. И, подобно тому, как Simula считается «Algol c классами», своё расширение Бьёрн назвал назвал «Си с классами». Этот язык был совместим с Си, сохранял все его преимущества, а также позволял использовать объекто-ориентированное программирование.
Вот так выглядит класс Person на C++, аналогичный примеру для Simula:
Несмотря на необходимость ручного управления памятью, большого количества legacy-конструкций и неочевидного поведения, C++ в 2026 году занимает третью строчку в рейтинге TIOBE. Его ниша - это разработка низкоуровневых программ и драйверов, а также высоконагруженных и производительных приложений (игровые и поисковые движки, операционные системы, высокочастотная торговля на бирже, автопилоты).
С появлением Windows возникла необходимость в быстрой разработке типовых программ с графическим интерфейсом (GUI). Здесь как никогда оказались востребованы объектно-ориентированное программирование и технология drag & drop.
Первым языком для создания формочек, который был разработан в недрах Microsoft в 1991 году, был Visual Basic. По сравнению с классическим Basic из 60-х, в него добавили поддержку процедур. Обработчик нажатия кнопки на Visual Basic выглядел так:
Этот язык имел низкий порог входа, при этом позволял создавать полноценные приложения под Windows из готовых компонентов и имел хорошую интеграцию с ней.
Дальнейшее развитие Pascal-семейства привело к тому, что в 1995 году датский инженер-программист Андерс Хейлсберг разработал объектно-ориентированный вариант Pascal под названием Delphi. Его нишей также была разработка графических приложений под Windows. Во многом этому способствовала среда разработка, позволяющая за 5 минут методом drag & drop накидать типовое «оконное» приложение.
Вот так выглядит обработчик события при нажатии на кнопку:
В начале нулевых Delphi безраздельно царствовал в нише бухгалтерии, документооборота и CRM-систем.
Глядя на успех Delphi и Java, под руководством всё того же Хейлсберга в Microsoft создают платформу .NET и C#. Новый язык учитывает все проблемы своих предшественников и берёт всё лучшее, что было в индустрии на тот момент (лямбды, свойства, именованные параметры, делегаты и т.п.)
В начале 2010-х мне пришлось пересесть с C# на Java 6, где не было лямбд, и это выглядело как шаг назад...
C# более универсален, чем Visual Basic, поэтому к настоящему моменту практически полностью его вытеснил в нише разработки приложений под Windows. Сейчас C# занимает пятую строку в рейтинге TIOBE.
Однако vendor lock в виде Microsoft ограничивает области применения C#, особенно в России.
1991 год – голландский программист Гвидо ван Россум создаёт язык Python с динамической типизацией, ориентированный на повышение скорости написания программы и её читаемости. Язык не компилируется в машинный код, а интерпретируется, т.е. выполняются непосредственно текстовые команды языка.
Особенностью языка является то, что блоки кода не обрамляются фигурными скобками или ключевым словами. Для этого используются отступы. Что позволяет не перегружать синтаксис и повышает читаемость кода.
В настоящее время Python наиболее популярен благодаря низкому порогу входа и обилию готовых библиотек, позволяющих решать любые прикладные задачи. Именно этот язык стал для многих отправной точкой в мире программирования. Python сейчас является лидером по популярности в рейтинге TIOBE.
В 1995 году для программирования бытовых электронных устройств, таких как стиральная машина или микроволновка, появился объектно-ориентированный си-подобный язык Java. Изначально он разрабатывался Джеймсом Гослингом и назван в честь марки кофе, которая, в свою очередь, названа в честь острова Ява. Его девизом становится «write once, run anywhere» – «напиши один раз – запускай где угодно».
Это достигается за счёт использования виртуальной машины Java (сокращённо JVM). Компиляция исходного кода на Java заключается в том, что код компилируется в промежуточный байт-код, понятный виртуальной машине. Это аналог ассемблера для неё. Затем, непосредственно во время выполнения, байт-код комплируется в машинный код, учитывая специфику конкретного окружения (just in-time, JIT - компиляция). Таким образом, Java обладает преимуществами одновременно и компилируемых, и интерпретируемых языков.
Другой особенностью языка является автоматический сборщик мусора (garbage collector), который сам удаляет созданные объекты из памяти, если они больше не требуются. В отличие от C++, где для каждого объекта требовалось очищать память вручную.
В настоящее время Java используется в основном в сегменте корпоративных приложений на серверной стороне. Его строгая типизация облегчает поддержку и рефакторинг кода в больших приложениях.
В 2026 году Java занимает четвёртое место в рейтинге TIOBE.
Одновременно с Java в 1995 году появился Javascript, который не имеет ничего общего с Java кроме названия. Их часто путают, однако Javascript – интерпретируемый язык с динамической типизацией. Его средой исполнения является браузер пользователя, в отличие от Java, которая работает на сервере.
Популярность Java привела к появлению целого семейства языков, которые совместимы с ней на уровне байт-кода и могут выполняться на той же Java-машине.
2003 год - язык Groovy, который совместим с Java, но позволяет использовать динамическую типизацию. Благодаря дополнительным синтаксическим конструкциям код получается компактнее. Его ниша - написание небольших скриптов, подобно Python.
2004 год - язык Scala, в котором сделан упор на функциональное программирование. Код, который пишется на Scala, является довольно гибким и выразительным, однако, может быть сложен для понимания и дальнейшей поддержки.
В 2011 году компания JetBrains выпустила Kotlin, который учитывает весь накопленный опыт семейства JVM-языков. При этом код на Kotlin в целом выглядит компактнее, чем код на Java и проще, чем код на Scala. Интересно, что Google выбрала его в качестве основного языка для разработки под Android. В настоящее время можно констатировать, что Kotlin вытесняет как Groovy в нише написания скриптов, так и Scala в части функционального программирования.
Мы рассмотрели краткую историю развития языков программирования от ассемблера до Java и Kotlin. Её можно описать как стремление решать задачи быстрее и писать меньше кода. И это правильный подход, ведь чем меньше кода - тем меньше вероятность допустить в нём ошибку.
Однако за последний год AI-инструменты прочно вошли в повседневную практику и теперь мы всё меньше кода пишем вручную и всё больше ревьюим то, что пишет AI. И тут два варианта. Либо развитие языков значительно замедлится, т.к. AI быстрее осваивает любые существующие языки и не ленится писать однотипные конструкции. Либо же, наоборот, появится тот самый универсальный язык, оптимизированный под написание кода с помощью LLM (например, с минимально возможным расходом токенов) и при этом сохраняющий читаемость.
Kotlin, Java, Spring, Spring Boot, Spring Data, Spring AI, SQL, PostgreSQL, Oracle, H2, Linux, Hibernate, Collections, Stream API, многопоточность, чат-боты, нейросети, файлы, devops, Docker, Nginx, Apache, maven, gradle, JUnit, YouTube, руководство, ООП, алгоритмы, головоломки, rest, GraphQL, Excel, XML, json, yaml.