Soultaker schreef op 28 oktober 2004 @ 22:46:
Ik vind alles van boven 3 GL een beetje willekeurig gokwerk. Bij bytecode, assembly code en imperatieve talen (Fortran, C, etc.) als 1, 2 en 3 GL kan iedereen zich wel wat voorstellen. Voor mijn gevoel zou een 4e generatie taal minder implementatiegericht moeten zijn; functionele en logisch talen, en ook SQL, zouden daarvoor in aanmerking kunnen komen.
Dat is gewoon een andere classificatie die jij nu voorstelt. Minder of meer implementatie gericht lijkt dus op de classificatie waarbij je kijkt hoe dicht je op de machine zit.
Volgens de clasificatie die kijkt naar het paradigma van de talen zijn functionele en logische talen compleet anders van elkaar en beiden verschillen weer van een relationele query taal (zoals SQL).
Vervolgens kun je nog kijken naar declaratieve talen (wat) vs imperatieve talen (hoe). Volgens die indeling horen logische, functionele en query talen opeens weer bij elkaar.
Hoe je vervolgens de categorie "hoger dan 3e generatie" indeelt is mij een raadsel.
Bedoel je nu hoe ik persoonlijk dat hoger dan 3de indeel? Dat doe ik helemaal niet. De indeling in generaties is een standaard indeling die al heel lang in gebruik is en ik alleen voor het gemak van deze discussie opschreef. Iedereen kan op het web of in de literatuur dezelfde indeling opzoeken.
Kan iemand beargumenteren waarom Prolog fundamenteel 'hoger' is dan SQL, zoals hier een aantal mensen stellen? En waar zitten functionele talen dan?
Hoger betekent niet zozeer 'beter', maar veel meer 'anders'. Prolog als AI taal lijkt mischien vreemd op het eerste gezicht, maar toch wordt het vrij veel in AI omgevingen gebruikt.
Toch zie je ook in de generatie indeling dat de algemene tendens is dat de talen zich steeds verder van de machine af bewegen. SQL werkt bijvoorbeeld op datastructuren, wat wel een wiskundige ondergrond heeft (relationele algebra etc), maar toch iets verder van een machine af, maar minder ver als bv Prolog wat op logische regels gebasseerd is (logica).
Ook worden er hier en daar dingen genoemd die geen programmeertalen zijn. Hoe kan een neural netwerk nu een 5e generatie taal zijn, als het niet eens een taal is?
Een neural network zelf is ook geen taal, maar het vormt wel de basis van 6gl talen waarbij het de bedoeling is dat de betekenis van taal geleerd kan worden in plaats van dat dit hardcoded gespecificeerd is. Met een neuraal netwerk kun je dmv invoer het netwerk iets laten doen. Je invoer is een taal opzich. Een getraind netwerk kun je commando's geven, net zoals je met een 3GL taal commando's kunt geven.
Als je de applicatie grafisch in elkaar zet, ben je naar mijn mening ook niet aan het programmeren, maar aan het ontwerpen, dus kan in zo'n geval ook geen sprake zijn van een programmeertaal.
Sorry, maar daar ben ik het niet helemaal mee eens. Grafisch programmeren staat conceptueel geheel los van het paradigma van een taal. Het zal niet mooi worden, maar feitelijk kan ik een imperatieve taal prima grafisch opschrijven. Hoewel UML bedoelt is voor modeleren hangt het af en toe op het randje van een grafische programmeertaal als je bijvoorbeeld de body van methods grafisch gaat specificeren (tot aan de losse statements en flow constructs aan toe). Dat is natuurlijk niet de bedoeling van de UML maar het kan wel.
Toen ik nog studeerde heb ik wat meegeholpen aan een afstudeerproject van een mede student wat over een grafische programmeertaal ging. Deze was dan dataflow (filtering) gebasseerd. De uitvoerbare dataflow* kon zowel grafisch weergegeven worden, als in XML. Dat de ene representatie grafisch was en de andere textueel verandere natuurlijk niks aan het concept van de taal.
*
Een heel simpel voorbeeld van een uitvoerbare dataflow is overigens een unix pipeline.