Cours informatique les langages de programmation

Cours informatique les langages de programmation, tutoriel & guide de travaux pratiques en pdf.

Les langages de programmation

Un langage de programmation est un « vocabulaire » restreint et des règles de formation de « phrases » très strictes pour donner des instructions à un ordinateur. Le moins par rapport au français ou aux mathématiques est donc sa pauvreté. Le plus est qu’aucune « phrase »(=expression) n’est ambigüe : il n’existe pas 2 interprétations possibles. De plus, chaque phrase(=expression) est exécutable. Exécutable signifie qu’un programme part d’informations entrées sous forme de caractères/symboles et/ou de nombres, qu’il décrit des séquences de transformations de symboles et/ou de calculs sur ces entrées, pour aboutir à un résultat également symbolique. Exemple :
# let distance (x,y) = if x < y then y-x else x-y ;; # distance (48,31) ;; -: int = 17 #
let veut dire Soit comme en maths. Calculs sur 48 et 31, transformation des symboles x et y en des nombres, transformation des caractères« distance» en une expression qui est ensuite exécutée. [+ suivre les étapes de réduction de l’expression if..then..else..]
Il faut aussi disposer d’actions plus complexes que de simples opérations de calculette (accélérer, monter, descendre, faire un tour de piste en attente, etc.). On doit donc pouvoir : – regrouper puis abstraire un grand nombre de données élémentaires (nombres, caractères…) pour caractériser une structure de données abstraite (avion = latitude, longitude, altitude, vitesse, compagnie, origine, destination, etc.) – regrouper des suites de commandes élémentaires (additions, multiplications, statistiques, classifications, décisions…) pour organiser le contrôle du programme et le rendre plus lisible et logique (attribuer une piste à un avion = des inventaires pour vérifier qu’il reste de la place, déplacer dans la mémoire les avions sortis de piste, communiquer avec l’ordinateur de bord, etc.) Donc : ce qui définit les langages de programmation, c’est – la façon de représenter symboliquement les structures de données – et la façon de gérer le contrôle des programmes.

Classement des langages

Langages de spécification Servent à décrire ce qu’un logiciel doit faire, sans dire encore comment le faire. Permettent d’établir formellement les tâches à remplir (eg. mettre un avion en attente, lui attribuer une piste, le faire atterrir…) et les catastrophes à éviter (collisions entre avions, panne sèche pour attente prolongée, arrivée tardive de secours d’urgence…). Ne sont pas des langages de programmation car ils ne sont pas exécutables. Par contre ils en ont toutes les autres particularités : vocabulaire restreint, règles très strictes de formation des « phrases » (formules), aucune ambiguïté possible (branche des maths appelée logique). Exemples : spécifications algébriques, VDM, Z, B… Langages logiques Permettent de résoudre automatiquement des problèmes logiques en essayant systématiquement toutes les formes de solution possibles. Ne marche que pour des propriétés logiques de forme assez restreinte (P1&···&Pn) =⇒ P. Très utile pour intelligence artificielle, pour interrogation de bases de données, pour « tester » une spécification. Mais assez consommateur de mémoire ou peu performant en temps en général. PROLOG et ses variantes. Langages fonctionnels Effectuent des transformations des « entrées » vers les « sorties » comme des fonctions ou des applications des entrées vers les sorties. La loi de composition « rond », comme en maths, permet d’enchaîner des programmes. Un exemple calculatoire : f(g(h(x),g(y),z)) peut être vu comme un programme prenant x, y et z en entrée et donnant le résultat de f en sortie : (f o g o (h × g × Id)) en maths. La mémoire n’est pas manipulée explicitement. Ce sont les langages actuellement des plus rigoureux pour écrire des logiciels sûrs et prouvables. ML en fait partie. Possède plusieurs variantes dont CAML-LIGHT qui sera utilisé dans ce cours. Autre exemple : LISP et ses variantes, SCHEME… Importance du typage, en termes d’ensembles de départ et d’arrivée des fonctions. Langages à objets Les tâches que doit remplir le logiciel sont réparties entre plusieurs « objets » qui peuvent offrir des « services » de faible ampleur, mais la coopération des objets permet de réaliser des opérations complexes. Chaque objet possède une petite mémoire locale qui est manipulée explicitement dans les programmes. Très utilisés à l’heure actuelle en raison du style de programmation anthropomorphique qu’ils induisent, ces langages sont en fait plus difficiles à dominer que les langages fonctionnels. (Erreurs de programmation plus difficiles à localiser, preuves formelles de corrections impossibles.) Exemples : Eiffel, Smalltalk, C++, Java … et ocaml qui allie cette démarche à un style fonctionnel. Langages impératifs Une grosse mémoire unique, manipulée explicitement par le programme. Très difficiles à dominer, mais rapides à l’exécution car proche de la machine. Impossible d’écrire des programmes certifiables formellement, demandent environ un ordre de grandeur supplémentaire qu’en fonctionnel, en nombre de lignes de programme, pour résoudre un même problème. Restent encore parfois nécessaires pour des raisons de performances sur des machines légères, ou pour de très gros calculs. Exemples : ADA, C, Pascal, Cobol, Fortran, Basic, Langage Machine.

Cours gratuitTélécharger le cours complet

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *