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
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
T
extEdi
t
(b) Avec
E
macs
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
,
Logiciels de base, 2e partie
http://www.emi.ac.ma/~ntounsi/COURS/LogBase/logiciel... 1 of 6
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.
Logiciels de base, 2e partie
http://www.emi.ac.ma/~ntounsi/COURS/LogBase/logiciel... 2 of 6
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
<-- On affiche le fichier source
#include <stdio.h>
main()
{
printf ("Hello, world!\n");
}
$
cc hello.c
<-- On le compile par cc
$
a.out
<-- On exécute le code objet a.out
Hello, world! <-- 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
<-- On tape des instructions
>>>
b = a * 1.1
...
>>>
print b
...
2.2 <-- résultat imprimé
>>>
import math
>>>
x = math.sqrt(5)
>>>
nombre_or = (1 + x)/2
>>>
print nombre_or
1.61803398875 <-- résultat imprimé
>>>
exit
()
$_
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
<-- On montre le fichier source
import math
x = math.sqrt(5)
nombre_or = (1 + x)/2
print nombre_or
$
python gold.py
<-- on exécute
1.61803398875 <-- 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
Logiciels de base, 2e partie
http://www.emi.ac.ma/~ntounsi/COURS/LogBase/logiciel... 3 of 6
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
séparément.
Un
éditeur de lien
(
link editor
) est un logiciel qui fait "le montage" d'un programme écrit en
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 d
e l'éditeur de lien.
Logiciels de base, 2e partie
http://www.emi.ac.ma/~ntounsi/COURS/LogBase/logiciel... 4 of 6
Sur cette figure on illustre deux sources C,
fonct1.c
et
fonct
2.c
contenant par exemple deux
fonctions C, et compilés en deux codes objets
fonct1.
o
et
fonct
2.
o
. Un programme principal
main.c
compilé par ailleurs en
ma
i
n.o
, utilise les fonctions définies dans les deux précédents
sources.
L'édition de lien consiste justement à
lier
le code objet
ma
in
.o
aux autres codes
fonct1.
o
et
fonct
2.
o
, pour satisfaire les appels de fonction se trouvant dans
ma
in
.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
UNI
X
qui montre cela avec deux fonctions en C qui font la
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.o fonct2.o main.o <-- idem pour a.out
fonct1.c fonct2.c main.c
$
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
Logiciels de base, 2e partie
http://www.emi.ac.ma/~ntounsi/COURS/LogBase/logiciel... 5 of 6
1 / 6 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !