LES LOGICIELS LIBRES AU BOULOT
Arnaud LAPREVOTE - gérant
15/01/2002
1. Plan
1. Plan2. Le besoin
3. Résultat (1)
4. Résultat (2)
5. Les logiciels
6. Les variables d'environnement
7. Variables d'environnement - Principes
8. Variables d'environnement - Modes
9. Variables d'environnement - Résultat utilisateur
10. Variables d'environnement - Tkchoice
11. Variables d'environnement - Tkchoice installation
12. Documentation
13. Utilitaires système
14. Mc
15. LES EDITEURS
16. Logiciels de création et manipulations graphiques - Programmation
17. ImageMagic
18. Gimp - le clone libre de PhotoShop.
19. Sketch - outil de dessin vectoriel libre
20. Impression avec colorisation syntaxique
21. psutils
22. w3m - lynx
23. Utilitaires de programmation - ctags - passez le mur du son en parcourant vos programmes
24. cflow - mise à plat d'un programme C
25. swish - moteur de recherche texte plein
26. ddd
27. Source Navigator
28. LANGAGES DE PROGRAMMATION
29. LOGICIELS MATHEMATIQUES - SCILAB : le laboratoire à Matrices
30. Logiciels mathématiques - GNUPLOT : le traceur universel
31. Annexe 1 - DECOUVREZ LA VI'STA : VIM
32. Vim - Au début étaient les modes
33. Vim - Déplacements
34. Vim - Suppression
35. Vim - Copier/Coller
36. Vim - Rechercher
37. Vim - Remplacement
38. Vim - Enregistrement et ouverture de fichiers
39. Vim - Autres commandes utiles
40. Lancement de vim
41. Vim - Conclusion
42. Scilab - Introduction
42.1. Programmation
42.2. Création de fonctions
42.3. Conclusion
2. Le besoin
- De nombreux industriels utilisent des logiciels libres.
- Il n'existait pas de distributions adaptées à leurs besoins et à leurs plateformes.
- Améliorer la vitesse d'installation, donc de test, donc d'adoption des logiciels libres.
- Fournir la meilleure documentation permettant la prise en main la plus rapide possible des logiciels.
- Un support indispensable pour que Free&ALter Soft puisse vous fournir le meilleur service possible.
3. Résultat (1)
- Interface graphique d'installation des binaires et des documentations.
- Binaires relogeables (choix des répertoires d'installation).
- Portail intranet de documentation.
- Moteur de recherche disponible sur toute ou partie de la documentation.
- Génération et choix des variables d'environnement automatiquement (TkChoice).
- Versions identiques des logiciels entre HP-UX, IRIX et SOLARIS.
- Instructions pour compiler regroupées dans un fichier FREEALTER placé à la racine de chaque archive de logiciel.
Bref, la distribution de logiciels libres pour les professionnels exigeants.
4. Résultat (2)
- cdroms contenant les 90 logiciels libres les plus utilisés en entreprise ( la liste complète ),
- 1 cdrom pour Solaris 2.5, 2.5.1, 2.6, et 7,
- 1 cdrom pour Irix 6.5 (6.2. en cours de test),
- 1 cdrom pour HP-UX 11 (10.20 en cours de test),
- interface graphique d'installation ou installation manuelle,
- installation dans le répertoire de votre choix grâce aux binaires relogeables,
- documentation html de tous les logiciels, page d'index, outil de recherche rapide,
- TkChoice pour la génération automatique des fichiers de démarrage, interface graphique pour l'utilisateur final et lanceur graphique d'application.
5. Les logiciels
La liste des logiciels6. Les variables d'environnement
- chaque logiciel libre vient avec ses variables d'environnements,
- avec cent logiciels libres on obtient des centaines de variables,
- saturation des variables PATH, MANPATH, INFO_PATH,
- différences entre les plateformes (Solaris, Irix, HP-UX, Linux).
Centralisation du traitement des variables d'environnements (génération automatique)
7. Variables d'environnement - Principes

8. Variables d'environnement - Modes
- Orienté utilisateur => interface graphique tkchoice
-
- inclusion dans l'environnement courrant des variables d'environnement,
- inclusion dans l'environnement courrant des variables d'environnement mais réduction du path par lien symbolique des exécutables dans un répertoire .free .
- Orienté organisation => aucune interface graphique nécessaire
-
- création d'un shell script pour chaque exécutable contenant les variables pour ce programme et les dépendances associées. Ce mode est le mode recommandé.
9. Variables d'environnement - Résultat utilisateur

10. Variables d'environnement - Tkchoice


11. Variables d'environnement - Tkchoice installation
| .login | source /opt/free/tkchoice/start/choice.cshrc |
| .cshrc | source /opt/free/tkchoice/start/alias.cshrc |
ou
| .cshrc | source /opt/free/tkchoice/start/choice.cshrc |
| .cshrc | source /opt/free/tkchoice/start/alias.cshrc |
NE PAS ECRASER LES VARIABLES D'ENVIRONNEMENT.
VOS INGENIEURS SYSTEME SONT LA POUR VOUS AIDER DANS L'INSTALLATION.
12. Documentation
Page d'index de la documentation13. Utilitaires système
rxvt, ls, sed, mc, awk (gawk), locate, diff, sdiff, bzip2, gzip, less, most, mpage, psutils, tar, patch, sed, swish, tcsh.Les plus importants :
| rxvt | xterm couleur => permet d'avoir ls en couleurs (ls --color). |
| mc | Couteau suisse d'unix pour les commandes systèmes. Voir les annexes pour un récapitulatif des commandes. |
14. Mc
Démarrage| mc | démarrage de mc |
| mc -c | démarrage de mc forcé en couleurs si c'est possible |

Configuration de base
| Options -> Configuration -> lynx-like motion | utilisation des touches <- -> pour se déplacer dans les répertoires |
| Options -> Configuration -> Pause after run : Always | après le lancement d'une commande via la ligne de commande, attend un appui sur la barre d'espacement pour revenir à mc |
| Options -> Configuration -> use internal edit | permet d'utiliser la commande interne lors de l'édition ou un autre éditeur (à choisir en initialisant la variable d'environnement EDITOR) |
| Options -> Learn keys | permet à mc d'apprendre les touches si il ne les reconnait pas. Très pratique. Attention cependant, si vous changer souvent de type de terminal, vous écrasez à chaque fois les codes. |
Commandes standard
| F1 | Aide. Naviguer avec les touches flèches à l'intérieur. |
| F3 | Regarde le fichier courant. Colorisation de syntaxe pour les fichiers man. Appel lynx pour les fichiers html. / pour faire une recherche (comme dans vi), G pour aller au bout, g pour revenir au début. |
| F4 | Edition (interne ou externe). L'éditeur interne est assez pratique. |
| F5 | Copie un ou les fichiers courants du panel actif vers l'autre. |
| F9 | Permet de se ballader dans les menus de mc par le clavier. |
| F10 | Quitte mc. |

Fig. 1: Copie d'écran lors d'une copie de fichier

Fig. 2: Copie d'écran lors d'une visualisation de fichiers

Fig. 3: Copie d'écran lors de l'édition d'un fichier
Raccourcis utiles
| Esc Enter | Envoie le nom du fichier courant sur la ligne de commande |
| Ins | Sélectionne le fichier courant (le passe en jaune). |
| + | Sélectionne des fichiers avec une expression régulière. |
| * | Sélectionne tous les fichiers du répertoire. |
| Control-x c | Changement des droits sur un fichier. |
| Control-x p | Envoi le nom du répertoire courant vers la ligne de commande. |
| Control-x P | Envoi le nom du répertoire du panel opposé vers la ligne de commande |
| Esc-Tab | Complétion du nom en train d'être tapé. |
| Esc-p | Commande précédente de l'historique. (On peut aussi cliquer sur [^] au bout de la ligne de commande |
| Esc-! | Lancement d'une commande dont le résultat sera montré dans le viewer de mc. Très utile pour les man, car la colorisation rend le man plus lisible. |
Système de fichiers virtuels
Sous mc, un site ftp ou une archive tar sont des répertoires comme les autres. Pour un fichier tar ou tgz (tar zipé), il suffit d'aller sur le fichier et de taper enter. Vous entrez alors dans l'archive, et vous pouvez sélectionner un ou plusieurs fichiers pour les copier dans le répertoire d'à côté, voir un fichier de l'archive avec F3, .... Toutes les opérations ne sont cependant pas possibles, puisque le système de fichiers est considéré comme étant en lecture seulement.
En ce qui concerne le ftp, vous faites :
cd !ftp://nom_de_l_utilisateur@nom_de_l_ordinateur.xx.yy
Une fenêtre apparaît alors vous demandant un mot de passe. Vous voyez ensuite les fichiers tout comme si vous étiez dans le répertoire ftp du serveur. Vous pouvez copier (envoyer ou recevoir un fichier du serveur ftp), visualiser un fichier, etc, etc. C'est certainement le moyen le plus simple d'envoyer un arbre de répertoire via ftp. F5 sur le répertoire à copier, et les sous répertoires sont envoyés récursivement, sans que vous vous en préoccupiez.

Fig. : utilisation d'un système de fichiers virtuels pour le ftp
15. LES EDITEURS
| Editeur | Xemacs | vim/gvim | nedit | mcedit |
| Encombrement | lourd | intermédiaire | intermédiaire | léger |
| Facilité de prise en main | A apprendre | A apprendre | immédiat | immédiat |
| Colorisation syntaxique | oui | oui | oui | oui |
| Navigation rapide avec ctags | oui | oui | oui | non |
| Enregistrement de séquences de touches | oui | ? | non | |
| Langage de macros | oui (lisp) | oui | oui | non |
| Auto-indentation | oui | oui | oui | non |
| Tutoriel | oui | oui | inutile | inutile |
16. Logiciels de création et manipulations graphiques - Programmation
- librairies de lecture / écriture de fichiers tiff, jpeg, png dans le pack libgr,
- librairie de lecture /écriture de fichiers xpm,
- librairies de lecture de fichiers graphiques dans tcl (Img),
17. ImageMagic
Il contient :- display : affichage de n'importe quel fichier graphique,
- animate : affichage d'animations en avi, gif, ...
- convert : conversion et manipulation de fichiers graphiques.
ORIGIN_DIR="/cdrom"
for FILE in "$ORIGIN_DIR"/G1*
do
echo "#### Processing $FILE ######"
FILENAME=$(basename "$FILE")
convert -geometry 640 "${FILE}" JPEG:jpeg/${FILENAME}_gq.jpg
convert -font \
'-adobe-utopia-bold-i-normal--19-180-75-75-p-100-iso8859-1' \
-pen 'yellow' -draw 'text 5,5 "MatraAéro@1999"' \
jpeg/${FILENAME}_gq.jpg JPEG:jpegtxt/${FILENAME}_gq.jpg
done;
18. Gimp - le clone libre de PhotoShop.
- très puissant,
- nécessite un apprentissage. IL FAUT AU MOINS FAIRE LE PREMIER TUTORIAL. Vous le trouverez ou dans la zone des tutoriaux de la documentation (http://dirac/doc) ou à la fin de ce document. Vous pouvez éventuellement aussi lire le GUM (Gimp User Manual en anglais, mais très agréable à lire).
19. Sketch - outil de dessin vectoriel libre
Permet d'importer et de manipuler des fichiers postscripts.20. Impression avec colorisation syntaxique
Nous avons ajouté enscript à la distribution. enscript permet d'imprimer à peu près n'importe quel code (ada, c, c++, vhdl, tcl, python, html, fortran, ...).On l'utilise de la manière suivante :
enscript -E get.cDe nombreuses options sont disponibles pour choisir l'imprimante, changer l'entete, le pied de pages, ...
L'impression d'un fichier C permet d'avoir le postscript suivant :

En redirigeant la sortie vers mpage avec :
enscript -E -p- get.c | mpage -2 | lpron obtient :

21. psutils
Les psutils permettent de faire un grand nombre de manipulation sur les fichiers ps :- préparation d'un livre (arrangement des pages pour obtenir une impression recto/verso des bonnes pages),
- psresize : changement d'échelle d'une page,
- psnup : organisation de plusieurs pages sur une seule,
- ...
22. w3m - lynx
w3m et lynx sont des navigateurs web en mode texte. Nous avons introduits w3m car il affiche aussi les tableaux ce qui peut être très pratique :

23. Utilitaires de programmation - ctags - passez le mur du son en parcourant vos programmes
ctags permet de créer une sorte d'index de vos programmes. Les éditeurs (vi, xemacs) reconnaissent ces index et les utilisent pour vous permettre de sauter d'un appel de fonction à sa définition.On utilise ctags de la manière suivante :
- on crée la base tag
-
- ctags *.c
- avec vim :
-
- on appelle vim ou gvim sur un des fichiers "taggé",
- on va sur une fonction et en tapant Control-
- bien sûr, on peut sauter de plusieurs niveaux et revenir ensuite successivement à son point de départ.
- avec nedit :
-
- on charge le fichier tag (menu File, Load tag file),
- dans le menu search, on a la commande Ctl-D permettant de sauter à la définition du mot sous le curseur.
24. cflow - mise à plat d'un programme C
| Conseil | lors du traitement de gros programmes, il faut utiliser l'option -X pour exclure les fichiers d'include standard | |
| exemple : | cflow -X 'stdio.h string.h math.h' *.c |
Programme
void main(int argc, char **argv)
{
extern int optind;
extern char *optarg;
int c;
progname = argv[0];
/* parse the option flags */
while (1) {
c = getopt(argc, argv, "pakgv");
if (c == -1)
.......
Résultat
main {prcc.c 70}
3 getopt {}
4 show_all_lists {prcc.c 1070}
5 display_list {prcc.c 1056}
6 printf {}
7 exit {}
8 exit {}
25. swish - moteur de recherche texte plein
swish est l'équivalent des moteurs de recherche commerciaux (genre altavista). Lorsque l'on manipule de très gros projets, il peut être très judicieux d'indexer l'ensemble des sources. La recherche d'une chaîne complexe prend alors à peine quelques secondes. C'est une utilisation peu conventionnelle, mais très utile des moteurs de recherche.26. ddd
ddd est LE déboggueur libre. Il laisse très loin les autres déboggueur. ddd débogue aussi bien du C, du C++, du fortran, du perl, du python que du java. C'est une interface quasi-universelle au débogguage.La grande force de ddd provient de sa capacité à visualiser des données complexes de manière graphique. Dans cette version, il est même possible de demander l'affichage d'un tableau de valeurs sous forme de courbes !
Toutes les fonctions de gdb sont accessibles ou presque. La documentation (http://dirac/doc) est d'excellente qualité et disponible aussi depuis le logiciel.

Nous sommes en train de fixer une bogue qui empêche d'utiliser ddd depuis hpux. Merci de patienter quelques jours.
27. Source Navigator
- ide complet pour le C, le C++, le fortran, le python et le tcl.
28. LANGAGES DE PROGRAMMATION
Vous disposez des langages suivants :
- C (recommandé gcc-2.95.2),
- C++ (recommandé gcc-2.95.2),
- fortran (g77),
- perl,
- tcl/tk,
- python,
- php.
| Langage | version | Compilateur | Interpréteur | Tutorial | Livre |
| C/C++ | 2.95.2 | non | non | non | vim/xemacs/nedit/snavigator |
| fortran | 2.95.2 | non | non | non | vim/xemacs/nedit/snavigator |
| tcl/tk | 8.0 - 8.3 | non | oui | oui | oui |
| perl | 5.5005 | non | oui | oui | non |
| python | 2.0 | non | oui | oui | snavigator |
| php | 4 | non | oui | non |
| Langage | IDE | Débogueur | Débogueur graphique | Générateur UI | Modules |
| C/C++ | gdb | ddd | non | bibl. graphiques | |
| fortran | gdb | ddd | non | ||
| tcl/tk | ased/snavigator | non | non | spectcl/vtcl/tkbuilder | cgi.tcl, blt, tix |
| perl | non | intégré | non | non | tkperl, ~100 modules |
| python | non | non | non | non | tkinter |
| php | non | non | non | non | - |
En ce qui concerne tcl/tk, vous disposez:
- d'un tutorial interactif : tcltutor,
- de 3 programmes graphique de conception d'interface graphique : spectcl, tkbuilder, vtcl, (je recommande tkbuilder),
- de librairies nombreuses (img, html, tix, blt, ...),
- d'une IDE aidant au développement (ased),
- de 2 versions de tcl/tk ( 8.0, et 8.3).
29. LOGICIELS MATHEMATIQUES - SCILAB : le laboratoire à Matrices
Scilab est un interpréteur dédié au calcul scientifique. La syntaxe est proche de celle de matlab. Les principales caractéristiques sont :- syntaxe simple, puissante et adaptée aux matrices,
- calcul formel (polynomial) possible,
- connection à un grand nombre de librairies scientifiques libres et disponibles (LAPACK en particulier),
- fonctions de tracé de courbes 2D et 3D,
- interface pvm et tcl/tk existante,
- toolbox pour l'optimisation, le traitement du signal, les fractals, les ondelettes, ...
- conversion automatique de fichiers matlab4 en scilab,
- logiciel de simulation graphique de systèmes dynamiques,
- existe sous tous les unix et sous windows,
- newsgroup actif,
- bon manuel en ligne et livre disponible,
- en développement continuel à l'Inria,
- siglab.
Vous trouverez à la fin de ce document une courte introduction à Scilab.
30. Logiciels mathématiques - GNUPLOT : le traceur universel
Gnuplot est un célèbre programme libre permettant de tracer des courbes 2d et 3d. L'intérêt principal de gnuplot est la foultitude de formats de sortie possible. Bien sûr, on peut afficher sur l'écran, mais aussi du postscript, du cgm, du gif, ... Gnuplot est très souvent utilisé depuis un programme pour tracer des courbes. On génère dans le programme le fichier de commandes, puis on exécute gnuplot. Gnuplot fonctionne aussi bien sous unix que sous windows. Le fichier de démonstration de gnuplot est très spectaculaire.31. Annexe 1 - DECOUVREZ LA VI'STA : VIM
Vim est une version de vi très, très, très améliorée. Après tout entre une Ferrari et une 2 chevaux tout est commun, le moteur, les pneus, le coffre, tout existe dans les 2 modèles. Cependant, on va plus vite, plus loin et plus confortablement avec une Ferrari. Vim est une Ferrari de l'édition de texte.
Evidemment, vous pouvez préférer une Porsche (Xemacs), un break familial (nedit) ou même une trottinette (textedit).
L'intérêt de vim est que si vous savez l'utiliser, vous pourrez utiliser vi. Or si vous arrivez sur une machine unix, quelle qu'elle soit, il y a vi (si on sait conduire une Ferrari, on sait conduire une deux chevaux).
32. Vim - Au début étaient les modes
Vi est un éditeur déconcertant au premier abord parce que l'utilisateur bascule d'un mode à l'autre :- le mode d'insertion,
- le mode de commande.
On passe du mode commande au mode insertion, par la commande "i" (insert) ou a ("append"). On sort du mode d'insertion en appuyant sur la touche ESC (Echap). Pour définitivement sortir de vi, on tape depuis le mode commande ":q". Si le texte a été modifié, vi(m) refuse de sauvegarder, il suffit de taper ":q!", et vi(m) se ferme sans sauvegarder les modifications.
En résumé, si vous êtes complétement perdu dans vi (vim) et que vous souhaitez repartir à 0. Tapez :
Esc Esc :q!
Vous sortez alors de vi(m) sans avoir rien touché.
Vous constaterez que lorsque vous êtes en mode insertion dans vim vous voyez en bas de l'écran :
-- INSERT --
Dès que vous tapez sur Esc, cela disparaît.
33. Vim - Déplacements
Lorsque vous êtes en mode insertion, vous pouvez vous déplacer comme d'habitude avec les touches de direction. Vous restez alors en mode insertion. Il n'y a rien d'autre à dire sur le mode d'insertion que lorsque l'on tape des caractères, ils sont insérés dans le texte. La touche "<-" permet d'effacer le caractère que vous venez de taper.Les déplacements complexes se font en mode commande. Les manipulations classiques sont les suivantes :
| g | aller au début du texte |
| G | aller à la fin du texte |
| 110G | va à la ligne 110 |
| 0 (le chiffre zéro) | le curseur est placé en début de ligne |
| $ | le curseur est placé en fin de ligne |
34. Vim - Suppression
Les commandes de suppression principales sont les suivantes :| x | supprime le caractère sous le curseur |
| dd | supprime la ligne courante |
| D | supprime les caractères jusqu'au bout de la ligne |
35. Vim - Copier/Coller
Les commandes suivantes sont spécifiques à vim, pour les copier/coller :| v | passe en mode visuel. Les caractères sous le curseur passent en mode d'inversion noir/blanc. |
| V | passage en mode visuel, mais sélection de lignes complètes (on utilise les flêches hautes et basses pour se déplacer et sélectionner). |
| y | copie dans le buffer des caractères qui ont été sélectionnés avec v ou V. |
| p | copie les caractères du buffer après le curseur. |
| P | insère les caractères du buffer avant le curseur. |
| x | quand des caractères sont sélectionnés avec le mode visuel, ces caractères sont supprimés et copiés dans le buffer (commande "couper") habituelle. |
| "a | la commande qui suit concerne le buffer a (mais bien sûr, il y a un buffer b, c, d, e, f, ..., z). S'utilise de la manière suivante : |
| * v->->->"ay | |
| + soit : passage en mode visuel, avancée de 3 caractères, copier dans le registre a les 3 caractères. | |
| * "ap | |
| + coller le contenu du registre après le curseur. |
36. Vim - Rechercher
Les commandes de recherche :| /ce que je cherche | la chaîne "ce que je cherche" est recherchée dans le texte vers l'avant. La recherche se fait sur une expression régulière. |
| / | la précédente commande de recherche est répétée vers l'avant. |
| ?ce que je cherche | la chaîne "ce que je cherche" est recherchée vers l'arrière |
| ? | la précédente commande de recherche est répétée vers l'arrière |
37. Vim - Remplacement
Les commandes un peu amusantes commencent. La syntaxe est :
:x,ys/chaîne à chercher/chaîne de remplacement/gc
avec :
- x : n° de ligne de début,
- y : n° de ligne de fin.
- le petit g après le dernier / signifie "global" c'est à dire de faire tous les remplacements. Le c signifie "confirm" à chaque remplacement une confirmation sera demandée. Si on ne le fait pas, l'ensemble des remplacements est fait directement.
Au lieu de donner des numéros de ligne, on peut aussi donner :
| 1 | la première ligne du fichier (le début donc) |
| . | la ligne où se trouve le curseur |
| $ | la fin du fichier |
Il est très simple d'avoir les numéros de ligne. Il suffit de taper ":set nu". On les enlève avec ":set nonu".
38. Vim - Enregistrement et ouverture de fichiers
| :w | enregistre le fichier courant. |
| :w nom_du_fichier.fic | enregistre le fichier actuellement édité sous le nom "nom_du_fichier.fic" |
| :e nom_du_fichier.fic | édite le fichier nom_du_fichier dans la fenêtre courante |
| :split nom_du_fichier.fic | ouvre une nouvelle fenêtre dans la fenêtre courante avec le fichier nom_de_fichier.fic à l'intérieur. Pour fermer la fenêtre, on utilise comme d'habitude :q. |
| Control-w Control-w | passe à la fenêtre du dessous. |
| Control-w flêche vers le haut | passe à la fenêtre du dessus. |
39. Vim - Autres commandes utiles
| . | répétition de la commande précédente quelle qu'elle soit. |
| :!ls | :! peut-être suivi de n'importe quelle commande shell qui est exécutée et montrée. En tapant sur la barre d'espace, on revient à la fenêtre d'édition. |
| :syntax on | activation de la colorisation syntaxique. Indispensable, lorsque l'on programme. |
| :help | Les déplacements dans l'aide se font ou avec les touches habituelles de déplacement, ou avec la commande Control- |
| qa | permet d'enregistrer une macro et de la mettre dans le buffer a. On arrête d'enregistrer la macro, en retapant q en mode commande. |
| @a | exécute la macro a. |
| 20@a | exécute la macro a 20 fois. |
| :set ts=4 | tabulation fixée à 4 caractères |
40. Lancement de vim
| vim | vim |
| gvim | gvim - vim X11 avec menus, gestion intelligente de la souris. On peut cliquer pour changer de fenêtre après un split. Ou bien sélectionner avec la souris en cliquant et en bougeant la souris. Le coller se fait avec le clique bouton du milieu de la souris. Quand on a activé la colorisation syntaxique, il est possible de choisir le mode de colorisation (perl, c, c++, fortran, ...) avec le menu "syntax" proposé. |
41. Vim - Conclusion
Vim est très configurable, vous pouvez ajouter des touches personnelles, choisir l'action associée à chaque touche en mode commande ou insertion, créer très facilement vos propres menus en mode graphique (c'est vraiment trivial, il faut essayer). Surtout, vous pouvez enregistrer votre configuration standard en tapant ":mkv". Un fichier .vimrc est créé dans le répertoire courant, et vous n'avez plus qu'à le recopier dans votre répertoire home. Depuis vim ":!mv .vimrc ~". Si vous n'indiquez que la colorisation syntaxique à l'intérieur, cela vous aidera déjà considérablement.
Je n'ai fait ici qu'éffleurer les possibilités de vim, en parcourant la documentation vous en découvrirez de nombreuses autres. Vous ne retiendrez pas toutes les commandes à partir de ce document et ce n'est pas important. Il suffit que vous le gardiez sous la main lors de vos premières utilisations pour acquérir les automatismes cruciaux. Vous apprendrez ensuite à rechercher dans la documentation les informations que vous recherchez. Vim est un outil robuste, rapide, léger. C'est, à mon sens, l'éditeur de choix pour les personnes cherchant à avoir une productivité maximale lors de l'édition de texte. Connaissant le temps que vous passez devant un éditeur de texte, pensez aux centaines de milliers de dixièmes de secondes que vous pouvez gagner grâce à cet apprentissage.
42. Scilab - Introduction
Pour lancer scilab on tape : scilabet l'on obtient l'interface suivante :

Nous allons maintenant montrer une courte session scilab et la discuter. Si vous souhaitez la reproduire, il vous faudra taper les commandes suivant le signe -> (c'est le "prompt").
-> // Vous n'avez pas a taper les commentaires places apres //
-> // tout d'abord les scalaires :
->a=1
a =
1.
-> // un calcul simple
->b=2*a
b =
2.
-> // Definissons une matrice
->a=(1:10)
a =
! 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. !
-> // Une autre matrice, definie a partir d'une operation sur la premiere
-> // Toutes les opérations sont possibles sur les matrices.
->b=sin(a)
b =
column 1 to 5
! 0.8414710 0.9092974 0.1411200 - 0.7568025 - 0.9589243 !
column 6 to 10
! - 0.2794155 0.6569866 0.9893582 0.4121185 - 0.5440211 !
-> // Ici nous introduisons l'operateur de transposition '
->c=cos(a)'
c =
! 0.5403023 !
! - 0.4161468 !
! - 0.9899925 !
! - 0.6536436 !
! 0.2836622 !
! 0.9601703 !
! 0.7539023 !
! - 0.1455000 !
! - 0.9111303 !
! - 0.8390715 !
-> // Si l'on place ; apres une instruction
-> // alors son resultat ne s'affiche pas.
->d=cos(a)';
-> // Multiplication de 2 matrices
->b*c
ans =
0.3232528
-> // Une matrice de 10 colonnes et 3 lignes.
->b=[(1:10);(11:20);(21:30)]
b =
! 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. !
! 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. !
! 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. !
->b=sin(b);
-> // Pas de surprise.
->b*c
ans =
! 0.3232528 !
! - 2.9905595 !
! 4.6953339 !
-> // nous definissons une matrice de aléatoire
-> //ayant la meme taille que b
->e=rand(b)
e =
column 1 to 5
! 0.2113249 0.3303271 0.8497452 0.0683740 0.7263507 !
! 0.7560439 0.6653811 0.6857310 0.5608486 0.1985144 !
! 0.0002211 0.6283918 0.8782165 0.6623569 0.5442573 !
column 6 to 10
! 0.2320748 0.8833888 0.9329616 0.3616361 0.4826472 !
! 0.2312237 0.6525135 0.2146008 0.2922267 0.3321719 !
! 0.2164633 0.3076091 0.312642 0.5664249 0.5935095 !
-> // Ou une matrice de meme taille que b, mais remplie de 1
->e=ones(b)
e =
! 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. !
! 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. !
! 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. !
-> // Une matrice peut aussi contenir des chaînes de caractères.
->s=['a' "b" 'c' 'd']
s =
!a b c d !
->x=[1:1000];
->y=sin(2*%pi*x/100)+0.5;
->plot(y)
-> exit();

La documentation de scilab vous permettra d'aller plus loin. Que ce soit, le manuel (http://dirac/doc) ou l'aide en ligne. Cette dernière s'appelle via l'interface graphique avec le bouton Help en haut à droite. Vous obtenez alors l'interface suivante :

Vous pouvez chercher plus en détail avec l'entrée de texte du bas. Une fois que vous avez trouvé la commande vous intéressant, il suffit de cliquer (une seule fois) dessus, et la page de manuel correspondante apparaît.

42.1. Programmation
Les instructions traditionnelles de controle de déroulement existent :
->a=(1:3);
->for i=a do
->write(%io(2),string(i));
->end;
1
2
3
->i=a(1)
i =
1.
->if ( i == 1 ) then
->write(%io(2),"OK");
OK
->else
->write(%io(2),"NO"
->end;
->if ( i ~= 0 ) then
->a
a =
! 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. !
->end
L'opérateur d'inversion booléenne est un peu surprenant (~).
Les types de données disponibles sont donc :
- la matrice (un scalaire est une matrice 1,1),
- la liste (list(1,[1:4],"sdfd"))
- la liste nommée (une liste dont les éléments ont un nom, en gros une structure)
->list(1,[1:4],"sdfd")
ans =
ans(1)
1.
ans(2)
! 1. 2. 3. 4. !
ans(3)
sdfd
->matrix_list=tlist(
['Matrix_List';'matrix';'name';'first_element'],[1:10],'toto',1);
->matrix_list('matrix')
ans =
! 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. !
->matrix_list(3)
ans =
toto
Il y a de nombreux moyens de connaître la taille des matrices, des listes, des strings et des tlist :
->size(a)
ans =
! 1. 10. !
->length(a)
ans =
10.
->length asdfsd
ans =
6.
Attention de bien comprendre les différences entre ces différentes manières d'écrire :
size(a)
La variable (matrice) a est passée (par valeur) à la fonction size.
length asdfds
La fonction length est appelée sur la chaine de caractères "asdfds".
42.2. Création de fonctions
Les fonctions doivent être définies dans un fichier séparé (il y a une autre possibilité sans aucun intérêt).
Créons la fonction toto dans le fichier /tmp/toto.sci
function [retour,autreretour]=toto(entree);
// Attention pas de commentaires
// sur les premieres lignes du fichier
retour = entree;
autreretour = sqrt(entree + 1);
// C'est fini
Nous pouvons maintenant appeler cette fonction de la manière suivante :
->getf('/tmp/toto.sci')
->[un,deux]=toto(4)
deux =
2.236068
un =
4.
->un
un =
4.
->deux
deux =
2.236068
42.3. Conclusion
Vous êtes maintenant des demi-dieux vivants avec Scilab. Vous pouvez lire la documentation (sur le cd) EN EVITANT SOIGNEUSEMENT L'EXEMPLE D'INTRODUCTION, et en lisant le reste (détail sur les types, les instructions de contrôle, le graphique).
Scilab est un logiciel merveilleux dont nous avons à peine écorné la surface. Si vous avez des utilisations particulières en automatisme, en traitement du signal, optimisation, ... vous trouverez de sympathiques bibliothèques qui vous fournirons des milliers de fonctions pré-programmées.
Scilab dispose aussi d'un logiciel permettant de simuler via un schéma un système continu ou discret.

Enfin, Free&ALter Soft développe actuellement une calculatrice de signaux basée sur scilab et tcl/tk. Vous trouverez ci dessous, 2 écrans de cette calculette. Vous disposez d'une version béta. Pour l'appeler, il vous suffit d'appeler siglab.


Au-delà de l'aspect pratique d'une interface graphique telle que Siglab pour scilab, ce développement montre bien les possibilités simples de développements d'interfaces graphiques pour des calculs complexes grâce à scilab et tcl/tk.



