Fichier de rejeu Close

Indication Close

A propos de... Close

Commentaire Close

Téléchargements

Aide

Environnement de développement

Objectif :

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.

Systèmes d’exploitations

Définition : Système d'exploitation (OS)

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.

_images/os.png

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.

Définition : Distribution GNU/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

_images/tux.png

Terminal Unix

Définition : Terminal

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.

_images/minitel.png

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.

WSL, multiboot et machines virtuelles

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 = ...
Définition : Machine virtuelle

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...

Définition : Multiboot, dualboot

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).

Définition : Windows Subsystem for Linux (WSL)

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.

À faire

Configurez votre machine

Systèmes de fichiers

Définition : Système de fichiers

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é).

Chaque OS mets en œuvre des systèmes de fichiers différents. Lorsque vous commencez à copier des fichiers d’un ordinateur à l’autre, ou simplement que vous sauvegardez des données sur différents supports, vous devez savoir quels systèmes de fichiers vous utilisez. Cela vous permettra de prendre conscience de certains problèmes:
  • Perte des métadonnées (propriétaires, dates...)
  • Perte des noms (problèmes de caractères spéciaux)
  • Perte de fichiers/répertoires
Parmi les nombreux systèmes de fichier (https://en.wikipedia.org/wiki/List_of_file_systems) on peut citer quelques exemples:
  • Les distributions Linux proposent notamment Ext, Ext2 ou Ext3
  • MacOS propose notamment HFS
  • Windows propose NTFS
  • Tous les OS savent lire et écrire le FAT32

Interpréteur Python

Définition : Interpréteur

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.

Utilisation limité de Python
Le choix du langage Python a été réalisé pour des raisons pédagogiques. Nous utilisons ce langage de manière très limité et parfois en désaccord avec les préconisations de la Python Sofware Foundation: https://www.python.org/dev/peps/pep-0008/. Le fait d’avoir suivi ce cours ne permet donc pas encore de prétendre à une maîtrise du langage Python... patience!

Utilisation de logiciels tiers

Définition : Logiciel tiers

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...)

Certaines précautions doivent être prise lorsque vous utilisez des modules python que vous n’avez pas codés vous même.
  1. Vous devez vous demander si le module est standard ou non. Un module standard sera disponible sur toutes les machines.
  2. Vous devez savoir si le module est dépendant à un OS. Par exemple le module tty.py ne fonctionne pas sous Windows pour les raisons évoquées à propos des terminaux.
  3. Si le module n’est pas standard, il faut connaître la licence sous laquelle il est distribué avant de l’intégrer à votre projet.

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.

Parmi les Licences propriétaires on peut citer:
  • freeware (gratuit)
  • shareware (droit de copier)
  • shared source (droit de voir)
  • ...
Parmi les licences libres:
  • GNU General Public License (contraintes contre les contraintes)
  • Domaine public (70ans après la mort de l’auteur... l’informatique n’est pas encore concernée!)
  • BSD Licence (GPL “sans” contrainte)

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 .

Éditeurs de code

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.

Environnements de Développement Intégrés (IDE)

Définition :

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

L’utilisation d’un IDE possède quelques avantages:
  • accroissement productivité
  • automatisation de la compilation, édition de liens...
  • génération automatique de la documentation
  • ...

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.

Idle est un environnement de développement(IDE) dédié à python. Ainsi, nous ne l’utiliserons pas car:
  • il y a des conflits avec certaines dépendances
  • il est inutilisable par la suite avec les autres langage (C, C++, Java,...)
  • l’éditeur manque de fonctionnalité

Éditeurs de texte

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!

À faire

Testez et choisissez un éditeur pour ce semestre

Exemple :

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.

_images/vi.png
Exemples de raccourcis:
  • i = passer en mode insertion
  • /unechaine = recherche une chaine de caractères “unechaine”
  • x = suppression de caractère
  • :w = sauvegarder
  • :q = quitter

Exemple :

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!

_images/emacs.png
Exemples de raccourcis
  • ctrl x ctrl c = fermer
  • ctrl x ctrl s = sauvegarder
  • ctrl x ctrl f = ouvrir un fchier
  • ctrl x ctrl b = changer de buffer
  • ctrl = annuler
  • ctrl g = sortir de la commande en cours de saisi
  • atl w = copier
  • ctrl w = couper
  • ctrl y = coller
  • alt x + tetris = pour jouer à tétris

Exemple :

Kate

Kate est un éditeur conventionnel. Bien utilisé, il fournit suffisament de fonctionalité pour le projet.

_images/kate.png
Exemples de raccourcis:
  • ctrl w = fermer
  • ctrl s = sauvegarder
  • ctrl f = rechercher
  • ctrl c = copier
  • ctrl z = annuler

Encodage

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.

Exemples de type d’encodage:
  • latin-1
  • UTF-8
  • ISO 8859-1

Dans le doute, préférez toujours utiliser UTF-8. La plupart des éditeurs se configurent.

Documentation / autoformation

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.

Pour vous documenter et vous former, il existe plusieurs sources d’informations :
  1. Documentation technique (Application Programming Interface)
  2. Manuel utilisateur / site officiel
  3. Tutoriel
  4. Forum
  5. Enseignant
  6. ENIBar

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...

Rappel de commandes de bases pour terminal Linux

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.

  1. 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

  2. Afficher le répertoire courant :

    pwd
    
  3. Afficher le contenu d’un répertoire:

    ls -l
    ls ../version2
    ls *.py
    
  4. Ouvrir un éditeur

    vi ./main.py
    emacs ./*.py
    kate &
    
  5. Exécuter un programme Python:

    python ./main.py
    
  6. Copier, déplacer, renommer, supprimer des fichiers:

    cp ../version2/moduleB.py ./moduleB.py
    mv ~/module.py ./moduleA.py
    rm ./test.py
    
  7. Créer supprimer un répertoire

    mkdir version3
    rmdir version3
    
  8. Décompresser une archive

    tar -xvzf archive.tgz
    tar -xvf archive.tar
    
  9. Créer une archive

tar -cvzf version2.tgz version2/
tar -cvf source.tar main.py module.py
  1. Changer les droits d’accès à un fichier : .. code:

    chmod a+wr module.py
    
  2. Changer le propriétaire d’un fichier :

    chown -R userName version2
    
  3. Consulter le manuel d’une commande

    man chmod
    
À faire

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.