28 novembre 2012

Programmation

Je suis né au début des années 60, à une époque lointaine où l'informatique domestique n'existait pas, ou très peu.

Attiré par la science en général, j'étais abonné à plusieurs revues dont j'attendais avec impatience la sortie : "Sciences et Vie", "Pour la Science", "Science et Avenir"... J'y dévorais tous les articles, aussi bien sur l'archéologie que sur l'intelligence artificielle ou l'espace.

A une époque où je ne pouvais pas connaître internet, je passais mon temps à bricoler dans ma chambre des circuits électroniques, dont je récupérais les pièces dans de vieux postes de radio, en suivant des plans trouvés sur "Électronique Pratique". J'ai réussi à faire un stroboscope, pour les booms de l'époque, un chenillard pour les spots et des récepteurs d'ondes radios tous plus délirants les uns que les autres. Je me souviens avoir écouté avec une certaine fascination des voix russes, polonaises ou chinoises sur les fréquences longues, au hasard des réflexions atmosphériques.

C'était une époque où l'on enseignait encore, dans les écoles, l'usage de la règle à calcul et des tables de logarithmes.

A la fin des années 70, mes parents ont accepté de m'offrir un objet révolutionnaire pour moi et qui allait changer le cour de ma vie : une calculatrice TI 30. J'y ai passé des heures entières à faire des calculs qui me paraissaient complexes à l'époque :  les fonctions sinus, cosinus, tangentes et logarithmes n'avaient aucun secret pour moi. Je traçais ces courbes à la main, point par point, sur du papier millimétré.

L'entrée en classe de seconde scientifique reste pour moi liée à un deuxième cadeau que mes parents ont consenti malgré le prix : une calculatrice programmable TI 57. Cette calculatrice, avec ses 50 pas de programme et 8 mémoires, a agrémenté bon nombre de mes soirées et week-ends. J'y a découvert la programmation "assembleur" et toutes les astuces possibles et imaginables permettant de faire tenir un programme complexe en seulement 50 pas. Cette calculatrice m'a tenu en haleine jusqu'au bac, pendant que d'autres fatiguaient leurs yeux sur les écrans de télévision avec Pong.

Dans le même temps, je persuadais avec deux amis un professeur de maths du lycée de nous donner des cours de programmation. Nous montions ainsi le premier club d'informatique de mon lycée, en 1979, équipé d'un magnifique IBM 5100 prêté par un parent d'élève. J'y ai découvert l'algorithmique avec la réduction des fractions, et la programmation en "Beginner's All-purpose Symbolic Instruction Code", c'est-à-dire en BASIC.

J'ai aussi commencé à fréquenter les allées du grand salon informatique de l'époque, le SICOB. Je me souviens que les vendeurs d'imprimantes profitaient de la lente avancée des têtes d'impression pour racoler les adultes pendant que je me tenais en arrière, prêt à répondre "moi" dès que le vendeur proposait le listing à l'assistance. Il faut dire que les images qu'ils imprimaient enflammaient mon jeune esprit d'alors (attention NSFW ;-).

J'ai passé mon baccalauréat en 1981, un an après l'autorisation d'y utiliser des calculatrices. Autant dire que nous étions encore des pionniers ! J'avais glissé en mémoire de ma TI 57 un programme calculant le PPCM de deux entiers, qui m'a bien aidé dans l'un des exercices d'arithmétique.

Le bac en poche, et mes 18 ans révolus, j'entrais dans la vie active avec mon premier job d'été : magasinier dans une petite supérette parisienne d'une marque très connue à cette époque, Félix Potin. Le salaire de ce mois passé à trimer dans les rayons m'a permis de faire l'acquisition de mon premier "vrai" ordinateur, un TRS-80 modèle I de 16Ko de Ram avec processeur Z80. J'avais enfin un ordinateur rien que pour moi. Je pouvais enfin explorer les possibilités infinies de cet objet magnifique.

Malheureusement pour moi, j'entrais dans l'enfer des classes préparatoires. Et j'allais y rester trois longues années... Malgré tout, les week-ends étaient consacrés à l'apprentissage de l'assembleur Z80 et à l'échange avec mes amis "geeks" de l'époque, de programmes de jeux.

La préparation des concours d'entrée dans les grandes écoles me permit de m'équiper d'un ordinateur de poche, très pointu pour l'époque : le PC 1500 de Sharp. J'en remplissais la mémoire avec toutes les formules que j'avais peur d'oublier... Je dois reconnaître que c'est aussi comme cela que je les apprenais, et que je n'ai jamais eu à me servir de cette antisèche (il y aurait prescription de toute manière).

L'été 1984 correspond pour moi à la fin de la période la plus difficile de ma vie. C'est aussi l'été où est sortie dans les kiosques une revue qui a beaucoup compté pour moi : "List" le journal des amateurs de programmation. Ceux qui sont nostalgique de cette période, où qui veulent en savoir plus, peuvent cliquer sur ce lien pour y retrouver les 12 numéros. Je crois que je n'ai jamais autant tapé de lignes de code (sans toutes les comprendre) que pendant tout ce temps. Une sorte de fringale de possession de logiciels. Et un sentiment très fort d'exultation lors du premier lancement du logiciel...

Septembre 1984, entrée à l’École Centrale de Nantes. A l'époque, le cursus prévoyait une année et demi de tronc commun, avec toutes les matières, puis le choix d'une option en fonction de son classement. L'option informatique était la plus demandée, juste après "robotique". Il m'a fallu donc travailler encore d’arrache-pied pendant tout ce temps. Le soir, je jouais quand même sur mon TRS-80...

Février 1986 :  fin de mes études "forcées", début du bonheur absolu. J'allais pouvoir faire de l'informatique toute la journée, tous les jours. Je m'installais dans la salle serveur, je copinais avec l'administrateur système, je distribuais les listings des travaux en batch de la nuit... Mes camarades et moi, nous avons déballé les premiers IBM PC de l'école, équipés de 2 magnifiques lecteurs de disquettes 5"1/4.

C'est aussi pour moi la découverte des magnifiques langages Pascal et Fortran. Puis du fantastique Lisp, la découverte des langages de programmation objet LOGO et Smalltalk.

1987 marque pour moi l'apogée de ma période programmation avec l'apprentissage (difficile) du langage Prolog et la découverte du calcul des prédicats du premier ordre. Cette année là, je mis au point une extension du Prolog permettant de prendre en compte la logique temporelle, sujet de mon DEA que je passais en parallèle à mes études d'ingénieur. Je me souviens avec amusement que les cours de logique temporelle étaient enseignés à l'université de Nantes par un professeur de philosophie qui nous avait expliqué que les mathématiques étaient une branche de la philosophie... Nous étions quatre étudiants, dont trois de formation littéraire. Lisez cette page, et vous comprendrez qu'ils avaient du mérite.

J'ai ensuite rempli mes obligations militaires, dont je parle un peu dans cette série de billets.

J'ai ensuite décidé de poursuivre dans la recherche, faisant fi d'une carrière d'ingénieur que je percevais comme trop formatée. Mon avenir et mon plaisir étaient dans l'intelligence artificielle. J'en ai déjà parlé un peu dans ce billet que je vous invite à relire tant j'ai eu de plaisir à l'écrire.

J'y ai découvert les plaisirs de la programmation parallèle avec le langage OCCAM et sur des microprocesseurs extraordinaires, les Transputers. Cette programmation particulière m'a décontenancé. Je pense que j'avais atteint une limite de mes possibilités en terme de programmation.

Lorsque j'ai quitté mon poste de Maître de Conférences pour me consacrer à ma famille, ma province et l'enseignement, je me suis alors attaqué à mon dernier sommet, le langage C. J'y ai goûté les charmes des tableaux de pointeurs de fonction, celui des malloc et de l'absence de ramasse-miettes...

Je suis resté bloqué sur ce langage.
J'ai bien fait un peu de HTML, de PHP, de Python, de Perl, mais toujours en modifiant des programmes écrits par d'autres. Je n'ai jamais eu la joie de pouvoir programmer en Forth, Ada, C++, C#, Java ou Dart.

J'ai vieilli. Maintenant, j'apprends UML 2 dans les livres pour analyser mon système d'information, et cela n'a rien à voir.

Un jour je m'y remettrai.
J'ai essayé avec mes filles et avec mon fils, mais je n'ai pas réussi à leur faire ressentir le côté magique de savoir "animer" un ordinateur, le pouvoir que donne la capacité de programmer la matière inerte.

Un jour je m'y remettrai.
Avec mes petites filles et mes petits fils...

Ne vous moquez pas, vous vieillissez aussi.

------------------------------
Source image gizmodo.fr

20 commentaires:

  1. Trop fort le site avec les numéro de LIST. Il y a même TILT !
    Quelle époque...

    RépondreSupprimer
  2. Je vous rassure : il n'y a aucune joie à tirer de la programmation en Java ;)

    RépondreSupprimer
  3. Ah!!... la règle à calcul, Bouvard et Ratinet (j'en ai toujours un exemplaire chez moi, en souvenir),...
    Je me souviens encore de cet exercice de "calcul numérique" (à Centrale ou aux Mines-Ponts?) qui demandait de calculer "racine de 1/ cotg x" (x ayant une valeur donnée dans l'exercice, avec un paquet de décimales...)
    Après avoir calculer "y = cotg x" par interpolation linéaire, j'ai calculé z = 1/y, toujours par interpolation linéaire, puis t= racine(z) toujours...
    Le petit malin de l'exercice voulait savoir si on aurait l'intelligence de transformer "1/cotg x" en "tg x" avant de foncer, tête baissée dans les interpolations...
    Mais le temps étant compté, je pense que 90% des candidats ont fait comme moi...
    "p.... quel c..." je me suis dit le lendemain....

    RépondreSupprimer
  4. Très agréable à lire... Et des images qui reviennent, pas bien vieux quand j'ai en cadeau de mes parents ce MO6 de Thomson... Tout fier d'un bout de programme qui démarre en 10 CLR pour faire propre puis d'un INPUT, puis d'un LOOP et le GOTO... Et les parents obligés de retirer le fusible du disjoncteur pour être sûrs que je ne passe ma nuit dessus...

    RépondreSupprimer
  5. Il y a beaucoup de joie à trouver avec java si on accepte de sortir des sentiers battus
    Il y a beaucoup de joie à initier des gens à la programmation en utilisant Python
    Et depuis peu j'ai beaucoup de joie à jouer avec Arduino permettant ainsi d'animer quelque chose en dehors de l'ordinateur, ne manière simple, et finalement peut être de donner envie à d'autres de goûter aux joies de l'informatique

    RépondreSupprimer
    Réponses
    1. N'oubliez pas de creer un JoyFactoryVisitorFactoryObserverFactory. :P

      Supprimer
  6. Intelligence Artificielle ?
    Que pensez vous des gens (et des idées) du Singularity Institute ?

    RépondreSupprimer
    Réponses
    1. Je pense que lorsqu'on mettra au point la 1ère intelligence artificielle, ça va être un sacré bazar... et le début d'un nouveau monde (singularité). Et j'espère bien voir cela.

      Supprimer
  7. Un peu plus jeune que vous, j'ai appris a calculer avec la calculatrice HP-33 de mon père.

    La notation polonaise inverse m'a appris a calculer mentalement là où j'étais resté complètement hermétique aux méthodes pédagogiques traditionnelles.

    RépondreSupprimer
  8. là, c'est vous qui nous faites vieillir !
    me reviens en mémoire (pour ce qu'il en reste :) ) l'exercice en collège qui avait consister à fabriquer .... une règle à calculer en carton.
    c'était parfait pour en comprendre le fonctionnement.
    c'était dans les années 60.
    la programmation (ce n'est pas du tout mon domaine) la seule expérience dont je me souviens avec délectation , c'est les petits programme sur Thomson MO5 puis M07 que j'avais fait pour mes enfants :)

    RépondreSupprimer
    Réponses
    1. TO7-70 bien sur et non MO7.
      comme je vous disait, pour ce qu'il en reste, de ma mémoire ...

      Supprimer
  9. J'essaye également de faire découvrir la magie de l'informatique à mon fils de 11 ans, mais ce n'est vraiment pas facile. Je me demande si c'est parce que cette technologie est maintenant si présente qu'on peut en profiter sans faire d'efforts ...

    RépondreSupprimer
    Réponses
    1. J'allais le dire... Animer un écran lorsque nos parents étaient nés sans télévision comportait quelque chose de magique bien loin de notre époque dans laquelle les écrans nous entourent et animent nos vies, de gré ou de force.

      Supprimer
    2. le probleme est de trouver l'environnement et surtout le sujet porteur pour l'enfant.
      Développer pour développer n'arrivera éventuellement que plus tard je pense...

      Delphi est un bon point de départ pour les "enfants" ... et surtout ultra progressif dans le temps

      Type de projet pour mon fils:
      gestion des mangas:
      - sa bibliotheque
      - les manga des amis
      - les prets
      ...
      Bientot on va s'attaquer aux sockets et on ouvrira le port 80, pour générer le http...

      Supprimer
    3. Ma fille de 7 ans est dingue de Scratch : http://fr.wikipedia.org/wiki/Scratch_%28langage%29

      Supprimer
  10. Ah, les fameuses Texas Instrument, sur lesquelles on essayait de programmer des jeux plus que basiques.

    Pour autant que je m'en souvienne, on inscrivait tous les formules de maths et physique sur ledit objet, immanquablement le prof nous disait qu'on avait pas le droit à la calculette le jour du bac. Tant pis, c'était tellement fastidieux à écrire ces formules qu'on finissait par s'en souvenir par cœur.

    RépondreSupprimer
  11. Votre prof de philo n'avait pas vraiment tort, matemata, les choses de l'esprit. Joli parcours soit dit en passant.

    RépondreSupprimer
  12. Comme le dit Anonyme, il n'y a en effet aucune joie a programmer en Java.

    Mais je sympathize beaucoup avec votre commentaire. La magie de controller la machine est toujours presente pour moi. Je l'oubli parfois quand un bug m'echappe et que la documentation manque. Mais quand je suis seul face a mon ecran, tapant dans un language esoterique et que l'image affichee sur l'ecran change exactement comme je le voulait, j'ai l'impression d'etres un grand sorcier. Je suis toujours avec des lettres vertes sur un fond noir parceque ca renforce l'illusion.

    RépondreSupprimer
  13. Je vous prie, mesdames et messieurs Anonyme, PrometheeFeu et autres trolls, de ne parler qu'en votre nom et de laisser aux autres (ainsi qu'à moi-même) le libre arbitre de décider s'ils peuvent ou non trouver leur bonheur en programmant en java.
    Merci.
    Valar dohaeris.

    No One

    RépondreSupprimer
    Réponses
    1. Loin de moi l'idee d'interferrer dans votre libre arbitre. Je n'en n'ais d'ailleurs pas le pouvoir. Il est evident que certains aiment bien le Java et que je ne peu bien sur parler qu'en mon propre nom. Tous les gouts sont dans la nature. Mais force m'est de constater que le Java ne semble pas faire le bonheur de grand monde autour de moi. Mais si ce language vous fait plaisire, ne vous inquietez pas, je ne vais pas vous piquer votre compiler.

      Supprimer

Lectrice, admiratrice, avocate, magistrate, programmeuse, dessinatrice, chère consœur, femmes de tous les pays, lecteur, j'ai toute confiance en vous pour prendre bien soin de vérifier que votre prose est compatible avec les normes orthographiques et grammaticales en vigueur. Et si vous pouviez éviter les propos insultants ou haineux, je vous en serais reconnaissant.
N'hésitez pas à respecter ces quelques règles qui peuvent même s'appliquer en dehors de ce blog.

Les commentaires sur ce blog sont modérés. Votre message apparaîtra sur le blog dès que le modérateur l'aura approuvé. Merci de votre patience.