Projet Tuteuré : Générations de Langages : Les langages de programmation ont en tout 5 générations. 1GL/2GL/3GL/4GL/5GL en anglais ||| L1G/ L2G/ L3G/ L4G/ L5G en français 1ère Génération : Les langages machine, ce sont des langages peu lisible, il n'y avait pas encore de fonctions à écrire en anglais. Ce sont les plus vieux langages mais aussi les plus puissant car ils sont directement liés au processeur. C'est le cas du Code Machine, composé de 0 et de 1. Le programmeur qui programme avec du Code Machine doit connaître parfaitement le processeur sur lequel il programme. Ce qui fait que si on change de processeur le programme doit changer. La portabilité d'un programme en Code Machine est donc difficile à mettre en place. 2ème Génération : Les langages assembleurs. Ils ont les mêmes défauts que le Code Machine pour la portabilité mais on commence à utiliser une syntaxe plus proche du langage humain. Il est donc plus facilement lisible et utilisable mais il reste réservé à des personnes de haut niveau et à des programmes de bas niveau. Il est très difficile de concevoir un moteur 3D en assembleur. Mais si ceci se fait un jour ce serai un moteur très rapide. 3ème Génération : Ceux-ci nous interessent plus dans l'étude de faire « du neuf avec du vieux », ceci est du à leur portabilité qui est maintenant plus grande. On peut plus facilement comparer les programmes de différents langages car ils sont dotés de systèmes communs tels que les conditions, les boucles, les fonctions, les types. Il sont donc dit de langages structurés. Ces langages sont, de plus, écrit dans une syntaxe proche de l'anglais, ils gagnent en lisibilité, et sont donc plus facile à comprendre pour les débutants. Il existe une énorme variété de langages de 3eme génération , c'est pour cela qu'ils ont été divisés en plusieurs groupes. (cf: La partie Types de langages). Ces langages sont en constante évolution et sont les plus utilisés. 4ème Génération : Les langages de programmation de cette génération sont des programmes qui s'occupent de tâches spécifique, ils n'ont aucuns liens entre eux. Le SQL s'occupe de la base de donnée pour accompagner le PHP. D'autres langages tels que PostScript ou Metafont s'occupent de la production graphique. D'autres encore sont présents pour la création d'interface ( ex: 4D). MATLAB est aussi un langage 4GL/L4G. Leur avantage sont qu'ils sont intégrées dans un environnement de développement rapide. Avantage qu'ils transmettent aux langages de 5ème génération. 5ème Génération : Ces langages de programation ne se servent pas d'algorithmes pour résoudre des problèmes mais de contraintes. C'est plutot utilisé pour les études sur l'intelligence artificielle. En clair, le programmeur doit penser à aux problèmes que le langage doit résoudre et sous quelle conditions et ensuite, tout est fait directement par l'ordinateur, il n'y a donc pas besoin de mettre en oeuvre une routine ou un algorithme pour les résoudre. Quelques langages connus : Prolog, OPS5, Mercury. Petite appartée : WEBDEV un L5G : Il permet de faciliter la programmation Web en génèrant des codes PHP, HTML, Javascript automatique. Types de languages : Les L3G sont les langages qui nous interessent le plus pour faire du neuf avec du vieux. Il est donc primordial de savoir de quels type de L3G on traite pour étudier les similarités entre les langages. Il y a 5 types de L3G : Les langages à objets : Ces langages utilisent la POO (programmation orienté objet), donc le Système de Classe apprise en Java cette année. Les Objets sont des sorte de boite/conteneurs qui représentent une image informatisées d'un objet réel. Par exemple une voiture, une Bactérie. Ils ont étés créés dans le but de faciliter la programmation de logiciels de simulation. Maintenant ils sont utilisés dans de très nombreux langages. D'ailleurs de vieux langage impératifs, sont devenus des langages à objets. On peut citer le PHP ou bien le Java, ou même le Javascript. On peut les considèrer comme des langages plus évolués. Les langages impératifs: Deuxième type de L3G on peut dire que c'est un langage à objets sans les objets. Pour faire plus clair c'est un langage qui décrit les opérations sous forme d'instructions mis à la suite. On note plusieurs similitudes entre ces langages, les conditions, les boucles, l'assignation. C'est sous cette forme que l'on commence à apprendre l'informatique en IUT. On y trouve donc le C qui est la version dans objets du C++. Les langages fonctionnels: Ce type de L3G interdit les opérations d'affectation. On peut le voir comme des boîtes mémorisant plusieurs données (paramètres) réliées entre elles par une seule sortie. (A développer svp les namis j'ai un peu de mal a comprendre). Les langages déclaratifs: Ce type de L3G ne permet pas de lancer des opérations via des suites d'instructions. En fait il n'y a pas les notions de condition, de bouclage, de variable même. On utilise des fonctions déjà toute faite pour afficher ce que l'on veut voir. C'est le cas du HTML avec ses balises pour afficher un texte de la taille demandée, de la façon demandé, de la couleur demandée. C'est un langage très simple d'utilisation et de compréhension. Très souvent appris par les débutants. Il existe aussi le Latex qui, comme le HTML s'occupe de l'affichage de ce que l'on demande. Le latex est orienté dans l'affichage Mathématique, par exemple pour afficher une intégrale, une fraction très simplement. Les langages concurrents: La programmation concurrente est un style de programmation tenant compte, dans un programme, de l'existence de plusieurs piles sémantiques. Ces piles peuvent être appelées threads, processus ou tâches. Elles sont matérialisées en machine par une pile d'exécution et un ensemble de données privées. Les threads disposent d'une zone de mémoire partagée alors que les processus sont strictement isolés. (A développer svp les namis j'ai un peu de mal a comprendre).