Créer et exécuter un programme
- Exécution d'une commande ou lancement d'une application en ligne de commandes
- Commande kernel : exécution directe
- Commande non kernel, script ou exécutable : Recherche par l'interpréteur de commandes dans les répertoires listés dans le "path" de l'utilisateur
- PATH : variable d'environnement du système d'exploitation définie pour chaque utilisateur
- Exemple : /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:
/usr/games:/usr/local/games:/snap/bin:/snap/bin
- Adaptation possible de son propre path par chaque utilisateur
- Possibilité de lancer une commande (en particulier une application) sans bloquer l'interpréteur de commandes pendant son exécution
Syntaxe : commande& ou commande &
- Java
- Outils de développement
- A minima
- Un éditeur texte (gedit par exemple)
- Un JDK installé (pour compiler)
- Une JRE installée (pour exécuter)
- Confortable
- Un EDI (Environnement de Développement Intégré, IDE, Integrated Development Environment) qui intègre les outils ci-dessus en une seule application avec une interface utilisateur unifiée
- Automatisation des opérations
- Interface unique
- Disponibilité d'assistants de développement
- Saisie des fichiers .java au moyen de l'éditeur
- Compilation des fichiers .java pour obtenir des fichiers .class : commande javac du JDK
- Exécution des fichiers .class obtenus après compilation : commande java du JRE
- Fichiers .class déplaçables et exécutables d'un système d'exploitation à un autre si le système d'exploitation cible possède une JRE de version égale ou supérieure à la version du compilateur
Présence non nécessaire des fichiers .java lors de l'exécution.
- C et C++
- A minima
- Un éditeur texte (gedit par exemple)
- Un compilateur
- gcc pour le C (très très courant sous Lnux, existe aussi sous-Windows)
- g++ pour le C++ (très très courant sous Lnux, existe aussi sous-Windows)
- cl pour le C et le C++ sous Windows (compilateur C/C++ de Visual Studio)
- ...
- Confortable
- Un EDI (Environnement de Développement Intégré, IDE, Integrated Development Environment) qui intègre les outils ci-dessus en une seule application avec une interface utilisateur unifiée
- Automatisation des opérations
- Interface unique
- Disponibilité d'assistants de développement
- Saisie des fichiers sources .c, .cpp et .h au moyen de l'éditeur
- Compilation des fichiers sources au moyen du compilateur pour obtenir un exécutable
- Choix d'une cible de compilation : une architecture matérielle et un système d'exploitation
-> Obtention d'un exécutable spécifique aux architectures compatibles avec l'architecture cible et aux systèmes d'exploitation compatibles avec le système d'exploitation
cible
Existence habituelle d'une compatibilité ascendante
- Nonobstant certaines contraintes (en particulier disponibilité sur la machine destination de librairies dont la présence est obligatoire), exécution directe possible de l'exécutable sur n'importe
quelle plateforme compatible avec la cible de compilation
Présence non nécessaire des fichiers .c, .cpp et .h lors de l'exécution
- Conséquence fréquente : développement d'un code source compatible avec toutes les plateformes cibles, distribution du code source et compilation sur la machine de destination
- Fichier de commandes
- Automatisation de tâches successives et répétitives
- Création d'un fichier texte qui contient une suite de commandes exécutables individuellement en ligne de commandes
- Transformation de ce fichier non exécutable en un fichier exécutable (commande chmod)
- Possibilité d'exécuter ce fichier en le lançant en ligne de commandes
- Possibilité de concevoir ce qui pourrait ressembler à de véritables application en utilisant un langage de shell
|
Ecosystème de développement
- Editeur
- Compilateur
- Interpréteur/exécuteur
- Environnement de développement intégré
- Outils supplémentaires proposés par certains EDI pour le développement en solo
- Débugger
- But : facilitation du travail de déverminage
- Exécutable exécuté sous le contrôle du débugger
- Réalisation possible d'une trace d'exécution
- Possibilité de placer des points d'arrêt dans le code
- Suivi des valeurs des variables
- Analyse de l'utilisation de la mémoire
- En cas de plantage
- Affichage de l'endroit dans le code où a eu lieu le plantage
- Affichage de la pile d'appel des fonctions
- Affichage de l'état mémoire
- Analyseur de performance, profiler
- But 1 : évaluation des performances des applications en terme de temps d'exécution
- But 2 : localisation des portions de code à réécrire pour améliorer la vitesse d'exécution globale
- Mesure de temps globale
- Mesure de temps des fonctions pour trouver la fonction à optimiser avant toute autre fonction pour améliorer la performance globale
- Gestionnaire de projets
- Problème : projets de développement rarement constitués d'un seul fichier
- Fichiers de code source
- Fichiers de ressources
- ...
- But : gérer la liste de ces fichiers et permettre de les compiler sans avoir besoin de le faire "à la main" et un par un
- Gestion de la liste des fichiers requis pour un projet
- Réalisation de la compilation des fichiers requis par un projet
- Analyse ou définition de la dépendance pouvant exister entre fichiers de façon à ne compiler que ce qui doit l'être en cas de modification(s) portant sur un (ou plusieurs) fichier
- Analyseur de code
- But : vérifier la conformité d'un code source vis à vis d'un ensemble de normes de développement
- Formateur de code, pretty printer
- But : mettre en forme un code source selon des règles de formatage
- Gestionnaire de version(s)
- Problème : existence de versions successives au cours de la vie d'un projet informatique pouvant donner naissance à des branches incompatibles
- Conservation et horodatage des modifications réalisées sur le code
- Possibilité de retour en arrière
- Développement en équipe
- Hébergement collaboratif et versionning
- Problème : héberger le code source d'un projet et faire que ce code source soit modifiable par une communauté de développeurs
- Stockage du code source au sein de dépôts centralisés ou distribués
- Gestion du versionning entre développeurs et maintien de la cohérence globale du projet
- Editeur de documentation (*)
- But : créer la documentation associée à un projet de développement et la maintenir au cours du temps
- Gestionnaire de tests (*)
- But : permettre la réalisation (conception, automatisation...) de différents types de tests sur un projet de développement informatique
- Gestionnaire de projet
- But : gérer un projet de développement dans toutes ses dimensions
- Aspects techniques
- Ressources humaines
- Coût(s) de développement
- ...
(*) Utilisation possiblement aussi justifiée en solo
|