Как развивались языки программирования
Программирование — самая перспективная профессия XXI века. Какие бывают языки программирования, для чего они используются и как развиваются?


Иллюстрация: vlada_maestro / Shutterstock
Автоматизация охватывает всё новые области, компьютеры всё больше входят в нашу жизнь. И это многообразие задач переходит в многообразие программ, которые написаны на языках программирования.
Наиболее важным, но в то же время наиболее незаметным свойством любого инструмента является его влияние на формирование привычек людей, которые имеют обыкновение им пользоваться.
Для чего нужны языки программирования
Язык программирования (ЯП) — формальный метод для записи компьютерных программ. Каждая такая программа — комбинация инструкций для вычислительной машины и данных, позволяющая выполнять расчёты и осуществлять управление.
Естественные языки используются для общения людей между собой, а языки программирования предназначены для управления компьютером, то есть для выражения человеческих идей в понятном для компьютера виде.
ЯП подчиняется той задаче, которая стоит перед компьютерной программой. Он зависит от оборудования, на котором выполняется алгоритм. Соответственно, практически для каждой задачи и каждого оборудования можно использовать наиболее подходящий ЯП. Вот почему языков программирования так много.

Фото: Andrew Dunn, CC-BY-SA-2.0
С момента описания первого универсального программируемого устройства в 1835 году — им считается разностная машина Чарльза Бэббиджа — человечество создало более 8000 языков программирования. Конкретно для этой машины первую программу написала в 1842 году леди Ада Лавлейс, её считают первым в мире программистом. К сожалению, саму машину не удалось полностью собрать при жизни создателя из-за несовершенства технологий и дотошности Бэббиджа. Машина считывает данные с перфокарт и использует паровой двигатель как источник энергии. Если бы механизм собрали по плану, то он стал бы первым в мире компьютером.

Изображение: рисунок 1832 года, автор неизвестен
Языки программирования вбирают в себя специфические черты конкретных сфер программирования — характерные структуры данных, типичные процессы и терминологию. Когда мы слышим о появлении нового языка программирования, может возникнуть мысль: ещё один язык? Почему нельзя сделать один-единственный, стандартный язык программирования?

Но нет, этого сделать нельзя. Наоборот, появление очередного языка — это свидетельство прогресса компьютерной науки. Значит, или компьютеру нашлось новое применение, или мы научились эффективнее выполнять старые задачи. Новый ЯП — доказательство достижений и новых возможностей самого мощного инструмента, который есть у человеческой цивилизации: компьютера.
С каждым новым языком процесс программирования становится более универсальным. Поэтому многообразие языков — это очень хорошо. Оно показывает прогресс и позволяет двигаться дальше.
Какие бывают языки программирования
Уже в начале XIX века появились первые «программируемые» механизмы: ткацкие станки, музыкальные шкатулки и т. д. Каждый из них программировался своим собственным набором инструкций. Так появились предметно-ориентированные языки программирования, которые в огромном количестве создаются до сих пор по мере появления новых устройств и аппаратного обеспечения.
Кроме предметно-ориентированных, существуют учебные языки программирования, которые созданы специально для обучения начинающих программистов. Например, из одного такого учебного языка ABC вырос популярный сейчас язык программирования Python. Поэтому он такой простой и понятный.
Текст программы для отображения Hello, world на языке Python
>>> print ("Hello, world")
Существуют эзотерические языки — своеобразные произведения искусства, которые невозможно применять на реальных задачах. Например, язык Malbolge специально создан для максимального затруднения написания программ.
Текст программы для отображения Hello, world на языке Malbolge
(=<`:9876Z4321UT.-Q+*)M'&%$H"!~}|Bzy?=|{z]KwZY44Eq0/{mlk**hKs_dG5[m_BA{?-Y;;Vb'rR5431M}/.zHGwEDCBA@98\6543W10/.R,+O<
Кроме упомянутых учебных, эзотерических и предметно-ориентированных языков, есть ещё визуальные языки, где программирование состоит в манипулировании графическими элементами. В основном такие языки используются для создания программ с графическим интерфейсом. Есть также специализированные языки СУБД, языки для промышленной автоматизации и другие ЯП относительно узкого назначения.
Выделяют такие подходы к программированию (на профессиональном языке они называются парадигмами): аспектно-ориентированные, структурные, процедурные, логические, объектно-ориентированные, функциональные, мультипарадигмальные языки.
Общепринятой классификации не существует, но исторически принято разделять ЯП на высокоуровневые и низкоуровневые.
Языки высокого уровня
Языки программирования высокого уровня освобождают программистов от необходимости детализировать программы до слишком мелких машинных команд и знать особенности конкретных вычислительных устройств.
Писать программы на них значительно проще. Если задать вопрос, какой язык программирования легче, то следует смотреть именно в сторону высокоуровневых учебных языков. Они понятны человеку практически без дополнительных пояснений. А вот чтобы компьютер понял инструкции, написанные на высокоуровневом языке, специальная программа-компилятор переводит их в язык машинных инструкций, то есть на низкоуровневый язык.
Машинно-ориентированные языки
Компиляторы никогда не станут такими же умными, как люди, они не могут читать мысли программиста. Поэтому для написания максимально эффективной программы, которая идеально реализует замысел программиста, придётся писать в машинных кодах.
Дональд Кнут в своей классической книге «Искусство программирования» приводил такой довод в пользу низкоуровневых языков: «Например, некоторые комбинаторные вычисления нужно повторять триллионы раз, и мы сэкономим приблизительно 11,6 дня работы за счёт того, что сократим время вычислений во внутреннем цикле всего на одну микросекунду». Даже один сэкономленный такт вычислений даёт огромную экономию в крупном масштабе!
Если вам попалась невероятно эффективная и быстрая программа — она наверняка написана с применением низкоуровневого языка.
Популярность языков
Какие основные языки программирования — определить непросто. Существуют различные метрики для измерения популярности языков, каждая из которых отражает определённый аспект популярности языка:
- Подсчёт числа вакансий с упоминанием этого языка.
- Количество проданных книг (учебников или справочников).
- Оценка количества строк кода, написанных на языке (например, по статистике хостингов, где публикуются тексты программ).
- Подсчёт упоминаний языка в запросах поисковиков.
Например, журнал IEEE Spectrum попытался составить самую объективную картину популярности языков программирования по 12 метрикам из 10 источников. Вот как выглядела в 2017 году таблица, отранжированная по этим параметрам:

Скриншот: IEEE Spectrum
По активности разработчиков на GitHub в 2017 году рейтинг выглядит так:

Источник: GitHub
По каждой метрике может лидировать какой-то один язык, а по другой метрике — другой. Например, Cobol до сих пор доминирует в корпоративных дата-центрах, на нём написано много программ, хотя новых практически не пишут. Вариации языка C используются в системном программировании, а язык Java популярен для написания приложений под Android. Прочие языки регулярно используются для создания других разнообразных приложений.
За каким языком программирования будущее — покажет история, но исследователи отмечают, что по совокупности метрик в последнее время растёт популярность Python, который сейчас вышел на 1-е место. Поднялись по рейтингу C# и Swift. По количеству вакансий для программистов C значительно опережает Python. В веб-программировании популярны JavaScript и PHP.
Важно!
Если ваша главная цель — найти высокооплачиваемую работу, то смотрите на соответствующие метрики и выбирайте правильный подход к изучению тех языков программирования, которые актуальны в конкретной области.
Автоматизация охватывает всё новые области, компьютеры все больше входят в нашу жизнь. И это многообразие задач переходит в многообразие программ, которые написаны на языках программирования.
Наиболее важным, но в то же время наиболее незаметным свойством любого инструмента является его влияние на формирование привычек людей, которые имеют обыкновение им пользоваться.
Для чего нужны языки программирования
Язык программирования (ЯП) — формальный метод для записи компьютерных программ. Каждая такая программа — комбинация инструкций для вычислительной машины и данных, позволяющая выполнять расчёты и осуществлять управление.
Естественные языки используются для общения людей между собой, а языки программирования предназначены для управления компьютером, то есть для выражения человеческих идей в понятном для компьютера виде.
ЯП подчиняется той задаче, которая стоит перед компьютерной программой. Он зависит от оборудования, на котором выполняется алгоритм. Соответственно, практически для каждой задачи и каждого оборудования можно использовать наиболее подходящий ЯП. Вот почему языков программирования так много.

Фото: Andrew Dunn, CC-BY-SA-2.0
С момента описания первого универсального программируемого устройства в 1835 году — им считается разностная машина Чарльза Бэббиджа — человечество создало более 8000 языков программирования. Конкретно для этой машины первую программу написала в 1842 году леди Ада Лавлейс, ее считают первым в мире программистом. К сожалению, саму машину не удалось полностью собрать при жизни создателя из-за несовершенства технологий и дотошности Бэббиджа. Машина считывает данные с перфокарт и использует паровой двигатель как источник энергии. Если бы механизм собрали по плану, то он стал бы первым в мире компьютером.

Языки программирования вбирают в себя специфические черты конкретных сфер программирования — характерные структуры данных, типичные процессы и терминологию. Когда мы слышим о появлении нового языка программирования, может возникнуть мысль: еще один язык? Почему нельзя сделать один-единственный, стандартный язык программирования?

Но нет, этого сделать нельзя. Наоборот, появление очередного языка — это свидетельство прогресса компьютерной науки. Значит, или компьютеру нашлось новое применение, или мы научились эффективнее выполнять старые задачи. Новый ЯП — доказательство достижений и новых возможностей самого мощного инструмента, который есть у человеческой цивилизации: компьютера.
С каждым новым языком процесс программирования становится более универсальным. Поэтому многообразие языков — это очень хорошо. Оно показывает прогресс и позволяет двигаться дальше.
Какие бывают языки программирования
Уже в начале XIX века появились первые «программируемые» механизмы: ткацкие станки, музыкальные шкатулки и т.д. Каждый из них программировался своим собственным набором инструкций. Так появились предметно-ориентированные языки программирования, которые в огромном количестве создаются до сих пор по мере появления новых устройств и аппаратного обеспечения.
Кроме предметно-ориентированных, существуют учебные языки программирования, которые созданы специально для обучения начинающих программистов. Например, из одного такого учебного языка ABC вырос популярный сейчас язык программирования Python. Поэтому он такой простой и понятный.
Текст программы для отображения «Hello, world» на языке Python
>>> print ("Hello, world")
Существуют эзотерические языки — своеобразные произведения искусства, которые невозможно применять на реальных задачах. Например, язык Malbolge специально создан для максимального затруднения написания программ.
Текст программы для отображения «Hello, world» на языке Malbolge
(=<`:9876Z4321UT.-Q+*)M'&%$H"!~}|Bzy?=|{z]KwZY44Eq0/{mlk**hKs_dG5[m_BA{?-Y;;Vb'rR5431M}/.zHGwEDCBA@98\6543W10/.R,+O<
Кроме упомянутых учебных, эзотерических и предметно-ориентированных языков, есть еще визуальные языки, где программирование состоит в манипулировании графическими элементами. В основном такие языки используются для создания программ с графическим интерфейсом. Есть еще специализированные языки СУБД, языки для промышленной автоматизации и другие ЯП относительно узкого назначения.
Выделяют такие подходы к программированию (на профессиональном языке они называются парадигмами): аспектно-ориентированные, структурные, процедурные, логические, объектно-ориентированные, функциональные, мультипарадигмальные языки.
Общепринятой классификации не существует, но исторически принято разделять ЯП на высокоуровневые и низкоуровневые языки.
Языки высокого уровня
Языки программирования высокого уровня освобождают программистов от необходимости детализировать программы до слишком мелких машинных команд и знать особенности конкретных вычислительных устройств.
Писать программы на них значительно проще. Если задать вопрос, какой язык программирования легче, то следует смотреть именно в сторону высокоуровневых учебных языков. Они понятны человеку практически без дополнительных пояснений. А вот чтобы компьютер понял инструкции, написанные на высокоуровневом языке, специальная программа-компилятор переводит их в язык машинных инструкций, то есть на низкоуровневый язык.
Машинно-ориентированные языки
Компиляторы никогда не станут такими же умными, как люди, они не могут читать мысли программиста. Поэтому для написания максимально эффективной программы, которая идеально реализует замысел программиста, придется писать в машинных кодах.
Дональд Кнут в своей классической книге «Искусство программирования» приводил такой довод в пользу низкоуровневых языков: «Например, некоторые комбинаторные вычисления нужно повторять триллионы раз, и мы сэкономим приблизительно 11,6 дней работы за счет того, что сократим время вычислений во внутреннем цикле всего на одну микросекунду». Даже один сэкономленный такт вычислений дает огромную экономию в крупном масштабе!
Если вам попалась невероятно эффективная и быстрая программа — она наверняка написана с применением низкоуровневого языка.
Популярность языков
Какие основные языки программирования — определить непросто. Существуют различные метрики для измерения популярности языков, каждая из которых отражает определенный аспект популярности языка:
- Подсчет числа вакансий с упоминанием этого языка.
- Количество проданных книг (учебников или справочников).
- Оценка количества строк кода, написанных на языке (например, по статистике хостингов, где публикуются тексты программ).
- Подсчет упоминаний языка в запросах поисковиков.
Например, журнал IEEE Spectrum попытался составить самый объективную картину популярности языков программирования по 12 метрикам из 10 источников. Вот как выглядела в 2017 году таблица, отранжированная по этим параметрам:

По активности разработчиков на GitHub в 2017 году рейтинг выглядит так:

По каждой метрике может лидировать какой-то один язык, а по другой метрике — другой. Например, Cobol до сих пор доминирует в корпоративных дата-центрах, на нем написано много программ, хотя новых практически не пишут. Вариации языка C используются в системном программировании, а язык Java популярен для написания приложений под Android. Прочие языки регулярно используются для создания других разнообразных приложений.
За каким языком программирования будущее — покажет история, но исследователи отмечают, что по совокупности метрик в последнее время растет популярность Python, который сейчас вышел на 1-е место. Поднялись по рейтингу C# и Swift. По количеству вакансий для программистов C значительно опережает Python. В веб-программировании популярны JavaScript и PHP.
Важно!
Если ваша главная цель — найти высокооплачиваемую работу, то смотрите на соответствующие метрики и выбирайте правильный подход к изучению тех языков программирования, которые актуальны в конкретной области.