SlideShare une entreprise Scribd logo
1  sur  39
Télécharger pour lire hors ligne
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

Contenu connexe

Similaire à 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.pptxOlyvierNzighou1
 
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.pptxOlyvierNzighou1
 
C# et .NET : Enigmes et puzzles
C# et .NET : Enigmes  et puzzlesC# et .NET : Enigmes  et puzzles
C# et .NET : Enigmes et puzzlesMicrosoft
 
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 2015Modern Data Stack France
 
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'InternetD1clic
 
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
 
cours_archi_2006-20071 (1).ppt
cours_archi_2006-20071 (1).pptcours_archi_2006-20071 (1).ppt
cours_archi_2006-20071 (1).pptZeinabMhanna2
 
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).pptxLuneSabsPericolo1
 
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'ULgRomain 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 rechercheJohan Moreau
 
Cours 1 Microprocesseurs.ppt
Cours 1 Microprocesseurs.pptCours 1 Microprocesseurs.ppt
Cours 1 Microprocesseurs.pptwafawafa52
 
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
 

Similaire à 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...
 

Plus de Yann Caron

Théorie des langages - TP - WellKnownText
Théorie des langages - TP  - WellKnownTextThéorie des langages - TP  - WellKnownText
Théorie des langages - TP - WellKnownTextYann 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 langagesYann 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 paradigmesYann 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 genYann 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'arbresYann Caron
 
Théorie des langages - 01 - Compilation
Théorie des langages - 01 - CompilationThéorie des langages - 01 - Compilation
Théorie des langages - 01 - CompilationYann Caron
 
Algea - 04 - conclusion
Algea - 04 - conclusionAlgea - 04 - conclusion
Algea - 04 - conclusionYann Caron
 
Algea - 03 - ennemis
Algea - 03 - ennemisAlgea - 03 - ennemis
Algea - 03 - ennemisYann Caron
 
Algea - 02 - gemmes
Algea - 02 - gemmesAlgea - 02 - gemmes
Algea - 02 - gemmesYann Caron
 
Algea - 01 - hero
Algea - 01 - heroAlgea - 01 - hero
Algea - 01 - heroYann Caron
 
ALGEA - 00 - introduction
ALGEA - 00 - introductionALGEA - 00 - introduction
ALGEA - 00 - introductionYann Caron
 
Programmation Android - Tp2 Travaux pratiques - Geomatique
Programmation Android - Tp2 Travaux pratiques - GeomatiqueProgrammation Android - Tp2 Travaux pratiques - Geomatique
Programmation Android - Tp2 Travaux pratiques - GeomatiqueYann Caron
 
Programmation Android - 10 - Spatialite
Programmation Android - 10 - SpatialiteProgrammation Android - 10 - Spatialite
Programmation Android - 10 - SpatialiteYann Caron
 
Programmation Android - 09 - Web services
Programmation Android - 09 - Web servicesProgrammation Android - 09 - Web services
Programmation Android - 09 - Web servicesYann Caron
 
Programmation Android - 08 - Android debug bridge
Programmation Android - 08 - Android debug bridgeProgrammation Android - 08 - Android debug bridge
Programmation Android - 08 - Android debug bridgeYann Caron
 
Programmation Android 07 - Techniques avancées
Programmation Android 07 - Techniques avancéesProgrammation Android 07 - Techniques avancées
Programmation Android 07 - Techniques avancéesYann Caron
 
Programmation Android - 06 - Publication
Programmation Android - 06 - PublicationProgrammation Android - 06 - Publication
Programmation Android - 06 - PublicationYann Caron
 
Programmation Android - 05 - Google map
Programmation Android - 05 - Google mapProgrammation Android - 05 - Google map
Programmation Android - 05 - Google mapYann Caron
 
Programmation Android - 04 - Databases
Programmation Android - 04 - DatabasesProgrammation Android - 04 - Databases
Programmation Android - 04 - DatabasesYann Caron
 
Programmation Android - 03 - IHM bases
Programmation Android - 03 - IHM basesProgrammation Android - 03 - IHM bases
Programmation Android - 03 - IHM basesYann Caron
 

Plus de 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
 

Dernier

BOW 2024 - 3-3 - Adaptation des bâtiments pour ruminants au changement clima...
BOW 2024 - 3-3 -  Adaptation des bâtiments pour ruminants au changement clima...BOW 2024 - 3-3 -  Adaptation des bâtiments pour ruminants au changement clima...
BOW 2024 - 3-3 - Adaptation des bâtiments pour ruminants au changement clima...idelewebmestre
 
BOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleur
BOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleurBOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleur
BOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleuridelewebmestre
 
Bow 2024 - Plein air à l'intérieur des bâtiments d'élevage de ruminants
Bow 2024 - Plein air à l'intérieur des bâtiments d'élevage de ruminantsBow 2024 - Plein air à l'intérieur des bâtiments d'élevage de ruminants
Bow 2024 - Plein air à l'intérieur des bâtiments d'élevage de ruminantsidelewebmestre
 
Support de cours La technologie WDM.pptx
Support de cours La technologie WDM.pptxSupport de cours La technologie WDM.pptx
Support de cours La technologie WDM.pptxdocteurgyneco1
 
BOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équine
BOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équineBOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équine
BOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équineidelewebmestre
 
Compersseur d'air a vis atlas copco avec huile
Compersseur d'air a vis atlas copco avec huileCompersseur d'air a vis atlas copco avec huile
Compersseur d'air a vis atlas copco avec huileMBouderbala
 
Agrivoltaïsme et filière ovine en Dordogne
Agrivoltaïsme et filière ovine en DordogneAgrivoltaïsme et filière ovine en Dordogne
Agrivoltaïsme et filière ovine en Dordogneidelewebmestre
 
BOW 24 - De la réflexion de groupe à l'immersion dans des bâtiments porcins
BOW 24 - De la réflexion de groupe à l'immersion dans des bâtiments porcinsBOW 24 - De la réflexion de groupe à l'immersion dans des bâtiments porcins
BOW 24 - De la réflexion de groupe à l'immersion dans des bâtiments porcinsidelewebmestre
 
BOW 2024 - Logement des veaux laitiers en plein air
BOW 2024 - Logement des veaux laitiers en plein airBOW 2024 - Logement des veaux laitiers en plein air
BOW 2024 - Logement des veaux laitiers en plein airidelewebmestre
 
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSKennel
 
BOW 2024 - 3-2 - Stress thermique impact vaches laitières
BOW 2024 - 3-2 - Stress thermique impact vaches laitièresBOW 2024 - 3-2 - Stress thermique impact vaches laitières
BOW 2024 - 3-2 - Stress thermique impact vaches laitièresidelewebmestre
 
BOW 2024 -3-9 - Matelas de logettes à eau refroidie VL
BOW 2024 -3-9 - Matelas de logettes à eau refroidie VLBOW 2024 -3-9 - Matelas de logettes à eau refroidie VL
BOW 2024 -3-9 - Matelas de logettes à eau refroidie VLidelewebmestre
 
BOW 2024 - 3 1 - Les infrastructures équestres et le changement climatique
BOW 2024 - 3 1 - Les infrastructures équestres et le changement climatiqueBOW 2024 - 3 1 - Les infrastructures équestres et le changement climatique
BOW 2024 - 3 1 - Les infrastructures équestres et le changement climatiqueidelewebmestre
 
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.pptCHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.pptbentaha1011
 
Chapitre 2 : fondations et analyses de données géotechniques
Chapitre 2 : fondations et analyses de données géotechniquesChapitre 2 : fondations et analyses de données géotechniques
Chapitre 2 : fondations et analyses de données géotechniquesangevaleryn
 
Accompagnement de l'agrivoltaïsme dans le département de la Nièvre
Accompagnement de l'agrivoltaïsme dans le département de la NièvreAccompagnement de l'agrivoltaïsme dans le département de la Nièvre
Accompagnement de l'agrivoltaïsme dans le département de la Nièvreidelewebmestre
 
BOW 2024 - L'enrichissement du milieu des chèvres laitières
BOW 2024 - L'enrichissement du milieu des chèvres laitièresBOW 2024 - L'enrichissement du milieu des chèvres laitières
BOW 2024 - L'enrichissement du milieu des chèvres laitièresidelewebmestre
 
BOW 2024 - Dedans/Dehors quand voir ne suffit pas
BOW 2024 - Dedans/Dehors quand voir ne suffit pasBOW 2024 - Dedans/Dehors quand voir ne suffit pas
BOW 2024 - Dedans/Dehors quand voir ne suffit pasidelewebmestre
 
Cadre réglementaire et développement de l'agrivoltaïsme en France
Cadre réglementaire et développement de l'agrivoltaïsme en FranceCadre réglementaire et développement de l'agrivoltaïsme en France
Cadre réglementaire et développement de l'agrivoltaïsme en Franceidelewebmestre
 

Dernier (20)

BOW 2024 - 3-3 - Adaptation des bâtiments pour ruminants au changement clima...
BOW 2024 - 3-3 -  Adaptation des bâtiments pour ruminants au changement clima...BOW 2024 - 3-3 -  Adaptation des bâtiments pour ruminants au changement clima...
BOW 2024 - 3-3 - Adaptation des bâtiments pour ruminants au changement clima...
 
BOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleur
BOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleurBOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleur
BOW 2024 - 3-5 - Des solutions numériques pour se préparer aux pics de chaleur
 
Bow 2024 - Plein air à l'intérieur des bâtiments d'élevage de ruminants
Bow 2024 - Plein air à l'intérieur des bâtiments d'élevage de ruminantsBow 2024 - Plein air à l'intérieur des bâtiments d'élevage de ruminants
Bow 2024 - Plein air à l'intérieur des bâtiments d'élevage de ruminants
 
Support de cours La technologie WDM.pptx
Support de cours La technologie WDM.pptxSupport de cours La technologie WDM.pptx
Support de cours La technologie WDM.pptx
 
BOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équine
BOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équineBOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équine
BOW 2024 - L'écurie ouverte : un concept inspirant pour la filière équine
 
Compersseur d'air a vis atlas copco avec huile
Compersseur d'air a vis atlas copco avec huileCompersseur d'air a vis atlas copco avec huile
Compersseur d'air a vis atlas copco avec huile
 
Agrivoltaïsme et filière ovine en Dordogne
Agrivoltaïsme et filière ovine en DordogneAgrivoltaïsme et filière ovine en Dordogne
Agrivoltaïsme et filière ovine en Dordogne
 
BOW 24 - De la réflexion de groupe à l'immersion dans des bâtiments porcins
BOW 24 - De la réflexion de groupe à l'immersion dans des bâtiments porcinsBOW 24 - De la réflexion de groupe à l'immersion dans des bâtiments porcins
BOW 24 - De la réflexion de groupe à l'immersion dans des bâtiments porcins
 
BOW 2024 - Logement des veaux laitiers en plein air
BOW 2024 - Logement des veaux laitiers en plein airBOW 2024 - Logement des veaux laitiers en plein air
BOW 2024 - Logement des veaux laitiers en plein air
 
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdfSciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
SciencesPo_Aix_InnovationPédagogique_Atelier_APC.pdf
 
BOW 2024 - 3-2 - Stress thermique impact vaches laitières
BOW 2024 - 3-2 - Stress thermique impact vaches laitièresBOW 2024 - 3-2 - Stress thermique impact vaches laitières
BOW 2024 - 3-2 - Stress thermique impact vaches laitières
 
BOW 2024 -3-9 - Matelas de logettes à eau refroidie VL
BOW 2024 -3-9 - Matelas de logettes à eau refroidie VLBOW 2024 -3-9 - Matelas de logettes à eau refroidie VL
BOW 2024 -3-9 - Matelas de logettes à eau refroidie VL
 
BOW 2024 - 3 1 - Les infrastructures équestres et le changement climatique
BOW 2024 - 3 1 - Les infrastructures équestres et le changement climatiqueBOW 2024 - 3 1 - Les infrastructures équestres et le changement climatique
BOW 2024 - 3 1 - Les infrastructures équestres et le changement climatique
 
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.pptCHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
CHAPITRE 2 VARIABLE ALEATOIRE probabilité.ppt
 
Chapitre 2 : fondations et analyses de données géotechniques
Chapitre 2 : fondations et analyses de données géotechniquesChapitre 2 : fondations et analyses de données géotechniques
Chapitre 2 : fondations et analyses de données géotechniques
 
Accompagnement de l'agrivoltaïsme dans le département de la Nièvre
Accompagnement de l'agrivoltaïsme dans le département de la NièvreAccompagnement de l'agrivoltaïsme dans le département de la Nièvre
Accompagnement de l'agrivoltaïsme dans le département de la Nièvre
 
BOW 2024 - L'enrichissement du milieu des chèvres laitières
BOW 2024 - L'enrichissement du milieu des chèvres laitièresBOW 2024 - L'enrichissement du milieu des chèvres laitières
BOW 2024 - L'enrichissement du milieu des chèvres laitières
 
BOW 2024 - Dedans/Dehors quand voir ne suffit pas
BOW 2024 - Dedans/Dehors quand voir ne suffit pasBOW 2024 - Dedans/Dehors quand voir ne suffit pas
BOW 2024 - Dedans/Dehors quand voir ne suffit pas
 
Note agro-climatique n°2 - 17 Avril 2024
Note agro-climatique n°2 - 17 Avril 2024Note agro-climatique n°2 - 17 Avril 2024
Note agro-climatique n°2 - 17 Avril 2024
 
Cadre réglementaire et développement de l'agrivoltaïsme en France
Cadre réglementaire et développement de l'agrivoltaïsme en FranceCadre réglementaire et développement de l'agrivoltaïsme en France
Cadre réglementaire et développement de l'agrivoltaïsme en France
 

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