Что такое 4 и 5 поколения языков программирования? Их больше? [закрыто]

36

Поскольку это часто классифицируется на уровне школы / колледжа, популярные языки программирования (C #, Java, C ++) - это все языки 3-го поколения (с более высоким уровнем абстракции от физических частей машины). Кроме того, языки ассемблера классифицируются как 2-е, а машинные языки - как языки 1-го поколения.

Изначально я думал, что SQL следует рассматривать как язык 4-го поколения, потому что он более абстрактен и далек от подробностей циклического анализа и более нагляден.

Только сейчас я обнаружил, что существуют языки 4-го и 5-го поколений, но на чем основывается любой язык программирования или технология, относящиеся к языкам 4-го или 5-го поколения?

Кроме того, есть ли языки 6-го или 7-го поколения?

Али
источник
12
О, если бы только люди могли договориться о том, что делает язык n-го поколения н ... Нет никаких критериев, которые можно было бы действительно связать (за исключением заявления о том, что языки более высокого поколения далее удаляются из чистого металла, чем более низкий уровень - в какой степени не согласовано).
Одед
5
Какое "поколение" является C? Можете ли вы привести примеры языков 4-го и 5-го поколений и рассказать, что делает каждое поколение? Т.е. какие критерии определяют язык как поколение 'n'?
Mawg
3
Я не думаю, что концепция языка X-го поколения действительно актуальна.
Питер Б
5
Я делаю язык 14-го поколения, и это будет чистое волшебство, потому что это седьмой сын седьмого сына ...
Дэвид Конрад

Ответы:

36

Обзор простых поколений: язык n-го поколения, когда

  1. биты
  2. инструкции
  3. Абстрактные операции
  4. Доменные объекты
  5. Цели программы

Следовательно, даже такие новые языки, как Google Go или Apple Swift, все еще остаются третьим поколением. Regex - это язык сопоставления текста, что делает его языком раннего 4-го поколения. По этому определению 4-е поколение тесно связано с DSL. Однако обратите внимание, что языки, такие как C ++, могут иметь реальные типы, такие как Lengthи Weightв дополнение к floatи double, что делает их гибридными 3-го / 4-го поколения.

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

MSalters
источник
1
NB о последнем абзаце: в блоге J.Pitrat есть интересные материалы, связанные с ИИ и программистами
Василий Старынкевич
5
Проблема DONALD problemв этом блоге подчеркивает, насколько далеко мы все еще далеки от этого sudo make me a sandwich, и, что нас беспокоит, какой прогресс мы достигли за последние 50 лет.
MSalters
1
@AndrewHoffmann Что с этим не так? Если вы строите мост, вам лучше выбрать материал, подходящий для вашей конструкции, а заклепки должны быть правильного размера (и сколько существует размеров?).
Didierc
1
@AndrewHoffman: AI был в основном темой CS в академических кругах, а не темой разработки программного обеспечения. Можно утверждать, что реальная инженерия была бы выгодна. Вероятно, есть веская причина, по которой первая машина с автоматическим управлением, похоже, принадлежит Google.
MSalters
6
@ AndrewHoffman - говори за себя. Я инженер-программист, и я использую довольно стандартные инженерные практики каждый день. Также я сертифицированный инженер. Я думаю, что весь ваш комментарий - это чепуха, основанная на вашем личном опыте, а не на самом деле.
инженер Доллери
88

«Язык 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, так как они более или менее специфичны для домена?

Амон
источник
22
Я разрабатываю язык 8G. Это будет потрясающе. ... это будет даже жареная картошка. Я продам лицензии за три несложных платежа ...;)
BrianH
10
Я думаю, что поколения языков программирования ДОЛЖНЫ так или иначе соответствовать поколениям реактивного истребителя . Такое количество удивительности кажется достаточным, чтобы оправдать RFC по этому вопросу.
toniedzwiedz
11
Ах, это возвращает воспоминания, когда языки пятого поколения скоро станут такими простыми в использовании, что большинство программистов останутся без работы.
Gort the Robot
5
@Izkata 1GL - это двоичный машинный код (например, набор инструкций amd64). 2GL - это текстовый язык ассемблера, который обеспечивает мнемонику для машинного кода (например, GAS). 3GL - это абстракция над машинными инструкциями. Fortran был первым, кто сделал это, позволив программистам использовать выражения и переменные, такие как (I + 7) * 3. Тем не менее, нет единого мнения о том, где заканчивается категория 3GL и что конкретно означают 4GL и 5GL.
Амон
5
«Некоторые придурки даже думают, что Java ... принадлежит к той же категории« 3GL ​​», что и Fortran ...» - тогда как другие придурки считают, что если две вещи кажутся им совершенно разными, то не может существовать схема классификации, которая группирует их вместе в соответствии с какими критериями имеют отношение к этой схеме? ;-p
Стив Джессоп