Un début de programmation fut en primaire lorsqu'on a fait un peu de logo sur des MO5 en nano-réseau. À vrai dire, je ne m'en souviens plus des masses, je me souviens plus en avoir refait sous CP/M.
Tout a vraiment commencé avec le Minitel, cette superbe machine: imaginez, pas de curseur, tout à taper en aveugle, pour faire des graphismes, c'est horrible... Puis j'ai découvert des codes avec les touches Fonction et Ctrl... J'ai alors réussi à passer en mode 80 colonnes avec un curseur que l'on peut déplacer, Super ! J'ai ensuite découvert des codes pour faire du semi-graphisme, souligner des mots, surligner, faire clignoter, mettre en géant... Très rigolo, tout ça. C'était je pense en CE2 ou CM1, j'en sais trop rien.
Un jour, j'ai trouvé chez ma grand-mère un 6128 avec un écran ayant un trou sur le dessus, mais pas fichu. Je l'ai récupéré mais bon, au début, ça ne me passionait pas trop. Seules mes soeurs se sont amusées à taper un programme de 20 lignes qui disait bonjour avec des couleurs, sons... Ma mère m'a dit: "Essaie, ça devrait t'intéresser" (Elle a prit quelques cours de programmation en BASIC pendant ses études). Je m'y suis alors mis, et le bouquin de 500 pages je crois qui va avec l'ordi m'a été très utile: j'ai tout appris de lui, avec un autre bouquin, didactique celui-là, mais moins approfondi. J'ai aussi un copain qui est venu me montrer quelques instructions du type FOR, PRINT,...
C'est là que les athéniens atteignirent (dixit mon prof de techno Mr Chahinian), ça m'a passioné: j'ai écrit plein de petits programmes merdiques, mais ça m'amusait beaucoup... J'ai même essayé de me mettre à l'assembleur (à partir d'un programme lu dans un magazine), mais sans un assembleur pour tester, c'est dur ! Sinon, j'ai récupéré des programmes de magazines (à l'époque, il y en avait sur le 6128 !), et je les ai analysés, décortiqués, compris la logique... J'ai trouvé un Tetris qui était bogué: au bout de 16 lignes éliminées précisément, il me disait qu'il n'y avait plus de mémoire... En fait, c'était un RETURN qui manquait à un endroit TRES précis, ce qui faisait que la pile sautait..., il a fallu que je le trouve, ça m'a bien fait progresser...
A par ça, ya aussi le CPM qui m'a permis de découvrir un peu le Dos ou plutôt l'ancêtre du DOS... Avec LE segment de 64Ko (à l'époque un vaste domaine)... Mais bon, sans répertoire ; le DIR n'était pas en mémoire ; il n'y avait pas beaucoup de logiciels... J'ai travaillé comme ça jusqu'en quatrième, je pense.
Et puis, en jetant un coup d'oeil par-dessus l'épaule d'utilisateurs de Pcs, j'ai appris pas mal de choses sur le DOS tout en n'ayant pas de PC...
Puis mon père a été obligé d'en acheter un pour l'exploitation, un 486DX2-80, mais pas multimédia (enfin bon, au début, je n'en avais pas encore besoin...). Alors là, j'ai franchement apprécié l'aide du DOS 6.22, il y en a une sacré dose, et j'en avais besoin... Ca m'a permis de découvrir les fichiers CONFIG.SYS et AUTOEXEC.BAT, la gestion de la mémoire, les UMBs et autres bidouillages pour récupérer quelques octets de mémoire conventionnelle...
J'ai alors d'abord programmé en QBASIC: pas mal, j'ai pour la première fois déboggé un programme pas à pas ! Quel régal ! Mais bon, on ne peut pas facilement programmer une souris, des structures de données... Alors je suis passé au turbo pascal 7.0, le rêve, un paradis: plusieurs fenêtres, la souris, déboggeur avec suivi des variables... J'ai pu avec ça programmer la souris, un joystick, fenêtres, boutons... Super ! En plus, gestion des fichiers -> MOVD et COPD... Tout ça s'est passé je pense en 2 ans.
Ensuite, je suis passé par l'assembleur, avec l'aide d'un bouquin, bien sûr ! C'est VRAIMENT pas évident, mais bon, on s'y fait, aux segments de données, de code, de pile... Bon, j'ai fait quelques résidents et j'ai amélioré mon unité souris en écrivant les procédures en pur assembleur... Mais c'est quand même pas mon fort, il faudrait que je m'améliore encore...
Enfin, j'ai découvert un super bouquin qui traite de la programmation 3D, mais pas que ça, aussi quelques chapitres sur l'assembleur, la programmation de divers éléments comme le port Série, parallèle et même la programmation des cartes son standards comme la Sound Blaster, ou la GUS, ce qui m'a permis d'utiliser la carte son que je venais de m'acheter.
Mais surtout, c'est la programmation des cartes VGA qui est super intéressante... J'ai découvert le mode X et ses quatre pages d'écran individuelles, les sprites, animations 3D... Et j'en ai alors fait un jeu: Smario. Où j'ai également utilisé les procédures de ce bouquin pour faire du son...
Seulement, il y a des bogues dans les codes sources: l'unité GIF qui permet de charger des images dans ce format s'alloue 64000 Octets de mem, mais il en utilise 65536, écrivant donc sauvagement dans mes beaux sprites ! De plus, l'unité mod_sb qui sert au son plante avec les fichiers VOC: en effet, il charge le voc dans un buffer, puis joue... un autre buffer !!!... Nombreux plantages, énervements, CTRL+ALT+SUPPRs et autres RESETs... Mais bon, le résultat est là.
Sinon, grâce au VIRUS informatique, j'ai découvert un peu PROLOG, ADA, ou autres langages non répandus dans le grand public.
J'ai acheté la BIBLE du PC ! Un super bouquin ! Des fautes de frappe à gogo, mais une vraie mine d'information: il traite de la structure hard d'un pc, décrivant les différents circuits, parle des différentes fonctions du dos, du bios, du vesa, du matériel directement, du pentium (pas du bug...), du mode protégé,... et windows ? 4 pages permettant à un programme de savoir s'il tourne dessus et donc s'il peut éventuellement planter sans raison ! Ca m'a permis de progresser pas mal en assembleur et en programmation système -> TAILLE
J'ai installé Linux cet été 98 ! C'est super ! Je vrai essayer de me mettre déjà au Shell-Script, mais je n'ai pas tellement le temps...
Par contre, avec dosemu, c'est un super environnement de développement dos: le ctrl+alt+suppr est instantanné, on n'a pas droit au post...
Delphi 2.0 est arrivé à la maison ! Et encore un autre environnement de programmation, éventuellement plus déconcertant: des objets, des évènement, du multitâche... C'est pas évident !
Finallement, après avoir fait un convertisseur d'euros, un programme pour calculer la contenance de la cuve à fuel de mon père en connaissant la hauteur de liquide, et un mini-browser (je n'arrivais pas à en chopper un sur les cd : mon lecteur était naze !), j'ai un peu laissé tomber Delphi, d'autant plus que j'ai beaucoup laissé tomber Windows : je n'ai plus dans ma chambre que des Linux.
Je me suis mis à la programmation de Linux (le noyau) : c'est super, cette gigantesque source d'information sur le matériel ! J'ai donc ainsi pris la charge du driver qd6580, pour en faire un driver générique qd65xx, et je vais peut-être travailler sur les drivers des pdc20x30, adi2 et w83759a. Il m'arrive des fois de trouver des bugs dans d'autres drivers, j'envoie donc parfois des patches.
J'ai commencé le projet : 'Internet sur HP48'. Tout un programme ! Il m'a déjà fallu me mettre à l'assembleur Saturn, quel foutoire ! J'ai programmé toute la couche matériel (le port série RS232C), la partie ppp, la négociation avec le démon pppd de linux se passe bien, l'ip fait passer les paquets, et l'udp marche, et finalement TCP. On a pu ensuite écrire un client IRC, un navigateur web, etc. L'ancêtre du smartphone !
Si j'ai du temps, je regarderai peut-être un jour ce qu'on peut faire avec la TI89 et son 68k
L'ens-lyon m'a fournit l'emploi du temps pour : je ne fait plus que de l'info :) Plus de maths ni de physique... Mais je compte bien en lire des bouquins de temps en temps, pour la culture.
Pendant le MIM1, je me suis mis à l'Objective-CamL, c'est plutôt intéressant ! On a eu à faire un générateur de labyrinthes, et un RPG avec Bin, c'était bien sympa :) Je me suis par ailleurs enfin mis vraiment au C, en mode User, cette fois.
En système, on a travaillé sur Nachos, donc C++ oblige... Pas super évolué cependant, ça reste bien du C.
POOGL => JAVA ! Eh oui, il faut bien faire de tout... Fait une base de monopoly avec Bin
Projet MIM1: BrlNet: avec Seb, on adapte brltty pour que les applications puissent communiquer plus directement avec les terminaux brailles : connaître la taille de la plage éphémère, y afficher du texte, récupérer les pressions des touches, voire envoyer des fichiers, si la société ne rechigne pas à donner quelques informations sur le protocole (grand merci à Handialog et à Eurobraille) C'est devenu BrlAPI.
Stage MIM1: travail sur Chromium, ne pas confondre avec Chromium BSE, qui lui m'a permis de tester Chromium :) C'est un logiciel pour faire de l'openGL distribué, qu'il a fallu que j'adapte à IPv6, puis le faire migrer légèrement vers UDP pour que sur des réseaux VTHD, les performances ne soient pas grevées par TCP. Encore un peu de sucre avec la PTMU discovery, et peut-être du multicast.
Projet MIM2.1: Rigobot: vous avez connu logo ? Hé bien on aimerait faire en sorte que les futures têtes blondes aient connu rigobot. Au goût du jour, avec de la 3d partout pour plaire, et un langage à la logo, évènementiel, sous forme d'un robot qu'on programme pour résoudre des exercices.
J'ai mené une thèse, plus de détails au LaBRI
Je me suis mis un peu au Hurd, je l'ai porté sur Xen et implémenté la TLS.
J'ai travaillé chez XenSource.
Je suis maintenant maître de conférences à Bordeaux.
Je suis devenu Développeur Debian.