Quelles sont les 4ème et 5ème générations de langage de programmation? Est-ce qu'il y en a plus? [fermé]

36

Comme il est souvent classé au niveau de l'école ou du collège, les langages de programmation courants (C #, Java, C ++) sont tous des langages de 3ème génération (avec un niveau d'abstraction plus élevé des parties physiques de la machine). De plus, les langues d'assemblage sont classées comme langues de 2e génération et les langues de machine comme langues de 1ère génération.

Au départ, je pensais que SQL devrait être considéré comme un langage de 4ème génération car il est plus abstrait et plus éloigné des détails de la mise en boucle et plus descriptif.

Je viens tout juste de découvrir qu'il existe des langages de 4e et de 5e génération, mais quelle est la base d'un langage de programmation ou d'une technologie pour être classé comme langage de 4e ou de 5e génération?

De plus, existe-t-il des langues de 6ème ou 7ème génération?

Ali
la source
12
Oh, si seulement les gens pouvaient se mettre d’accord sur ce qui fait une langue de la nième génération qui n ... Il n’existe aucun critère que l’on puisse vraiment lier (à part dire que les langues de la génération supérieure sont plus éloignées du métal nu que du niveau inférieur - de quel degré pas convenu).
Oded
5
Quelle "génération" est C? Pouvez-vous donner quelques exemples de langues de 4ème et 5ème générations et nous dire ce qui fait chaque génération? Par exemple, quels critères définissent une langue comme génération 'n'?
Mawg
3
Tbh Je ne pense pas que le concept de langage de Xème génération soit vraiment pertinent.
Pieter B
5
Je fais un langage de 14ème génération, et ça va être de la pure magie, parce que c'est le septième fils d'un septième fils ...
David Conrad

Réponses:

36

Vue d'ensemble des générations simples: un langage est la génération la plus récente

  1. morceaux
  2. instructions
  3. Opérations abstraites
  4. Objets de domaine
  5. Objectifs du programme

Par conséquent, même des langues aussi nouvelles que Google Go ou Apple Swift sont toujours solidement de la 3ème génération. Regex est un langage de correspondance de texte, ce qui en fait un langage précoce de 4ème génération. Selon cette définition, la 4ème génération est étroitement alignée sur les DSL. Cependant, notez que les langages tels que C ++ peuvent avoir des types du monde réel tels que Lengthet Weighten plus floatet double, ce qui en fait des hybrides de 3ème / 4ème génération.

Les langues de la 5ème génération n'existent pratiquement pas, car elles nécessitent généralement un niveau d'IA qui ne s'est jamais matérialisé. Le fait que les programmeurs soient toujours nécessaires est précisément dû au fait que les non-programmeurs ne peuvent pas dire à un ordinateur avec suffisamment de précision ce qu'il veut exactement.

MSalters
la source
1
NB à propos du dernier paragraphe: le blog de J.Pitrat contient des informations intéressantes sur l'IA et les programmeurs
Basile Starynkevitch, le
5
Le DONALD problemproblème de ce blog souligne à quel point nous sommes encore loin sudo make me a sandwichet combien nous avons progressé de manière inquiétante au cours des 50 dernières années.
MSalters
1
@ AndrewHoffmann Qu'est-ce qui ne va pas avec ça? Si vous construisez un pont, il vaut mieux avoir le bon type de matériau pour votre structure et les rivets doivent avoir la bonne taille (et combien de tailles il y a?).
Didierc
1
@ AndrewHoffman: L'intelligence artificielle a été principalement un sujet CS dans les universités, pas un sujet de génie logiciel. On pourrait faire valoir que l'ingénierie réelle aurait été un avantage. Il y a probablement une bonne raison pour que la première voiture autonome semble être celle de Google.
MSalters
6
@ AndrewHoffman - parlez pour vous-même. Je suis un ingénieur en logiciel et j'utilise tous les jours de jolies pratiques d'ingénierie. Aussi, je suis un ingénieur certifié. Je pense que tout votre commentaire est un non-sens basé sur votre expérience personnelle plutôt que basé sur des faits.
Ingénieur Dollery
88

«Langage de la nième génération» est un mot à la mode. C'est un terme de marketing. Il n’existe pas de définition universellement acceptée de ce qui définit exactement la "nième génération" pour n> 2. Certaines personnes classent les langages de "script" tels que Perl ou Python dans la catégorie des 4GL car ils sont beaucoup plus sophistiqués que le C, Les caractéristiques des 4GL sont qu’elles sont spécifiques à un domaine, par exemple SQL. Certains Nitwits pensent même que Java (langage du milieu des années 90 riche en orientation d'objet, en ramasse-miettes et en réflexion) appartient à la même catégorie «3GL» que Fortran (des années 50) et C (des années 70).

Une catégorisation aussi confuse telle que «langage de 4ème génération» est inutile. Vous pouvez le voir dans de vieux manuels, ou l'entendre de gens qui ont commencé à programmer dans les années 80, mais une étiquette telle que «4GL» ne vaut rien sans une explication d'accompagnement de ce que l'auteur veut dire exactement.

Puisque personne ne comprend immédiatement ce que vous entendez par «4GL», vous ne devriez pas utiliser de telles catégorisations. Au lieu de cela, utilisez des termes spécifiques pour communiquer précisément ce que vous voulez dire. Par exemple, NASM, LLVM IR et Jasmin sont tous des langages d'assemblage, mais les deux derniers ordinateurs virtuels cibles et le dernier sont également un langage de programmation orienté objet. Sont tous ces 2GL? SQL est un langage partiellement déclaratif, spécifique à un domaine, pour les requêtes de base de données à partir des années 80. Et TeX est un langage spécifique au domaine pour la composition à partir des années 70. Sont-ils les deux 4GL puisqu'ils sont tous deux plus ou moins spécifiques à un domaine?

Amon
la source
22
Je développe un langage 8G. Ça va être époustouflant. ... ça va même julienne frites. Je vais vendre des licences pour trois paiements faciles de ...;)
BrianH
10
Je pense que les générations de langage de programmation DEVRAIENT en quelque sorte correspondre aux générations de chasseurs à réaction . Cette quantité de génialité semble suffisante pour justifier une RFC sur le sujet.
toniedzwiedz
11
Ah, ça me rappelle des souvenirs, quand les langages de cinquième génération seraient bientôt si faciles à utiliser que la plupart des programmeurs seraient au chômage.
Gort le robot
5
@Izkata Un 1GL est un code machine binaire (par exemple, le jeu d'instructions amd64). Un 2GL est un langage d'assemblage textuel qui fournit des mnémoniques pour le code machine (par exemple, GAS). Une 3GL est quelque chose qui résume des instructions de machine. Fortran a été le premier à le faire en permettant aux programmeurs d’utiliser des expressions et des variables telles que (I + 7) * 3. Cependant, il n'y a pas de consensus sur l'endroit où la catégorie 3GL se termine, ni sur ce que 4GL et 5GL sont spécifiquement supposés signifier.
amon
5
"Certains nitwits pensent même que Java ... appartient à la même catégorie" 3GL "que Fortran ..." - tandis que d'autres croient que si deux choses leur semblent très différentes, il ne peut exister de système de classification qui les regroupe ensemble, quels que soient les critères pertinents pour ce régime? ;-p
Steve Jessop