Поколения языков программирования

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

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

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

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

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

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

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

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

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

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

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

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

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

Рождение языков пятого поколения произошло в середине 90-х годов. К ним относятся средства автоматизированного создания прикладных программ с помощью визуальных средств разработки, без знания программирования. Одна из базовых идей состояла в возможности автоматического формирования результирующего текста на универсальных языках программирования (который необходимо откомпилировать). Инструкции же вводятся в компьютер в максимально наглядном виде с помощью методов, наиболее удобных для человека, не знакомого с программированием. На данный момент стоит отметить также такие понятия, как lowcode и даже 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 
 Поколение языков программирования 
 Классификация языков программирования, их эволюция 

Уровни языков программирования