Cours 1.0I. Présentation de l'unité[+ Séquencement de l'unité] Ce premier cours de la séquence 1 = introduction ; le prochain rentre dans le vif du sujet ==> beaucoup plus dense. I.5. Objectifs - approche objet - solution en français à un problème (à découper en sous-problèmes) - langage Java et quelques bibliothèques - pas seulement fonctionner, aussi "bien" programmé - expérience pratique et opérationnelle - les objets d'abord, apprentissage incrémental (pas tout d'une notion) - polycopié = aide-mémoire, autre présentation (utile, mais pas la même progression pédagogique) - livre très pédagogique, non indispensable, couvre beaucoup plus de choses (3ème ou 4ème édition seulement, english is better). - td : cours relu, apporter notes de cours, ne pas attendre de correction/essayer, poser des questions, terminer seul les exercices et les essayer sur machine (meilleure préparation pour les contrôles car écrire un programme sur papier, mais différence essentielle : td=mieux vaut écrire faux que rien alors que contrôle, surtout qcm=mieux vaut rien écrire que faux) - tp : cours relu, apporter notes de cours et TD, ne pas regarder une solution, poser des questions, terminer seul les exercices, demander de l'aide, partager le clavier (première moitié l'un écrivain, l'autre relecteur, puis seconde moitié le contraire ; les deux sont autant responsables de chaque erreur, l'un parce-qu'il l'a tapée, l'autre parce-qu'il ne l'a pas signalée) Lire au moins les 19 premières pages du premier chapitre de ce long poly. II.2. Performances du matériel - mémoire RAM : 1Go (à8), environ 10ns (à70) ==> 10x plus lent, (+ cache, - multi-processeurs, + multi-accès ...) - disque dur : 1To (à2), environ 10ms ==> 1 million x plus lent (==> charger, traiter, sauvegarder) - même les SSD : 128Go (à512) sont 10000 x plus lents que la RAM [+ Description d'un ordinateur] II.3.2. Niveaux : machine (binaire, 0/1), assemblage (ex: 68k, macro), haut-niveau (X=Y+Z+1) II.3.3. Traducteurs (assembleur, compilateur, interpréteur) II.3.4. "Philosophies" : impératif ou déclaratif (rare), fonctionnel, script, structuré ou non (rare), Orienté Objet ou non (classique) II.3.5. Exemples : Java, C (17 à 15%). C++, Php, Python, C#, Visual Basic (8 à 5%). lisp/scheme, camL, prolog, shell, perl, ruby, javascript, tcl/tk (outils en électronique), objective-C (iPhone), pascal/delphi, ... II.3.6. Historique (C, C++, Java) II.3.6.b. C++ : 1983, ", C O.O., compatible ANSI-C, ISO-C++ 1998 puis 2003, mieux mais bas niveau existe toujours, compilé. II.3.6.c. Java : 1995, Sun MicroSystems, O.O., Java non OO = C++ non OO = C, pas de bas niveau - source compilé en bytecode, puis interprêté - avantages = indépendance matérielle, code très petit - inconvénients = lenteur (realtive, 20x, <2x, temps réel, militaire), JVM très grosse, lente à démarrer (pas un problème pour les serveurs) II.3.6.e. Les versions de SE : 1.0 .. 1.4.2 | 1.5 1.6 v7? (open source) - JRE = Java Runtime Environment (=JVM, utilisation seulement) ≠ ⊂ JDK = Java Development Kit (aussi développement) - nombre de classes = 200 (v1) à 3700 (v6) - non OO identique à C/C++ (mais C reste indispensable sur certains kits et pour certaines applications) - demandé dans les offres d'emploi (> C/C++, standard pour développements web=JEE) - Java et C ==> se mettre à C++ (3ème langage moins difficile que 2ème) - différence avec les maths ? - analogie culinaire : ingrédients, étapes, solutions multiples - plusieurs algorithmes pour résoudre le même problème ==> choix, coût : performance/mémoire/matériel/lisibilité II.4.3. Exemple de la multiplication (par un nombre à plusieurs chiffres) II.4.3.b. Algorithme "à la Russe" II.4.3.c. Avantages II.4.3.d. Optimisation II.4.3.f. Traductions (Lire pour les curieux)
|
Dernière mise à jour :