Apprendre la programmation
- code
- python
- François Brucker
Ce cours est dédié au code informatique. On utilisera le language python comme support car c'est un langage très utilisé et qui permet de mettre en lumière tous les aspects du développement d'un code informatique. La très grande majorité des concepts que l'on verra seront transposables dans d'autres langages.
On supposera que vous avez des connaissances scientifiques de base (ie. mathématiques de Lycée) et que vous disposer d'un ordinateur dont vous êtes administrateur.
Aucune compétences en informatique préalable n'est nécessaire.
IA et code
Les agents IA sont de formidables accélérateurs en développement, mais :
- ils n'inventent rien de neuf : ils ne peuvent répondre qu'à des problèmes déjà résolus,
- ils peuvent (vont parfois) halluciner et donner des solutions qui semblent corrects mais sont fausses en réalité
En temps que développeur vous avez l'obligation :
- de préparer le terrain aux agent étant le plus explicite possible dans vos demandes
- de toujours vérifier le code produit
- de connaître le fonctionnement de votre projet et pouvoir modifier le code si nécessaire
Pour cela :
- vous devez appendre le cours
- faire vous même les exercices et les TDs pour assimiler les concepts
- utiliser l'IA dans les projets plus long en vérifiant chaque étape produite
Partie I : Concepts
Les différents concepts de la programmation avec des objets. On apprendra tout ça avec python, mais cela vous aidera dans tous les langages, en particulier ceux à objets.
Avant de passer à la partie II, vérifiez bien que vous avez acquis les concepts en faisant les exercices finaux de la partie I.
Ne passez pas à la partie suivante sans avoir fait et compris les 84 mono-lignes en python, on est parfois surpris de voir qu'on ne maîtrise finalement pas ce que l'on croyait savoir...
Partie II : Développement d'un projet
La première partie nous a appris les concepts fondamentaux d'un langage de programmation à objet et nous a permis d'écrire et d'exécuter un (petit) programme python. Cette partie nous permettra de passer à l'échelle en créant des programmes sur plusieurs fichiers.
Partie III : Programmation objet et évènementielle
Partie IV : Partager ses projets
TBD environnement virtuel + github sous la forme d'un
Partie V : Pour aller plus loin
TBD package et anatomie d'un espace de nommage.
TBD à remanier
Gestion des données
Avant de pouvoir écrire des programmes conséquents il faut comprendre comment est organisé votre ordinateur et pouvoir minimalement interagir avec son système d'exploitation. Donc lisez la partie consacrée aux bases d'un système d'exploitation avant de continuer :
Connaissances système minimales
Etape optionnelle
L'installation d'un nouveau système est une étape optionnelle, mais si vous avez votre ordinateur depuis longtemps sans vraiment vous en occuper, ou que vous avez des erreurs étranges, il peut-être nécessaire de faire une nouvelle installation.
Installer des modules externes
Même si python vient avec de nombreux modules d'installés il arrive toujours un moment où l'on devra installer des modules développés par d'autres personnes :
Stockage des données
En mémoire
Chaîne de caractères
Sur des fichiers
Écrire du code
Corriger son code
Le débogueur, qui permet d'exécuter ligne à ligne du code python est non seulement un excellent outil pour corriger son code, mais également un très bon outil d'apprentissage puisqu'il vous permettra d'assimiler plus rapidement ces notions de variables, d'objets et d'espaces de noms :
Écrire du code maintenable
Il faut essayer de limiter au maximum la création de bug et, surtout, éviter qu'ils réapparaissent à la suite d'une modification de code.
Mais plutôt que de corriger il vaut mieux éviter que les bugs arrivent
Écrire du code lisible
On s'entraîne à écrire du code propre qui fonctionne
Un projet complet
On vérifie qu'on sait faire
Programmation objet
La programmation objet est un principe de programmation utilisé par la quasi-totalité des langages de programmation. Nes nuances existent bien sur, la programmation objet en rust n'est pas la même qu'en java par exemple, mais quelques principes fondateurs sont utilisés partout.
Nous allons dans cette partie du cours nous atteler à montrer ces principes et leur utilité dans le cadre du langage python.
Programmation évènementielle
La programmation évènementielle est un principe de développement très utilisé dans le développement de GUI. Le principe est de coder des réactions qui seront exécutées lorsqu'un utilisateur effectuera une action spécifique (générant un évènement) comme cliquer sur quelque chose, appuyer sur une touche, etc.
Maintenir et développer du code sûr
Gestion des dépendances
Couverture de code
La couverture de code est un outils essentiel lorsque l'on programme par les tests et plus généralement lorsque l'on code tout court. Cet outil permet de vérifier les lignes de codes qui sont testées (ie. couvertes).
Programmation par les tests
TBD ajouter couverture du code.
On a pris l'habitude d'écrire des tests pour se rassurer quant à l'exactitude de nos fonctions. Mais pourquoi pas ne pas écrire les tests avant ? C'est le parti pris osé (mais très efficace) de la programmation par les tests (Test Driven Development, ou TDD) que l'on vous propose d'essayer dans le projet ci-après.
Packages
Lorsqu'un module devient important, il devient compliqué de mettre tout son code dans un seul fichier. On a alors coutume de rassembler tout le code du module dans un dossier que python appelle package. Ces packages pourront ensuite être réutilisés dans d'autres projets, voir être directement placés sur https://pypi.org/ pour être utilisés par d'autres.
Comme l'import d'un module revient à exécuter un fichier et qu'importer un package revient à importer un dossier, python exécute le fichier __init__.py présent dans le dossier.
Un package est un dossier contenant un fichier __init__.py.
-
importer le dossier revient à exécuter le fichier
__init__.py. -
exécuter le dossier avec l'interpréteur revient à exécuter le fichier
__main__.py.
Enfin, on peut faire en sorte que nos modules/packages soient exécutables directement avec un interpréteur :