web-dev-qa-db-fra.com

Que sont les 4e et 5e générations de langages de programmation? Y en a-t-il plus?

Comme il est souvent classé au niveau de l'école/du collège, les langages de programmation populaires (C #, Java, C++) sont tous des langages de 3e génération (avec un niveau d'abstraction plus élevé des parties physiques de la machine). En outre, les langages d'assemblage sont classés en tant que langages de 2ème et machine en tant que langages de 1ère génération.

Au départ, je pensais que SQL devrait être considéré comme un langage de 4e génération car il est plus abstrait et loin des détails du bouclage et plus descriptif.

Tout à l'heure, j'ai découvert qu'il existe des langages de 4e génération et de 5e génération, mais quelle est la base pour qu'un langage ou une technologie de programmation soit classé comme un langage de 4e ou 5e génération?

Existe-t-il également des langues de 6e ou 7e génération?

36
Ali

Vue d'ensemble des générations simples: une langue n'est pas de la cinquième génération quand ses blocs de construction sont

  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 encore solidement de 3e génération. Regex est une langue de correspondance de texte, ce qui en fait une langue de début de 4e génération) . Par cette définition, la 4e génération s'aligne étroitement sur les DSL. Cependant, notez que les langages tels que C++ peuvent avoir des types réels tels que Length et Weight en plus de float et double, ce qui les rend hybrides de 3e/4e génération.

Les langues de 5e 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 nous, les programmeurs, soyons encore nécessaires, est exactement dû au fait que les non-programmeurs ne peuvent pas dire à un ordinateur avec suffisamment de précision ce qu'ils veulent exactement.

36
MSalters

"Langage de nième génération" est un mot à la mode. C'est un terme marketing. Il n'y a 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 en 4GLs car ils sont beaucoup plus élevés- niveau que C, tandis que d'autres pensent que les caractéristiques qui définissent les 4GL sont qu'elles sont spécifiques au domaine, par exemple SQL. Certains nitwits pensent même que Java (un langage du milieu des années 90 plein d'orientation d'objet et collecte des ordures et réflexion) appartient à la même catégorie "3GL" que Fortran (des années 50) et C (des années 70).

Une catégorisation si confuse telle que "langage de 4e génération" est inutile. Vous pouvez le voir dans de vieux manuels, ou l'entendre de personnes qui ont commencé à programmer dans les années 80, mais une balise comme "4GL" ne vaut rien sans une explication d'accompagnement de ce que l'auteur veut exactement dire par là.

Étant donné que personne ne comprend immédiatement ce que vous entendez par "4GL", vous ne devez pas utiliser de telles catégorisations. Utilisez plutôt 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 dernières machines virtuelles cibles, et la dernière est également un langage de programmation orienté objet. Sont tous ces 2GL? SQL est un langage spécifique au domaine partiellement déclaratif pour les requêtes de base de données des années 80. Et TeX est un langage spécifique au domaine pour la composition des années 70. Sont-ils tous les deux 4GL car ils sont tous les deux plus ou moins spécifiques au domaine?

88
amon