SlideShare a Scribd company logo
Compilation &
langages
Présenté par Yann Caron
skyguide
ENSG Géomatique
Plan général du cours
00 - Introduction
01 - Compilation
02 - CodeGen
03 - Principes et
paradigmes
04 - Théorie des langages
Présentation
Yann Caron
skyguide – SCADA – Java – C# - C++
Ingénieur EI-CNAM
Projet Algoid www.algoid.net & Wikipédia
Projet JinyParser
https://github.com/YannCaron/JinyParser
3/39
Plan du cours
Définitions
Historique des langages
Références
Outils
Compilateur - définition
Programme qui transforme un code source
(langage source) dans un langage cible
Ex : binaire ou C++ vers du C
5/39
void main()
{
printf(“hi”);
}
void main()
{
printf(“hi”);
}
01001011001
11001011010
11011100101
00011100111
01001011001
11001011010
11011100101
00011100111
hi.c hi.o
Interpréteur - définition
Programme qui transforme un code source
(langage source) en un résultat
6/39
void main()
{
alert(“hi”);
}
void main()
{
alert(“hi”);
}
hi.js
programme{
”data1” : “v1“,
“data2” : “v2“
}
{
”data1” : “v1“,
“data2” : “v2“
}
data
Philosophie
Quel est le meilleur langage ?
7/39
Le plus utilisé ?
8/39
Philosophie
✔ pas de meilleurs langages que d’autres
✔ des langages pour des besoins différents
✔ script
✔ pour : rapide, simple efficace
✔ contre : librairies, bugs difficiles à
identifier
✔ compilés
✔ pour : langages sûr, correction à la
compilation
✔ contre : verbeux, complexes, rigides
9/39
Par domaines
10/39
Domaine Fonctionnalités Langage
Scientifique Virgule flottante
Tableaux
Parallélisme
Fortran
Business Persistance
Génération de rapports
Analyse des données
SQL
Programmation
système
Contrôle des ressources
Temps réel
C / C++
Compilation ? Pourquoi ?
✔ Challenge intellectuel
✔ Paradigmes
✔ Algorithmes
✔ Compréhension en profondeur des
langages
✔ Économiques ex : Oracle vs Microsoft
✔ Besoin de configuration avancé ! (exemple
projet Stars)
✔ Domain Specific Languages
11/39
Économiques
✔ Atlassian
✔ Sonar-source
✔ Oracle vs Microsoft
12/39
Nouveau mais !
✔ Les nouveaux langages créés tendent à
ressembler aux anciens
✔ Exemple : C++ - Java – C#
✔ TypeScript, JavaScript – Algoid
✔ Parce que l’apprentissage d’un nouveau
langage coûte cher
✔ en regard à ce qu’il apporte comme
nouveautés
13/39
Historiques des langages
Introduction
✔ La discipline informatique a pré-existée
aux ordinateurs
✔ Alonzo Church, Alan Turing, Stephen
Kleene et Kurt Gödel participent à cette
recherche :
✔ Thèse de Church-Turing qui définit un
modèle “physique” de calculabilité
✔ Ils définissent ce qu’est un algorithme
(ensemble fini d’instructions simples)
✔ Les Lambda-Calcul et les fonctions
récursives
15/39
Avant 1940
✔ Ada Lovelace
✔ Augusta Ada king, comtesse de Lovelace
✔ Traduit le mémoire du mathématicien Luigi
Menabrea sur la machine analytique, la
première machine proposé par Charles
Babbage
✔ Premiers programme et premier algorithme
écrit
✔ Langage Ada nommé en son honneur
16/39
Ada Lovelace
1815 - 1852
Charles Baddage
1791 - 1871
1940
✔ Premières machines électromécaniques
✔ La Bombe de Turing en Angleterre
✔ ENIAC, Armée américaine, lié à la bombe
nucléaire)
✔ Premiers ordinateurs électroniques à
lampe (EDSAC / IAS / EDVAC)
✔ Principalement programmés en langage
machine
✔ Ou en assembleur
✔ Plankalkül – premier langage de haut
niveau
17/39
Alan Michael Turing
✔ Mathématicien Cryptologue
✔ Inventeur du premier ordinateur
✔ Débat sur l’intelligence artificielle :
test de Turing
✔ Inventeur du concept de programmation et
de programme
✔ Film à voir : Imitation Game
18/39
Alan Michael
Turing
1912 - 1954
Alan Michael Turing
✔ Casse le code Enigma des Nazis durant la
2em
guerre mondiale
✔ Les historiens estiment qu’il a écourté la
guerre de 2 ans
✔ Se suicide parce qu’accusé
d’homosexualité en mangeant
partiellement une pomme empoisonnée au
cyanure (logo apple ?)
✔ Gracié, puis reconnu héros de guerre 55
ans après son décès
19/39
Alan Michael Turing
✔ La bombe (1938, électromécanique)
✔ Testait automatiquement les codes
d'Enigma
✔ Bletchley Park - RU
20/39
1950 - 1960
✔ FORTRAN (FORmula TRANslator) - John
Backus
✔ LISP (LISt Processor) spécialisé dans le
traitement des listes – John McCarthy
Premier langage fonctionnel basé sur le
lambda calcul
✔ COBOL (Common Business Oriented
Language) – Grace Hopper
21/39
John Backus
1924 - 2007
John McCarthy
1927 - 2011
Grace Hopper
1906 - 1984
Algol
✔ ALGOL (ALGorithmic Oriented
Language) – John Backus et Peter Naurr
✔ Apporte la notion de portées (encapsulé)
et de bloc de code
✔ Création du méta langage BNF (Forme de
Backus-Naurr) dont un dérivé (EBNF) sert
aujourd’hui encore à la description des
langages modernes (du moins la partie
context free)
22/39
Peter Naurr
1928 - 2016
1967 - 1978
✔ Mise en place des paradigmes
fondamentaux
✔ Simula 67 – premier langage
Orienté Objet
✔ C – premier langage système
✔ Smalltalk – premier IDE graphique (Objet et
Fonctionnel, UI Fenêtrés) – Alan Key
✔ Prolog – premier langage Logique
✔ ML – pose les bases de la programmation
fonctionnelle, typage statique et
polymorphique (basé sur Lisp) 23/39
Alan Key
1940
1980
✔ Normalisation et recherche de
performance
✔ Ada, Eiffel, Perl
✔ C++ - langage système et OO – Bjarn
Stroustrup
✔ FP – Functional Programming - John
Backus
24/39
Bjarne Stroustrup
1950
1990
✔ Les langages se tournent vers internet
✔ Python – Guido van Rossum
✔ Ruby, Lua, JavaScript, PHP
✔ Mais aussi : Haskell
✔ Java – James Gosling
✔ C# - Hejlesberg (co-inventeur du Pascal)
25/39
Guido van Rossum
1956
James Gosling
1956
Anders Hejlesberg
1960
26/39
27/39
28/39
Références
Bibliographie
✔ Dragon book
✔ Engineering a compiler
✔ Terrens Parr
30/39
Terrens Parr -1964
MOOCs
✔ Stanford Online - Automata - Jeffrey D.
Ullman
http://online.stanford.edu/course/automata-
theory-self-paced
✔ Stanford Online – Compilers – Alex Aiken
(langage COOL)
https://lagunita.stanford.edu/courses/Engin
eering/Compilers/Fall2014/about
31/39
Jeff Ullman - 1942 Alex Aiken
MOOCs
✔ Louvain – Paradigms of Computer
Programming (Langage Oz)
https://www.edx.org/course/paradigms-
computer-programming-louvainx-louv1-1x-2
✔ Princeton – Algorithms Part II – Robert
Sedgewick
https://www.coursera.org/learn/algorithms-
part2
32/39
Sedgewick - 1946Peter Van Roy
Acteurs
✔ Donald Knuth
✔ Tex → LaTex (Domain specific language)
✔ Parser LR
✔ Grammaire attribués (attributs de l'AST)
33/39
Donald Knuth
1938
Outils
Outils - parsers
✔ Pour un langage : GCC, JavaCC, Roslyn
✔ Lex / Yacc – Flex / Bison – Génération de
code
✔ Antlr – BNF (grammaire externe)
✔ Irony.net – Surcharge d’opérateurs
ParExpr.Rule = "(" + Expr + ")";
✔ JParsec – Déclaratif fonctionnel
✔ JASI - JinyParser
35/39
Outils - compilateurs
✔ ASM – Générateur de bytecode JVM et
Dalvik – ex : Golo
✔ CECIL, ILasm – Générateur d'Intermediate
Language .net
✔ LLVM – VM C / C++
✔ Neko VM (bytecode de haut niveau)
36/39
Outils – AntlrWorks
37/39
Outils – Railroad
38/39
Merci de votre attention

More Related Content

Similar to Théorie des langages - 00 - Introduction

Programmation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptxProgrammation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptx
OlyvierNzighou1
 
Cours langage-c
Cours langage-cCours langage-c
Cours langage-c
Ahmed MSAFRI
 
Programmation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptxProgrammation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptx
OlyvierNzighou1
 
C# et .NET : Enigmes et puzzles
C# et .NET : Enigmes  et puzzlesC# et .NET : Enigmes  et puzzles
C# et .NET : Enigmes et puzzles
Microsoft
 
Introduction aux activités du W3C (Janvier 2008)
Introduction aux activités du W3C (Janvier 2008)Introduction aux activités du W3C (Janvier 2008)
Introduction aux activités du W3C (Janvier 2008)
Fabien Gandon
 
Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015
Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015
Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015
Modern Data Stack France
 
historique de l'informatique
historique de l'informatiquehistorique de l'informatique
historique de l'informatique
Abdelouahab Benlatreche
 
Historique de l'informatique et d'Internet
Historique de l'informatique et d'InternetHistorique de l'informatique et d'Internet
Historique de l'informatique et d'Internet
D1clic
 
Deep Learning on Apache Spark: TensorFrames & Deep Learning Pipelines
Deep Learning on Apache Spark: TensorFrames & Deep Learning Pipelines Deep Learning on Apache Spark: TensorFrames & Deep Learning Pipelines
Deep Learning on Apache Spark: TensorFrames & Deep Learning Pipelines
Databricks
 
openFrameworks
openFrameworksopenFrameworks
openFrameworks
LeStudioiInteractif
 
cours_archi_2006-20071 (1).ppt
cours_archi_2006-20071 (1).pptcours_archi_2006-20071 (1).ppt
cours_archi_2006-20071 (1).ppt
ZeinabMhanna2
 
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
Pôle Systematic Paris-Region
 
COURS C++ [Enregistrement automatique]Complet (1).pptx
COURS C++ [Enregistrement automatique]Complet (1).pptxCOURS C++ [Enregistrement automatique]Complet (1).pptx
COURS C++ [Enregistrement automatique]Complet (1).pptx
LuneSabsPericolo1
 
Développer des codes de simulation numérique avec une équipe "non geek" à l'ULg
Développer des codes de simulation numérique avec une équipe "non geek" à l'ULgDévelopper des codes de simulation numérique avec une équipe "non geek" à l'ULg
Développer des codes de simulation numérique avec une équipe "non geek" à l'ULg
Romain Boman
 
Les réseaux (des ordis et des hommes part.2)
Les réseaux (des ordis et des hommes part.2)Les réseaux (des ordis et des hommes part.2)
Les réseaux (des ordis et des hommes part.2)
Vincent Mabillot
 
Outils de construction pour la recherche
Outils de construction pour la rechercheOutils de construction pour la recherche
Outils de construction pour la recherche
Johan Moreau
 
Cours 1 Microprocesseurs.ppt
Cours 1 Microprocesseurs.pptCours 1 Microprocesseurs.ppt
Cours 1 Microprocesseurs.ppt
wafawafa52
 
Introduction à l'Open Hardware
Introduction à l'Open HardwareIntroduction à l'Open Hardware
Introduction à l'Open HardwareRobert Viseur
 
De l’automatisation des tâches à la transformation numérique : un regard rétr...
De l’automatisation des tâches à la transformation numérique : un regard rétr...De l’automatisation des tâches à la transformation numérique : un regard rétr...
De l’automatisation des tâches à la transformation numérique : un regard rétr...
Saïd Assar
 

Similar to Théorie des langages - 00 - Introduction (20)

Chap6 extrait
Chap6 extraitChap6 extrait
Chap6 extrait
 
Programmation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptxProgrammation-en-C-ESIITECH-2023-2024.pptx
Programmation-en-C-ESIITECH-2023-2024.pptx
 
Cours langage-c
Cours langage-cCours langage-c
Cours langage-c
 
Programmation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptxProgrammation-en-C-ESIITECH-2023-2024-bis.pptx
Programmation-en-C-ESIITECH-2023-2024-bis.pptx
 
C# et .NET : Enigmes et puzzles
C# et .NET : Enigmes  et puzzlesC# et .NET : Enigmes  et puzzles
C# et .NET : Enigmes et puzzles
 
Introduction aux activités du W3C (Janvier 2008)
Introduction aux activités du W3C (Janvier 2008)Introduction aux activités du W3C (Janvier 2008)
Introduction aux activités du W3C (Janvier 2008)
 
Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015
Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015
Apache Flink par Bilal Baltagi Paris Spark Meetup Dec 2015
 
historique de l'informatique
historique de l'informatiquehistorique de l'informatique
historique de l'informatique
 
Historique de l'informatique et d'Internet
Historique de l'informatique et d'InternetHistorique de l'informatique et d'Internet
Historique de l'informatique et d'Internet
 
Deep Learning on Apache Spark: TensorFrames & Deep Learning Pipelines
Deep Learning on Apache Spark: TensorFrames & Deep Learning Pipelines Deep Learning on Apache Spark: TensorFrames & Deep Learning Pipelines
Deep Learning on Apache Spark: TensorFrames & Deep Learning Pipelines
 
openFrameworks
openFrameworksopenFrameworks
openFrameworks
 
cours_archi_2006-20071 (1).ppt
cours_archi_2006-20071 (1).pptcours_archi_2006-20071 (1).ppt
cours_archi_2006-20071 (1).ppt
 
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
OSIS18_IoT: L'approche machine virtuelle pour les microcontrôleurs, le projet...
 
COURS C++ [Enregistrement automatique]Complet (1).pptx
COURS C++ [Enregistrement automatique]Complet (1).pptxCOURS C++ [Enregistrement automatique]Complet (1).pptx
COURS C++ [Enregistrement automatique]Complet (1).pptx
 
Développer des codes de simulation numérique avec une équipe "non geek" à l'ULg
Développer des codes de simulation numérique avec une équipe "non geek" à l'ULgDévelopper des codes de simulation numérique avec une équipe "non geek" à l'ULg
Développer des codes de simulation numérique avec une équipe "non geek" à l'ULg
 
Les réseaux (des ordis et des hommes part.2)
Les réseaux (des ordis et des hommes part.2)Les réseaux (des ordis et des hommes part.2)
Les réseaux (des ordis et des hommes part.2)
 
Outils de construction pour la recherche
Outils de construction pour la rechercheOutils de construction pour la recherche
Outils de construction pour la recherche
 
Cours 1 Microprocesseurs.ppt
Cours 1 Microprocesseurs.pptCours 1 Microprocesseurs.ppt
Cours 1 Microprocesseurs.ppt
 
Introduction à l'Open Hardware
Introduction à l'Open HardwareIntroduction à l'Open Hardware
Introduction à l'Open Hardware
 
De l’automatisation des tâches à la transformation numérique : un regard rétr...
De l’automatisation des tâches à la transformation numérique : un regard rétr...De l’automatisation des tâches à la transformation numérique : un regard rétr...
De l’automatisation des tâches à la transformation numérique : un regard rétr...
 

More from Yann Caron

Théorie des langages - TP - WellKnownText
Théorie des langages - TP  - WellKnownTextThéorie des langages - TP  - WellKnownText
Théorie des langages - TP - WellKnownText
Yann Caron
 
Théorie des langages - 04 Théorie des langages
Théorie des langages - 04 Théorie des langagesThéorie des langages - 04 Théorie des langages
Théorie des langages - 04 Théorie des langages
Yann Caron
 
Théorie des langages - 03 - Principes et paradigmes
Théorie des langages - 03 - Principes et paradigmesThéorie des langages - 03 - Principes et paradigmes
Théorie des langages - 03 - Principes et paradigmes
Yann Caron
 
Théorie des langages - 02 - Code gen
Théorie des langages - 02 - Code genThéorie des langages - 02 - Code gen
Théorie des langages - 02 - Code gen
Yann Caron
 
Théorie des langages - 01.1 - Parcours d'arbres
Théorie des langages - 01.1 - Parcours d'arbresThéorie des langages - 01.1 - Parcours d'arbres
Théorie des langages - 01.1 - Parcours d'arbres
Yann Caron
 
Théorie des langages - 01 - Compilation
Théorie des langages - 01 - CompilationThéorie des langages - 01 - Compilation
Théorie des langages - 01 - Compilation
Yann Caron
 
Algea - 04 - conclusion
Algea - 04 - conclusionAlgea - 04 - conclusion
Algea - 04 - conclusion
Yann Caron
 
Algea - 03 - ennemis
Algea - 03 - ennemisAlgea - 03 - ennemis
Algea - 03 - ennemis
Yann Caron
 
Algea - 02 - gemmes
Algea - 02 - gemmesAlgea - 02 - gemmes
Algea - 02 - gemmes
Yann Caron
 
Algea - 01 - hero
Algea - 01 - heroAlgea - 01 - hero
Algea - 01 - hero
Yann Caron
 
ALGEA - 00 - introduction
ALGEA - 00 - introductionALGEA - 00 - introduction
ALGEA - 00 - introduction
Yann Caron
 
Programmation Android - Tp2 Travaux pratiques - Geomatique
Programmation Android - Tp2 Travaux pratiques - GeomatiqueProgrammation Android - Tp2 Travaux pratiques - Geomatique
Programmation Android - Tp2 Travaux pratiques - Geomatique
Yann Caron
 
Programmation Android - 10 - Spatialite
Programmation Android - 10 - SpatialiteProgrammation Android - 10 - Spatialite
Programmation Android - 10 - Spatialite
Yann Caron
 
Programmation Android - 09 - Web services
Programmation Android - 09 - Web servicesProgrammation Android - 09 - Web services
Programmation Android - 09 - Web services
Yann Caron
 
Programmation Android - 08 - Android debug bridge
Programmation Android - 08 - Android debug bridgeProgrammation Android - 08 - Android debug bridge
Programmation Android - 08 - Android debug bridge
Yann Caron
 
Programmation Android 07 - Techniques avancées
Programmation Android 07 - Techniques avancéesProgrammation Android 07 - Techniques avancées
Programmation Android 07 - Techniques avancées
Yann Caron
 
Programmation Android - 06 - Publication
Programmation Android - 06 - PublicationProgrammation Android - 06 - Publication
Programmation Android - 06 - Publication
Yann Caron
 
Programmation Android - 05 - Google map
Programmation Android - 05 - Google mapProgrammation Android - 05 - Google map
Programmation Android - 05 - Google map
Yann Caron
 
Programmation Android - 04 - Databases
Programmation Android - 04 - DatabasesProgrammation Android - 04 - Databases
Programmation Android - 04 - Databases
Yann Caron
 
Programmation Android - 03 - IHM bases
Programmation Android - 03 - IHM basesProgrammation Android - 03 - IHM bases
Programmation Android - 03 - IHM bases
Yann Caron
 

More from Yann Caron (20)

Théorie des langages - TP - WellKnownText
Théorie des langages - TP  - WellKnownTextThéorie des langages - TP  - WellKnownText
Théorie des langages - TP - WellKnownText
 
Théorie des langages - 04 Théorie des langages
Théorie des langages - 04 Théorie des langagesThéorie des langages - 04 Théorie des langages
Théorie des langages - 04 Théorie des langages
 
Théorie des langages - 03 - Principes et paradigmes
Théorie des langages - 03 - Principes et paradigmesThéorie des langages - 03 - Principes et paradigmes
Théorie des langages - 03 - Principes et paradigmes
 
Théorie des langages - 02 - Code gen
Théorie des langages - 02 - Code genThéorie des langages - 02 - Code gen
Théorie des langages - 02 - Code gen
 
Théorie des langages - 01.1 - Parcours d'arbres
Théorie des langages - 01.1 - Parcours d'arbresThéorie des langages - 01.1 - Parcours d'arbres
Théorie des langages - 01.1 - Parcours d'arbres
 
Théorie des langages - 01 - Compilation
Théorie des langages - 01 - CompilationThéorie des langages - 01 - Compilation
Théorie des langages - 01 - Compilation
 
Algea - 04 - conclusion
Algea - 04 - conclusionAlgea - 04 - conclusion
Algea - 04 - conclusion
 
Algea - 03 - ennemis
Algea - 03 - ennemisAlgea - 03 - ennemis
Algea - 03 - ennemis
 
Algea - 02 - gemmes
Algea - 02 - gemmesAlgea - 02 - gemmes
Algea - 02 - gemmes
 
Algea - 01 - hero
Algea - 01 - heroAlgea - 01 - hero
Algea - 01 - hero
 
ALGEA - 00 - introduction
ALGEA - 00 - introductionALGEA - 00 - introduction
ALGEA - 00 - introduction
 
Programmation Android - Tp2 Travaux pratiques - Geomatique
Programmation Android - Tp2 Travaux pratiques - GeomatiqueProgrammation Android - Tp2 Travaux pratiques - Geomatique
Programmation Android - Tp2 Travaux pratiques - Geomatique
 
Programmation Android - 10 - Spatialite
Programmation Android - 10 - SpatialiteProgrammation Android - 10 - Spatialite
Programmation Android - 10 - Spatialite
 
Programmation Android - 09 - Web services
Programmation Android - 09 - Web servicesProgrammation Android - 09 - Web services
Programmation Android - 09 - Web services
 
Programmation Android - 08 - Android debug bridge
Programmation Android - 08 - Android debug bridgeProgrammation Android - 08 - Android debug bridge
Programmation Android - 08 - Android debug bridge
 
Programmation Android 07 - Techniques avancées
Programmation Android 07 - Techniques avancéesProgrammation Android 07 - Techniques avancées
Programmation Android 07 - Techniques avancées
 
Programmation Android - 06 - Publication
Programmation Android - 06 - PublicationProgrammation Android - 06 - Publication
Programmation Android - 06 - Publication
 
Programmation Android - 05 - Google map
Programmation Android - 05 - Google mapProgrammation Android - 05 - Google map
Programmation Android - 05 - Google map
 
Programmation Android - 04 - Databases
Programmation Android - 04 - DatabasesProgrammation Android - 04 - Databases
Programmation Android - 04 - Databases
 
Programmation Android - 03 - IHM bases
Programmation Android - 03 - IHM basesProgrammation Android - 03 - IHM bases
Programmation Android - 03 - IHM bases
 

Recently uploaded

Presentation d'esquisse route juin 2023.pptx
Presentation d'esquisse route juin 2023.pptxPresentation d'esquisse route juin 2023.pptx
Presentation d'esquisse route juin 2023.pptx
imed53
 
Accompagner les porteurs de projets en transformation fermière
Accompagner les porteurs de projets en transformation fermièreAccompagner les porteurs de projets en transformation fermière
Accompagner les porteurs de projets en transformation fermière
Institut de l'Elevage - Idele
 
Quelles rotations dans les systèmes caprins de Nouvelle-Aquitaine et Pays de ...
Quelles rotations dans les systèmes caprins de Nouvelle-Aquitaine et Pays de ...Quelles rotations dans les systèmes caprins de Nouvelle-Aquitaine et Pays de ...
Quelles rotations dans les systèmes caprins de Nouvelle-Aquitaine et Pays de ...
Institut de l'Elevage - Idele
 
Accompagner les éleveurs dans l'analyse de leurs coûts de production
Accompagner les éleveurs dans l'analyse de leurs coûts de productionAccompagner les éleveurs dans l'analyse de leurs coûts de production
Accompagner les éleveurs dans l'analyse de leurs coûts de production
Institut de l'Elevage - Idele
 
Comment aborder le changement climatique dans son métier, volet adaptation
Comment aborder le changement climatique dans son métier, volet adaptationComment aborder le changement climatique dans son métier, volet adaptation
Comment aborder le changement climatique dans son métier, volet adaptation
Institut de l'Elevage - Idele
 
COURS ANALYSE FINANCIERE-NOGLO Méthodes d’analyses financières.pdf
COURS ANALYSE FINANCIERE-NOGLO Méthodes d’analyses financières.pdfCOURS ANALYSE FINANCIERE-NOGLO Méthodes d’analyses financières.pdf
COURS ANALYSE FINANCIERE-NOGLO Méthodes d’analyses financières.pdf
sieousse95
 
COUPROD Une méthode nationale commune à l’ensemble des filières herbivores
COUPROD Une méthode nationale commune à l’ensemble des filières herbivoresCOUPROD Une méthode nationale commune à l’ensemble des filières herbivores
COUPROD Une méthode nationale commune à l’ensemble des filières herbivores
Institut de l'Elevage - Idele
 
Reconquête de l’engraissement du chevreau à la ferme
Reconquête de l’engraissement du chevreau à la fermeReconquête de l’engraissement du chevreau à la ferme
Reconquête de l’engraissement du chevreau à la ferme
Institut de l'Elevage - Idele
 
Leviers d’adaptation au changement climatique, qualité du lait et des produit...
Leviers d’adaptation au changement climatique, qualité du lait et des produit...Leviers d’adaptation au changement climatique, qualité du lait et des produit...
Leviers d’adaptation au changement climatique, qualité du lait et des produit...
Institut de l'Elevage - Idele
 
pdfcoffee.com_polycopie-de-cours-ppt-lge604-20012-bf-pdf-free.pdf
pdfcoffee.com_polycopie-de-cours-ppt-lge604-20012-bf-pdf-free.pdfpdfcoffee.com_polycopie-de-cours-ppt-lge604-20012-bf-pdf-free.pdf
pdfcoffee.com_polycopie-de-cours-ppt-lge604-20012-bf-pdf-free.pdf
Elisée Ndjabu
 
1er webinaire INOSYS Réseaux d’élevage Ovins Viande
1er webinaire INOSYS Réseaux d’élevage Ovins Viande1er webinaire INOSYS Réseaux d’élevage Ovins Viande
1er webinaire INOSYS Réseaux d’élevage Ovins Viande
Institut de l'Elevage - Idele
 

Recently uploaded (11)

Presentation d'esquisse route juin 2023.pptx
Presentation d'esquisse route juin 2023.pptxPresentation d'esquisse route juin 2023.pptx
Presentation d'esquisse route juin 2023.pptx
 
Accompagner les porteurs de projets en transformation fermière
Accompagner les porteurs de projets en transformation fermièreAccompagner les porteurs de projets en transformation fermière
Accompagner les porteurs de projets en transformation fermière
 
Quelles rotations dans les systèmes caprins de Nouvelle-Aquitaine et Pays de ...
Quelles rotations dans les systèmes caprins de Nouvelle-Aquitaine et Pays de ...Quelles rotations dans les systèmes caprins de Nouvelle-Aquitaine et Pays de ...
Quelles rotations dans les systèmes caprins de Nouvelle-Aquitaine et Pays de ...
 
Accompagner les éleveurs dans l'analyse de leurs coûts de production
Accompagner les éleveurs dans l'analyse de leurs coûts de productionAccompagner les éleveurs dans l'analyse de leurs coûts de production
Accompagner les éleveurs dans l'analyse de leurs coûts de production
 
Comment aborder le changement climatique dans son métier, volet adaptation
Comment aborder le changement climatique dans son métier, volet adaptationComment aborder le changement climatique dans son métier, volet adaptation
Comment aborder le changement climatique dans son métier, volet adaptation
 
COURS ANALYSE FINANCIERE-NOGLO Méthodes d’analyses financières.pdf
COURS ANALYSE FINANCIERE-NOGLO Méthodes d’analyses financières.pdfCOURS ANALYSE FINANCIERE-NOGLO Méthodes d’analyses financières.pdf
COURS ANALYSE FINANCIERE-NOGLO Méthodes d’analyses financières.pdf
 
COUPROD Une méthode nationale commune à l’ensemble des filières herbivores
COUPROD Une méthode nationale commune à l’ensemble des filières herbivoresCOUPROD Une méthode nationale commune à l’ensemble des filières herbivores
COUPROD Une méthode nationale commune à l’ensemble des filières herbivores
 
Reconquête de l’engraissement du chevreau à la ferme
Reconquête de l’engraissement du chevreau à la fermeReconquête de l’engraissement du chevreau à la ferme
Reconquête de l’engraissement du chevreau à la ferme
 
Leviers d’adaptation au changement climatique, qualité du lait et des produit...
Leviers d’adaptation au changement climatique, qualité du lait et des produit...Leviers d’adaptation au changement climatique, qualité du lait et des produit...
Leviers d’adaptation au changement climatique, qualité du lait et des produit...
 
pdfcoffee.com_polycopie-de-cours-ppt-lge604-20012-bf-pdf-free.pdf
pdfcoffee.com_polycopie-de-cours-ppt-lge604-20012-bf-pdf-free.pdfpdfcoffee.com_polycopie-de-cours-ppt-lge604-20012-bf-pdf-free.pdf
pdfcoffee.com_polycopie-de-cours-ppt-lge604-20012-bf-pdf-free.pdf
 
1er webinaire INOSYS Réseaux d’élevage Ovins Viande
1er webinaire INOSYS Réseaux d’élevage Ovins Viande1er webinaire INOSYS Réseaux d’élevage Ovins Viande
1er webinaire INOSYS Réseaux d’élevage Ovins Viande
 

Théorie des langages - 00 - Introduction

  • 1. Compilation & langages Présenté par Yann Caron skyguide ENSG Géomatique
  • 2. Plan général du cours 00 - Introduction 01 - Compilation 02 - CodeGen 03 - Principes et paradigmes 04 - Théorie des langages
  • 3. Présentation Yann Caron skyguide – SCADA – Java – C# - C++ Ingénieur EI-CNAM Projet Algoid www.algoid.net & Wikipédia Projet JinyParser https://github.com/YannCaron/JinyParser 3/39
  • 4. Plan du cours Définitions Historique des langages Références Outils
  • 5. Compilateur - définition Programme qui transforme un code source (langage source) dans un langage cible Ex : binaire ou C++ vers du C 5/39 void main() { printf(“hi”); } void main() { printf(“hi”); } 01001011001 11001011010 11011100101 00011100111 01001011001 11001011010 11011100101 00011100111 hi.c hi.o
  • 6. Interpréteur - définition Programme qui transforme un code source (langage source) en un résultat 6/39 void main() { alert(“hi”); } void main() { alert(“hi”); } hi.js programme{ ”data1” : “v1“, “data2” : “v2“ } { ”data1” : “v1“, “data2” : “v2“ } data
  • 7. Philosophie Quel est le meilleur langage ? 7/39
  • 9. Philosophie ✔ pas de meilleurs langages que d’autres ✔ des langages pour des besoins différents ✔ script ✔ pour : rapide, simple efficace ✔ contre : librairies, bugs difficiles à identifier ✔ compilés ✔ pour : langages sûr, correction à la compilation ✔ contre : verbeux, complexes, rigides 9/39
  • 10. Par domaines 10/39 Domaine Fonctionnalités Langage Scientifique Virgule flottante Tableaux Parallélisme Fortran Business Persistance Génération de rapports Analyse des données SQL Programmation système Contrôle des ressources Temps réel C / C++
  • 11. Compilation ? Pourquoi ? ✔ Challenge intellectuel ✔ Paradigmes ✔ Algorithmes ✔ Compréhension en profondeur des langages ✔ Économiques ex : Oracle vs Microsoft ✔ Besoin de configuration avancé ! (exemple projet Stars) ✔ Domain Specific Languages 11/39
  • 13. Nouveau mais ! ✔ Les nouveaux langages créés tendent à ressembler aux anciens ✔ Exemple : C++ - Java – C# ✔ TypeScript, JavaScript – Algoid ✔ Parce que l’apprentissage d’un nouveau langage coûte cher ✔ en regard à ce qu’il apporte comme nouveautés 13/39
  • 15. Introduction ✔ La discipline informatique a pré-existée aux ordinateurs ✔ Alonzo Church, Alan Turing, Stephen Kleene et Kurt Gödel participent à cette recherche : ✔ Thèse de Church-Turing qui définit un modèle “physique” de calculabilité ✔ Ils définissent ce qu’est un algorithme (ensemble fini d’instructions simples) ✔ Les Lambda-Calcul et les fonctions récursives 15/39
  • 16. Avant 1940 ✔ Ada Lovelace ✔ Augusta Ada king, comtesse de Lovelace ✔ Traduit le mémoire du mathématicien Luigi Menabrea sur la machine analytique, la première machine proposé par Charles Babbage ✔ Premiers programme et premier algorithme écrit ✔ Langage Ada nommé en son honneur 16/39 Ada Lovelace 1815 - 1852 Charles Baddage 1791 - 1871
  • 17. 1940 ✔ Premières machines électromécaniques ✔ La Bombe de Turing en Angleterre ✔ ENIAC, Armée américaine, lié à la bombe nucléaire) ✔ Premiers ordinateurs électroniques à lampe (EDSAC / IAS / EDVAC) ✔ Principalement programmés en langage machine ✔ Ou en assembleur ✔ Plankalkül – premier langage de haut niveau 17/39
  • 18. Alan Michael Turing ✔ Mathématicien Cryptologue ✔ Inventeur du premier ordinateur ✔ Débat sur l’intelligence artificielle : test de Turing ✔ Inventeur du concept de programmation et de programme ✔ Film à voir : Imitation Game 18/39 Alan Michael Turing 1912 - 1954
  • 19. Alan Michael Turing ✔ Casse le code Enigma des Nazis durant la 2em guerre mondiale ✔ Les historiens estiment qu’il a écourté la guerre de 2 ans ✔ Se suicide parce qu’accusé d’homosexualité en mangeant partiellement une pomme empoisonnée au cyanure (logo apple ?) ✔ Gracié, puis reconnu héros de guerre 55 ans après son décès 19/39
  • 20. Alan Michael Turing ✔ La bombe (1938, électromécanique) ✔ Testait automatiquement les codes d'Enigma ✔ Bletchley Park - RU 20/39
  • 21. 1950 - 1960 ✔ FORTRAN (FORmula TRANslator) - John Backus ✔ LISP (LISt Processor) spécialisé dans le traitement des listes – John McCarthy Premier langage fonctionnel basé sur le lambda calcul ✔ COBOL (Common Business Oriented Language) – Grace Hopper 21/39 John Backus 1924 - 2007 John McCarthy 1927 - 2011 Grace Hopper 1906 - 1984
  • 22. Algol ✔ ALGOL (ALGorithmic Oriented Language) – John Backus et Peter Naurr ✔ Apporte la notion de portées (encapsulé) et de bloc de code ✔ Création du méta langage BNF (Forme de Backus-Naurr) dont un dérivé (EBNF) sert aujourd’hui encore à la description des langages modernes (du moins la partie context free) 22/39 Peter Naurr 1928 - 2016
  • 23. 1967 - 1978 ✔ Mise en place des paradigmes fondamentaux ✔ Simula 67 – premier langage Orienté Objet ✔ C – premier langage système ✔ Smalltalk – premier IDE graphique (Objet et Fonctionnel, UI Fenêtrés) – Alan Key ✔ Prolog – premier langage Logique ✔ ML – pose les bases de la programmation fonctionnelle, typage statique et polymorphique (basé sur Lisp) 23/39 Alan Key 1940
  • 24. 1980 ✔ Normalisation et recherche de performance ✔ Ada, Eiffel, Perl ✔ C++ - langage système et OO – Bjarn Stroustrup ✔ FP – Functional Programming - John Backus 24/39 Bjarne Stroustrup 1950
  • 25. 1990 ✔ Les langages se tournent vers internet ✔ Python – Guido van Rossum ✔ Ruby, Lua, JavaScript, PHP ✔ Mais aussi : Haskell ✔ Java – James Gosling ✔ C# - Hejlesberg (co-inventeur du Pascal) 25/39 Guido van Rossum 1956 James Gosling 1956 Anders Hejlesberg 1960
  • 26. 26/39
  • 27. 27/39
  • 28. 28/39
  • 30. Bibliographie ✔ Dragon book ✔ Engineering a compiler ✔ Terrens Parr 30/39 Terrens Parr -1964
  • 31. MOOCs ✔ Stanford Online - Automata - Jeffrey D. Ullman http://online.stanford.edu/course/automata- theory-self-paced ✔ Stanford Online – Compilers – Alex Aiken (langage COOL) https://lagunita.stanford.edu/courses/Engin eering/Compilers/Fall2014/about 31/39 Jeff Ullman - 1942 Alex Aiken
  • 32. MOOCs ✔ Louvain – Paradigms of Computer Programming (Langage Oz) https://www.edx.org/course/paradigms- computer-programming-louvainx-louv1-1x-2 ✔ Princeton – Algorithms Part II – Robert Sedgewick https://www.coursera.org/learn/algorithms- part2 32/39 Sedgewick - 1946Peter Van Roy
  • 33. Acteurs ✔ Donald Knuth ✔ Tex → LaTex (Domain specific language) ✔ Parser LR ✔ Grammaire attribués (attributs de l'AST) 33/39 Donald Knuth 1938
  • 35. Outils - parsers ✔ Pour un langage : GCC, JavaCC, Roslyn ✔ Lex / Yacc – Flex / Bison – Génération de code ✔ Antlr – BNF (grammaire externe) ✔ Irony.net – Surcharge d’opérateurs ParExpr.Rule = "(" + Expr + ")"; ✔ JParsec – Déclaratif fonctionnel ✔ JASI - JinyParser 35/39
  • 36. Outils - compilateurs ✔ ASM – Générateur de bytecode JVM et Dalvik – ex : Golo ✔ CECIL, ILasm – Générateur d'Intermediate Language .net ✔ LLVM – VM C / C++ ✔ Neko VM (bytecode de haut niveau) 36/39
  • 39. Merci de votre attention