conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1a-09.pdf ·...
TRANSCRIPT
![Page 1: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/1.jpg)
Conférence d’introduction à la programmation et
aux langages de programmation
C. Dubois
![Page 2: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/2.jpg)
P l an
- P r o g r am m at i o n et D év el o p p em en t d e l o g i c i e l
- L es l an g ag es (u n p et i t h i st o r i q u e)
- P r o g r am m at i o n f o n c t i o n n el l e
- P r o g r am m at i o n i m p ér at i v e
- P r o g r am m at i o n o b j et s
- P r o g r am m at i o n l o g i q u e
![Page 3: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/3.jpg)
P r o g r am m at i o n et D év e l o p p em en t d e l o g i c i e l
![Page 4: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/4.jpg)
Qu’est-ce que la programmation ?
Description d’un calcul (traitement) dans un langage compréhensible par la machine (langage de programmation)
Une étape du cycle de vie du logiciel
![Page 5: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/5.jpg)
conception détaillée
program-mation
cahier des charges
conception globale
validationexterne
test d’intégration
tests unitaires
![Page 6: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/6.jpg)
cahier des charges
spécificationabstraite
validationexterne
test d’intégration
tests unitaires
raffinements successifs(preuve) programme
![Page 7: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/7.jpg)
Un langage de programmation
doit aider à écrire des
programmes de bonne qualité
![Page 8: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/8.jpg)
Programme de Bonne Qualité ?
• correct • robuste• lisible, bien documenté• facile à modifier, extensible
![Page 9: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/9.jpg)
Autres critères
• efficacité• portabilité• intégrité • réutilisabilité• ergonomie, utilisation et apprentissage
=> souvent nécessité de compromis
![Page 10: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/10.jpg)
programmation structurée
types
mécanisme d’exceptions
généricité, polymorphisme
surcharge
![Page 11: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/11.jpg)
Programmation à petite échelle
≠Programmation à grande échelle
pour maintenir de grands programmes :
structure et organisation
![Page 12: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/12.jpg)
décomposer un grand programme en morceaux (modules)
connectés entre eux par des interfaces bien définies
mais aussi indépendants que possible
![Page 13: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/13.jpg)
module = ensemble de ressources (données, types, opérations) liées sémantiquement
interface = mode d’emploi du module
interface
corps
partie publique
partie secrète
principe du masquage des informations
![Page 14: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/14.jpg)
M
D
C
Pourquoi ce principe ?
![Page 15: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/15.jpg)
L an g ag es d e p r o g r am m at i o n
![Page 16: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/16.jpg)
Les fonctions du langage(d'après G. Berry, http://www.college-de-france.fr/default/EN/all/inn_tec2007/cours_n3_les_langages_de_progr.htm)
• Un outil pour écrire des programmespar des hommes ou des programmespour la machine ou les autres hommes à différents niveaux d'abstraction
• Le support d'interaction avec la penséestyles distincts (impératif, fonctionnel, logique, temporel, etc...)
• Le support de guerres de religionsOn a toujours un style de prédilection
![Page 17: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/17.jpg)
«l’histoire» montre un effort continu d’abstraction
=> échapper aux particularismes des machines
=> utiliser des concepts de haut niveau
![Page 18: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/18.jpg)
Les langages de haut niveau sont caractérisés par des concepts tels que :
• valeurs, types, expressions,
• variables, instructions, structures de contrôle
• liaison, portée, déclaration
• fonctions, procédures, paramètres
• encapsulation, modules, objets
• concurrence, tâches, communication
![Page 19: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/19.jpg)
Les concepts sont assemblés de différentes façons
Paradigmes Concepts principaux
impératif variables, procédures
concurrent tâche/processus, communication
objets objets, méthodes, héritage
fonctionnel fonctions
logique prédicats
différents paradigmes de
langages de programmation
![Page 20: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/20.jpg)
1950
1960
1970
1980
1990
2000
Java
C++
Smalltalk
simulaAlgol68
Algol60
Cobol
FortranLisp
Pascal
Ada83
Ada95
C
PL/I
SML Miranda
Haskell
Prolog
Constraint
orientés objets impératifs et concurrents fonctionnels logiques
Perl
PHP
PerlPerl
![Page 21: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/21.jpg)
1950 : Invention de l'assembleur (Cambridge)
Avant, la programmation s'effectuait directement en binaire.
1951 : Invention du premier compilateur A0 par Grace Murray Hopper qui permet de générer un programme binaire à partir d'un code source.
![Page 22: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/22.jpg)
Fortran (1958) :
•notation symbolique des variables, •expressions arithmétiques
COMPILATEUR
Algol (1960)•passage de paramètres •structures de données plus riches, types
=========> Pascal (1970) C Ada (1980)
![Page 23: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/23.jpg)
LISP (1958)
•manipulation symbolique
•récursivité, gestion automatique de la mémoire
•interactivité
========> nombreux dialectes (Scheme)
BASES THEORIQUES DE LA PROGRAMMATION
(fin 60-début 70)
sémantique des langages, systèmes de preuve (λ-calcul, logique)
![Page 24: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/24.jpg)
Prolog (72)•fondé sur la logique des prédicats•calculer avec des relations•exécution = démonstration ==========> contraintes (90)
ML (langage de commande pour un démontrateur de théorèmes 78)
•système de types très puissant, •inférence de types
========> Caml (84, ENS/INRIA)
![Page 25: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/25.jpg)
Modula2 (79)
modules
C++ (86)
C sous ensemble de C++
Eiffel
amène la notion de contrat
Java (95)
s’appuie sur C++, mais « nettoyé »
![Page 26: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/26.jpg)
JavaScript (95)
insertion de code dans les pages HTML
PHP (95)
langage de scripts multi-plateformes
pages HTML dynamiques et interactives
C# (2000)
programmation internet – plateforme .net
![Page 27: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/27.jpg)
Pourquoi tant de langages ?
• Beaucoup d'aspects à traiter ensembledonnées, actions = programming in the smallarchitecture = programming in the largecomment réduire et détecter les bugs ?gestion de la mémoire
• Beaucoup d'innovations successivesfonctionnel, polymorphisme, modules, objets, parallélisme,...
• Enormément de compromis possiblesplusieurs grandes classes et beaucoup de dialectes
• Mais, heureusement, des théories solidesautomates, grammaires, lambda-calcul, logique
![Page 28: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/28.jpg)
Pour finir (avec le sourire)
- Plus de 2500 langages ont été référencés en 2003
(en 67, 120 avec 15 utilisés seulement)
Langages délirants et exotiques (exemple : le langage cow « moo »)
- Une chanson à boire (99 bottles of beer) dont le texte a été écrit à l’aide de plus de 1120 langages de programmation (http://99-bottles-of-beer.ls-la.net)
![Page 29: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/29.jpg)
Lyrics of the song 99 Bottles of Beer
99 bottles of beer on the wall, 99 bottles of beer. Take one down and pass it around, 98 bottles of beer on the wall.
98 bottles of beer on the wall, 98 bottles of beer. Take one down and pass it around, 97 bottles of beer on the wall.
....
1 bottle of beer on the wall, 1 bottle of beer.Take one down and pass it around, no more bottles of beer on the wall.
No more bottles of beer on the wall, no more bottles of beer. Go to the store and buy some more, 99 bottles of beer on the wall
![Page 30: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/30.jpg)
P r o g r am m at i o n f o n c t i o n n e l l e
L i sp , S c h em e,C am l , SM L ,
M i r an d a, H ask e l le t c
![Page 31: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/31.jpg)
programme = ensemble de définitions de fonctionsrésultat = application d’une fonction à un jeu
particulier de données composant de base : la fonctionopération de base : l’application
notion de fonction : celle des mathsdéfinie par abstraction let f(x)=e
paramètre ouargument
corps ==> e[x/a] (substitution)
fonction : citoyen de première classe
application f(a)
![Page 32: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/32.jpg)
P r o g r am m at i o n i m p ér at i v e
P asc a l , A d a, C et c
![Page 33: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/33.jpg)
programme = suite d’instructions qui font évoluer l’état mémoire
le résultat est dans l’état final
mémoire = séquence de «locations» (cellules)
location −> adresse, valeur
1
2
3
4
n
2
5
c’est l’instruction d’affectation qui fait évoluer la mémoire
x = x + y
@x = !x + !y
1
2
3
4
n
7
5
![Page 34: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/34.jpg)
Instruction = ordre donné à la machine
affectationprimitives d’entrées/sortiesséquence
instruction conditionnelle boucleappel de sous-programme
héritées de la structure des ordinateurs
contrôle
![Page 35: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/35.jpg)
P r o g r am m at i o n o b j e t s
C ++ , Jav aE i f f e l , Sm al l t a l k
O c am let c
![Page 36: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/36.jpg)
programme = collection d’objets qui communiquent entre eux par message
le résultat = un message envoyé à un objet particulier
objet = données attributs, variables d’instance
+ opérations (sur ces données) méthodes
généralement, les variables d’instance sont cachées (encapsulées)
message O2#m2 (O2 objet, m2 méthode de l’objet O2)
![Page 37: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/37.jpg)
variables d’instances :
longueur, largeur, point inférieur gauche
méthodes :
get_longueur, get_largeur, sommet_xx,
déplacer, étirer, allonger
exemple : un objet rectangle
![Page 38: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/38.jpg)
Créer une nouvelle classe en enrichissant, en spécialisant une classe existante
L’enrichissement peut porter sur :
•données : on ajoute de nouvelles variables d’instances
•méthodes :
–on ajoute de nouvelles méthodes
–on spécialise des méthodes existantes
Héritage
![Page 39: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/39.jpg)
m1
m2
classe A
m3
classe B
héritageA tout objet de la classe B, on peut
envoyer les messages m1, m2 et m3
![Page 40: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/40.jpg)
P r o g r am m at i o n l o g i q u e
P r o l o g et ses d i a l ec tes
l an g ag es à c o n t r a i n t es
![Page 41: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/41.jpg)
programme = des règles et des faits
résultat = la ou les réponses à une requête
Composants de base =
prédicats (relations entre valeurs)
![Page 42: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/42.jpg)
Exemple: somme (une relation entre 3 naturels)
somme(X,Y,Z) Z est la somme des entiers X et Y
somme(X,zero,X). un fait
Si somme(X,succ(Y),Z)
alors somme(succ(X),Y,Z) . une règle
Des exemples de requêtes
somme(1,2,R) Z=3
somme(1,2,4) No
![Page 43: Conférence d’introduction à la programmation et aux ...web4.ensiie.fr/~dubois/conf1A-09.pdf · Conférence d’introduction à la programmation et aux langages de programmation](https://reader034.vdocuments.mx/reader034/viewer/2022051916/6008627f60ec4e2d5c2fd865/html5/thumbnails/43.jpg)
somme(1,Y,4) Y=3
somme(X,Y,4) X=0, Y=4
X=1, Y=3
X=2, Y=2
X=3, Y=1
X=4, Y=0