Une version numérique de ce texte peut être téléchargée librement à partir du s
Une version numérique de ce texte peut être téléchargée librement à partir du site : http://www.ulg.ac.be/cifen/inforef/swi Quelques pages de cet ouvrage sont adaptées de : How to think like a computer scientist de Allen B. Downey, Jeffrey Elkner & Chris Meyers disponible sur : http://thinkpython.com ou : http://www.openbookproject.net/thinkCSpy Copyright (C) 2000-2008 Gérard Swinnen L'ouvrage qui suit est distribué suivant les termes de la Licence de Documentation Libre GNU (GNU Free Documentation License, version 1.1) de la Free Software Foundation. Cela signifie que vous pouvez copier, modifier et redistribuer ces pages tout à fait librement, pour autant que vous res- pectiez un certain nombre de règles qui sont précisées dans cette licence, dont le texte complet peut être consulté dans l'annexe intitulée « GNU Free Documentation licence », page 365. Pour l'essentiel, sachez que vous ne pouvez pas vous approprier ce texte pour le redistribuer en- suite (modifié ou non) en définissant vous-même d'autres droits de copie. Le document que vous redistribuez, modifié ou non, doit obligatoirement inclure intégralement le texte de la licence ci- tée ci-dessus, le présent avis, la préface qui suit, ainsi que la section preface du texte original amé- ricain (voir annexes). L'accès à ces notes doit rester libre pour tout le monde. Vous êtes autorisé à demander une contribution financière à ceux à qui vous redistribuez ces notes, mais la somme demandée ne peut concerner que les frais de reproduction. Vous ne pouvez pas redistribuer ces notes en exigeant pour vous-même des droits d'auteur, ni limiter les droits de reproduction des copies que vous distribuez. La diffusion commerciale de ce texte en librairie, sous la forme clas- sique d'un manuel imprimé, est réservée exclusivement à la maison d'édition Eyrolles (Paris). La couverture Choisie délibérément hors propos, l'illustration de couverture est un dessin réalisé par l'auteur à la mine de graphite sur papier Canson en 1987, d'après une photographie ancienne. Il représente le yacht de course de 106 tonnes Valdora participant à une régate dans la rade de Cowes en 1923. Construit vingt ans plus tôt, et d'abord gréé en yawl, Valdora remporta plusieurs trophées avant d'être re- gréé en ketch en 1912 avec la voilure de 516 m² que l'on voit sur le dessin. Ce superbe voilier, très estimé par ses équipages pour son bon comportement à la mer, a navigué pendant près d'un demi-siècle. Grace Hopper, inventeur du compilateur : « Pour moi, la programmation est plus qu'un art appliqué important. C'est aussi une ambitieuse quête menée dans les tréfonds de la connaissance. » À Maximilien, Élise, Lucille, Augustin et Alexane. Préface En tant que professeur ayant pratiqué l’enseignement de la programmation en parallèle avec d’autres disciplines, nous croyons pouvoir affirmer qu’il s’agit là d’une forme d’apprentissage ex- trêmement enrichissante pour la formation intellectuelle d’un jeune, et dont la valeur formative est au moins égale, sinon supérieure, à celle de branches plus classiques telles que le latin. Excellente idée donc, que celle de proposer cet apprentissage dans certaines filières, y compris de l’enseignement secondaire. Comprenons-nous bien : il ne s’agit pas de former trop précocement de futurs programmeurs professionnels. Nous sommes simplement convaincus que l’apprentis- sage de la programmation a sa place dans la formation générale des jeunes (ou au moins d’une partie d’entre eux), car c’est une extraordinaire école de logique, de rigueur, et même de courage. À l'origine, le présent ouvrage a été rédigé à l'intention des élèves qui suivent le cours Program- mation et langages de l'option Sciences & informatique au 3e degré de transition de l'enseignement secondaire belge. Il nous a semblé par la suite que ce cours pouvait également très bien convenir à toute personne n'ayant encore jamais programmé, mais souhaitant s'initier à cette discipline en autodidacte. Nous y proposons une démarche d'apprentissage non linéaire qui est très certainement criti- quable. Nous sommes conscients qu'elle apparaîtra un peu chaotique aux yeux de certains pu- ristes, mais nous l'avons voulue ainsi parce que nous sommes convaincus qu'il existe de nom- breuses manières d'apprendre (pas seulement la programmation, d'ailleurs), et qu'il faut accepter d'emblée ce fait établi que des individus différents n'assimilent pas les mêmes concepts dans le même ordre. Nous avons donc cherché avant tout à susciter l'intérêt et à ouvrir un maximum de portes, en nous efforçant tout de même de respecter les principes directeurs suivants : • L'apprentissage que nous visons se veut généraliste : nous souhaitons mettre en évidence les invariants de la programmation et de l'informatique, sans nous laisser entraîner vers une spé- cialisation quelconque, ni supposer que le lecteur dispose de capacités intellectuelles hors du commun. • Les outils utilisés au cours de l'apprentissage doivent être modernes et performants, mais il faut aussi que le lecteur puisse se les procurer en toute légalité à très bas prix pour son usage personnel. Notre texte s'adresse en effet en priorité à des étudiants, et toute notre démarche d'apprentissage vise à leur donner la possibilité de mettre en chantier le plus tôt possible des réalisations personnelles qu'il pourront développer et exploiter à leur guise. • Nous avons pris le parti d'aborder très tôt la programmation d'une interface graphique, avant même d'avoir présenté l'ensemble des structures de données disponibles, parce que cette pro- grammation présente des défis qui apparaissent plus concrets aux yeux d'un programmeur dé- butant. D'autre part, nous observons que les jeunes qui arrivent aujourd'hui dans nos classes « baignent » déjà dans une culture informatique à base de fenêtres et autres objets graphiques interactifs. S'ils choisissent d'apprendre la programmation, ils sont forcément impatients de créer par eux-mêmes des applications (peut-être très simples) où l'aspect graphique est déjà bien présent. Nous avons donc choisi cette approche un peu inhabituelle afin de permettre au lecteur de se lancer très tôt dans de petits projets personnels attrayants, par lesquels ils puisse se sentir valorisé. En revanche, nous laisserons délibérément de côté les environnements de 6 Préface programmation sophistiqués qui écrivent automatiquement de nombreuses lignes de code, parce que nous ne voulons pas non plus masquer la complexité sous-jacente. Certains nous reprocheront que notre démarche n'est pas suffisamment centrée sur l'algorith- mique pure et dure. Nous pensons que celle-ci est moins primordiale que par le passé. Il semble en effet que l'apprentissage de la programmation moderne par objets nécessite plutôt une mise en contact aussi précoce que possible de l'apprenant avec des objets et des bibliothèques de classes préexistants. Ainsi il apprend très tôt à raisonner en termes d'interactions entre objets, plutôt qu'en termes de procédures, et cela l'autorise assez vite à tirer profit de concepts avancés, tels que l'héritage et le polymorphisme. Nous avons par ailleurs accordé une place assez importante à la manipulation de différents types de structures de données, car nous estimons que c'est la réflexion sur les données qui doit rester la colonne vertébrale de tout développement logiciel. Choix d'un premier langage de programmation Il existe un très grand nombre de langages de programmation, chacun avec ses avantages et ses inconvénients. Il faut bien en choisir un. Lorsque nous avons commencé à réfléchir à cette ques- tion, durant notre préparation d'un curriculum pour la nouvelle option Sciences & Informatique, nous avions personnellement accumulé une assez longue expérience de la programmation sous Visual Basic (Microsoft) et sous Clarion (Topspeed). Nous avions également expérimenté quelque peu sous Delphi (Borland). Il était donc naturel que nous pensions d'abord exploiter l'un ou l'autre de ces langages. Si nous souhaitions les utiliser comme outils de base pour un apprentissage général de la programmation, ces langages présentaient toutefois deux gros inconvénients : • Ils sont liés à des environnements de programmation (c'est-à-dire des logiciels) propriétaires. Cela signifiait donc, non seulement que l'institution scolaire désireuse de les utiliser devrait acheter une licence de ces logiciels pour chaque poste de travail (ce qui risquait de se révéler assez coûteux), mais surtout que les élèves souhaitant utiliser leurs compétences de program- mation ailleurs qu'à l'école seraient implicitement forcés d'en acquérir eux aussi des licences, ce que nous ne pouvions pas accepter. • Ce sont des langages spécifiquement liés au seul système d'exploitation Windows. Ils ne sont pas « portables » sur d'autres systèmes (Unix, MacOS, etc.). Cela ne cadrait pas avec notre projet pédagogique qui ambitionne d'inculquer une formation générale (et donc diversifiée) dans la- quelle les invariants de l'informatique seraient autant que possible mis en évidence. Nous avons alors décidé d'examiner l'offre alternative, c'est-à-dire celle qui est proposée gratuite- ment dans la mouvance de l'informatique libre1. Ce que nous avons trouvé nous a enthousiasmés : non seulement il existe dans le monde de l'Open Source des interpréteurs et des compilateurs gra- tuits pour toute une série de langages, mais surtout ces langages sont modernes, performants, portables (c'est-à-dire utilisables sur différents systèmes d'exploitation tels que Windows, Linux, MacOS ...), et fort bien documentés. Le langage dominant y est sans conteste C/C++. Ce langage s'impose comme une référence absolue, et tout informaticien sérieux doit s'y frotter tôt ou tard. Il est malheureusement très rébarbatif et compliqué, trop proche de la machine. Sa syntaxe est peu lisible et uploads/Litterature/ apprendre-python.pdf
Documents similaires










-
50
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Oct 01, 2021
- Catégorie Literature / Litté...
- Langue French
- Taille du fichier 4.8353MB