• Aucun résultat trouvé

• • • • • ConceptsdesLangagesdeProgrammation IFT-2035

N/A
N/A
Protected

Academic year: 2022

Partager "• • • • • ConceptsdesLangagesdeProgrammation IFT-2035"

Copied!
21
0
0

Texte intégral

(1)

IFT-2035 Concepts des Langages de Programmation

Stefan Monnier (AA-2341)

monnier@iro.umontreal.ca

http://www.iro.umontreal.ca/˜monnier/2035/

David A. Watt, Programming Language Design Concepts

Ravi Sethi, Programming Languages: Concepts & Constructs

Benjamin C. Pierce, Types and Programming Languages

Simon Thompson, Haskell: The Craft of Functional Programming

Paul Hudak, The Haskell School of Expression

(2)

Calendrier

Historique, syntaxe des langages Compilation et interpr ´etation

S ´emantique des langages,

λ

-calcul, types Programmation fonctionnelle

Port ´ee, passage d’argument

Fonctions d’ordre sup ´erieur, fermetures Programmation logique

Programmation imp ´erative Repr ´esentation des donn ´ees Pointeurs et gestion m ´emoire

Macros, totalit ´e, exceptions, modules, abstraction Concurrence

(3)

Aperc¸u du cours

Il y a plusieurs milliers de langages de programmation

Etre capable d’utiliser efficacement la majorit ´e de ces langagesˆ

Savoir comparer et tirer parti de leurs similarit ´es et diff ´erences

Pouvoir comprendre comment ils interagissent

Comprendre les concepts fondamentaux Syntaxe et s ´emantique, types

Abstraction

Port ´ee et passage d’arguments

Analyse, raisonnement, libert ´e d’implantation

Mieux programmer

(4)

Comment?

Peu de syntaxes

Peu de diff ´erents styles de programmation

Equivalence de Turing´

Confin ´e par notre cr ´eativit ´e, les contraintes des langages machines, et les besoins de performance

(5)

Styles de programmation

Imp ´eratif

Proc ´edural Objet

D ´eclaratif

Fonctionnel Logique

Concurrent

M ´emoire partag ´ee

Passage de messages

(6)

Historique: langage machine (1)

Seul langage compris directement par la machine

La m ´emoire contient le programme et les donn ´ees, le processeur op `ere dessus:

Transferts entre m ´emoire et registres

Op ´erations internes (arithm ´etiques, tests, ...)

Flot de contr ˆole

AX BX CX DX registres add

mul

UC UCT

programme

MÉMOIRE

périphériques et données

(7)

Historique: langage machine (1)

1. Lire le mot de l’instruction courante 2. Le d ´ecoder

3. Chercher les op ´erandes 4. Effectuer l’op ´eration

5. Socker le r ´esultat

6. Passer `a l’instruction suivante.

10001011 01000101 00001010 00000011 01000101 00010100

Les instructions et les donn ´ees sont encod ´ees par des chaˆınes de bits Diff ´erent pour chaque type de machine

Inintelligible pour les humains

(8)

Historique: assembleur

Repr ´esentation textuelle symbolique du langage machine

mov 10(%ebp),%ax add 20(%ebp),%ax

Toujours diff ´erent pour chaque type de machine La m ´emoire manque toujours de structure

Irr ´egularit ´es du jeux d’instructions

Beaucoup de d ´etails `a ´ecrire; les erreurs sont l ´egion

Beaucoup de variantes; la meilleure est diff ´erente pour chaque machine

(9)

Historique: Langages de haut niveau

Langage ind ´ependant de la machine; se rapproche de l’humain M ˆeme exemple qu’avant:

X + Y

Notation plus famili `ere

Portabilit ´e

Fiabilit ´e

Nombre de lignes/jour et bugs/ligne plus ou moins constant

Plus facile `a lire

Plus restrictif

(10)

Une infinit ´e de niveaux

Tous les langages de haut niveau ne sont pas n ´es ´egaux

machine

<

assembleur

<

C

<

Java

<

anglais

<

Stefan

Le niveau d’abstraction est la distance conceptuelle par rapport au langage machine.

Les langages souvent combinent des aspects de niveaux diff ´erents, donc il n’y a pas toujours d’ordre clair entre langages.

(11)

G ´en ´ealogie

1990

1995 1955

1960

1965

1970

1975

1980

1985

1955

1960

1965

1970

1975

1980

1985

1990

1995 Dylan

2000 2000

Prolog Lisp

Scheme InterLisp MacLisp

Common ZetaLisp

Lisp

SASL

Miranda ML

StandardML

Haskell Smalltalk

Simula

C++

Java Ada95

Ada ConcurrentPascal

CSP BCPL

CPL

C Algol 68

Pascal Algol 60

Modula 2

Modula 3 Oberon Fortran Assembly

CLOS B

Machine/

impératif

concurrent fonctionnel

logique orienté objet

ANSI C++

Les pionniers:

Fortran, Lisp, Cobol

Les influents:

Algol, Simula, Prolog, ML

(12)

Programmation imp ´erative: proc ´edurale

Fortran, Algol 60, Pascal, C, Ada

M ˆeme mod `ele que la machine: s ´equence d’op ´erations sur la m ´emoire La m ´emoire est compos ´ee d’un graphe d’objets

Les instructions sont regroup ´ees en proc ´edures Notion implicite d’´etat omnipr ´esente; effets de bord Facile `a traduire en langage machine (compiler) De nos jours, consid ´er ´e comme “bas niveau”

(13)

Programmation imp ´erative: objets

Simula, Smalltalk, C++, Java

Chaque objet de la m ´emoire est accompagn ´e de code qui lui permet d’interagir avec les autres objets

Les objets sont actifs

Les m ´ethodes remplacent les proc ´edures

Le flot de contr ˆole passe d’un objet `a l’autre par appel de m ´ethode Plusieurs types d’objets peuvent ˆetre utilis ´es de mani `ere uniforme

(14)

Programmation fonctionnelle

Lisp, ML, Haskell, APL

Calcul = fonction au sens math ´ematique Eviter les effets de bord´

Pas de destruction, pas de d ´ependance au temps Facilite l’analyse, le raisonnement

Les fonctions peuvent ˆetre manipul ´ees comme n’importe quel objet Appr ´eci ´e pour son ´el ´egance

(15)

Programmation logique

Prolog, Mercury, Oz

Calcul = recherche d’une preuve logique ou d’une solution

Tr `es d ´eclaratif: d ´ecrire ce que l’on veut, pas comment l’obtenir Mod `ele d’ex ´ecution tr `es diff ´erent: difficile `a m ´elanger

On ne peut pas prouver n’importe quoi automatiquement

(16)

Programmation concurrente

CSP, Occam, Ada, Modula-2

Calcul divis ´e en plusieurs t ˆaches, ex ´ecut ´ees simultan ´ement Synchronisation et communication, implicites ou explicites Apporte potentiellement des acc ´el ´erations importantes Non-d ´eterminisme

Beaucoup d’occasions d’introduire des erreurs

(17)

Plagiat

Plagiat = ⇒ Pas bien

(18)

Caract ´eristiques externes des langages (1)

S ´ecurit ´e

Le langage incite-t-il `a un style de programmation dangereux?

Les erreurs sont elles bien d ´etect ´ees?

Maintenance

Est-il facile de modifier les programmes?

Simplicit ´e conceptuelle

Nombre et r ´egularit ´e des concepts

(19)

Caract ´eristiques externes des langages (2)

Degr ´e de sp ´ecialization

Niveau d’abstraction

Doit ˆetre adapt ´e `a la t ˆache

Puissance expressive

Supporte plusieurs styles de programmation

Support de gros projets

Modularisation, compilation s ´epar ´ee

(20)

Caract ´eristiques externes des langages (3)

Environnement

Existe-t-il beaucoup de bons outils?

Et de bons programmeurs?

Performance

Rapide `a ´ecrire Rapide `a compiler Rapide `a ex ´ecuter

Portabilit ´e

Le langage est-il disponible sur toutes les machines?

Les programmes fonctionneront-ils ailleurs?

(21)

Implantation

Interpr ´etation (aka VM)

D ´ecodage progressif des instructions

Simple, compact, portable, flexible

Compilation

Traduction d’un langage dans un autre

Vitesse, standalone, compilation crois ´ee

Hybrides

Références

Documents relatifs

sion de l ·esprit qui anime notre grand mouvement Nous n ·avons pas créé seulement.. Tom; les

Célestin FREINET Lorsque des événements aussi considérables que ceux dont nous venons d'être témoins depuis quinze jours notamment bouleversent l'atmosphère

Nous offrons également une gamme complète de services, qui vous protège contre tout imprévu : assurez votre capital en cas de destruction totale ou de vol de votre véhicule Fiat

L'autre blanche à carreaux noirs À cela on aurait pu les reconnaître Mais ils passaient toujours le soir Et avec la vitesse... Certains d'ailleurs les soupçonnaient Non sans

Monsieur G lui donne des arguments mathématiques : « même si on considère que la pro- babilité qu’un élève donne ses papiers à la bonne date est égale à 0,9, tu verras qu’on

Monsieur G lui donne des arguments mathématiques : « même si on considère que la pro- babilité qu’un élève donne ses papiers à la bonne date est égale à 0,9, tu verras qu’on

Ni le cas de 3 chiffres ni la limitation des coefficients ` a 9 ne jouent de rˆ ole dans la propri´ et´ e de l’´

D'après l'armation de Simon , celui-ci dispose d'un S tel que le P de Paul est compatible avec au moins un