Informatique 1 1. Introduction Rev 1.55 Dr Pierre-André Mudry [email protected] Objectifs du jour Faire connaissance avec le cours P.-A. Mudry Buts et organisation Histoire de l'informatique Les systèmes informatiques Introduction à la programmation 1. Introduction 4 Apprendre à programmer Buts du cours INF1 P.-A. Mudry Réaliser des programmes Méthodologie Sécurité Élégance Algorithmes Java comme langage 1. Introduction 5 Organisation du cours TPs Projet Cours P.-A. Mudry 1. Introduction 6 Intervenants • Professeurs Dr Pierre-André Mudry [email protected] Dr Djano Kandaswamy • Assistant Christopher Métrailler ([email protected]) P.-A. Mudry 1. Introduction 7 Exemples d’anciens projets • Wurm Battle • Angry CuiCui • Jeux Lunar Lander, Braid, Guitar Hero, Mah-jong, backgammon • Simulation Voiture, avions, … P.-A. Mudry 1. Introduction 8 Supports de cours Transparents Labos Séries P.-A. Mudry 1. Introduction 9 Bibliographie succincte [1] C. Delannoy, Programmer en Java, 5ème édition, Eyrolles, 2007 [2] W. Savitch, Absolute Java, 4ème édition, Pearson, 2009 [3] R. & P. Liguori, Java pocket guide, O'Reilly, 2008 … P.-A. Mudry 1. Introduction 10 Ressources électroniques http://inf1.begincoding.net P.-A. Mudry Nouvelles Documentation Matériel cours Anciens examens 1. Introduction 11 Modes d’interaction Pendant, avant et après les cours Pendant les séances d'exercices Sur rendez-vous Par email [email protected] P.-A. Mudry 1. Introduction 12 Travaux pratiques (TP) P.-A. Mudry 2 heures chaque les semaines Salles info DR01/DR03 Pas de notes pour TPs, bonus Exercices + mini-projets 1. Introduction 13 Un cours pour qui ? Aucun prérequis ! P.-A. Mudry 1. Introduction 14 Complément cours informatique • 2 heures par semaine • Au début, optionnel • Ouvert à toutes les personnes intéressées • Lundi dès 16h15 P.-A. Mudry 1. Introduction 15 Evaluation 𝑠𝑠𝑠𝑠𝑚𝑚1 = min(13 𝑒𝑒𝑒𝑒𝑒𝑒𝑚𝑚𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖𝑖 + 2 � 𝑒𝑒𝑒𝑒𝑒𝑒𝑚𝑚𝑠𝑠𝑠𝑠𝑠𝑠 + 𝑏𝑏1 , 6) 𝑠𝑠𝑠𝑠𝑚𝑚1 + 𝑠𝑠𝑠𝑠𝑚𝑚2 𝑤𝑤𝑤𝑤𝑤𝑤𝑤 � 2 𝑠𝑠𝑠𝑠𝑚𝑚2 = min(13 𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝𝑝 + 2 � 𝑒𝑒𝑒𝑒𝑒𝑒𝑚𝑚𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓𝑓 + 𝑏𝑏2 , 6) P.-A. Mudry 1. Introduction 16 Objectifs du jour Faire connaissance avec le cours P.-A. Mudry Buts et organisation Histoire de l'informatique Les systèmes informatiques Introduction à la programmation 1. Introduction 17 L'informatique ? (Source Wiktionary) Informatique Domaine des concepts et autres technique employées pour le traitement automatique de l’information Définition P.-A. Mudry 1. Introduction 19 Exemple P.-A. Mudry 1. Introduction 20 Buts de l'informatique • Calcul scientifique • Gestion de l’information • Contrôle de processus P.-A. Mudry 1. Introduction 21 Méthodes de calcul Mécanique P.-A. Mudry Tube et diodes 1. Introduction Transistor 22 "Préhistoire" Logarithmes népériens 1614 Le boulier chinois 600 av. J-C. Règle à calcul ≈ 1620 P.-A. Mudry 1. Introduction Mécanique Tube et diodes Transistor 23 "Préhistoire" (2) 1623 Wilhelm Schickard 1642 Blaise Pascal 1694 Gotfried W. Leibniz Première machine à calculer mécanique La Pascaline, machine à calculer (additions), existant encore Machine permettant aussi les multiplications et les divisions Mécanique P.-A. Mudry 1. Introduction Tube et diodes Transistor 24 "Préhistoire" (3) FILM 1725 Basile Bouchon Inventeur du métier à tisser semi-automatique 1801 Joseph Marie Jacquard Révolutionnera l’industrie textile Mécanique P.-A. Mudry 1. Introduction Tube et diodes Transistor 25 La machine analytique FILM • Charles Babbage (1792 – 1891) • Machine jamais réalisée de son vivant (assemblée en 1991 à Londres). • Plan d’un ordinateur mécanique: périphériques d’entrée et de sortie, unité centrale et zones de stockage. Mécanique P.-A. Mudry 1. Introduction Tube et diodes Transistor 26 Les précurseurs • George Boole (1779-1848) Inventeur logique booléenne. • Ada Lovelace (1815-1852) Première programmeuse. • Alan Turing (1912-1954) Alan Turing Père de l’informatique moderne. Formalise l’algorithmique et le calcul avec la Machine de Turing. P.-A. Mudry 1. Introduction 28 Les précurseurs (2) • Claude Elwood Shannon (1916-2001) Père fondateur de la théorie de l’information (qui pose les bases de compression, par ex. MP3). P.-A. Mudry 1. Introduction 29 Cartes perforées • Stockage données • Recensement américain de 1890. • Cette technologie sera améliorée jusqu’à la fin de la deuxième guerre mondiale. Mécanique P.-A. Mudry 1. Introduction Tube et diodes Transistor 30 Tubes à vide • Le premier tube à vide (diode) est créé par John Ambrose Fleming (1849-1945) en 1904. Mécanique P.-A. Mudry 1. Introduction Tube et diodes Transistor 31 Tubes à vide : calculateurs (2) • Construit par les anglais pendant la première guerre mondiale. Colossus Mark 1 Arithmétique binaire, horloge, lecteurs de bande, opérateurs booléens, de sousprogrammes et d’imprimantes. Mécanique P.-A. Mudry 1. Introduction Tube et diodes Transistor 32 Tubes à vide : calculateurs Z3 • Konrad Zuse (1910-1995) en 1941. • Premier ordinateur programmable 2200 relais 5.3 Hz Mots de 22 bits. Mécanique P.-A. Mudry 1. Introduction Tube et diodes Transistor 33 ENIAC Electronic Numerical Integrator and Computer • Développé par P. Eckert et J.Mauchly, 1946 19’000 tubes 30 tonnes 72 m2 consommation de 140 kW (!) Mécanique P.-A. Mudry 1. Introduction Tube et diodes Transistor 34 Transistors • Premier transistor réalisé au Bell Labs, en 1947. • Pas cher, solide. Remplace les tubes rapidement. • Une des inventions majeure du 20ème siècle. Mécanique P.-A. Mudry 1. Introduction Tube et diodes Transistor 35 Circuits intégrés (LSI) • Premier microprocesseur: Intel ™ 4004 • Produit en 1971 (!) 2300 transistors MOS Technologie 10 microns CPU 4 bits 750 kHz Mécanique P.-A. Mudry 1. Introduction Tube et diodes Transistor 36 VLSI actuel • Intel™ Core i7, Skylake (5ème génération) Produit dès août 2015. 1.4 milliards transistors. Technologie 14 nm. 64 bits CPU. 4 cœurs physiques, 8 threads @ 4 GHz (pour i76700K). Mécanique P.-A. Mudry 1. Introduction Tube et diodes Transistor 37 Objectifs du jour Faire connaissance avec le cours P.-A. Mudry Buts et organisation Histoire de l'informatique Les systèmes informatiques Introduction à la programmation 1. Introduction 38 Ordinateur ? P.-A. Mudry 1. Introduction 40 Les éléments fondamentaux Processeur (CPU) Mémoire (RAM) P.-A. Mudry 1. Introduction 41 Objectifs du jour Faire connaissance avec le cours P.-A. Mudry Buts et organisation Histoire de l'informatique Les systèmes informatiques Introduction à la programmation 1. Introduction 42 Java • Langage assez récent (1996) • Langage le plus utilisé au monde http://www.tiobe.com/index.php/cont ent/paperinfo/tpci/index.html • Au cœur d’Android Summer school, projet fin P.-A. Mudry 1. Introduction 44 Modèle de l'automate • Modèle de base d'exécution • Le processeur Lit instruction dans la mémoire Exécute l’instruction Lit instruction dans la mémoire Exécute … P.-A. Mudry 1. Introduction 45 Programmer ? P.-A. Mudry 1. Introduction 46 Programme • Programme = liste d’instructions qui sera exécutée par le CPU. • Le CPU ne comprend que les instructions qui font partie de son langage: le langage machine (une suite de 1 et de 0). • Un langage machine par CPU. P.-A. Mudry 1. Introduction 47 Création et exécution d’un programme Compilation Assemblage P.-A. Mudry 1. Introduction 49 Langage de programmation (Java) • Le langage machine n'est jamais utilisé… 1010 1110 1010 1110 1111 0101 0110 0101 1110 0000 1011 0000 0101 1010 1101 1010 1010 1111 1110 1111 1001 0101 1001 0101 Pas pratique… • Il faut donc fournir des instructions dans un langage de plus haut niveau, plus faciles à appréhender par l’utilisateur. • Ces instructions font partie des langages de programmation (par ex. Java, C, C++,…). P.-A. Mudry 1. Introduction 50 Compilation • Un programme est en fait du texte : public main(String args[]) { String s1 = "Hello World"; System.out.println(s1); } • Ce texte, écrit dans un langage particulier (tel Java), est transformé en une suite de 1 et de 0. • Possède un niveau d'abstraction élevé. • Le compilateur est l’outil qui est utilisé pour faire cette transformation / traduction. P.-A. Mudry 1. Introduction 51 Assemblage • Pour certains langages, comme le C par exemple, cette traduction passe par un langage intermédiaire, l'assembleur. • Langage bas niveau, moins flexible. • Ce langage est spécifique à un processeur (x86, ARM…) P.-A. Mudry 1. Introduction move r1, r2; add r3, #45; jump rev; sub r3, #3; Exemple d'assembleur 52 Particularité Java • Habituellement, un programme compilé ne peut être exécuté que sur un type de processeur. • Java utilise une machine virtuelle qui crée une étape intermédiaire. • De ce fait, le code compilé en Java peut être exécuté sur toutes les machines. P.-A. Mudry 1. Introduction 53 Exécution d’un programme Java Langage Java Compilation Bytecode Interprétation Just-in-time compiler Compilation Langage machine P.-A. Mudry 1. Introduction 54