«Язык n-го поколения» - модное слово. Это маркетинговый термин. Не существует общепринятого определения того, что именно определяет «n-е поколение» для n> 2. Некоторые люди классифицируют «скриптовые» языки, такие как Perl или Python, как 4GL, потому что они намного более высокого уровня, чем C, в то время как другие считают, что определение Характеристики 4GL заключаются в том, что они зависят от домена, например, SQL. Некоторые дураки даже думают, что Java (язык середины 90-х, полный объектной ориентации, сбора и отражения мусора) относится к той же категории «3GL», что и Fortran (из 50-х) и C (из 70-х).
Такая запутанная классификация, как «язык 4-го поколения», бесполезна. Вы можете увидеть это в старых учебниках или услышать от людей, которые начали программировать в 80-х годах, но такой тег, как «4GL», ничего не стоит без сопроводительного объяснения того, что именно автор подразумевает под этим.
Поскольку никто не сразу понимает, что вы подразумеваете под «4GL», вам не следует использовать такие классификации. Вместо этого используйте конкретные термины, чтобы точно сказать, что вы имеете в виду. Например, все NASM, LLVM IR и Jasmin являются языками ассемблера, но последние две целевые виртуальные машины и последняя также являются объектно-ориентированным языком программирования. Все эти 2GLs? SQL является частично декларативным, специфичным для домена языком запросов к базе данных 80-х годов. А TeX - это предметно-ориентированный язык для набора текста с 70-х годов. Они оба 4GL, так как они более или менее специфичны для домена?