csi3525: concepts des languages de programmation

24
1 CSI3525: Concepts des Languages de Programmation Notes # 1: Preliminaires, Motivation et Historique

Upload: marlin

Post on 09-Jan-2016

25 views

Category:

Documents


0 download

DESCRIPTION

CSI3525: Concepts des Languages de Programmation. Notes # 1: Preliminaires, Motivation et Historique. Preliminaires I: Cours et Laboratoires. Cours: Lundi, 14h30-15h50, Colonel By Hall, B202 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: CSI3525:                                   Concepts des Languages de Programmation

1

CSI3525: Concepts des Languages de

Programmation

Notes # 1: Preliminaires, Motivation et

Historique

Page 2: CSI3525:                                   Concepts des Languages de Programmation

2

Preliminaires I: Cours et Laboratoires Cours:

– Lundi, 14h30-15h50, Colonel By Hall, B202– Jeudi, 16h00-17h20, Colonel By Hall, B202

Groupes de Discussion:– Lundi, 16h00-18h00, Vanier Hall, 469

Prealables: – CSI 2514– Deux Laboratoires de Language de programmation choisis

parmi CSI 2565 et (CSI 2571 ou CSI 2572 ou CSI 2573).

– CSI 2574– Ne peut etre combine avec CSI 2515 pour l ’obtention de

credits.

Page 3: CSI3525:                                   Concepts des Languages de Programmation

3

Preliminaires II: Professeur

Professeur: – Nathalie Japkowicz,

Office: MCD 325-C Phone: 562-5800 ext. 6693 e-mail: [email protected].

– Heures de Consultation: Jeudi 14h00-16h00 Il n ’y a pas d ’assistant pour ce cours.

Page 4: CSI3525:                                   Concepts des Languages de Programmation

4

Preliminaires III: Evaluation I

Projets ………………………………. 40%– 1 devoir ecrit– 3 exercices de programmation– Retard ==> -5% par jour ouvrable -2.5% par jour de fin de semaine .

ou jour ferie Examen Intra-Session ……………… 20% Examen Final ……………………….. 40% l ’EITI exige une note d ’un minimum de 50%

aux examens.

Page 5: CSI3525:                                   Concepts des Languages de Programmation

5

Preliminaires IV: Evaluation II

Calcul de la Note Finale Numerique:– Si (Intra-Session + Final) < 30– Alors Note_Numerique = (Intra-Session + Final)

*1.6– Sinon Note_Numerique = Intra-Session + Final +

Projets Calcul de la Note Finale Alphabetique:

– En fonction de l ’echelle en vigueur a l ’Universite

– NN 90 ==> A+– NN< 55 ==> Echec

Page 6: CSI3525:                                   Concepts des Languages de Programmation

6

Objectif du Cours L’etude de concepts de base communs a tous les languages

de programation:– Criteres d ’evaluation de ces languages.– Methodes d ’implementation.– Methodes de description syntaxique et semantique.

L’etude des differents paradigmes:– Programmation Imperative– Programmation Orientee Objets – Programmation Logique– Programmation Fonctionelle

L’etude de languages examplifiant ces paradigmes.

Page 7: CSI3525:                                   Concepts des Languages de Programmation

7

Pourquoi l’Etude des Languages de Programmation I? La capacite d’exprimer des idees d’informatiques

complexes est liee a une bonne connaissance des caracteristiques linguistiques de programmation.

Differentes taches informatiques demandent des caracteristiques linguistiques de programmation differentes (voir diapos # 9 & 10).

La connaissance des paradigmes de languages de programmation permet une acquisition plus aisee de nouveaux languages.

Page 8: CSI3525:                                   Concepts des Languages de Programmation

8

Pourquoi l’Etude des Languages de Programmation II? Une comprehension de la facon don’t les languages

sont implementes permet un meilleur usage de ces languages.

La connaissance de differents paradigmes de languages de programmation permet une creation plus aisee de nouveaux languages.

Avec une meilleure connaissance des languages de programmations, de meilleurs choix peuvent etre fait, ce qui peut eventuellement beneficier l ’ensemble du champ d’informatique.

Page 9: CSI3525:                                   Concepts des Languages de Programmation

9

Examples de Different Domaines de Programmation et de leurs Languages Associes I Applications Scientifiques --> Pas besoin de

structures des donnees ni d ’operations compliquees mais besoin de grande Efficacite --> FORTRAN, ALGOL60.

Applications pour Affaires --> Besoin de produire des rapport elabores et de traiter les nombres decimaux et les caracteres --> COBOL.

Intelligence Artificielle --> Besoin de manipuler les donnees symboliques plutot que numeriques et besoin d ’operations logiques --> LISP, PROLOG

Page 10: CSI3525:                                   Concepts des Languages de Programmation

10

Examples de Different Domaines de Programmation et de leurs Languages Associes II Programmation des Systemes --> Besoin d ’une

execution rapide et de facilites de bas niveau pour pouvoir programmer les engins externes --> PL/1, Extended ALGOL, C.

Languages pour Scriptes --> Besoin de mettres des commandes dans un fichier pour execution --> ksh, awk, tcl, Perl.

Languages Speciaux --> Languages pour besoins particuliers --> RPG, APT, GPSS.

Page 11: CSI3525:                                   Concepts des Languages de Programmation

11

Classification des Languages de Programmation I

Program m ationProcedurale

Ada, Pascal, C

Program m ationOrientee Objets

C++, Java

Program m ationConcurrente

Ada 95

LanguagesIm peratifs

Program m ationFonctionelle

LISP, SCHEME

Program m ationLogique

PROLOG

LanguagesDeclaratifs

Tous les Languagesde Program m ation

Languages Imperatifs: Languages incluant des moyens pour le programmeur d ’attribuer des valeurs a des locations en memoire.Languages Declaratifs: Languages pour lesquels le programmeurreflechit en terme de valeurs des fonctions et de relations entre entites diverses. Il n ’y a pas d ’attribution de valeurs aux variables.

Page 12: CSI3525:                                   Concepts des Languages de Programmation

12

Classification des Languages de Programmation II Programmation Procedurale: Le programme est

divises en blocs qui peuvent contenir leurs propres variables ainsi que d ’autres blocs.

Programmation Orientee Objet: Programmation qui supporte l ’interaction d ’objets. Un objet contient des donnees ainsi que des fonctions qui peuvent s ’appliquer a ces donnees.

Programmation Concurrente: Languages de programmation qui s ’appliquent a plusieurs CPU ’s qui operent en parallele. Les donnees peuvent etre partagees ou non.

Page 13: CSI3525:                                   Concepts des Languages de Programmation

13

Classification des Languages de Programmation III Programmation Fonctionnelle: Un programme est un

appel de fonction avec un certain nombre de parametres, qui eux-meme peuvent etre des appels d ’autres fonctions. Le programme renvoie donc un seul resultat, qui peut-etre assez complexe (example: une nouvelle fonction).

Programmation Logique: Un programme consiste en une serie d ’axiomes, de regles de deduction et en un theoreme a prouver. Le programme renvoie la valeur « vrai » si les axiomes supporte le theoreme. Il renvoie la valeur « fause » autrement.

Page 14: CSI3525:                                   Concepts des Languages de Programmation

14

Plan du Cours I Prealables: Connaissance du Prolog, du Pascal . .

ou C et du Java ou C++ Semaine 1: Preliminaires, Motivation et .

Historique. Semaine 2: Criteres d ’Evaluation des Langage, .

Conception et Evaluation des . Langages.

Semaine 3: Methodes de description syntaxique Semaine 4: Methodes de description .

semantique . Semaine 5/7: Langages Fonctionnels (Scheme, .

ML, SmallTalk); Revisions

Page 15: CSI3525:                                   Concepts des Languages de Programmation

15

Plan du Cours II

Semaine 8: Examen Intra-Session Semaine 8/13: Considerations Generales et . .

Languages Imperatifs: - Variables, Attachement .

Verification du Type et Etendue - Types de Donnees - Expressions, Allocation - Structures de Controle - Sous-Programme - Implementation des Sous- .

Programmes - Types Abstraits de Donnees

Page 16: CSI3525:                                   Concepts des Languages de Programmation

16

Historique I: Un Premier Language: Plankalkül Developpe en 1945 par Konrad Zuse en Allemagne mais

jamais implemente. Description publiee en 1972. Language assez complet avec des structures de donnees

bien avancees contenant des tableaux et des articles (records). Les articles peuvent utiliser la recursivite pour inclure d ’autres articles.

Il n ’y a pas de specification « Goto », mais il y a une specification iterative telle que la boucle « For » en Pascal.

Il y a des expressions mathematiques qui indiquent ce qui est vrai aux endroits ou elles apparaissent.

Page 17: CSI3525:                                   Concepts des Languages de Programmation

17

Historique II: Pseudo Codes Vers la fin des annees 1940 et le debut des annees 1950, il

n ’y avait pas de languages de programmation de haut niveau ni meme de code assembleur. Des languages de haut niveau ont donc ete inventes pour rendre le code plus lisible.

Short Code et Speedcoding, par example, etaient des languages interpretes et bien qu ’ils facilitaient le processus de programmation, ils etaient beaucoup plus lent que le code machine.

Les compilateur pour UNIVAC, A-0, A-1 et A-2 sont les premiers compilateurs qui etendaient le pseudo-code en code machine de la meme facon que des macros sont etendus en code assembleur.

Page 18: CSI3525:                                   Concepts des Languages de Programmation

18

Historique III: FORTRAN

FORTRAN 0 a ete cree en 1954 par l ’equipe de John Backus a IBM.

Il a ete suivi par FORTRAN I en 1956, FORTRAN II en 1958, FORTRAN IV entre 1960 et 1962, FORTRAN 77 en 1978 et FORTRANT 90 en 1992.

Au tout debut, FORTRAN a ete concu comme un prelude necessaire a la conception and traducteur pour l ’IBM 704. Neanmoins il a connu un grand succes.

L ’efficacite du FORTRAN est du au fait que les types et la location de chaque variable en memoire est fixee avant l ’execution.

FORTRAN a change a jamais la facon don’t les ordinateurs sont utilises.

Page 19: CSI3525:                                   Concepts des Languages de Programmation

19

Historique IV: LISP

Vers le milieu des annees 1950, il y a eu beaucoup d ’interet pour la discipline nouvelle d ’Intelligence Artificielle (IA).

Avec cet interet, s ’est developpee l ’idee que certaines methodes devaient etre inventes afin de permettre aux ordinateurs de traiter les donnees symboliques dans des liste chainees. Jusque la, l ’usage des ordinateurs etait reserve aux calculs sur donnees numeriques dans des tableaux.

LISP, developpe par l ’equipe de Jphm McCarthy et Marvin Minsky a MIT a partir de 1958, a domine l ’IA pendant longtemps mais est assez inefficace. De nos jours des versions de LISP sont compilees, ce qui permet une plus grande efficacite.

Page 20: CSI3525:                                   Concepts des Languages de Programmation

20

Historique V: ALGOL 60 L’ALGOL 60 a ete cree vers la fin des annees 1950 dans un

effort pour creer un language universel et machine-independent.

L ’ALGOL 60 inclut un certain nombre de nouvelles caracteristiques importantes:– Le concept de structures en bloc,– La possibilite de passer les parametres a un sous-

programme par valeur ou par nom,– La possibilite pour les sous-programmes d ’etre recursifs,– La possibilite de declarer les limites d ’un tableau

pendant l ’execution. Bien que l ’ALGOL 60 n ’ait pas realise le succes espere, il

est le pere de tous langages imperatifs.

Page 21: CSI3525:                                   Concepts des Languages de Programmation

21

Historique VI: COBOL Bien que le COBOL ait ete utilise plus que tous les

autres languages, il a eu peu d ’effet sur la plupart de ces languages.

L ’idee du COBOL etait de creer un langage commun pour les applications d ’affaires.

Ces caracteristiques sont l ’usage d ’autant d ’anglais que possible et l ’aise d ’usage meme au depend de son effectivite et puissance.

COBOL est puissant au niveau des donnees, mais ses procedures sont assez faibles. En particulier, COBOL ne permet pas les fonctions. Par contre il a ete le premier langage a inclure les structures de donnees hierarchiques et de permettre les noms de variables assez long pour etre significatif.

Page 22: CSI3525:                                   Concepts des Languages de Programmation

22

Historique VII: BASIC

BASIC a aussi connu un tres grand usage mais n ’a pas connu beaucoup de respect de la part de la communaute informatique.

Il a ete cree au debut des annees 1970 pour etudiants dans les arts liberaux.

C ’est le premier language qui a utilise l ’acces d ’un terminal a distance plutot que des cartes perforees.

Au depart, le BASIC etait tres proche du FORTRAN, avec quelque influence mineure de l ’ALGOL 60. Plus tard, il a evolue dans des directions diverses avec peu de standardization.

La plus grande critique du BASIC est que ses programmes sont ecrit avec peu de structure interne et sont donc difficile a lire et modifier.

Page 23: CSI3525:                                   Concepts des Languages de Programmation

23

Historique VIII: PL/1 Le PL/1 represente le premier essai a creer un langage

qui pourrait etre utilise dans un grand nombre de domaines. Neanmoins, la plupart des langages qui ont suivi se sont concentres sur un domaine particulier.

Le PL/1 a inclut ce qui etait considere comme les meilleures caracteristiques de l ’ALGOL 60 (recursivite et structure en bloc), du FORTRAN IV (compilation separee avec communication a travers des donnees globales) du COBOL 60 (structure des donnees, input/output, et possibilite de generation de rapports) ainsi que d ’autres caracteristiques nouvelles (e.g., les pointeurs).

Neanmoins, le langage est trop complexe et ses nouvelles caracteristiques, mal concues.

Page 24: CSI3525:                                   Concepts des Languages de Programmation

24

Historique IX: Autres langages

APL et SNOBOL: Langages Dynamiques SIMULA 67: l ’Abstraction des Donnees ALGOL 68: La Conception Orthogonale Pascal, C: les Descendants des ALGOLs Prolog: Programmation Basee sur la Logique Ada: Langage du Departement de la defence. Smalltalk: Programmation Orientee Objet C++: Combinaison de Langage Imperatif et Langage

Oriente Objet Java: Simplification du C++ et Programmation du

World-Wide Web