© Your Copyright
Un ingénieur généraliste de l’ENIB doit maîtriser un certain nombre de notions de “culture générale en informatique”. Ce cours présente certaines de ces notions pour vous permettre de vous construire et prendre en main un environnement de travail efficace pour réaliser votre projet dans le temps imparti. De plus, ces connaissances vous permettrons d’éviter ou au moins de mieux comprendre certains problèmes récurrents autour du codage lors de la phase de développement.
Objectif 2: Choisissez un éditeur et installez un environnement de type Linux.
Un système d’exploitation est un logiciel qui fait fonctionner l’ordinateur et qui permet aux logiciels applicatifs de s’exécuter. Nous utiliserons l’abréviation OS pour operating system afin de désigner les systèmes d’exploitation.
Les trois principaux OS auxquels vous avez accès sur vos ordinateurs sont Linux, Windows et MacOS. On pourrait également citer Android si on s’intéresse aux tablettes ou aux téléphones. En salle de TP, au moment ou ces lignes sont écrites, les machines que vous utiliserez pour le projet sont configurées avec une distribution Rocky Linux.
Une distribution GNU/Linux est un système d’exploitation constitué de deux parties indépendantes : un noyaux Linux et une collection de paquets de logiciels libres du projet GNU. Pour plus de détail, vous pouvez lire la page suivante: http://fr.wikipedia.org/wiki/Distribution_GNU/Linux
Au tout début de l’informatique, pour interagir avec un ordinateur, on utilisait un équipement nommé teleprinter (teletype ou TTY), une sorte de croisement entre un clavier de machine à écrire et une imprimante (https://en.wikipedia.org/wiki/Teleprinter). Ces périphériques ont évolué en terminaux informatiques ou consoles, l’imprimante ayant été remplacée par un écran (https://fr.wikipedia.org/wiki/Terminal_informatique). Le minitel que vous connaissez peu être était un terminal.
Ce qu’on appelle aujourd’hui un terminal est un émulateur de console. C’est à dire un logiciel qui simule le périphérique physique dans l’ordinateur.
Les systèmes d’exploitation proposent des terminaux pour interagir avec l’ordinateur en “mode console”, de manière à taper des instructions sans avoir à utiliser d’interface graphique évoluée. Dans l’histoire de l’informatique, une norme a vu le jour pour contrôler la mise en forme de l’affichage des caractères sur un écran de terminal. Il s’agit des séquences d’échappement ANSI (ANSI escape séquences).
Le projet sera réalisé avec une interface textuelle. Le projet et les exemples qui vous seront fournis devront s’exécuter dans un terminal sensible à ces séquences d’échappement ANSI. Malheureusement, les terminaux MS-DOS de Windows ne sont pas sensible à la norme ANSI. Il vous sera donc impossible d’utiliser Windows pour travailler sur le projet. Les terminaux de type Unix présents sur Linux et MacOS conviennent au projet.
Il vous est donc demandé de configurer votre machine personnelle pour pouvoir tester les exemples du cours dans les conditions du projet.
Par rapport aux contraintes du semestre il vous faudra donc configurer votre machine de la manière suivante :
- OS = Distributions Linux
- OS = MacOS
- OS = Windows + Linux dans une machine virtuelle
- OS = Windows 10 + WSL
- Dual Boot, OS1 = Linux + OS2 = ...
En informatique une machine virtuelle est un logiciel d’émulation qui simule le fonctionnement d’un ordinateur dans un ordinateur. Cela permet de faire des tests ou d’isoler des applications pour des raisons de sécurité car ce n’est pas grave de “casser” une machine virtuelle. Cela permet également de tester différents OS.
Parmi les différents logiciels de machine virtuelle on peut citer VirtualBox, Q-EMU, VMware, Parallel Desktop, etc...
Le multiboot (ou dual boot) est le fait d’utiliser un chargeur d’amorçage (ou bootloader) pour permettre à une machine d’utiliser plusieurs OS. On peut citer GRUB (libre), IsoLinux (libre, pour clé USB) ou winload.exe (Microsoft).
Le Sous-système Windows pour Linux permet aux développeurs d’exécuter un environnement GNU/Linux (et notamment la plupart des utilitaires, applications et outils en ligne de commande) directement sur Windows, sans modification et tout en évitant la surcharge d’une machine virtuelle traditionnelle ou d’une configuration à double démarrage. (https://docs.microsoft.com/fr-fr/windows/wsl/about)
WSL est un façon très simple d’éxécuter du code linux sous windows. Cette solution est particulièrement adaptée au projet IPI. Cependant, la principale limite est qu’il ne fourni pas de gestionnaire de fenêtre. Ainsi, aucun logiciel ayant besoin d’un interface graphique hors terminal ne peut être exécuté. Cela rendra impossible l’éxécution des exemples utilisant Turtle
ou de MatplotLib
en ZG2. Dans ce cas il vous faudra une version classique de python sous windows.
C’est à vous de maîtriser et de configurer votre outil pour pouvoir travailler dans un terminal de type TTY sensible aux séquences d’échappements ANSI. Le temps que vous passerez à configurer votre matériel, trouver des solutions et vous documenter, sera formateur et vous préparera à la réalisation du projet. N’hésitez pas à vous faire aider par vos collègues et à partager vos solutions. Chaque matériel peut poser des problèmes différents. On attend d’un ingénieur généraliste de l’ENIB qu’il sache configurer un PC.
Configurez votre machine
Un système de fichier permet de gérer le stockage des fichiers et leur organisation dans les mémoires secondaires (disque dur, CD ou clé).
Logiciel qui exécute un programme écrit dans un langage donné. L’interpréteur est à distinguer du compilateur qui lui transforme un code en programme exécutable ultérieurement. Un interpréteur compile le code dynamiquement au cours de chaque nouvelle exécution.
En salle de TP, vous utiliserez l’interpréteur Python 3.x. Si vous avez votre propre machine, vous devez savoir quel interpréteur vous utilisez. Contrairement aux idées reçues, il n’est pas toujours souhaitable de travailler sur la toute dernière version d’un interpréteur pour s’assurer de la compatibilité avec toutes les dépendances que vous pourriez êtres à même d’utiliser.
Vous devez également savoir que Python2
ne doit plus être utilisé, car obsolèthe.
Cependant beaucoup d’exemples de code disponibles sur internet sont écrits en Python2
.
L’ENIBook lui même embarque un interpréteur Python2
.
Il faut savoir que certaines fonctionnalités de Python 3
ne sont pas disponibles avec Python 2
.
Attention donc aux conflits entre python2.x
et python3.x
.
Python
... patience!
Un logiciel tiers est un logiciel qui peut être ajouté à un autre logiciel. Un logiciel tiers peut être un composant logiciel développé par un autre éditeur qu’on utilise pour ne pas re-développer certaines fonctionnalités nécessaire à notre application. Les modules python que nous n’avons pas développés nous même peuvent être vus comme des logiciels tiers (tkinter, pygame, matplotlib...)
tty.py
ne fonctionne pas sous Windows pour les raisons évoquées à propos des terminaux.Votre métier d’ingénieur pourra vous amenez à développer du code qui sera distribué ou vendu. La question de la propriété intellectuelle des logiciels tiers que vous utilisez est importante. En effet, un logiciel peut être libre ou propriétaire.
Consultez par exemple les articles de Wikipedia à propos de la propriété logiciel https://fr.wikipedia.org/wiki/Licence_de_logiciel, https://fr.wikipedia.org/wiki/Logiciel .
A l’occasion du projet, vous produirez des centaines voire des milliers de lignes de code. Pour cela, vous devrez être efficace et maîtriser l’outil d’édition des fichiers Python que vous choisirez. Le développement informatique peut se faire au moyen d’un éditeur de texte ou d’un IDE.
Un environnement de développement intégré (IDE) est un ensemble d’outils contenant : un éditeur de texte, un compilateur ou un interpréteur, un débogueur...
Exemples: Visual Studio, Eclipse, MonoDevelop
Malheureusement, elle possède aussi l’inconvénient de ne pas être adaptée à l’apprentissage de l’informatique car les IDE masquent certains mécanismes que vous devez connaître. De plus, les IDE ne sont pas toujours libres et sont très souvent liés à un langage particulier. Dans le cadre de votre formation, il est souhaitable que vous maîtrisiez un outils que vous pourrez utilisez avec tous les langages proposés, pour être performant en TP.
Vous devrez donc choisir un éditeur de texte pour le codage. Il existe de nombreux éditeurs de texte. Il vous est conseillé de prendre vos habitudes avec un des éditeurs présents sur les machines de TP de l’ENIB.
Il existe plusieurs familles d’éditeurs.
- Emacs, Xemacs, GNU Emacs (plutôt pour les geek)
- VI, VIM, nano (pour les codeurs fous)
- SublimeText, Kate, Kedit, gedit (pour les gens normaux)
- LibreOffice (ceux qui n’ont rien compris! on ne code pas avec un traitement de texte!)
Maîtriser un éditeur vous permet de gagner en productivité. Pour cela, vous devez apprendre à utiliser les raccourcis clavier. On ne code pas avec la souris! Il est possible de configurer l’éditeur pour avoir une coloration syntaxique, une indentation automatique ou la complétion automatique. Il est possible de choisir le système d’encodage des fichiers. Enfin certains logiciels proposent des systèmes de multi-fenêtrage très utiles.
Aprenez à coder et à tester le code sans avoir recours à la souris!
Testez et choisissez un éditeur pour ce semestre
vi(m)
vi(m) est un outils très puissant qui fonctionne sur tous les Linux et sans interface graphique en dehors du terminal. Il est cependant très peu conviviale au premier abord et nécessite un important apprentissage de raccourcis clavier/fonctionalités.
Emacs
Emacs est aussi très puissant et un peu plus conviviale que VI. Il fournit une très large variété de fonctionalités de la plus utile à la moins utile!
Kate
Kate est un éditeur conventionnel. Bien utilisé, il fournit suffisament de fonctionalité pour le projet.
Les éditeurs sauvegardent les fichiers avec un système d’encodage des caractères. Il y a plusieurs normes. Ainsi quand on ouvre un fichier avec la mauvaise norme, certains caractères son mal interprétés. Il peut également y avoir des erreurs de caractères de fin de ligne qui sont invisibles mais perturbent l’exécution du programme.
Dans le doute, préférez toujours utiliser UTF-8. La plupart des éditeurs se configurent.
Le cours vous fournit quelques éléments de culture générale pour aborder la réalisation du projet. Il survole également un panel d’éléments techniques pour que vous puissiez concevoir des solutions “dans les grandes lignes”. La liberté qui vous est laissée quant aux choix du jeu que vous allez inventer et développer, fait qu’il et impossible d’entrer dans le détail de toutes les solutions. En fonction de vos capacités, il vous appartiendra donc de “creuser” en vous documentant et en vous formant sur les solutions que vous retiendrez.
Ces sources sont à manier avec précaution en prenant en compte les remarques suivantes.
- En posant la question en langage naturel à un moteur de recherche, on trouve souvent quelqu’un qui s’est déjà posé la même question.
- Les réponses postées sur les forums sont de qualités variables. N’oubliez pas votre sens critique. Vous le savez bien! ce n’est pas parce que c’est écrit que c’est fiable.
- Qu’il s’agit d’une information glanée sur un forum ou sur un site officiel, demandez vous si elle correspond à la bonne version de Python ou du logiciel concerné. Regardez la date de mise à jour.
- Les sites de vulgarisation (Site du zero, Comment ça marche) ou les tutoriels sont destinés à différents publiques. Parfois, dans un soucis pédagogique, les explications sont inexactes ou simplifiées.
- Référez vous toujours à l’API pour vérifier une solution trouvée sur un site non officiel. Le fait de parcourir et comprendre l’API ouvre de très nombreuses portes.
- Se documenter, ce n’est pas recopier du code qu’on ne comprends pas. Le fait d’intégrer du code non maîtrisé dans votre projet peut avoir des conséquences désastreuses sur le bon déroulement du développement. L’objet de ce cours est de vous apprendre à créer du code non à le recopier. Par ailleurs, nous n’abordons pas la programmation orientée objet ce semestre. Ceci a pour conséquence d’invalider un bon nombre de solutions techniques qui utilisent les possibilités de programmation orientée objets offertes par Python et que vous ne devez pas utiliser. Ainsi, si vous voyez le mot clé
class
dans un code Python, vous ne devez pas le reprendre.- Après avoir essayé de chercher par vous même, n’oubliez pas que votre enseignant peut vous aider dans la recherche de solutions!
- Il n’est pas interdit d’échanger avec les autres étudiants autours des solutions techniques que vous envisagez... pourquoi pas le mercredi soir...
Vous devez savoir manipuler un terminal, naviguer dans le système de fichier, exécuter des application et surtout lancer un programme. Pour mémoire voici quelques instructions essentielles.
Changer de Répertoire: cd + chemin, le chemin est relatif au répertoire courant:
cd ./Projet/IPI cd version1.0 cd .. cd ~
..
indique le répertoire parent.
indique le répertoire courant~
indique le répertoire courant
Afficher le répertoire courant :
pwd
Afficher le contenu d’un répertoire:
ls -l ls ../version2 ls *.py
Ouvrir un éditeur
vi ./main.py emacs ./*.py kate &
Exécuter un programme Python:
python ./main.py
Copier, déplacer, renommer, supprimer des fichiers:
cp ../version2/moduleB.py ./moduleB.py mv ~/module.py ./moduleA.py rm ./test.py
Créer supprimer un répertoire
mkdir version3 rmdir version3
Décompresser une archive
tar -xvzf archive.tgz tar -xvf archive.tar
Créer une archive
tar -cvzf version2.tgz version2/
tar -cvf source.tar main.py module.py
Changer les droits d’accès à un fichier : .. code:
chmod a+wr module.py
Changer le propriétaire d’un fichier :
chown -R userName version2
Consulter le manuel d’une commande
man chmod
Ouvrez un terminal sur votre machine et testez ces commandes.
Plus de détails à l’adresse suivante : http://wiki.linux-france.org/wiki/Les_commandes_fondamentales_de_Linux.