1. CSI3525:
Concepts des Languages de
Programmation
Notes # 2 bis:
Conception et Implementation des
Languages
1
2. Influences sur la Conception des
Langages I: Architecture des Ordinateurs
Les langages les plus populaires des 35 dernieres
annees ont ete cree autour de l’architecture
prevalente: la Machine Von Neumann
Ces langages sont les langages imperatifs.
Dans une machine de Von Neumann, les donnees
et les programmes sont enregistres dans la meme
memoire. L’unite centrale de traitement est
separee. Donc, les instructions, les donnees
d’entrée et les resultats d’operations doivent etre
transmis entre la memoire et l’unite centrale.
2
3. La Machine Von Neumann
Memoire
Resultat des Instructions et Donnees
Operations
Clavier,
Unite de
Unite de Terminal,
Calcul &
Controle Imprimante,
de Logique
etc.
3
4. Caracteristiques des Langages
Imperatifs
A cause de l’architecture de la machine de Von
Neumann, les caracteristiques principales des
langages imperatifs sont:
– Les variables ⇔ les cellules de memoire
– Les instructions d’attribution ⇔ l’operation de
transmission.
– Les repetitions iteratives ⇔ la methode la plus
efficace dans cette architecture etant donne que
les instructions se trouvent dans des cellules de
memoire adjacentes (plus efficace que la
recursivite).
Bien que les langages fonctionnels presentent
beaucoup de benefices, ils ne peuvent pas etre
implementes de facon tres efficace sur les
machines Von Neumann. 4
5. Influences sur la Conception des
Langages II: Methodologies de
Programmation (I)
Dans les annees 1960s, les programmes etaient en
grande part non-structures. A cause de la
complexite des nouveaux programmes et du cout
des programmeurs, de nouvelles methologies se
sont developpees: programmation du haut en bas
(top-down) et rafinement pas a pas (step-wise).
Les problemes des langages de programmation de
l’epoque etaient: la non-completude de la
verification de type et le fait que les structures de
controle etaient non-adequates (trop d’usage de
GOTOs etait necessaire) ⇒ Les langages ALGOLs
5
6. Influences sur la Conception des
Langages II: Methodologies de
Programmation (II)
Vers la fin des annees 1970, il y a eu un
changement: plutot que de la programmation
orientee sur le processus, on s’est interesse a la
programmation orientee sur les donnees, avec une
emphase sur l’usage de donnees abstraites pour
resoudre les problemes ⇒ SIMULA 67
Au debut des annees 1980, de plus de l’abstraction
des donnees, on a ajoute l’orientation objet qui
inclut l’heritage et l’attachement dynamique du
type ⇒ Smalltalk, C++, Java.
La programmation orientee sur le processus n’a
pas, tout de meme, ete abandonnee. Au contraire,
elle s’est recemment assez developpee, surtout sur
le champ de la programmation en parallele.
6
7. Balance dans la creation de
Langages
Hoare, 1973 a propos de la creation de langage de
programmation: “Il y a tant de criteres importants
mais contradictoires que leur reconciliation et
satisfaction est une tache de creation majeure.”
Example de criteres en conflit:
– Fiabilite vs Cout de l’Execution
– Expressivite vs. Lisibilite
– Flxibilite vs. Securite
7
8. Methodes d’Implementation I:
Organization Virtuelle des Ordinateurs
Compilateur
Interpreteur de
de FORTRAN
Macro-instruction
Systeme
d’Exploitation
Machine
Compilateur
de C
Interpreteur
de LISP
Interpreteur de
Compilateur
Commandes du
de Pascal
Systeme d’Exploitation
8
9. Methodes d’Implementation II:
Compilation
Quand un langage est compile, les programmes
sont traduits dans le langage machine qui peut
etre, a ce moment, execute rapidement sur
l’ordinateur.
Le processus de traduction commence au langage
de source et passe par les stades suivants:
– Analyse lexique, analyze syntaxique,
generation de code intermediaire, analyze
semantique, optimization, generation de code.
De plus, le processus se sert d’une table de
symboles et d’un systeme de regroupement
(linker).
9
10. Methodes d’Implementation III:
Interpretation
Plutot que d’etre compiles, les programmes peuvent etre
interpretes par un autre programme appele l’interpreteur.
L’interpreteur represente une simulation logicielle d’une
machine qui utilise un langage de plus haut niveau plutot
que des instructions machine. En d’autres termes,
l’interpreteur creee une machine virtuelle.
L’avantage d’un interpreteur est qu’il permet une
implementation facile d’aide a la correction au niveau du
langage de source.
Le desavantage de l’interpreteur, cependant, est que
l’execution d’un programme peut prendre entre 10 et 100
fois plus de temps que lorsqu’un compilateur est utilise.
De plus, l’interpreteur prend beaucoup de place en
memoire. 10
11. Methodes d’Implementation IV:
Implementation Hybride des Systemes
Certaines implementations de langage font un
compromis entre compilateur et interpreteur.
Elles traduisent le programme de source en un
langage intermediaire facile a interpreter.
Le resultat est une interpretation plus rapide car
plutot que de traduire le code intermediaire en
langage machine, le langage intermediaire est
interprete.
11
12. Environements de
Programmation
Les caracteristiques d’un langage de
programmation ne sont pas la seule mesure de la
capacite d’un systeme: l’environement de
programmation est aussi tres important.
L’environement de programmation est une
collection d’outils utilises pendant le
developpement d’un logiciel.
Ces outils incluent un systeme de fichier, un
editeur de texte, un linker et un compilateur, mais
aussi, des aides a la correction d’un programme
tels que des aides visuels graphiques.
12