Taha Zerrouki Taha.zerrouki@gmail · 1 Rappel sur les langages de programmation Taha Zerrouki...

49
1 Rappel sur les langages de programmation Taha Zerrouki [email protected] Module: Méthodes et technologies de l’implémentation GSI, M1 S1

Transcript of Taha Zerrouki Taha.zerrouki@gmail · 1 Rappel sur les langages de programmation Taha Zerrouki...

1

Rappel sur les langagesde programmation

Taha Zerrouki

[email protected]

Module: Méthodes et technologies de l’implémentation

GSI, M1 S1

Présentation du Module

● Méthodes et technologies de l’implémentation● Aspects avancés de la programmation

Plan

- Rappel : Evolution des techniques de Programmation (procédurale, modulaire, objet, composant)

- Introduction à XML

- Les patron de conception/réalisation

- Les API pour XML (DOM)

- La réflexivité

- La programmation orientée aspect

- Les Frameworks pour le développement web

Plan

- Rappel : Evolution des techniques de Programmation ● procédurale● modulaire● objet● composant

- Introduction à XML

- Les patron de conception/réalisation

Plan

- Les API pour XML (DOM)

- La réflexivité

- La programmation orientée aspect

- Les Frameworks pour le développement web

Typologie des langages de programmation

Top language

http://spectrum.ieee.org/computing/software/the-2015-top-ten-programming-languages

TIOBE Index for September 2016

http://www.tiobe.com/tiobe-index/

TIOBE Index for September 2016

http://www.tiobe.com/tiobe-index/

Types des langages

● Langages de bas niveau● Langages évolués

Types des langages

● Langages de bas niveau● Langages évolués

Langage bas niveau

● Un langage de programmation est dit de bas niveau lorsque le codage de celui-ci se rapproche du langage machine (dit « binaire »), et donc permet de programmer à un degré très avancé.

Langage de haut niveau

● est un langage de programmation orienté autour du problème à résoudre, qui permet d'écrire des programmes en utilisant des mots usuels des langues naturelles

Compilation/Interprétation

● L'implémentation (réalisation concrète) d'un langage de programmation peut être interprétée ou compilée.

● Un langage de programmation peut avoir une – implémentation compilée,

– et une autre interprétée.

Compilation/Interprétation

● L'implémentation (réalisation concrète) d'un langage de programmation peut être interprétée ou compilée.

● Un langage de programmation peut avoir une – implémentation compilée,

– et une autre interprétée.

Compilation/Interprétation

● Compilation :– la traduction est faite avant l'exécution.

– (le principe d'une boucle est alors traduit une fois)

Compilation/Interprétation

Interprétation :– la traduction est finie pas à pas, durant l'exécution

– (les éléments d'une boucle sont alors examinés à chaque usage).

Compilation/Interprétation

● L'interprétation est utile pour la mise au point ou si les moyens sont limités.

● La compilation est préférable en exploitation.

Compilation/Interprétation

● Interprété – Java, python, basic, php

– Shell

– Navigateur web

– XML

– Lisp, Scheme

– Postscript (langage pour les imprimantes et traçantes)

– Langages pour les robots

Compilation

● Compilé – C, C++, C#, objective-c

– Java

– Pascal

– Ada

Méthodes

● Langages impérative– Langages procédurales

– Langages orientés objets

● Langages déclaratifs– Langages logiques

– Langages fonctionnels

– Langages descriptives

Méthodes

● Langages impérative– Langages procédurales

– Langages orientés objets

● Langages déclaratifs– Langages logiques

– Langages fonctionnels

– Langages descriptives

Méthodes

● Langages impérative– Langages procédurales

– Langages orientés objets

● Langages déclaratifs– Langages logiques

– Langages fonctionnels

– Langages descriptives

Programmation impérative

● est un paradigme de programmation● qui décrit les opérations en séquences

d'instructions exécutées par l'ordinateur pour modifier l'état du programme.

Programmation impérative

● Ce type de programmation est le plus répandu parmi l'ensemble des langages de programmation existants

Méthodes

● Langages impérative– Langages procédurales

– Langages orientés objets

● Langages déclaratifs– Langages logiques

– Langages fonctionnels

– Langages descriptives

29

La programmation procédurale

● est un paradigme qui se fonde sur le concept d'appel procédural.

● Une procédure, aussi appelée:– routine,

– Sous-routine

– Fonction

contient simplement une série d'étapes à réaliser.

30

La programmation procédurale

● est un paradigme qui se fonde sur le concept d'appel procédural.

● N'importe quelle procédure peut être appelée à n'importe quelle étape de l'exécution du programme,

● y compris à l'intérieur d'autres procédures, voire dans la procédure elle-même (récursivité).

31

La programmation procédurale

Avantages● La programmation procédurale est un meilleur choix

qu'une simple programmation séquentielle. Les avantages sont en effet les suivants :

● La possibilité de réutiliser le même code (factorisation), ● La réduction de la taille du code source et un gain en

localité des modifications, ● donc une amélioration de la maintenabilité

32

Langages procéduraux

● Ada● Algol● BASIC● C● COBOL

● Pascal

● Perl

● PHP (version 4 et inférieur)

● Fortran

Méthodes

● Langages impérative– Langages procédurales

– Langages orientés objets

● Langages déclaratifs– Langages logiques

– Langages fonctionnels

– Langages descriptives

Méthodes

● Langages impérative– Langages procédurales

– Langages orientés objets

● Langages déclaratifs– Langages logiques

– Langages fonctionnels

– Langages descriptives

35

La programmation déclarative

● consiste à créer des applications sur la base de composants logiciels indépendants du contexte

● et ne comportant aucun état interne.● Autrement dit, l'appel d'un de ces composants

avec les mêmes arguments produit exactement le même résultat, quel que soit le moment et le contexte de l'appel.

36

La programmation déclarative

● Il existe plusieurs formes de programmation déclarative :

● La programmation descriptive ● La programmation fonctionnelle (LISP, Caml,

Haskell, Oz),● La programmation logique,● La programmation par contraintes.

37

La programmation descriptive

● à l'expressivité réduite, qui permet de décrire des structures de données (par exemple, HTML, XML ou LaTeX)

38

La programmation fonctionnelle

● perçoit les applications comme un ensemble de fonctions mathématiques (LISP, Caml, Haskell, Oz),

39

La programmation logique,

● pour laquelle les composants d'une application sont des relations logiques (Prolog, Mercury).

40

Programmation fonctionnelle

● L'origine de la programmation fonctionnelle peut être trouvée dans le lambda-calcul.

● le langage fonctionnel le plus ancien est Lisp, créé en 1958 par McCarthy.

41

Langages fonctionnels

● Récemment, la programmation fonctionnelle a commencé à sortir du milieu académique.

● Erlang : développé par Ericsson pour des besoins de programmation concurrentielle,

● Common Lisp, et Scheme sont utilisés. ● F# développé par Microsoft Research et

disponible sous licence de logiciel libre en 2010

42

Langages fonctionnels

● Mais le développement des langages fonctionnels est limité par le déficit en outils et en bibliothèques de qualité commerciale, et surtout par le manque de programmeurs formés.

43

Langages fonctionnels

● Mais le développement des langages fonctionnels est limité par le déficit en outils et en bibliothèques de qualité commerciale, et surtout par le manque de programmeurs formés.

44

Exemple LISP

● Lisp = list processor● Diviser 10 sur 5

( / 5 10)●

45

Exemple LISP

● (+ 2 2) ; ajoute 2 et 2, renvoie 4● (defvar e) ; définit la variable e● (setf e 2.7182817) ; assigne 2.7182817 à la

variable e● (setq e 2.7182817) ; assigne 2.7182817 à la

variable e● (setq e 'rouge) ; assigne le mot rouge à la

variable e●

46

Exemple LISP

● (if (< x y)● y ; résultat si la condition est vérifiée (ici, si x < y)● x) ; résultat par défaut● ● (defun carre (x) (* x x)) ; définit une fonction qui

met un nombre au carré● (carre 3) ; exécution de la fonction :

retourne 9●

47

Architecture

● Modulaire● Par composant

48

La programmation orientée composant

● consiste à utiliser une approche modulaire de l'architecture d'un projet informatique.

● Les développeurs, au lieu de créer un exécutable monolithique, se servent de briques réutilisables.

49

La programmation orientée composant

● consiste à utiliser une approche modulaire de l'architecture d'un projet informatique.

● Les développeurs, au lieu de créer un exécutable monolithique, se servent de briques réutilisables.

● ce qui permet d'assurer au logiciel:– une meilleure lisibilité

– une meilleure maintenance.