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?
Odpowiedzi:
Przegląd prostych pokoleń: język nie jest n-tym pokoleniem, jeśli ma elementy składowe
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
Length
iWeight
opróczfloat
orazdouble
, 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ą.
źródło
DONALD problem
na blogu pokazuje, jak daleko nas jeszcze dzielisudo make me a sandwich
, i niepokojąco oceniamy postęp, jaki dokonaliśmy w ciągu ostatnich 50 lat.„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?
źródło
(I + 7) * 3
. Jednak nie ma zgody co do tego, gdzie kończy się kategoria 3GL i co konkretnie mają oznaczać 4GL i 5GL.