2.4 UNIX, le grand muet
Certaines revues américaines considèrent UNIX comme non convivial
[J'écrivais cela en 1985!] Le premier reproche qui lui est
fait est de ne pas être verbeux. En effet un appel à un compilateur
ne produit rien : ni bannière annonçant des choses aussi futiles que
la date ou la version du compilateur, ni compte-rendu d'absence
d'anomalies. Ces renseignements avaient naguère leur intérêt lorsque
l'on travaillait par listages et traitement par lots (batch).
La raison pour laquelle UNIX est lapidaire est claire. Une cascade de
deux tâches nécessite que seules les informations importantes
transitent dans le flux qui les lie. Il serait par trop compliqué
d'éliminer les bannières et autres verbosités superflues afin
d'extraire ce qui importe. De plus cela nécessiterait que les filtres
sachent qui a engendré le flux afin de savoir où se trouvent les
informations. La solution dite orthogonale (tout outil peut être
abouché à tout autre outil) consiste à ce que les seules informations
pertinentes transitent sur les flux appropriés (stdin et
stdout). Il est donc normal que toute commande qui se déroule
normalement ne produise rien (mais retourne le code zéro, cf.
exit).
Cette notion de cascade implique celle de filtre.
Un filtre est un programme qui exploite un unique flux entrant pour
alimenter son unique flux sortant.
Il ne vit que la durée de son flux entrant.
Le second reproche est qu'UNIX manque de gadgets tels que souris,
menus déroulants, fenêtres en tout genre ... UNIX est né au même
moment que ces innovations (Alan KAY et le Dynabook), auxquelles il a
fallu dix ans aussi pour s'imposer. Rien n'empêche qu'un interprète
de commandes fasse usage de ces techniques et certains le font (Aegis
d'Appolo par exemple). Toutefois si elles simplifient l'emploi, elles
ne se prêtent que fort mal à l'algorithmisation d'un tour de main,
qualité qu'UNIX a au plus haut point poussée. Disposer d'un grand
nombre d'utilitaires orthogonaux (qui ne font qu'une chose mais bien)
et pouvoir en programmer tout enchainement répétitif ou conditionnel
sur des objets dynamiquement paramètrables : voilà une force
essentielle d'UNIX.