XD blog

blog page

informatique


2021-06-28 Mon premier projet informatique

J'ai fait un peu de rangement et soulevé les couches sédimentaires de papier pour finalement tomber sur mon premier projet d'informatique alors que j'avais environ 17 ans : Dessin d'arbres. Je me suis amusant à tracer des faux arbres sur écran de façon récursives et avec un peu d'aléas. Sur ma copie figurent la note et plein de traits rouges pour chaque faute d'orthographe. Impossible d'en savoir plus. Voici un des arbres tracer sur une imprimante à aiguilles de l'époque, aux alentours de 1995.

Evidemment, je n'ai plus le code... C'était du pascal et internet n'existait pas encore.

2017-07-22 Geek non désiré à la terrasse

Je m'assois a la terrasse d'un café à Bordeaux, valises en bandoulière. Je commande un demi. Je jette un coup à la Garonne. Elle est très sombre. La pluie a probablement nettoyé le sol aux alentours. Je sors mon ordinateur portable pour évacuer un bug qui me trottait dans la tête depuis le départ du train. Dix minutes passent. Je termine ma bière. La serveuse revient et me dit que les ordinateurs portables sont interdits en terrasse. J'ai le choix de migrer à l'intérieur ou de le fermer. Je passe en revue les raisons qui pourraient me pousser à rester et comme je n'en vois aucune, je plie bagages aussi sec. La terrasse n'était pourtant pas comble, l'intérieur encore moins et pourtant, le clavier aux bouts des doigts, je suis passé dans la catégorie des squatteurs de chaises à faible consommation. Je ne sais pas ce que j'étais avant peut être un bouffeur d'ennui à fort potentiel alcoolique. Moi geek avoué me suis senti l'espace d'un instant mis au ban de la société. Je rumine. Mon voisin de terrasse fumeur a bon dos de m'empoisonner. Lui a le droit de rester. Je ne sais pas de quelle religion mon ordinateur portable est le signe ostentatoire mais ce jour-là, face à la Garonne, à la terrasse d'un bout de bateau, j'ostentais magnifiquement. Mon église ne devait pas être loin. J'ai bien évidemment écrit ce billet à la terrasse d'un autre café.

2017-07-17 Atoll de données

Je me souviens pas d'avoir lu une phrase aussi proche techniquement de mon quotidien de travail et pourtant celui-ci ne m'a pas aidé à la comprendre. "Camden avait mené un coup exceptionnel d'investissement en limites croisées d'un atoll de données.", extraite de L'une rêve, l'autre pas, de Nancy Kress. La science fiction est toujours à la frontière entre le possible et l'impossible. Comme cette phrase est un des éléments qui justifie l'intrigue, j'ai naturellement voulu la ranger dans la première catégorie sans pour autant pouvoir lui donner un sens précis. J'ai pourtant mené ma petite enquête auprès de mes amis sans pouvoir dégager un début de piste sensé. Je pensais trouver une idée en allant chercher le texte original. Le titre complètement différent Beggars in Spain promettait quelque succès. La traductrive ne devait pas être très inspirée non par cette phrase qu'elle a simplement transcrite mot à mot :Cross-border data-atoll investment.

Quelques recherches sur internet ont suffi pour déformer l'expression en Cross-border data flow puis finalement Transborder dataflow qui traduit le fait que les données traversent différentes législations qui les protègent différemment. Cela rappelle étonnamment une technique d'optimisation fiscale Double irlandais qui exploite plusieurs législations. L'interprétation continue avec un article Transborder Data Flows at Risk puis Declaration on Transborder Data Flows. Je dirais alors que l'expression initiale évoque une transformation et un déplacement astucieux d'un ensemble de données intéressant depuis une législation stricte quant à leur usage vers une autre plus permissive par rapport à l'usage qu'on souhaite en faire. Cela évoque d'ailleurs des problèmatiques assez récentes liées au Machine Learning éthique, à l'anonymisation des données Anonymisation des données, à la notion de vie privée au regard de tout ce qu'on sait de votre double numérique.

2017-05-17 Les petits détails des ordinateurs portables

Je passe énormément de temps avec les ordinateurs et je réalise qu'un certain confort est indispensable si on ne veut pas devenir fou. Voici quelques détails auxquels je pense quand j'achète un portable.

Je n'aime pas trop les écrans brillants. C'est épuisant et la luminosité doit pouvoir être ajustée depuis le clavier tout comme le son. (OLED vs LED LCD – Which display tech is the best?) Les écrans LCD sont plus mats ce que je préfère. Je ne sais pas vraiment ce qui est meilleur pour les yeux. Ensuite, je n'ai pas besoin d'écran très puissant car je ne joue pas trop avec mes ordinateurs.

Je n'aime pas que la touche CTRL ne soit pas dans le coin inférieur gauche. Sur certains clavier, elle est inversée avec la touche fonction (c'est le cas des Lenovo). Enfin, les anglais n'aiment pas trop les clavier Azerty. Ils font parfois des trucs bizarre quand ils adaptent un Qwerty en Azerty. Mon dernier portable a une touche >< près des touches de déplacement, soit de l'autre côté. Pas possible ! De même pour les touches de défilement de pages et même début et fin de ligne, elles doivent être accessibles directement, sans pression d'une autre touche. Une petite précision pour ceux qui choisissent des Mac ou Apple, le clavier français rend difficile d'accès tous les symbols [] {} qui sont très fréquents quand on programme. C'est joli mais agaçant.

Sur un portable récent, j'ai eu un problème de touche lente à la répétition : j'écrivais normalement comme sur n'importe quel ordinateur mais lorsque je tapais deux fois sur la même touche, seule une lettre apparaissait. On m'a dit : il suffit de ralentir. Celui qui m'a dit ça ne doit pas utiliser un ordinateur tous les jours. HP Spectre X360 Missing Double Keystrokes).

Sur un autre portable, il était impossible de booter depuis réseau (touche F12 au redémarrage), Boot issue after installation on Acer Swift 3 laptop (only with 64 bits version)).

Le disque SSD 256 Go. Je préfère SSD à autre chose même si le disque SSD est plus cher et plus petit.

Le ventilateur ne doit pas faire trop de bruit. Difficile à tester sans faire des calculs. De même, il faut pouvoir le poser sur les genoux sans que ça brûle. Si c'est juste pour écrire, cela ne devrait pas chauffer.

2015-09-12 Messages légers non coupés sur le téléphone

La plupart des réseaux sociaux ou listes de diffusion envoient des mails réguliers à propos des récents changements ou messages. Mon téléphone me les montre le lendemain alors que je suis dans le métro. Avec le temps, ces messages s'alourdissent : ils ne sont pas plus long mais la quantité de HTML et de javascript pour les mettre en forme est de plus en plus conséquente. Or mon téléphone coupe les messages lorsqu'ils dépassent un certain volume me demandant explicitement de télécharger la suite. Et comme je suis dans le métro quand je les découvre, et comme je suis dans le métro, la connexion n'est pas extraordinaire et vient à bout de ma patience. J'abandonne et je détruis le message sans même prendre le temps de lire la fin. Court, c'est mieux, sinon je ne lis plus.

2015-01-15 Projets informatiques, ENSAE 1A

Liste des sujets suggérés. Le hors piste est encouragé.

2014-12-13 On fait la même chose pour des sciences abstraites ?

Méfiez-vous, quand on commence, on ne s'arrête plus : ExperimentBoy. Un peu moins drôle mais tout aussi prenant : La malédiction de la tartine beurrée. Et en math : Aux sources du zéro.

2014-08-09 L'informatique et Wikipedia

Je référence souvent Wikipedia dans mes cours, le plus souvent possible la page française quand elle existe mais force est de constater qu'elle n'existe pas toujours. C'est le cas de celui-ci Longest increasing subsequence qui est un problème classique mais pas si évident que cela (voir plus grande séquence croissante). Il faudrait que je regarde de façon statistique quels sont les domaines les mieux représentés selon les différentes langues. De mémoire, il existe toujours une version anglaise, sans doute parce que cette langue est devenue la langue scientifique. En ce qui concerne les algorithmes, les pages françaises sont souvent moins fournies, et on voit plus souvent des versions russes ou polonaises : Reservoir Sampling, Johnson's algorithm. Travaillant pour une multinationale, je constate que les ingénieurs des pays de l'Est découvrent beaucoup plus tôt l'informatique et sont plus cultivés dans ce domaine. Les deux faits sont-ils liés ?

2014-05-14 Deux ou trois choses à vérifier avant de rendre un projet informatique

Avant de remettre un programme informatique à un relecteur, il est deux ou trois petites choses qui facilitent le travail de relecture :

Lorsqu'un programme ne marche pas et qu'on a passé beaucoup de temps à chercher l'erreur, quoi de plus naturel que d'envoyer un mail à son professeur : "Monsieur, je ne comprends pas, ça ne marche pas et ça devrait marcher". Une fois sur deux, je réponds qu'il me serait utile d'en savoir un peu plus :

Bien souvent, le message d'erreur que je peux lire après avoir reproduit l'erreur est une bonne indication pour savoir où chercher. Dans le cas contraire, voici ce par quoi je commence en général : Je conçois qu'un bug récalcitrant titille un peu et suscite l'envoi d'un mail simple et concis traduisant un certain état d'agacement : ça ne marche pas et ça devrait marcher ! En pareil cas, j'ai aussi tendance à réagir de la sorte. Toutefois, étant la source de l'erreur, le programmeur est celui qui dispose des informations les plus détaillées. J'essaye de lui demander tout ce qu'il sait avant de me lancer en conjectures.

Un cas concret : un programme est censé minimiser la longueur du chemin passant par tous les noeuds d'un graphe (problème du voyageur de commerce). L'algorithme implémenté était tout-à-fait correct à ceci près que l'arc liant le dernier noeud au premier était oublié dans le calcul de la longueur du chemin (il ne bouclait pas). Je vous laisse imaginer ce que l'algorithme produisait comme solution et pourquoi ce que j'ai vu au fil des itérations m'a incité à aller inspecter le calcul de cette longueur.

2014-05-11 Evolutions Informatiques

J'écoutais l'émission On n'arrête pas l'éco du 10 mai. L'invité évoquait la formation des informaticiens dans différents pays. Je ne me souviens plus exactement en quels termes il s'est exprimé mais il mettait en avant la formation généraliste et mathématique des ingénieurs français qui leur permettrait d'apprendre plus rapidement de nouvelles techniques. Je me suis rendu compte que je m'appuyais implicitement sur ce bagage le jour où on me demanda d'expliquer ce qu'était le machine learning. Mon premier réflexe fut de partir d'un problème simple tel qu'une régression linéaire et son expression mathémtique. Comprendre voulait dire pour moi s'approprier les concepts mathématiques, passer du linéaire au continu, réduire un problème complexe à un ensemble de problèmes simples qu'on sait résoudre. Lorsqu'il s'agit de maitrîser une nouvelle technique, il me semble plus facile de s'approprier l'idée que d'apprendre à se servir des outils qui la mettent en pratique. Un nouveau langage informatique se résume souvent à une nouvelle syntaxe, un bouquin et quelques exercices.

Il est difficile de dire ce que sera le paysage informatique dans cinq ans. Il faut un à deux ans pour imaginer un nouveau concept et plusieurs années pour le faire mûrir. La page Wikipedia List of Programming Language recense un nombre impressionnant de langages informatiques parmi lesquels on trouve le LSE (syntaxe). C'est un langage informatique à syntaxe française avec lequel l'éducation national a tenté de m'apprendre à programmer. Certains langages sont très aboutis et cherchent à simplifier l'usage qu'on peut en avoir dans un contexte d'expérimentation (Social Network Analysis), d'autres comme Erlang ont été conçus dès le départ pour concevoir des programmes robustes dans un environnement de production. Ils sont en anglais.

Depuis l'avènement du Big Data, les langages fonctionnels sont en vogue. Scala, Clojure, F#, ces langages forcent le développeur à écrire différemment de telle sorte que le programme est plus facilement transposable dans un environnement Map Reduce. Un nouveau langage cherche à exprimer une idée encore plus simplement.

2014-03-11 Echec informatique d'une réforme

Dans le train pour Londres, je suis tombé sur cet article : L’Etat abandonne le projet de superlogiciel de paie des fonctionnaires. A sa lecture, je fus surpris par les estimations initiales, les sommes dépensées dans un projet dont je n'imaginais pas qu'il pût être complexe à ce point. Je regrette que l'article ne dise pas pourquoi le projet a échoué. Peut-être la raison n'est connue que par la simple constatation que la fin est aussi loin qu'au commencement. La mise en place d'un logiciel censé simplifier la vie passe d'abord par la compréhension exhaustive du système existant. Il peut arriver que cette connaissance soit tellement diffuse qu'elle en devient difficile à saisir. Elle peut être répartie sur un grand nombre de personnes qui ont sans doute parfois adapté des règles vieillissantes à leur quotidien, quitte à transformer une règle écrite en un usage transmis oralement.

Mais tout de même, imaginer qu'on n'ait pu en venir à bout, qu'on n'ait pu établir une liste exhaustive des modes de paiements des fonctionnaires... Plus de 500 personnes ont travaillé sur ce projet, plus de 12.000 fonctionnaires assurant la paie des fonctionnaires. Si j'en crois cet article 5.493.200, c'est le nombre exact de fonctionnaires en France, chacun s'occupe des paies de 458 fonctionnaires. C'est à se demander si ce manque de clarté ne serait pas un effet désiré plutôt qu'une conséquence indésirable d'une gestion répartie dans chaque ministère depuis quelques décennies.

Je vais relire le Château de Kafka. J'y verrai plus clair.

2013-03-30 Python, R, MOOC, Big Data, quelques références

A chaque fois qu'on change de distribution Python, il faut réinstaller les modules dont on se sert et aussi ceux dont on se sert parfois et dont on découvre qu'ils ne sont pas toujours maintenus à jour. Le module Rpy2 permet de lancer des scripts R depuis l'interpréteur Python. Il permet également d'accéder à certains objets puisque l'espace de travail reste ouvert et garde la mémoire de ce qui a été fait. J'essaye de l'installer, ce que je n'ai pas encore réussi à faire avec la version 3 de Python, et ce faisant, je suis tombé sur le module RPython qui permet de faire exactement l'inverse, c'est-à-dire d'exécuter du code Python depuis R.

Je suis beaucoup plus à l'aise avec Python dès qu'il s'agit de faire les choses les plus ennuyeuses (charger des données, réarranger des colonnes, filtrer, appliquer des modifications textuelles...), je vais probablement l'essayer. Mais cela montre que le langage Python est plutôt populaire. La même chose existe avec Excel : le module pyxll permet d'écrire des macros en Python de façon plutôt simple. L'idée est plutôt séduisante, il est plus facile de maintenir un code Python plutôt que de VBA.

L'apprentissage de l'informatique se démocratique en ce sens qu'il devient de plus en plus facile de trouver des cours gratuits et de très bonne qualité. Le site du zéro propose également de nombreux tutoriels sur la plupart des langages informatiques courants. En langue anglaise, il y a code school ou Khan Academy qui dispose de nombreuses vidéos à propos de sujets allant de la programmation à computer science même si dans ce domaine le must est Coursera. L'école Polytechnique a décidé d'y participer : EP. edX est une autre plateforme choisie par Harvard, le MIT. Ces plateformes sont appelées MOOC, le blog suivant un MOOC c'est quoi au juste sera plus disert que moi sur le sujet. Le dernier cité est Udacity. Le premier (Coursera) est probablement le plus riche, on y trouve également des cours d'improvisation musicale.

Chose amusante, peu de cours apparaissent lorsqu'on en cherche un à propos de Big Data. Sans doute cette présentation Big Data, Sorry What Does a Data Scientist Do en donnera quelques raisons (j'ai trouvé cela depuis le blog Freakonometrics).

2013-03-26 L'informatique, une matière moins noble

Quand j'ai soutenu ma thèse, j'ai découvert que mon doctorat m'offrirait moins de portes académiques tout simplement parce celui-ci me désignait comme docteur en informatique et non en mathématiques. Je ne sais pas si c'est toujours le cas mais l'informatique a toujours eu en France un côté moins noble parce que très appliqué. Aujourd'hui, des phénomènes comme Big Data, Data Scientist prennent de l'ampleur et avec eux l'utilisation de l'informatique. Il est pratiquement impossible de se passer des ordinateurs, dès qu'on aborde un sujet un tant soit peu appliqué, il faut savoir coder, ce que j'ai très peu fait dans un cadre scolaire, ce que j'ai beaucoup fait en dehors de l'école et surtout au travail. On peut prétendre que cela s'apprend facilement, que comprendre les maths est plus difficile, et qu'avec un peu de pratique, on saura faire. Il me serait difficile de réfuter ça, c'est comme ça que j'ai appris. Toutefois, c'est un peu comme les gammes au piano, plus on en fait, plus on est à l'aise.

Cette division math/info est beaucoup moins présente dans les pays anglosaxons où les mathématiques appliquées et l'informatique s'appellent computer science. Lors des entretiens d'embauche, il est rare de passer au travers d'exercices de codes. C'est parfois même le premier filtre écrit préalable au premier entretien. Entre quelqu'un que cela ne rebute pas et quelqu'un qui prend la chose de haut, les sociétés n'hésitent pas longtemps. Même s'il est prétendument facile de devenir programmeur, de nombreuses compagnies ont tendance à rejeter des candidats qui n'ont jamais beaucoup programmé si c'est un élément important du poste à pourvoir.

Les smartphones sont aussi de petits ordinateurs programmables. Il est probable que d'autres objets du quotidien gagneront en complexité et deviendront à leur tour pilotables à l'aide un langage de programmation. Je pense que c'est un outil dont il faudrait commencer l'apprentissage plus tôt. Il en serait moins rébarbatif et, accessoirement, n'en limiterait plus l'usage aux seuls geeks. C'est d'ailleurs le cas dans certains pays de l'est comme la Roumanie. Maîtriser la programmation pourrait faire gagner beaucoup de temps à quiconque se sert d'Excel au quotidien.

Lorsqu'on doit pondre un algorithme qui doit tourner en production 24h sur 24, savoir coder est très important. Il peut y avoir des facteurs 10 ou 100 sur le même algorithme programmé de façon plus ou moins efficace. Savoir programmer n'est pas tout, il est utile d'apprendre les tournures de phrases les plus fréquentes, d'acquérir une sorte de culture générale du domaine, savoir ce que sont des tableaux, des arbres, savoir quand il est préférable d'utiliser l'un plutôt que l'autre, savoir pourquoi quand on divise un problème en deux, on passe d'un coût en O(n) à un coût en O(ln(n)), comprendre pourquoi il vaut mieux utiliser un index lorsqu'on fait une jointure sur deux tables SQL...

En ce qui concerne l'informatique, j'ai quasiment tout appris en pratiquant, parce que terminer un programme signifie aussi l'avoir compris. La pratique permet aussi de comprendre qu'il existe rarement un programme optimal en toute circonstance et qu'on choisira une façon de coder plutôt qu'une autre en fonction du volume, de la nature des données qu'on manipule. De ce fait, beaucoup de programmes sont une compilation complexe de recettes simples. On s'aperçoit aussi parfois qu'on retrouve le même algorithme sous différents visages, plus court chemin dans un graphe de Djikstra, distance d'édition de Levenstein, séquence la plus probable de Viterbi.

Je manipule tellement de données qu'en regarder quelques-unes ne suffit plus à donner une vue d'ensemble. Il faut sans cesse agrégrer, classifier, régresser. Ce travail est quasiment impossible si on ne sait pas programmer. Cette culture algorithmique me permet bien souvent d'aller plus vite, d'obtenir les mêmes résultats en un temps moindre avec, parfois, une certaine élégance.

Pour finir, je conseille l'écoute d'une émission de radio que j'ai découverte après avoir écrit ceci : L'éloge du savoir, Algorithmes, machines et langages (entretien avec Gérard Berry) L'informatique est train de changer la façon d'organiser nos vies et il est mal enseigné aujourd'hui et surtout trop tard. Que sera notre monde dans les prochaines années (et non les prochaines décennies) ? Nos dirigeants ne prennent la mesure des changements que l'informatique n'a pas fini d'apporter comme le dit Michelle Volle dans cet article : Pour comprendre l'iconomie.


Xavier Dupré