Що таке 4 і 5 покоління мови програмування? Чи є їх більше? [зачинено]


36

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

Спочатку я думав, що SQL слід вважати мовою 4-го покоління, оскільки він є більш абстрактним і далеким від деталей циклічного циклу та більш описовим.

Щойно я дізнався, що існують мови 4-го та 5-го поколінь, але що є основою для будь-якої мови програмування чи технології, яку слід класифікувати як мову 4-го чи 5-го поколінь?

Також є також мови 6-го чи 7-го поколінь?



12
О, якби тільки люди могли погодитися на те, що робить мова n-го ген, що родина ... Не існує критеріїв, яких можна по-справжньому зв'язати (за винятком того, що заявляти, що вищі генні мови далі видаляються з чистого металу, ніж нижчого рівня - на яку ступінь не домовлено).
Одід

5
Яке "покоління" є С? Чи можете ви навести кілька прикладів мов 4-го та 5-го поколінь і сказати, що робить кожне покоління? Тобто, які критерії визначають мову як покоління 'n'?
Мавг

3
Tbh Я не думаю, що концепція мови X-го покоління є дійсно актуальною.
Пітер Б

5
Я роблю мову 14-го покоління, і це буде чиста майстерність, тому що це сьомий син сьомого сина ....
Девід Конрад

Відповіді:


36

Простий огляд поколінь: мова - це не друге покоління, коли це є будівельні блоки

  1. біт
  2. інструкції
  3. Абстрактні операції
  4. Об'єкти домену
  5. Цілі програми

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

Мови 5-го покоління практично не існують, оскільки вони, як правило, вимагають рівня ШІ, який ніколи не реалізувався. Справа в тому, що ми, програмісти, все ще потрібні саме тому, що непрограмісти не можуть сказати комп'ютеру з достатньою точністю, чого саме вони хочуть.


1
NB про останній абзац: у блозі Дж. Пітрата є цікаві речі, пов’язані з AI та програмістами
Василь Старинкевич

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 - це мови монтажу, але останні два націлені на VM, а останній також є об'єктно-орієнтованою мовою програмування. Чи всі ці 2GL? 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 ..." - тоді як інші nitwits вважають, що якщо дві речі здаються їм дуже різними, то не може існувати класифікаційна схема, яка їх групує. разом за якими критеріями відповідають цій схемі? ;-p
Стів Джессоп
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.