Simon CHABROL

Écriture et recherche indépendante (FR/EN)

Technicien de support IT

ALGORITHMIE ET DÉVELOPPEMENT INFORMATIQUE

Ces neuf articles ne forment pas un cours. Ils ne suivent pas un programme, ne s’adressent pas à un lecteur débutant qu’il s’agirait d’amener d’un point A à un point B. Ce sont des textes indépendants, publiés le même jour, qui se répondent sans se prescrire — la façon dont des livres d’une même bibliothèque se font écho sans qu’on les ait nécessairement lus dans l’ordre.

Le fil conducteur, s’il en existe un, est une conviction sur la manière d’apprendre : comprendre ce que l’on construit, plutôt que d’utiliser des abstractions sans en connaître le mécanisme. Chaque algorithme est implémenté depuis zéro. Chaque concept est traduit en code avant d’être déclaré compris. Il y a quelque chose de légèrement obstiné dans cette démarche — une résistance aux raccourcis qui n’est pas de la pédanterie, mais de la méfiance envers ce qu’on croit savoir sans l’avoir jamais mis en œuvre.

La collection se divise naturellement en quatre registres : les textes d’algorithmie, courts et orientés pratique ; les articles de machine learning, qui progressent des structures élémentaires vers les systèmes capables d’apprendre ; un texte sur le métier, transversal et ancré dans l’expérience ; enfin, deux documentations de projets, qui donnent à voir le travail produit plutôt que d’en enseigner les fondements.

  1. I. Algorithmie & traitement de données
    1. Implémenter des algorithmes de tri avec JavaScript
    2. Convertir des fichiers CSV en JSON avec JavaScript
    3. Traitement des fichiers HTML et XML en JavaScript
  2. II. Machine learning & intelligence artificielle
    1. Introduction au traitement automatique du langage naturel
    2. Apprentissage des réseaux de neurones multicouches
    3. Jouer au morpion avec l’algorithme Minimax
  3. III. Pratique professionnelle
    1. Test technique de recrutement : l’essentiel à savoir
  4. IV. Documentation de projets
    1. LINOCUT — Traitement d’images computationnel
    2. Deux dépôts, deux langages

I. Algorithmie & traitement de données

Les trois premiers articles sont les plus courts de cette publication. Ils couvrent des opérations que tout développeur rencontre tôt ou tard — trier des données, convertir des formats, extraire de l’information depuis des fichiers structurés — et les traitent sans faire appel à des bibliothèques externes. Ce choix d’austérité est répété, jamais justifié dans le texte : il va de soi que l’intérêt est là, dans le mécanisme, pas dans l’usage.

Implémenter des algorithmes de tri avec JavaScript

Un retour aux fondamentaux : bubble sort, insertion sort, merge sort, réimplémentés sans recourir à la fonction native sort(). L’exercice est classique, presque rituel dans la culture du développement. Ce qui l’élève au-delà du simple drill, c’est l’attention portée à la complexité temporelle de chaque approche — cette façon de mesurer non pas ce qu’un algorithme fait, mais à quel prix il le fait. Un texte qui se lit aussi comme une préparation discrète aux entretiens techniques.

Convertir des fichiers CSV en JSON avec JavaScript

Format court, à la façon d’une recette. Le CSV est l’un des formats les plus répandus pour stocker et transmettre des données tabulaires, et sa simplicité apparente cache quelques pièges — délimiteurs ambigus, gestion des en-têtes, caractères d’échappement. L’article les affronte directement, en JavaScript natif, et livre un parser qui tient en quelques dizaines de lignes.

Traitement des fichiers HTML et XML en JavaScript

HTML et XML partagent une même logique de hiérarchie par balises, mais n’ont pas les mêmes objectifs — l’un décrit une présentation, l’autre encode des données. L’article explore la traversée de cet arbre pour en extraire de l’information structurée, posant les bases de ce que le dépôt Python appliquera plus tard au scraping web avec BeautifulSoup. Un écho discret entre les deux langages, entre les deux dépôts.

II. Machine learning & intelligence artificielle

C’est la partie la plus ambitieuse de cette publication. Trois articles qui progressent du traitement du langage vers l’apprentissage profond, puis vers la théorie des jeux — un ordre qui n’est pas strictement pédagogique, mais qui révèle une façon de penser : partir du langage, de ce qui est le plus humain, pour aller vers ce qui est le plus formel.

Introduction au traitement automatique du langage naturel

Le NLP est un domaine aux ramifications considérables. L’article choisit d’en entrer par la porte la plus concrète : la construction d’un outil de classification de textes. Tokenisation, représentation vectorielle, modèles de classification — les fondements sont posés avec le code comme preuve. C’est aussi le texte de cette collection qui entretient le lien le plus direct avec les grands modèles de langage d’aujourd’hui : on y retrouve, à l’état embryonnaire, des mécanismes que GPT ou BERT ont poussés à une échelle que l’article n’a pas vocation à atteindre.

Apprentissage des réseaux de neurones multicouches

La rétropropagation du gradient est l’un des algorithmes les plus importants de ces trente dernières années. Sa réputation d’opacité est en partie méritée : comprendre pourquoi il fonctionne demande de dérouler, couche par couche, la propagation de l’erreur vers l’arrière du réseau. L’article s’y emploie patiemment, en implémentant le mécanisme depuis zéro. Il fait directement écho au module neural_network.js du dépôt JavaScript — dont il constitue, rétrospectivement, la documentation théorique.

Jouer au morpion avec l’algorithme Minimax

Le morpion est un jeu si simple qu’il peut être résolu exhaustivement : toutes les parties possibles tiennent dans un arbre d’une profondeur raisonnable. C’est précisément ce qui le rend intéressant pour introduire le minimax — cet algorithme qui, face à chaque coup, anticipe la réponse adverse la plus défavorable et joue en conséquence. Un texte qui traite de stratégie sous une apparence ludique, et dont les concepts sont directement transposables aux problèmes de décision séquentielle bien au-delà du jeu.

III. Pratique professionnelle

Test technique de recrutement : l’essentiel à savoir

Cet article est le seul de la collection à s’adresser directement à quelqu’un en situation : un développeur qui prépare un entretien, qui anticipe des questions, qui cherche à ne pas être pris de court. Son positionnement dans cette publication n’est pas anodin. Les sujets qu’il recense comme récurrents dans les tests techniques — complexité algorithmique, structures de données, tri, manipulation de formats — sont précisément ceux que les autres articles de cette collection traitent en détail. Le guide et les implémentations se lisent donc ensemble, chacun donnant du relief à l’autre : l’un dit ce qu’on demande, l’autre montre comment on y répond.

IV. Documentation de projets

Les deux derniers articles jouent un rôle différent. Ils ne transmettent pas de méthode, ne construisent pas de compétence pas à pas. Ils montrent — au sens littéral : ils donnent à voir un travail accompli, en expliquent les choix, en révèlent l’architecture intérieure. Ce sont des textes de documentation au sens noble du terme, ceux qu’on écrit non pour être utile à soi-même, mais pour rendre un projet lisible par un autre.

LINOCUT — Traitement d’images computationnel

sketch_filter.py est un script Python autonome qui transforme des photographies en rendus d’estampe : linogravure, crayon, taille-douce, plaque typographique. L’article en documente le pipeline de traitement — conversion en niveaux de gris, débruitage, application du style, ajustement de contraste — et détaille les quatre algorithmes de rendu, chacun imitant une technique d’impression différente par des moyens entièrement computationnels. Il y a quelque chose de légèrement paradoxal à simuler, par du code, des procédés qui valaient précisément pour leur résistance à la reproduction mécanique.

Deux dépôts, deux langages

Une revue croisée des deux dépôts GitHub qui forment le substrat de cette publication. Le premier, en JavaScript — 484 commits, dix-neuf modules, du pipeline ETL au réseau de neurones implémenté sans bibliothèque — privilégie la largeur et l’exploration. Le second, en Python — quatre utilitaires ciblés autour du PDF et de l’image — privilégie la profondeur et l’usage immédiat. L’article ne se contente pas d’en lister le contenu : il en analyse l’architecture, en identifie les points techniques saillants, et propose une lecture des choix de conception qui révèle, en creux, une certaine façon de concevoir le rapport entre langage et problème à résoudre.