Jakie są 4. i 5. generacja języków programowania? Czy jest ich więcej? [Zamknięte]

36

Ponieważ często jest klasyfikowany na poziomie szkoły / uczelni, popularne języki programowania (C #, Java, C ++) są językami 3. generacji (z wyższym poziomem abstrakcji z części fizycznych maszyny). Ponadto języki asemblera są klasyfikowane jako 2., a języki maszynowe jako języki 1. generacji.

Początkowo myślałem, że SQL powinien być uważany za język czwartej generacji, ponieważ jest bardziej abstrakcyjny i daleki od szczegółów zapętlania i bardziej opisowy.

Właśnie teraz dowiedziałem się, że istnieją języki czwartej i piątej generacji, ale jaka jest podstawa jakiegokolwiek języka programowania lub technologii, aby można je było zaklasyfikować jako język czwartej lub piątej generacji?

Czy istnieją również języki 6. lub 7. generacji?

Ali
źródło
12
Och, gdyby tylko ludzie mogli się zgodzić co do tego, co czyni język n-tej generacji, że n… Nie ma żadnych kryteriów, które można naprawdę powiązać (z wyjątkiem stwierdzenia, że ​​języki wyższej generacji są dalej usuwane z gołego metalu niż na niższym poziomie - w jakim stopniu nie uzgodnione).
Oded
5
Które „pokolenie” to C? Czy możesz podać przykłady języków czwartej i piątej generacji i powiedzieć, co sprawia, że ​​każde pokolenie? Czyli jakie kryteria definiują język jako generacja „n”?
Mawg,
3
Tbh Nie sądzę, aby koncepcja języka X generacji była naprawdę istotna.
Pieter B
5
Tworzę język 14. generacji i będzie to czysta magia, ponieważ jest to siódmy syn siódmego syna ....
David Conrad

Odpowiedzi:

36

Przegląd prostych pokoleń: język nie jest n-tym pokoleniem, jeśli ma elementy składowe

  1. bitów
  2. instrukcje
  3. Operacje abstrakcyjne
  4. Obiekty domeny
  5. Cele programu

Dlatego nawet nowe języki, takie jak Google Go czy Apple Swift, są wciąż solidnie trzeciej generacji. Regex to język dopasowywania tekstu, co czyni go językiem wczesnej 4. generacji. Zgodnie z tą definicją 4. generacja ściśle dostosowuje się do DSL. Należy jednak pamiętać, że języki takie jak C ++ mogą mieć typy rzeczywiste, takie jak Lengthi Weightoprócz floatoraz double, co czyni je hybrydowymi 3. / 4. generacji.

Języki 5. generacji praktycznie nie istnieją, ponieważ na ogół wymagają poziomu sztucznej inteligencji, który nigdy się nie zmaterializował. Fakt, że my, programiści, nadal jesteśmy potrzebni, jest dokładnie taki, ponieważ nieprogramiści nie potrafią powiedzieć komputerowi z wystarczającą precyzją, czego dokładnie chcą.

MSalters
źródło
1
Uwaga na temat ostatniego akapitu: Blog J.Pitrat zawiera interesujące rzeczy związane z AI i programistami
Basile Starynkevitch,
5
Problem DONALD problemna blogu pokazuje, jak daleko nas jeszcze dzieli sudo make me a sandwich, i niepokojąco oceniamy postęp, jaki dokonaliśmy w ciągu ostatnich 50 lat.
MSalters
1
@AndrewHoffmann Co się z tym dzieje? Jeśli budujesz most, lepiej mieć odpowiedni rodzaj materiału do swojej konstrukcji, a nity lepiej mieć odpowiedni rozmiar (i ile jest rozmiarów?).
didierc
1
@AndrewHoffman: AI to głównie temat CS w środowisku akademickim, a nie inżynieria oprogramowania. Można argumentować, że prawdziwa inżynieria byłaby korzystna. Prawdopodobnie jest to dobry powód, dla którego pierwszy samochód samobieżny wydaje się być samochodem Google.
MSalters
6
@AndrewHoffman - mów za siebie. Jestem inżynierem oprogramowania i codziennie stosuję dość standardowe praktyki inżynierskie. Ponadto jestem certyfikowanym inżynierem. Myślę, że cały twój komentarz jest nonsensem opartym na twoim osobistym doświadczeniu, a nie opartym na faktach.
Inżynier Dollery,
88

„Język n-tej generacji” to modne hasło. To jest termin marketingowy. Nie ma powszechnie przyjętej definicji tego, co dokładnie definiuje „n-tą generację” dla n> 2. Niektóre osoby klasyfikują języki „skryptowe”, takie jak Perl lub Python, jako 4GL, ponieważ są one na wyższym poziomie niż C, podczas gdy inni uważają, że definicja Cechą 4GL jest to, że są specyficzne dla domeny, np. SQL. Niektórzy nitwits nawet myślą, że Java (język z połowy lat 90., zorientowany obiektowo oraz zbieranie i odbieranie śmieci) należy do tej samej kategorii „3GL”, co Fortran (z lat 50.) i C (z lat 70.).

Tak pomylona kategoryzacja, jak „język 4. generacji”, nie ma sensu. Możesz to zobaczyć w starych podręcznikach lub usłyszeć od ludzi, którzy zaczęli programować w latach 80., ale tag taki jak „4GL” jest bezwartościowy bez towarzyszącego mu wyjaśnienia, co dokładnie autor ma na myśli.

Ponieważ nikt od razu nie rozumie, co rozumiesz przez „4GL”, nie powinieneś używać takich kategoryzacji. Zamiast tego używaj określonych terminów, aby dokładnie komunikować, co masz na myśli. Np. Wszystkie NASM, LLVM IR i Jasmin są językami asemblera, ale dwie ostatnie docelowe maszyny wirtualne, a ostatnia jest również obiektowym językiem programowania. Czy wszystkie te 2GLs? SQL jest częściowo deklaratywnym, specyficznym dla domeny językiem dla zapytań do baz danych z lat 80. A TeX to język specyficzny dla domeny do składu od lat 70. Czy oba są 4GL, ponieważ oba są bardziej lub mniej specyficzne dla domeny?

amon
źródło
22
Rozwijam język 8G. To będzie oszałamiające. ... nawet frytki Julienne. Sprzedam licencje na trzy łatwe płatności ...;)
BrianH
10
Myślę, że generacje języków programowania POWINNY w jakiś sposób odpowiadać generacjom myśliwców . Ta ilość niesamowitości wydaje się wystarczająca, aby uzasadnić RFC na ten temat.
toniedzwiedz
11
Ach, to przywraca wspomnienia, kiedy języki piątej generacji byłyby wkrótce tak łatwe w użyciu, że większość programistów nie miałaby pracy.
Gort the Robot
5
@Izkata A 1GL to binarny kod maszynowy (np. Zestaw instrukcji amd64). 2GL to tekstowy język asemblera, który zapewnia mnemonikę kodu maszynowego (np. GAS). 3GL to coś, co streszcza instrukcje maszynowe. Fortran był pierwszym, który to zrobił, umożliwiając programistom używanie wyrażeń i zmiennych takich jak (I + 7) * 3. Jednak nie ma zgody co do tego, gdzie kończy się kategoria 3GL i co konkretnie mają oznaczać 4GL i 5GL.
amon
5
„Niektóre nitwits nawet myślą, że Java ... należy do tej samej kategorii„ 3GL ”co Fortran…” - podczas gdy inne nitwits uważają, że jeśli dwie rzeczy wydają się bardzo różne, to nie może istnieć schemat klasyfikacji, który je grupuje razem zgodnie z wszelkimi kryteriami istotnymi dla tego programu? ;-p
Steve Jessop