Conférence d introduction à la programmation et aux langages de programmation. C. Dubois



Documents pareils
Évaluation et implémentation des langages

Éléments de programmation et introduction à Java

Le génie logiciel. maintenance de logiciels.

Les Langages Informatiques

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Introduction aux Bases de Données Relationnelles Conclusion - 1

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Cours d Algorithmique et de Langage C v 3.0

Objets et Programmation. origine des langages orientés-objet

IFT2255 : Génie logiciel

Java 1.5 : principales nouveautés

Logiciel Libre Cours 2 Fondements: Programmation

Toute personne souhaitant maîtriser les techniques liées à la conception de produits multimédia et à la création de sites Web.

Devenez un véritable développeur web en 3 mois!

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

M Études et développement informatique

Programmation Orientée Objet

Cours No 3 : Identificateurs, Fonctions, Premières Structures de contrôle.

Cours 1 : La compilation

Générer du code à partir d une description de haut niveau

Machines virtuelles Cours 1 : Introduction

Programmation. fonctionnelle, impérative, logique et orientée objet

Cours de Programmation 2

Architectures web/bases de données

Préparation à l examen EFA en Macro

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Sommaire. Systèmes d Exploitation Intégration Sage 100 Sage CRM Disponibilité Client Bases de données... 3

ALGORITHMIQUE ET PROGRAMMATION En C

Rapport de stage. Développement d un logiciel de vidéoconférence : Enjeux 3. Guillaume DOTT 2009

Anne Tasso. Java. Le livre de. premier langage. 10 e édition. Avec 109 exercices corrigés. Groupe Eyrolles, , ISBN :

10. Base de données et Web. OlivierCuré

Traduction des Langages : Le Compilateur Micro Java

Malgré son aspect spartiate, Freeplane offre de nombreuses fonctionnalités en particulier dans le domaine de la diffusion des cartes sur le Web.

1 L évolution de l informatique

4. SERVICES WEB REST 46

CQP Développeur Nouvelles Technologies (DNT)

UE Programmation Impérative Licence 2ème Année

Chapitre VI- La validation de la composition.

M Études et développement informatique

MANAGEMENT DES SERVICES INFORMATIQUES

Programmation C. Apprendre à développer des programmes simples dans le langage C

Logiciel Libre Cours 3 Fondements: Génie Logiciel

PostgreSQL, le cœur d un système critique

INFORMATIQUE & WEB. PARCOURS CERTIFICAT PROFESSIONNEL Programmation de sites Web. 1 an 7 MODULES. Code du diplôme : CP09

Studio. HERITIER Emmanuelle PERSYN Elodie. SCHMUTZ Amandine SCHWEITZER Guillaume

Systèmes et traitement parallèles

Annexe : La Programmation Informatique

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN ING

Programmation d'agents intelligents Vers une refonte des fils de raisonnement. Stage de fin d'études Master IAD 2006

Projet de développement. Introduction à Eclipse. Application à votre projet. Philippe Collet. Organisation. Cours 1 : principes généraux - svn

Génie Logiciel avec Ada. 4 février 2013

IFT785 Approches Orientées Objets. FINAL Été Remise : Jeudi 19 août 2002 à 9h00 am

Cursus Sage ERP X3 Outils & Développement. Le parcours pédagogique Sage ERP X3 Outils et Développement

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

Vérifier la qualité de vos applications logicielle de manière continue

Catalogue des Formations

Introduction au Génie Logiciel

Durée de L épreuve : 2 heures. Barème : Exercice n 4 : 1 ) 1 point 2 ) 2 points 3 ) 1 point

MF-Test. Les tests de non-régression de vos applications mainframe

M Études et développement null informatique. R i. Appellations. Analyste cogniticien / cogniticienne informatique

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

1 Description générale de VISFIELD

Hiérarchie matériel dans le monde informatique. Architecture d ordinateur : introduction. Hiérarchie matériel dans le monde informatique

Plan du cours Cours théoriques. 29 septembre 2014

Programmation en Java IUT GEII (MC-II1) 1

Extrait des Exploitations Pédagogiques

length : A N add : Z Z Z (n 1, n 2 ) n 1 + n 2

UML (Diagramme de classes) Unified Modeling Language

Cours de Java. Sciences-U Lyon. Java - Introduction Java - Fondamentaux Java Avancé.

GenDbg : un débogueur générique. Didier Eymery Jean-Marie Borello Jean-Marie Fraygefond Odile Eymery Philippe Bion

ANNEXES. Evaluation de la formation à Polytech Lille Département GIS. Enseignements les plus utiles. Enseignements à renforcer

LANGAGUE JAVA. Public Développeurs souhaitant étendre leur panel de langages de programmation

Expert technique J2EE

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

Industrialiser la chaîne complète de fabrication 1ère partie - Les bénéfices de la solution logicielle IBM VisualAge Pacbase / Rational

Langage de scripts : historique et définition

D une part, elles ne peuvent faire table rase de la richesse contenue dans leur système d information.

BES WEBDEVELOPER ACTIVITÉ RÔLE

EP60.92 Projet d application pluridisciplinaire La chasse aux trésors

Ingénieur Développement Nouvelles Technologies

Informatique industrielle A Systèmes temps-réel J.F.Peyre. Partie I : Introduction

Présentation du module Base de données spatio-temporelles

Optimisation de logiciels de modélisation sur centre de calcul

RESUME DESCRIPTIF DE LA CERTIFICATION (FICHE OPERATIONNELLE METIERS)

JACi400 Développement JACi400 Déploiement

Quatrième partie IV. Test. Test 15 février / 71

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

programmation S initier à la la Avec des exemples en C, C++, C#, Java et PHP Avec des exemples en C, C++, C#, Java et PHP Claude Delannoy

Programme et contenus Licence d'informatique de Lille, parcours MIAGE, en alternance ou en formation continue (13:40)

ORIENTATIONS POUR LA CLASSE DE TROISIÈME

Algorithme. Table des matières

Génie Logiciel. Rappels. C. Crochepeyre Génie Logiciel Rappels 1

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Chapitre I Notions de base et outils de travail

LICENCE PROFESSIONNELLE SYSTEMES INFORMATIQUES & LOGICIELS

Classes et Objets en Ocaml.

Conception. Génie Logiciel. Renaud Marlet. LaBRI / INRIA (d'après A.-M. Hugues) màj 17/04/2007

TP1 : Initiation à Java et Eclipse

Service de covoiturage nouvelle-génération

Transcription:

Conférence d introduction à la programmation et aux langages de programmation C. Dubois

Pl an - Pro g ram m ati o n et D év el o p p em en t d e l o g i ci el - L es l an g ag es (u n p eti t h i sto ri q u e) - Pro g ram m ati o n f o n cti o n n el l e - Pro g ram m ati o n i m p érati v e - Pro g ram m ati o n o b j ets - Pro g ram m ati o n l o g i q u e

Pro g ram m ati o n et D év el o p p em en t d e l o g i ci el

Qu est-ce que la programmation? Description d un calcul (traitement) dans un langage compréhensible par la machine (langage de programmation) Une étape du cycle de vie du logiciel

cahier des charges validation externe conception globale test d intégration conception détaillée tests unitaires programmation

cahier des charges validation externe spécification abstraite test d intégration tests unitaires raffinements successifs (preuve) programme

Un langage de programmation doit aider à écrire des programmes de bonne qualité

Programme de Bonne Qualité? correct robuste lisible, bien documenté facile à modifier, extensible

Autres critères efficacité portabilité intégrité réutilisabilité ergonomie, utilisation et apprentissage => souvent nécessité de compromis

programmation structurée types mécanisme d exceptions généricité, polymorphisme surcharge

Programmation à petite échelle Programmation à grande échelle pour maintenir de grands programmes : structure et organisation

décomposer un grand programme en morceaux (modules) connectés entre eux par des interfaces bien définies mais aussi indépendants que possible

module = ensemble de ressources (données, types, opérations) liées sémantiquement interface = mode d emploi du module interface partie publique corps partie secrète principe du masquage des informations

Pourquoi ce principe? C M D

L an g ag es d e p ro g ram m ati o n

Les fonctions du langage (d'après G. Berry, http://www.college-defrance.fr/default/en/all/inn_tec2007/cours_n3_les_langages_de_progr. htm) Un outil pour écrire des programmes par des hommes ou des programmes pour la machine ou les autres hommes à différents niveaux d'abstraction Le support d'interaction avec la pensée styles distincts (impératif, fonctionnel, logique, temporel, etc...) Le support de guerres de religions On a toujours un style de prédilection

«l histoire» montre un effort continu d abstraction => échapper aux particularismes des machines => utiliser des concepts de haut niveau

Les langages de haut niveau sont caractérisés par des concepts tels que : valeurs, types, expressions, variables, instructions, structures de contrôle liaison, portée, déclaration fonctions, procédures, paramètres encapsulation, modules, objets concurrence, tâches, communication

Les concepts sont assemblés de différentes façons différents paradigmes de langages de programmation Paradigmes impératif concurrent objets fonctionnel logique Concepts principaux variables, procédures tâche/processus, communication objets, méthodes, héritage fonctions prédicats

1950 1960 Algol60 Fortran Cobol Lisp 1970 Smalltalk 1980 C++ 1990 Java simula Ada95 Algol68 Pascal Ada83 PL/I C SML Per l Miranda Haskell Prolog PH P Constraint 2000 orientés objets impératifs et concurrents fonctionnels logiques

1950 : Invention de l'assembleur (Cambridge) Avant, la programmation s'effectuait directement en binaire. 1951 : Invention du premier compilateur A0 par Grace Murray Hopper qui permet de générer un programme binaire à partir d'un code source.

Fortran (1958) : notation symbolique des variables, expressions arithmétiques COMPILATEUR Algol (1960) passage de paramètres structures de données plus riches, types =========> Pascal (1970) C Ada (1980)

LISP (1958) manipulation symbolique récursivité, gestion automatique de la mémoire interactivité ========> nombreux dialectes (Scheme) BASES THEORIQUES DE LA PROGRAMMATION (fin 60-début 70) sémantique des langages, systèmes de preuve (λ-calcul, logique)

Prolog (72) fondé sur la logique des prédicats calculer avec des relations exécution = démonstration ==========> contraintes (90) ML (langage de commande pour un démontrateur de théorèmes 78) système de types très puissant, inférence de types ========> Caml (84, ENS/INRIA)

s appuie sur C++, mais «nettoyé» Modula2 (79) modules C++ (86) C sous ensemble de C++ Eiffel amène la notion de contrat Java (95)

PHP (95) langage de scripts multi-plateformes pages HTML dynamiques et interactives JavaScript (95) insertion de code dans les pages HTML C# (2000) programmation internet plateforme.net

Pourquoi tant de langages? Beaucoup d'aspects à traiter ensemble données, actions = programming in the small architecture = programming in the large comment réduire et détecter les bugs? gestion de la mémoire Beaucoup d'innovations successives fonctionnel, polymorphisme, modules, objets, parallélisme,... Enormément de compromis possibles plusieurs grandes classes et beaucoup de dialectes Mais, heureusement, des théories solides automates, grammaires, lambda-calcul, logique

Pour finir (avec le sourire) - Plus de 2500 langages ont été référencés en 2003 (en 67, 120 avec 15 utilisés seulement) Langages délirants et exotiques (exemple : le langage cow «moo») - Une chanson à boire (99 bottles of beer) dont le texte a été écrit à l aide de plus de 1120 langages de programmation (http://99-bottles-of-beer.ls-la.net)

Lyrics of the song 99 Bottles of Beer 99 bottles of beer on the wall, 99 bottles of beer. Take one down and pass it around, 98 bottles of beer on the wall. 98 bottles of beer on the wall, 98 bottles of beer. Take one down and pass it around, 97 bottles of beer on the wall.... 1 bottle of beer on the wall, 1 bottle of beer.take one down and pass it around, no more bottles of beer on the wall. No more bottles of beer on the wall, no more bottles of beer. Go to the store and buy some more, 99 bottles of beer on the wall

Pro g ram m ati o n f o n cti o n n el l e L i sp, Sch em e, C am l, SM L, M i ran d a, H ask el l etc

programme = ensemble de définitions de fonctions résultat = application d une fonction à un jeu particulier de données composant de base : la fonction opération de base : l application notion de fonction : celle des maths définie par abstraction let f(x)=e application f(a) ==> e[x/a] (substitution) fonction : citoyen de première classe paramètre ou argument corps

Pro g ram m ati o n i m p érati v e Pascal, A d a, C etc

programme = suite d instructions qui font évoluer l état mémoire le résultat est dans l état final mémoire = séquence de «locations» (cellules) location > adresse, valeur 1 2 3 4 2 5 c est l instruction d affectation qui fait évoluer la mémoire x = x + y 1 2 3 4 7 5 n @x =!x +!y n

Instruction = ordre donné à la machine affectation primitives d entrées/sorties séquence instruction conditionnelle boucle appel de sous-programme héritées de la structure des ordinateurs contrôle

Pro g ram m ati o n o b j ets C ++, Jav a E i f f el, Sm al l tal k O cam l etc

programme = collection d objets qui communiquent entre eux par message le résultat = un message envoyé à un objet particulier objet = données + attributs, variables d instance opérations (sur ces données) méthodes généralement, les variables d instance sont cachées (encapsulées) message O 2 #m 2 (O 2 objet, m 2 méthode de l objet O 2 )

exemple : un objet rectangle variables d instances : longueur, largeur, point inférieur gauche méthodes : get_longueur, get_largeur, sommet_xx, déplacer, étirer, allonger

Héritage Créer une nouvelle classe en enrichissant, en spécialisant une classe existante L enrichissement peut porter sur : données : on ajoute de nouvelles variables d instances méthodes : on ajoute de nouvelles méthodes on spécialise des méthodes existantes

classe A m 1 m 2 classe B m 3 héritage A tout objet de la classe B, on peut envoyer les messages m 1, m 2 et m 3

Pro g ram m ati o n l o g i q u e Pro l o g et ses d ial ectes l an g ag es à co n trai n tes

programme = des règles et des faits résultat = la ou les réponses à une requête Composants de base = prédicats (relations entre valeurs)

Exemple: somme (une relation entre 3 naturels) somme(x,y,z) Z est la somme des entiers X et Y somme(x,zero,x). un fait Si somme(x,succ(y),z) alors somme(succ(x),y,z). une règle Des exemples de requêtes somme(1,2,r) Z=3 somme(1,2,4) No

somme(1,y,4) Y=3 somme(x,y,4) X=0, Y=4 X=1, Y=3 X=2, Y=2 X=3, Y=1 X=4, Y=0