Un texte fondateur

J'ai écrit un logiciel de dessin vectoriel. Selon moi il devrait vous convenir et vous donner le loisir de vous former à la création sur écran, en utilisant la souris et le clavier pour effectuer les manipulations possibles que j'ai imaginé.

Si j'avais seulement râté les cours préparatoires au lycée, je n'aurais jamais pu l'écrire et je tient donc à remercier mes professeurs.

Je prenais des cours de méthodologie pour actionner des vérins et construire des diagrammes dans le but de définir des actions. Élève attentif je ne faisais pas qu'observer mes professeurs mais sciemment je prenais tout autant d'attention à mes cours qu'à mes devoirs. Quand j'ai eu terminé cette formation, je suis allé travailler comme informaticien pour apprendre comment programmer via le clavier.

Il faut savoir que mémoriser les acquis qui m'ont été enseignés et le travail accumulé par cette activité, m'ont été bénéfiques car c'est avec indépendance que je développe à nouveau et comme toujours le logiciel qui m'a fait connaître.

Quand j'ai rencontré le monde de l'informatique professionnelle, les ordinateurs tombaient rarement en panne car ces «machines» étaient conçues dans un but professionnel. Une fois, que j'ai eu la preuve du fonctionnement avec des langages de haut niveau d'abstraction, plus éloigné codes du micro-processeur mais littéralement explicite, je me suis mis à travailler sérieusement.

J'avais déjà programmé sur une calculatrice Texas-Instrument en seconde, quand on avait du en acheter une pour résoudre des équations comme Δ=b2-4ac, puis sur une calculatrice Sharp dotée d'une imprimante pour écrire des sinusoïdes avec un plotter de quatre couleurs, noir vert bleu et une dernière rouge. Dans la même série, vint ensuite le ZX-81 de Sinclair et enfin un Oric-1, avec pas moins de 8 couleurs différentes et une résolution de 240x200 pixels. Alors au lycée et préoccupé par ces ordinateurs, j'apprenais à tracer des hyperboles, je me suis demandé comment l'écran affiche des points plutôt que des caractères.

Familiarisé tôt à l'électronique avec un jouet qui s'appelait le Simon, en quatre couleurs avec autant de sonorités, il fallait répéter une suite sur les quatre touches qui s'éclairent à la suite. Très vite je me suis amusé à imaginer comment cela fonctionnait. Ma première lecture d'ouvrage d'initiation professionnel remonte à mes seize ans quand je suis parti avec deux magazines d'informatique en vacances : la revue l'ordinateur individuel et Micro-Système, ça m'a vite paru difficile, mais je me suis mis à les lire régulièrement avec assiduité pour dévoiler le mystère du langage informatique tel qu'il se présentait à l'époque, en 1980. Avec une pléthore d'ordinateurs différents dont on a retenu les apples, les commodores, les Sinclairs et autres Amstrads, ces différents fabriquants créaient de toutes pièce des machines nouvelles mais considérées comme des jeux pour adolescents par le plus grand nombre. Percer le secret de ces machines, voilà le but que je m'étais fixé.

Les termes de mémoire et d'horloge sont bien connus du grand public mais savez-vous ce qu'il représentent pour un informaticien ? La mémoire d'un ordinateur représente sa capacité à retenir des informations. L'horloge est sa capacité à agiter un flux plus ou moins rapide.

Le microprocesseur est cadencé avec cette horloge et va donc lire ou écrire selon cette fréquence. Il me semble que ces quelques opérations sont nécessaires : la lecture dans la mémoire et l'écriture, ce qui consiste à positionner sur le bus d'adressage les signaux correspondants à une adresse, et puis activer le signal Read/Write. Une autre opération consiste à comparer deux valeurs puis de faire des choix avec l'instruction JMP pour sauter des instructions et en lire d'autres évidemment. Une de ces instructions se nomme Call ou JSR pour appeler un bloc d'instruction puis revenir à la position de départ de celle-ci. Celle qui la suit peut alors se décomposer en enregistrant cette position pour revenir à la suivante. Les opérations de calcul agissent comme celles des calculatrices dont le registre A serait à la fois l'accumulateur et celui affiché àl'écran. En fait ces simples opérations permettent de tout faire car le reste en découle et vous remarquerez cette analogie avec l'enseignement que vous avez suivi à l'école : nous avons appris ensemble mais les aléas de la vie nous ont séparés. Des morceaux d'instruction par ici, d'autres par là, le microprocesseur ne fonctionne pas différemment. Ce coeur de silicium lit des instructions puis les décode à travers un masque, pour orienter ces calculs. Quand vous utilisez une calculatrice, elle fonctionne car un système micro interprète vos instructions mais ceci fait-il partie d'une mémoire ou d'explication au fonctionnement d'un calculateur numérique ?

Quand j'étais allé suivre un cours d'électronique, j'avais utilisé des quadruples portes Nand, en réalisant une porte ET, et une fois l'idée adoptée, l'utiliser pour faire une addition. Cela ne suffit pas par ce qu'il faut pouvoir aussi indiquer la retenue avec cette fonction, et l'addition d'un bit doit se faire avec la fonction OU.

La façon dont les ordinateurs mémorisent les chiffres s'appelle le système binaire ou chaque bit (binary element) est positionné (allumé) ou pas. On utilise les puissances de deux comme 20=1, 21=2, 22=4 que l'on additionne pour recomposer un chiffre, en utilisant le système décimal. Donc 5 en décimal, s'écrit 101 en binaire soit 4+0+1=5 et ainsi de suite pour toutes les valeurs entières, un bit particulier: un drapeau est utilisé pour le signe de ce nombre de l'ensemble Z. Les nombre décimaux utilisent une partie de ce champ de bit pour indiquer la position de la virgule avec 102 pour représenter la valeur de 100 et 10-2 pour celle de 0.01 et ainsi de suite selon le nombre de bits significatifs, alloué à ce calcul car les informations sont groupées par 8,16,32,64 bits. Ce qui permet d'accéder à une plus grande plage de calcul et d'augmenter la précision et la vitesse de ceux-ci avec les processeurs modernes qui utilisent un champs de bit de plus en plus important à la fois. On utilise les registres pour décomposer les calculs en faisant en sorte que la retenue passe d'un groupe de bits à l'autre. Que ce soit pour les additions ou les multiplications dans un espace de représentation possible selon la taille (le nombre de bits) qui circule entre la mémoire et le calculateur.

La mémoire augmente progressivement avec la miniaturisation et l'intégration des composants, toujours en utilisant des multiples de deux avec lequel on peut représenter n'importe quel nombre décimal. Donc, D'un coté un bus de données qui sont soit lues soit écrites et retenues par des transistors, quand ils sont alimentés en électricité. C'est pourquoi on appelle cette mémoire la mémoire vive (ram) qui se maintient en état de mémoriser les informations quand l'électricité passe. Vous voyez bien quand une ampoule est allumée ou pas, son état étant dépendant de l'interrupteur. Une petite combinaison de portes électroniques (des transistors) maintient cette état comme des relais électromagnétiques.

Une autre mémoire se nomme mémoire morte : elle est figée une fois pour toute dans une grille de silicium. elle est utilisée comme mémoire permanente pour démarrer l'ordinateur avant que le système soit monté en mémoire du disque dur - ce qui n'existait pas sur les «ordinateurs jeux» du début où le BASIC pour (Beginer All Symbolique Instruction Code) de Bill Gates était gravé dans cette ROM (pour Read Only Memory) et donner la main à l'utilisateur immédiatement (sans avoir à charger le gestionnaire de fenêtres).

Mais alors pourquoi ne pas le faire ? par ce que de cette façon votre système peut s'améliorer et qu'il occupe aussi une place importante en mémoire. A cette époque les «micros-ordinateurs jouets» enregistraient les données sur des cassettes radio pendant que ceux, plus professionnels, avaient des bandes magnétiques ou aussi des rubans de papier perforé. Les moyens de stockage étaient limités et un simple disque dur occupait une place considérable pour seulement 5 méga-octets. Les disquettes s'appelaient des floppy-disk et faisait 3 pouces 1/2, 5 pouces 1/4 ou 8 pouces. de largeur. Non seulement chaque octet était compté mais ils n'étaient pas nombreux. En plus de cela, le stockage sur ces supports n'était pas complètement fiable et prenait un temps de lecture, un temps d'accès très lent sur les bandes, parcequ'il était séquentiel. Il fallait lire la bande magnétique du début à la fin pour trouver les informations et l'on avait pas d'accès direct comme avec les disques où la tête de lecture se positionne sur une partition directement comme avec les CD-Audios : quand vous appuyez sur la touche passer à la piste suivante.

La parcimonie de ces informations demandait beaucoup d'astuces aux informaticiens qui devaient sans cesse optimiser les données pour qu'elles occupent moins de mémoire. Ces habitudes se sont perdues au fil du temps, avec les capacités plus importantes de la mémoire de stockage ainsi que celle de travail. On peut le regretter, toutefois, car on constate que certaines opérations ne vont pas plus vite. De ce fait, la course à la puissance se trouve corroboré parceque les logiciels sont de plus en plus lourds et la complexité de ces machines les rend moins faciles à programmer, du fait des couches plus abstraites avec le système mais aussi plus vulnérables à toutes sortes de défauts. Un exemple simple consiste à utiliser un navigateur Web pour que l'on ne sache plus où est le curseur d'entrée.

Les systèmes opérationnels n'ont pas toujours été si rapides et je me souviens qu'il fallait sur ces mini-ordinateurs plusieurs minutes avant de démarrer et qu'un opérateur devait alors saisir ce qui n'est qu'un DOS-Batch pour certains et ce depuis les systèmes qui ont eu des noms comme CP/M pour Control Process Machine ou MS-DOS pour MicrosoftTM. Bill Gates aurait eu un contrat avec IBM (International Business Machine) pour pouvoir lui aussi vendre son système à d'autres fabricants d'ordinateurs, ce fut le début de sa fortune. Un DOS signifie Disque Opérating Système le terme est flatteur en français «système d'exploitation» que je préfère appeler d'utilisation.

Je reviens à mes indications quand j'avais demandé comment obtenir l'adresse mémoire de l'affichage de l'écran, c'était $B800 sur cet ordinateur avec une carte CGA et de voir sur le marché un appareil qui s'appelait le ZX80 pour une machine d'un tout petit prix on avait alors un clavier sensitif un microprocesseur Z80 de Zilog (8 bits) et un connecteur pour le brancher sur la télévision Noir et Blanc. L'affichage en partie un damier permettait, en affichant des caractères semi-graphiques de voir sommairement des pixels qui étaient gros comme un quart de caractère. Le jeu bien connu des first player shooter existait déjà avec un labyrinthe successivement dessiné avec ces caractères. Un calcul très précis devait alors être effectué pour que quatre quart de caractères deviennent des lignes. Ce serait Wozniak qui aurait réalisé la première puce graphique mais je n'en suis pas sûr tout ceci n'est pas forcement connu et bien que les radars déplacent un stop sur écran je n'avais rien vu de tel jusqu'alors. Les progrès de la miniaturisation permettent désormais d'avoir un système autrement plus sophistiqué dans le creux de la main si vous avez un téléphone portable.

Accessoirement j'évoque cette particularité pour décrire l'évolution de ces machines. Néanmoins quand sur un iphone vous avez une résolution horizontale de 240 pixels je peux comparer avec mon Oric-1 qui affiche la même chose sur une télévision de salon et de distinguer ces pixels bien caractéristiques.

Mais les ordinateurs n'ont pas toujours étaient comme maintenant, l'Eniac le premier d'entre eux n'avait ni clavier ni écran encore moins de souris, simplement des interrupteurs et des voyants pour positionner des données en séquence et visualiser les résultats.
Il n'était pas conçu avec des transistors mais des lampes à vide comme les vieux amplificateurs de guitare. Mais je doit supposer que les principes de calcul de ces appareils ont été définis sur ce prototype. Il est dit que la première bombe atomique à été calculée sur cette Eniak. Il occupait la taille d'un stade de basquet que vous pouvez comparer avec votre calculatrice. Quand nous étions au lycée, nous avions supposés, voyant l'avancée de la miniaturisation, que seule la taille de nos doigts impose une limite ce qui s'aère vrai fonctionnellement. La pratique informatique date encore plus qu'on ne pense, j'en tiens pour preuve les langages qui ont été définis dans les années 50-60 comme Cobol, le Fortran, le Pascal ou encore le C.

Une fois tout ceci expliqué que pouvons-nous faire de ces ordinateurs qui foisonnent ? Tout ou rien, différents métiers sont fait par les ordinateurs pourrait-on dire... Mon père m'a expliqué que l'informatique en soi n'était rien si elle n'était pas appliquéee à un domaine d'activité, et comme mon frère décalquait des comics, je me suis mis à programmer un outil de dessin.

Les bases certaines de la programmation acquises, dessiner des vecteurs semble facile et pour cela Microsoft préconise d'utiliser les fonctions moveto-lineto, un langage qui, tout en étant simplifié, permet de déplacer un curseur et de dessiner consécutivement une ligne à chaque fois. La notion de vecteur n'est pas connue, bien que le début et la fin d'une ligne donne un sens et la distance entre deux points la norme. Avez-vous vu les fonctions : Plot(x,y); suivi d'une fonction Ray(angle,distance); qui seraient utiles pour dessiner des rayons comme sur les bicyclettes, si vous utilisez la graphique device interface, elles n'existent pas ?

Les opérations effectuées par les outils de dessin consistent donc à ajouter des éléments de dessin, soit des primitives, soit des objets plus complexes composés de primitives, puis de les ajouter à la collection d'affichage de l'espace ou du plan en cours. En quelques étapes, la mémorisation d'un point de départ d'un segment après son déplacement, quand vous relâchez le bouton de la souris, vous obtenez le point d'arrivée. Il suffit alors d'ajouter l'élément ligne ainsi défini aux conteneurs ou metalist des éléments graphiques, de même pour un cercle, un rectangle, un losange ou une sphère. Les points de chemin des courbes de Bézier agissent de la même façon. Comme une suite d'éléments dans une collection de points de contrôle.

La spécialisation du dessin de ces éléments permettent de rajouter des effets aux tracés. Ils s'affichent séquentiellement l'un après l'autre, chaque segment étant recouvert par le suivant et il semblerait alors que le dessin d'une figure soit instantané, en fait très rapide. Mais qu'elle soit aussi parrallélisable si l'on veut la tracer dans le temps.

La définition d'un dessin est mono-opérateur la projection de ceux-ci dans le temps semble inter-temporelle, étant donné qu'elle est la même quand elle est projetée dans l'espace-temps ! Explications : si vous avez des données vectorielles de description d'une image et que vous devez la dessiner sur l'écran, chaque constituant de l'image doit s'afficher comme une succession des éléments qui la forme; Or, quand un dessin est composé de plusieurs figures, chacune d'entre-elle est dessinée à la suite. Quand vous voulez animer une image de 3 dimensions, mais aussi en 2 dimension, vous pouvez prendre le temps qu'il faudrait pour faire une animation ou chacune d'elle est calculée avec une position prédéterminée que vous avez pu définir, non pas comme un dessin, mais comme une succession de dessins. C'est en quoi ce calcul est parallélisable à l'envie : ce qui vous permet de les décrire et de les afficher dans l'ordre, non pas ou vous suggérez leurs apparitions, mais plutôt quand elles sont calculées. Pour cela il suffit alors d'envoyer chaque image vers un calculateur pour les relire dans un réseau d'images perceptibles. Quand le calculateur aura fini de les définir on pourrait regrouper celles-ci pour les animer dans un temps imprescriptible.

Cette loi imprescriptible, celle qui parle au coeur de l'homme.Jean Jacques Rousseau

© denis bertin.