Меню

Как развивались языки программирования

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

Автоматизация охватывает всё новые области, компьютеры все больше входят в нашу жизнь. И это многообразие задач переходит в многообразие программ, которые написаны на языках программирования.

Наиболее важным, но в то же время наиболее незаметным свойством любого инструмента является его влияние на формирование привычек людей, которые имеют обыкновение им пользоваться.

Когда этот язык — язык программирования, его влияние, независимо от нашего желания, сказывается на нашем способе мышления.

Эдсгер Дейкстра

Нидерландский учёный, труды которого оказали влияние на развитие информатики и информационных технологий

Для чего нужны языки программирования

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

Естественные языки используются для общения людей между собой, а языки программирования предназначены для управления компьютером, то есть для выражения человеческих идей в понятном для компьютера виде.

ЯП подчиняется той задаче, которая стоит перед компьютерной программой. Он зависит от оборудования, на котором выполняется алгоритм. Соответственно, практически для каждой задачи и каждого оборудования можно использовать наиболее подходящий ЯП. Вот почему языков программирования так много.

Фрагмент разностной машины Чарльза Бэббиджа, собранный его сыном из деталей, найденных в лаборатории отца. Металлические шестерни выполняют математические операции. Фото: 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 дней работы за счет того, что сократим время вычислений во внутреннем цикле всего на одну микросекунду». Даже один сэкономленный такт вычислений дает огромную экономию в крупном масштабе!

Если вам попалась невероятно эффективная и быстрая программа — она наверняка написана с применением низкоуровневого языка.

Популярность языков

Какие основные языки программирования — определить непросто. Существуют различные метрики для измерения популярности языков, каждая из которых отражает определенный аспект популярности языка:

  1. Подсчет числа вакансий с упоминанием этого языка.
  2. Количество проданных книг (учебников или справочников).
  3. Оценка количества строк кода, написанных на языке (например, по статистике хостингов, где публикуются тексты программ).
  4. Подсчет упоминаний языка в запросах поисковиков.

Например, журнал IEEE Spectrum попытался составить самый объективную картину популярности языков программирования по12 метрикам из10 источников. Вот как выглядела в 2017 году таблица, отранжированная по этим параметрам:

График популярности языков, IEEE Spectrum

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

Количество правок кода в Open Source-проектах в 2017 году. Источник: GitHub

По каждой метрике может лидировать какой-то один язык, а по другой метрике — другой. Например, Cobol до сих пор доминирует в корпоративных дата-центрах, на нем написано много программ, хотя новых практически не пишут. Вариации языка C используются в системном программировании, а язык Java популярен для написания приложений под Android. Прочие языки регулярно используются для создания других разнообразных приложений.

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

Важно!

Если ваша главная цель — найти высокооплачиваемую работу, то смотрите на соответствующие метрики и выбирайте правильный подход к изучению тех языков программирования, которые актуальны в конкретной области.

Курс «Профессия Веб-разработчик» предполагает, что по окончании годичной программы студент сможет устроиться джуниор-программистом. Программа обучение рассчитана на один год и составлена из трех основных курсов: «Веб-разработчик», «JavaScript с нуля» и «Базовые навыки PHP». По окончании курса студент получает глубокие комплексные знания, необходимые для профессиональной работы.

Курс «Профессия Веб-разработчик»
Практический годовой курс для тех, кто хочет стать профессиональным веб-разработчиком, запустить свой интернет-проект или веб-сервис и получить первые заказы на разработку.
  • Живая обратная связь с преподавателями
  • Неограниченный доступ к материалам курса
  • Стажировка в компаниях-партнёрах
  • Дипломный проект от реального заказчика
  • Гарантия трудоустройства в компании-партнёры для выпускников, защитивших дипломные работы