Языки программирования принято делить на пять поколений.

Первое поколение

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

Второе поколение

Языки второго поколения (2GL) создавались для того, чтобы облегчить тяжёлую работу по программированию, перейдя от машинного кода ближе к более удобным мнемоническим обозначениям команд. Под языками второго поколения понимались ассемблеры (автокоды). Они, тем не менее, остались языками низкого уровня, то есть языками, зависящими напрямую от системы команд и способов адресации ячеек памяти конкретной модели ЭВМ.

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

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

Третье поколение

Под третьим поколением (3GL) понимают языки высокого уровня (ЯВУ), дающие более высокий уровень абстракции, чем ассемблер. Эти языки появились в 1950-е годы, в частности, такие языки как Фортран и Лисп. Некоторой проблемой, с которыми столкнулись разработчики языков второго поколения, стала задача убедить клиентов в том, что созданный компилятором код достаточно хорош, чтобы оправдать отказ от программирования на ассемблере. Скептицизм по поводу возможности создания эффективных программ с помощью компиляторов ЯВУ был довольно распространён, поэтому разработчикам таких систем должны были продемонстрировать, что они действительно могут генерировать почти такой же эффективный код, как и при ручном кодировании, причём практически для любой исходной задачи.

Одной из важнейших отличительных черт языков третьего поколения стала независимость от аппаратного обеспечения, то есть выражение алгоритма в форме, не зависящей от конкретных особенностей машины, на которой он будет исполняться, что позволило переносить программы с одной ЭВМ на другую. При этом производительность труда программистов значительно возросла, а число ошибок сократилось за счет того, что например, в Фортране (ФОРмул ТРАНслятор) стало возможно писать, подобно алгебраической записи, например, "A = X + B" вместо использования мнемонического обозначения машинной команды, такого как "ADD".Исходный текст программы, написанный на языке третьего поколения, перед исполнением транслируется либо непосредственно в машинные команды, либо в текст на ассемблере, и затем уже ассемблируется. При компиляции, в отличие от предыдущих поколений, уже нет соответствия один-к-одному между инструкциями программы и генерируемым кодом.

Стала широко использоваться интерпретация программ — при этом инструкции программы не преобразуются в машинный код, а исполняются непосредственно одна за другой. Независимость от «железа» достигается за счёт использования интерпретатора - виртуальной машины времени исполнения, скомпилированного под конкретную аппаратную платформу.

Четвёртое поколение

Термин языки программирования четвёртого поколения (4GL) лучше представлять как среды разработки четвёртого поколения. Они относятся к временному периоду с 1970-х по начало 1990-х.

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

Пятое поколение

Рождение языков пятого поколения произошло в середине 90-х годов. К ним относятся средства автоматизированного создания прикладных программ с помощью визуальных средств разработки, без знания программирования. Одна из базовых идей состояла в возможности автоматического формирования результирующего текста на универсальных языках программирования (который необходимо откомпилировать). Инструкции же вводятся в компьютер в максимально наглядном виде с помощью методов, наиболее удобных для человека, не знакомого с программированием. На данный момент стоит отметить также такие понятия, как Low-code и даже zerocode программирование, а также генерацию программ с помощью искусственного интеллекта, например, ChatGPT.

См. также Предметно-ориентированный язык Визуальное программирование Программирование без программистов

Примечания

Ссылки first generation language Free On-line Dictionary of Computing second generation language Free On-line Dictionary of Computing third generation language Free On-line Dictionary of Computing fourth generation language Free On-line Dictionary of Computing fifth generation language Free On-line Dictionary of Computing Computer Languages History Поколение языков программирования Классификация языков программирования, их эволюция

Категория:Уровни языков программирования