Logiciels de base, 2e partie

publicité
Logiciels de base, 2e partie
Logiciels de Base
2ème partie: Logiciels de base
Cours 1ère année informatique, semestre 1.
Najib Tounsi
Lien permanent: http://www.emi.ac.ma/~ntounsi/COURS/LogBase/logicielsDeBase-2.html
1. Les produits de base du programmeur:
1.1. Editeur de texte
Un éditeur de texte est un logiciel qui permet de créer, d'afficher et de modifier des fichiers texte
brut. En particulier des textes sources dans un langage donné. Certains éditeurs sont paramétrés
en fonction de ces langages pour sucrer le texte source en faisant apparaître les mots clés en
couleur par exemple.
Fig-12, Edition d'un source C avec vi (en mode commande sous UNIX).
Déplacement du curseur ligne par ligne et colonne par colonne uniquement.
(a) Avec TextEdit
(b) Avec Emacs
Fig-12-bis, Edition d'un source C en mode GUI
Déplacement du curseur comme précédemment et aussi avec le pointeur de la souris
Parmi les éditeurs de textes de base:
En mode commande: edit sous Windows/Dos, vi, vim, emacs, nano ... sous Unix.
En mode GUI: NotePad, Sublime sous Windows, TextEdit, Sublime sous MacOS, Sublime,
http://www.emi.ac.ma/~ntounsi/COURS/LogBase/logiciel...
1 of 6
Logiciels de base, 2e partie
Emacs, ... Sous Unix
L'avantage de l'édition en mode GUI, ce sont les possibilités riches de style de présentation du
texte, la possibilité de compiler si c'est un programme source etc. En effet, les éditeurs de textes
modernes reconnaissent le type de document et facilitent son édition. Par exemple, la correction
de l'orthographe pour les textes normaux, la suggestion de texte comme la balise de fermeture en
HTML ou le choix d'instruction en langage de programmation etc.
Fig-12-ter, Edition d'un source HTML avec Sublime.
Les éditeurs de textes sont essentiels pour les travaux informatiques de base comme la
programmation ou la maintenance des fichiers de configurations du système par exemple.
Voir annexe pour les commandes de manipulation des éditeurs vi et emacs.
http://www.emi.ac.ma/~ntounsi/COURS/UNIX/vi.html
http://www.emi.ac.ma/~ntounsi/COURS/UNIX/emacs.html
1.2 Compilateur / Interpréteur
Un compilateur est un programme qui traduit un texte écrit dans un langage de
programmation de haut niveau vers un code binaire prêt pour exécution par l'ordinateur. La
figure-13 montre le schéma de principe de compilation d'un programme C.
Fig-13, Schéma de principe de la compilation
Le texte initial en langage de programmation est dit code source, et le binaire généré est dit code
objet.
Un interpréteur est un programme qui exécute au fur et à mesure les instructions d'un
programme source (dit aussi script) sans avoir besoin de traduire le source entier vers un code
objet. Voir figure-13-bis.
http://www.emi.ac.ma/~ntounsi/COURS/LogBase/logiciel...
2 of 6
Logiciels de base, 2e partie
Fig-13-bis, Schéma de principe de l'interprétation
On va montrer cela sur quelques exemples.
Exemple-1: Compilation d'un programme C. Fichier source hello.c, compilateur cc et fichier
exécutable a.out.
$ cat hello.c
#include <stdio.h>
main()
{
printf ("Hello, world!\n");
}
$ cc hello.c
$ a.out
Hello, world!
$_
<-- On affiche le fichier source
<-- On le compile par cc
<-- On exécute le code objet a.out
<-- Résultat du programme
Exemple-2: Interprète Python avec une suite simple d'opérations. Commande python, prompt
>>>
$ python
<-- On invoque l'interprète python
Python 2.7.1 (r271:86832, Jun 16 2011, 16:59:05)
>>> a = 2
>>> b = a * 1.1
>>> print b
2.2
>>> import math
>>> x = math.sqrt(5)
>>> nombre_or = (1 + x)/2
>>> print nombre_or
1.61803398875
>>> exit()
$_
<-- On tape des instructions
...
...
<-- résultat imprimé
<-- résultat imprimé
Noter ici que le résultat (2.2) a été affiché par l'instruction print b, alors même qu'on n'a pas fini
de taper le programme complet.
Exemple-3: Même programme python, cette fois-ci dans un fichier source gold.py
$ cat gold.py
import math
x = math.sqrt(5)
nombre_or = (1 + x)/2
print nombre_or
<-- On montre le fichier source
$ python gold.py
1.61803398875
<-- on exécute
<-- résultat du programme
Ici, il est fait appel à l'interprète python avec le fichier gold.py qui contient le code source.
Compilateur vs. Interpréteur
Fonctionnalités
http://www.emi.ac.ma/~ntounsi/COURS/LogBase/logiciel...
3 of 6
Logiciels de base, 2e partie
Un compilateur traduit (tout) le texte d'un programme, et n'assure pas son exécution.
Un interpréteur "exécute" les instruction d'un programme au fur et à mesure. Il peut les
traduire ou pas.
...
Compilateur conçu pour
Signaler erreur de compilation
Contrôle de type
Développement de logiciel final de façon plus rigoureuse.
Interpréteur conçu pour
Mise au point facile (on voir le résultat du programme au fur et à mesure)
Développement plus souple
Utile pour prototypage
Techniquement
Compilateur: code optimisé, exécution finale rapide
Interpréteur: temps d'exécution du programme n'est pas important.
Compilateur est un logiciel plus conséquent, sa construction est basée sur une théorie très
élaborée. Compilateur est plus coûteux à développer.
1.3 Editeur de lien et chargeur
Dans la pratique, on n'écrit pas un programme en un seul texte source. Pour peu qu'un
programme soit long, il vaut mieux et il est plus facile de l'écrire en plusieurs morceaux compilés
séparément.
Un éditeur de lien (link editor) est un logiciel qui fait "le montage" d'un programme écrit en
plusieurs morceaux pour former un seul code finale exécutable. L'édition de lien est une phase à
part qui vient après la compilation. Un éditeur de lien rassemble des fichiers code objet et crée un
fichier exécutable. Figure 14.
Fig-14, Schéma de principe de l'éditeur de lien.
http://www.emi.ac.ma/~ntounsi/COURS/LogBase/logiciel...
4 of 6
Logiciels de base, 2e partie
Sur cette figure on illustre deux sources C, fonct1.c et fonct2.c contenant par exemple deux
fonctions C, et compilés en deux codes objets fonct1.o et fonct2.o . Un programme principal
main.c compilé par ailleurs en main.o, utilise les fonctions définies dans les deux précédents
sources.
L'édition de lien consiste justement à lier le code objet main.o aux autres codes fonct1.o et
fonct2.o, pour satisfaire les appels de fonction se trouvant dans main.o . (Le lien se fait aussi avec
une bibliothèque de programmes généralement fournis avec le langage. Par exemple, la fonction
printf())
Exemple-4: Voici maintenant un script UNIX qui montre cela avec deux fonctions en C qui font la
somme et le produit de deux entiers, et un programme principal en C qui appelle ces fonctions et
imprime le résultat:
$ ls
fonct1.c
fonct2.c
main.c
$ cat fonct1.c
int somme (int a, int b){
return a+b;
}
$ cat fonct2.c
int produit (int a, int b){
return a*b;
}
$ cat main.c
# include <stdio.h>
int somme (int, int);
int produit(int, int);
main(){
printf(" %d %d \n", somme(2,3), produit(2,3));
}
$ cc -c fonct1.c fonct2.c
$ ls
fonct1.c
fonct1.o
fonct2.c
fonct2.o
main.c
<-- Noter l'apparition
des fichiers .o
$ cc -c main.c
$ ls
fonct1.c fonct2.c main.c
fonct1.o
fonct2.o main.o
<-- idem pour main.o
$ cc fonct1.o fonct2.o main.o
$ ls
a.out
fonct1.c
fonct1.o
fonct2.c
fonct2.o
main.c
main.o
<-- idem pour a.out
$ a.out
5 6
$_
Remarque: On a utilisé la commande cc pour invoquer l'éditeur de lien sur les fichiers objets .o .
En fait, l'éditeur de lien est ld, et la ligne commande correspondante est assez complexe. C'est
pour cela qu'on utilise cc qui, elle, utilise ld avec les options appropriées. (Avec cc -v ... on peut
faire apparaître ces options)
Le chargeur
Pour être complet, on doit mentionner le programme chargeur (loader) dont le rôle est de
http://www.emi.ac.ma/~ntounsi/COURS/LogBase/logiciel...
5 of 6
Logiciels de base, 2e partie
charger en mémoire le fichier exécutable produit par l'éditeur de lien afin de permettre son
exécution. Le chargement d'une programme en mémoire avant son exécution est en général un
processus séparé. Il a pour rôle d'attribuer un emplacement mémoire au code à exécuter (...
après quelques autres arrangements, cf. cours Systèmes d'Exploitation).
Les environnements intégrés de développement (IDE)
Le processus de conception de programmes, de l'édition du texte source jusqu'à l'exécution avec
les entrées de données et l'affichage des résultats comme le montre l'exemple-4 ci-dessus,
peut-être fait en mode graphique par un logiciel adapté. Exemple, DevC++ pour la
programmation en C ou C++, Eclipse pour la programmation en Java etc. On appelle ces logiciels
des environnements intégrés de développement (IDE, pour Integrated Development
Environment). Parfois on parle d'outils d'aides au développement.
Ces logiciels offrent une interface qui intègre tout les outils qu'il faut pour développer des
programme: éditeur, compilateurs, environnement d'exécution (run time), outils de
documentation et d'archivage et même des outils d'aide à la conception.
2. Autres outils de base
Outils de communication en réseau: telnet / ftp / mail / http (le Web)
Voir TP.
3. Outils Informatiques
Traitement de texte
Tableurs
Navigateur / Editeur Web
Logiciels d'applications : Excel / Mathlab etc…
Voir TP.
Auteur: Najib Tounsi
Date: Oct. 2013 - Sept. 2016
http://www.emi.ac.ma/~ntounsi/COURS/LogBase/logiciel...
6 of 6
Téléchargement