apprendre à programmer avec python 3

Livre: Apprendre à programmer avec python 3

Partagez sur:

Présentation du langage Python

Ce texte de Stéfane Fermigier date un peu, mais il reste d’actualité pour
l’essentiel. Il est extrait d’un article paru dans le magazine Programmez! en
décembre 1998. Il est également disponible sur http://www.linux-
center.org/articles/9812/python.html. Stéfane Fermigier est le co-fondateur de
l’AFUL (Association Francophone des Utilisateurs de Linux et des logiciels libres).

Python est un langage portable, dynamique, extensible, gratuit, qui permet (sans l’imposer) une approche modulaire et orientée objet de la programmation. Python est développé depuis 1989 par Guido van Rossum et de nombreux contributeurs bénévoles.

Caractéristiques du langage

Détaillons un peu les principales caractéristiques de Python, plus précisément, du langage et de ses deux implantations actuelles:

• Python est portable, non seulement sur les différentes variantes d’Unix, mais aussi sur les OS propriétaires : Mac OS, BeOS, NeXTStep, MS-DOS et les différentes variantes de Windows. Un nouveau compilateur, baptisé JPython, est écrit en Java et génère du bytecode Java.

• Python est gratuit, mais on peut l’utiliser sans restriction dans des projets commerciaux.

• Python convient aussi bien à des scripts d’une dizaine de lignes qu’à des projets com-
plexes de plusieurs dizaines de milliers de lignes.

• La syntaxe de Python est très simple et, combinée à des types de données évolués
(listes, dictionnaires…), conduit à des programmes à la fois très compacts et très lisibles. À
fonctionnalités égales, un programme Python (abondamment commenté et présenté se-
lon les canons standards) est souvent de 3 à 5 fois plus court qu’un programme C ou C++
(ou même Java) équivalent, ce qui représente en général un temps de développement de 5 à 10 fois plus court et une facilité de maintenance largement accrue.

• Python gère ses ressources (mémoire, descripteurs de fichiers…) sans intervention du programmeur, par un mécanisme de comptage de références (proche, mais différent, d’un
garbage collector).

• Il n’y a pas de pointeurs explicites en Python.
• Python est (optionnellement) multi-threadé.

• Python est orienté-objet. Il supporte l’héritage multiple et la surcharge des opéra-
teurs. Dans son modèle objets, et en reprenant la terminologie de C++, toutes les mé-
thodes sont virtuelles.

• Python intègre, comme Java ou les versions récentes de C++, un système d’exceptions, qui permettent de simplifier considérablement la gestion des erreurs.

• Python est dynamique (l’interpréteur peut évaluer des chaînes de caractères représen
tant des expressions ou des instructions Python), orthogonal (un petit nombre de concepts suffit à engendrer des constructions très riches), réflectif (il supporte la méta programmation, par exemple la capacité pour un objet de se rajouter ou de s’enlever des
attributs ou des méthodes, ou même de changer de classe en cours d’exécution) et intros-
pectif (un grand nombre d’outils de développement, comme le debugger ou le profiler, sont implantés en Python lui-même).

• Comme Scheme ou SmallTalk, Python est dynamiquement typé. Tout objet manipulable parle programmeur possède un type bien défini à l’exécution, qui n’a pas besoin d’être déclaré à l’avance.

• Python possède actuellement deux implémentations. L’une, interprétée, dans laquelle les programmes Python sont compilés en instructions portables, puis exécutés par une machine virtuelle (comme pour Java, avec une différence importante : Java étant statique-
ment typé, il est beaucoup plus facile d’accélérer l’exécution d’un programme Java que
d’un programme Python). L’autre génère directement du bytecode Java.

• Python est extensible : comme Tcl ou Guile, on peut facilement l’interfacer avec des bi-
bliothèques C existantes. On peut aussi s’en servir comme d’un langage d’extension pour
des systèmes logiciels complexes.

• La bibliothèque standard de Python, et les paquetages contribués, donnent accès à une
grande variété de services : chaînes de caractères et expressions régulières, services UNIX
standards (fichiers, pipes, signaux, sockets, threads…), protocoles Internet (Web, News,
FTP, CGI, HTML…), persistance et bases de données, interfaces graphiques.

• Python est un langage qui continue à évoluer, soutenu par une communauté d’utilisa
teurs enthousiastes et responsables, dont la plupart sont des supporters du logiciel libre.
Parallèlement à l’interpréteur principal, écrit en C et maintenu par le créateur du langage,
un deuxième interpréteur, écrit en Java, est en cours de développement.

• Enfin, Python est un langage de choix pour traiter le XML.
Pour le professeur qui souhaite utiliser cet ouvrage comme support de
cours Nous souhaitons avec ces notes ouvrir un maximum de portes. À notre niveau d’études, il nous paraît important de montrer que la programmation d’un ordinateur est un vaste univers de concepts et de méthodes, dans lequel chacun peut trouver son domaine de prédilection.

Nous ne pensons pas que tous nos étudiants doivent apprendre exactement les mêmes choses.
Nous voudrions plutôt qu’ils arrivent à développer chacun des compétences quelque peu différentes, qui leur permettent de se valoriser à leurs propres yeux ainsi qu’à ceux de leurs condisciples, et également d’apporter leur contribution spécifique lorsqu’on leur proposera de collaborer à des travaux d’envergure.

De toute manière, notre préoccupation primordiale doit être d’arriver à susciter l’intérêt, ce qui est loin d’être acquis d’avance pour un sujet aussi ardu que la programmation d’un ordinateur.

Nous ne voulons pas feindre de croire que nos jeunes élèves vont se passionner d’emblée pour la construction de beaux algorithmes.

Nous sommes plutôt convaincus qu’un certain intérêt ne pourra durablement s’installer qu’à partir du moment où ils commenceront à réaliser qu’ils sont devenus capables de développer un projet personnel original, dans une certaine autonomie.

Ce sont ces considérations qui nous ont amenés à développer une structure de cours que certains trouveront peut-être un peu chaotique.

Nous commençons par une série de chapitres très courts, qui expliquent sommairement ce qu’est l’activité de programmation et posent les quelques bases indispensables à la réalisation de petits programmes. Ceux-ci pourront faire appel très tôt à des bibliothèques d’objets existants, tels ceux de l’interface graphique tkinter par exemple, afin que ce concept d’objet devienne rapidement familier. Ils devront être suffisamment attrayants pour que leurs auteurs aient le sentiment d’avoir déjà acquis une certaine maîtrise.

Nous souhaiterions en effet que les élèves puissent déjà réaliser une petite application graphique dès la fin de leur première année d’études.

Très concrètement, cela signifie que nous pensons pouvoir explorer les huit premiers cha-
pitres de ces notes durant la première année de cours. Cela suppose que l’on aborde d’abord toute une série de concepts importants (types de données, variables, instructions de contrôle du flux, fonctions et boucles) d’une manière assez rapide, sans trop se préoccuper de ce que chaque concept soit parfaitement compris avant de passer au suivant, en essayant plutôt d’inculquer le goût de la recherche personnelle et de l’expérimentation. Il sera souvent plus efficace de ré-expliquer les notions et les mécanismes essentiels plus tard, en situation et dans des contextes variés.

Dans notre esprit, c’est surtout en seconde année que l’on cherchera à structurer les connaissances acquises, en les approfondissant. Les algorithmes seront davantage décortiqués et commentés. Les projets, cahiers des charges et méthodes d’analyse seront discutés en concertation. On exigera la tenue régulière d’un cahier de notes et la rédaction de rapports techniques pour certains travaux.

L’objectif ultime sera pour chaque élève de réaliser un projet de programmation original
d’une certaine importance. On s’efforcera donc de boucler l’étude théorique des concepts essentiels suffisamment tôt dans l’année scolaire, afin que chacun puisse disposer du temps nécessaire.

Il faut bien comprendre que les nombreuses informations fournies dans ces notes concernant une série de domaines particuliers (gestion des interfaces graphiques, des communications, des bases de données, etc.) sont facultatives. Ce sont seulement une série de suggestions et de repères que nous avons inclus pour aider les étudiants à choisir et à commencer leur projet personnel de fin d’études. Nous ne cherchons en aucune manière à former des spécialistes d’un certain langage ou d’un certain domaine technique : nous voulons simplement donner un petit aperçu des immenses possibilités qui s’offrent à celui qui se donne la peine d’acquérir une compétence de programmeur.

Versions du langage

Python continue à évoluer, mais cette évolution ne vise qu’à améliorer ou perfectionner le
produit. Il est donc très rare qu’il faille modifier les programmes afin de les adapter à une
nouvelle version qui serait devenue incompatible avec les précédentes. Les exemples de ce livre ont été réalisés les uns après les autres sur une période de temps relativement longue : certains ont été développés sous Python 1.5.2, puis d’autres sous Python 1.6, Python 2.0, 2.1, 2.2, 2.3, 2.4, etc. Ils n’ont guère nécessité de modifications avant l’apparition de Python 3.

Cette nouvelle version du langage a cependant apporté quelques changements de fond qui lui confèrent une plus grande cohérence et même une plus grande facilité d’utilisation, mais qui imposent une petite mise à jour de tous les scripts écrits pour les versions précédentes.

La présente édition de ce livre a donc été remaniée, non seulement pour adapter ses exemples à la nouvelle version, mais surtout pour tirer parti de ses améliorations, qui en font probablement le meilleur outil d’apprentissage de la programmation à l’heure actuelle.

Installez donc sur votre système la dernière version disponible (quelques-uns de nos
exemples nécessitent désormais la version 3.1 ou une version postérieure), et amusez-vous bien ! Si toutefois vous devez analyser des scripts développés pour une version antérieure, sachez que des outils de conversion existent (voir en particulier le script 2to3.py), et que nous maintenons en ligne sur notre site web http://inforef.be/swi/python.htm la précédente mouture de ce texte, adaptée aux versions antérieures de Python, et toujours librement téléchargeable.

Distribution de Python et bibliographie

Les différentes versions de Python (pour Windows, Unix, etc.), son tutoriel original, son manuel de référence, la documentation des bibliothèques de fonctions, etc. sont disponibles en téléchargement gratuit depuis Internet, à partir du site web officiel : http://www.python.org

Vous pouvez aussi déjà trouver en ligne et en français, l’excellent cours sur Python 3 de Robert Cordeau, professeur à l’IUT d’Orsay, qui complète excellemment celui-ci. Ce cours est disponible sur le site de l’AFPY, à l’adresse : http://zope.afpy.org/Members/tarek/initiation-python-3

Il existe également de très bons ouvrages imprimés concernant Python. La plupart
concernent encore Python 2.x, mais vous ne devrez guère éprouver de difficultés à adapter leurs exemples à Python 3. En langue française, vous pourrez très profitablement consulter les manuels ci-après :

• Programmation Python, par Tarek Ziadé, Editions Eyrolles, Paris, 2006, 538 p., ISBN 978-2212-11677-9.

C’est l’un des premiers ouvrages édités directement en langue française sur
le langage Python. Excellent. Une mine de renseignements essentielle si vous voulez ac-
quérir les meilleures pratiques et vous démarquer des débutants.
• Au cœur de Python, volumes 1 et 2, par Wesley J. Chun, traduction de Python core programming, 2d edition (Prentice Hall) par Marie-Cécile Baland, Anne Bohy et Luc Carité, Editions CampusPress, Paris, 2007, respectivement 645 et 385 p., ISBN 978-2-7440-2148-0 et 978-27440-2195-4. C’est un ouvrage de référence indispensable, très bien écrit.
D’autres excellents ouvrages en français étaient proposés par la succursale française de la
maison d’éditions O’Reilly, laquelle a malheureusement disparu. En langue anglaise, le choix est évidemment beaucoup plus vaste. Nous apprécions personnellement beaucoup Python :
How to program, par Deitel, Liperi & Wiedermann, Prentice Hall, Upper Saddle River – NJXII Préface
07458, 2002, 1300 p., ISBN 0-13-092361-3, très complet, très clair, agréable à lire et qui utilise une méthodologie éprouvée.

Pour aller plus loin, notamment dans l’utilisation de la bibliothèque graphique Tkinter, on
pourra utilement consulter Python and Tkinter Programming, par John E. Grayson, Manning publications co., Greenwich (USA), 2000, 658 p., ISBN 1-884777-81-3 , et surtout l’incontournable Programming Python (second edition) de Mark Lutz, Editions O’Reilly, 2001, 1255 p., ISBN 0-596-00085-5, qui est une extraordinaire mine de renseignements sur de multiples as-
pects de la programmation moderne (sur tous systèmes).
Si vous savez déjà bien programmer, et que vous souhaitez progresser encore en utilisant les concepts les plus avancés de l’algorithmique Pythonienne, procurez vous Python cookbook, par Alex Martelli et David Ascher, Editions O’Reilly.

 

Télécharger le livre

https://tutswinds.com/livre-sinitier-a-programmation-exemples-c-c-c-java-php/


Partagez sur: