{"id":1529,"date":"2017-08-20T10:52:00","date_gmt":"2017-08-20T08:52:00","guid":{"rendered":"https:\/\/xeddixx.cluster029.hosting.ovh.net\/?p=1529"},"modified":"2026-02-10T10:38:09","modified_gmt":"2026-02-10T09:38:09","slug":"2017-08","status":"publish","type":"post","link":"https:\/\/www.francq.info\/index.php\/blog\/2017-08\/","title":{"rendered":"L&rsquo;art de programmer"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Lorsque j\u2019explique que je con\u00e7ois et programme des algorithmes, mes interlocuteurs me regardent g\u00e9n\u00e9ralement interloqu\u00e9s comme si j\u2019\u00e9tais une sorte d\u2019extraterrestre. Pour de nombreuses personnes, la programmation semble relever d\u2019une forme de chamanisme.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour d\u2019autres, la programmation rel\u00e8ve d\u2019un \u00absimple\u00bb acte technique sp\u00e9cialis\u00e9 au m\u00eame titre que la r\u00e9solution d\u2019une\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/%C3%89quation_diff%C3%A9rentielle\" rel=\"noreferrer noopener\">\u00e9quation diff\u00e9rentielle<\/a>. Les enseignements d\u2019informatique dans les universit\u00e9s, de surcro\u00eet souvent int\u00e9gr\u00e9s dans des facult\u00e9s de sciences, renforcent cette perception.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Je ne me suis pourtant jamais vu comme un technicien, et encore moins comme un sorcier du\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Silicium\" rel=\"noreferrer noopener\">silicium<\/a>. C\u2019est plut\u00f4t l\u2019habit d\u2019artiste que j\u2019imagine rev\u00eatir lorsque je commence \u00e0 d\u00e9velopper. Et je vais tenter de montrer que ce n\u2019est pas qu\u2019une forme de coquetterie de ma part.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ce billet est sans doute quelque peu frivole. J\u2019esp\u00e8re n\u00e9anmoins qu\u2019il proposera peut-\u00eatre quelques pistes de r\u00e9flexion sur l\u2019une ou l\u2019autre question pos\u00e9e par l\u2019informatisation de nos soci\u00e9t\u00e9s, notamment sur son enseignement.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\"><a><\/a>L\u2019ing\u00e9nierie informatique<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">J\u2019ai\u00a0<a href=\"https:\/\/www.francq.info\/index.php\/blog\/2017-02.html\" rel=\"nofollow\">d\u00e9j\u00e0 \u00e9voqu\u00e9<\/a>\u00a0la diff\u00e9rence qui existe, selon moi, entre l\u2019informatique et les math\u00e9matiques appliqu\u00e9es. L\u00e0 o\u00f9 la premi\u00e8re m\u2019appara\u00eet relever principalement de l\u2019ing\u00e9nierie, les secondes s\u2019inscrivent clairement dans le champ disciplinaire des math\u00e9matiques (dont elles constituent l\u2019une des branches).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La diff\u00e9rence pourrait sembler\u00a0<em>a priori<\/em>\u00a0terminologique. J\u2019y vois pourtant une rupture. \u00c0 mes yeux, l\u2019ing\u00e9nierie implique que le p\u00e9rim\u00e8tre du probl\u00e8me auquel on s\u2019attaque est trop vague et\/ou trop large pour qu\u2019une solution id\u00e9ale soit calcul\u00e9e.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Prenons comme exemple la construction d\u2019un pont. Lorsque des ing\u00e9nieurs le con\u00e7oivent, ils ne peuvent pas prendre toutes les \u00e9ventualit\u00e9s en compte, celles-ci \u00e9tant trop nombreuses. En th\u00e9orie, rien ne garantit donc que le pont ne s\u2019\u00e9croulera pas. Pourtant, en pratique, le plus souvent, il tient !<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En fait, l\u2019ing\u00e9nieur cherche la meilleure solution possible, m\u00eame s\u2019il ne peut jamais promettre que ce soit la solution id\u00e9ale. Dans l\u2019exemple des ponts, les ing\u00e9nieurs combinent des \u00e9quations tenant compte des principaux \u00e9l\u00e9ments (stabilit\u00e9, vents, poids du trafic, etc.) avec des coefficients de s\u00e9curit\u00e9.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\"><a><\/a>Dans les r\u00e8gles de l\u2019art<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Ce qui appara\u00eet de prime abord comme de \u00absimples astuces\u00bb repose sur des faits objectifs, eux-m\u00eames produits des sciences actuelles. La formation d\u2019ing\u00e9nieur s\u2019articule d\u2019ailleurs sur l\u2019apprentissage des math\u00e9matiques (analyse, alg\u00e8bre, etc.) et des lois de la Nature (physique, chimie, etc.).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mais contrairement \u00e0 la r\u00e9solution de probl\u00e8mes typiques des \u00absciences pures\u00bb, on y ajoute aussi des \u00e9l\u00e9ments \u00absubjectifs\u00bb. Ces derniers d\u00e9coulent de l\u2019exp\u00e9rience humaine accumul\u00e9e au fil du temps et des \u00e9volutions technologiques.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le d\u00e9veloppement de logiciels s\u2019attelant \u00e0 des probl\u00e8mes un tant soit peu \u00e9labor\u00e9s rel\u00e8ve de la m\u00eame d\u00e9marche. Certes, l\u2019ing\u00e9nieur informaticien<sup data-fn=\"f856ca00-a9a4-4e4f-b714-c1383b869265\" class=\"fn\"><a href=\"#f856ca00-a9a4-4e4f-b714-c1383b869265\" id=\"f856ca00-a9a4-4e4f-b714-c1383b869265-link\">1<\/a><\/sup>\u00a0se base sur les math\u00e9matiques appliqu\u00e9es (th\u00e9orie de la complexit\u00e9, calculs de graphes, etc.). Mais il mobilise \u00e9galement d\u2019autres comp\u00e9tences.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Souvent, les solutions id\u00e9ales des math\u00e9matiques appliqu\u00e9es s\u2019av\u00e8rent impossibles \u00e0 implanter par manque de ressources computationnelles (puissance de calcul, m\u00e9moire, etc.). L\u2019ing\u00e9nieur en invente alors de nouvelles, consistant parfois, d\u2019ailleurs, en des \u00abformes d\u00e9grad\u00e9es\u00bb de solutions id\u00e9ales<sup data-fn=\"874da37c-3219-4a9e-84bc-d27a4928498f\" class=\"fn\"><a href=\"#874da37c-3219-4a9e-84bc-d27a4928498f\" id=\"874da37c-3219-4a9e-84bc-d27a4928498f-link\">2<\/a><\/sup>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ce subtil \u00e9quilibre \u00e0 trouver entre \u00abfaits objectifs\u00bb et \u00abexp\u00e9riences subjectives\u00bb que les ing\u00e9nieurs \u2013 en informatique comme dans d\u2019autres domaines \u2013 sont cens\u00e9s rechercher revient \u00e0 r\u00e9soudre un probl\u00e8me dans les \u00abr\u00e8gles de l\u2019art\u00bb.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour autant, peut-on, comme je l\u2019\u00e9voque dans l\u2019introduction, assimiler la pratique de l\u2019ing\u00e9nieur informaticien cherchant \u00e0 t\u00e2tons le chemin vers la r\u00e9solution d\u2019un probl\u00e8me dans \u00ables r\u00e8gles de l\u2019art\u00bb \u00e0 celle d\u2019un artiste en qu\u00eate d\u2019inspiration dans la production d\u2019une \u0153uvre ?<\/p>\n\n\n\n<h5 class=\"wp-block-heading\"><a><\/a>La programmation, une exp\u00e9rience esth\u00e9tique<\/h5>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><em>Le processus de pr\u00e9paration d\u2019un programme pour un ordinateur num\u00e9rique est particuli\u00e8rement attrayant, non seulement parce que c\u2019est \u00e9conomiquement et scientifiquement valorisant, mais aussi parce que cela peut \u00eatre une exp\u00e9rience esth\u00e9tique comparable \u00e0 la composition d\u2019un po\u00e8me ou d\u2019une musique.<\/em>\u200a<sup data-fn=\"54b4b56f-ac01-48cc-bd83-0f57e7339e7f\" class=\"fn\"><a href=\"#54b4b56f-ac01-48cc-bd83-0f57e7339e7f\" id=\"54b4b56f-ac01-48cc-bd83-0f57e7339e7f-link\">3<\/a><\/sup><\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">C\u2019est par ces mots que\u00a0<a href=\"https:\/\/fr.wikipedia.org\/wiki\/Donald_Knuth\" target=\"_blank\" rel=\"noreferrer noopener\">Donald E. Knuth<\/a>\u00a0d\u00e9bute la pr\u00e9face de la troisi\u00e8me \u00e9dition de son monumental\u00a0<em><a href=\"https:\/\/fr.wikipedia.org\/wiki\/The_Art_of_Computer_Programming\" target=\"_blank\" rel=\"noreferrer noopener\">The Art of Computer Programming<\/a><\/em>\u00a0[<a href=\"#1\" rel=\"nofollow\">1<\/a>]. Cette s\u00e9rie d\u2019ouvrages pose les bases de l\u2019algorithmique informatique. Bien que peu lu<sup data-fn=\"7b0f46b8-2407-4cf6-89e5-9fc09c183956\" class=\"fn\"><a href=\"#7b0f46b8-2407-4cf6-89e5-9fc09c183956\" id=\"7b0f46b8-2407-4cf6-89e5-9fc09c183956-link\">4<\/a><\/sup>, comme tous les livres importants, cette \u0153uvre dispose d\u2019une v\u00e9ritable aura aupr\u00e8s des informaticiens.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Au-del\u00e0 de la r\u00e9f\u00e9rence \u00e0 l\u2019exp\u00e9rience esth\u00e9tique de l\u2019avant-propos, le titre m\u00eame est symptomatique. Pour un tel projet programmatique,\u00a0<a href=\"https:\/\/fr.wikipedia.org\/wiki\/Donald_Knuth\" target=\"_blank\" rel=\"noreferrer noopener\">Donald E. Knuth<\/a>\u00a0aurait pu utiliser \u00ab<em>Science<\/em>\u00bb. La d\u00e9nomination \u00abcomputer science\u00bb existe en effet depuis 1959\u00a0[<a href=\"#2\" rel=\"nofollow\">2<\/a>]. Mais c\u2019est bien \u00ab<em>Art<\/em>\u00bb qu\u2019il choisit.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Je pense que ce choix traduit l\u2019id\u00e9e qu\u2019il n\u2019existe jamais une seule mani\u00e8re de d\u00e9velopper un programme (complexe). L\u00e0 o\u00f9 la science ne reconna\u00eet, \u00e0 un moment donn\u00e9, qu\u2019une seule explication \u00abobjective\u00bb ou l\u2019absence de celle-ci<sup data-fn=\"70f3622e-00ec-493a-9477-91f75553cd4b\" class=\"fn\"><a href=\"#70f3622e-00ec-493a-9477-91f75553cd4b\" id=\"70f3622e-00ec-493a-9477-91f75553cd4b-link\">5<\/a><\/sup>, l\u2019informatique implique une dimension subjective.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\"><a><\/a>La multiplicit\u00e9 des solutions \u00e0 un m\u00eame probl\u00e8me<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Prenons les logiciels qui jouent aux\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/%C3%89checs\" rel=\"noreferrer noopener\">\u00e9checs<\/a>\u00a0ou \u00e0\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Go_(jeu)\" rel=\"noreferrer noopener\">go<\/a>. En th\u00e9orie, on peut construire un\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Arbre_de_d%C3%A9cision\" rel=\"noreferrer noopener\">arbre de d\u00e9cisions<\/a>\u00a0de toutes les solutions possibles et d\u00e9terminer les branches qui maximisent les chances de victoire. Mais le trop grand nombre de ces solutions rend cette option irr\u00e9aliste en pratique.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pendant longtemps, les ing\u00e9nieurs informaticiens combin\u00e8rent des\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Arbre_de_d%C3%A9cision\" rel=\"noreferrer noopener\">arbres de d\u00e9cisions<\/a>\u00a0partiels avec des\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Heuristique_(math%C3%A9matiques)\" rel=\"noreferrer noopener\">heuristiques<\/a>\u00a0formalisant diff\u00e9rentes r\u00e8gles pratiques (souvent formul\u00e9es par des joueurs professionnels). C\u2019est notamment cette strat\u00e9gie qui permet \u00e0\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Deep_Blue\" rel=\"noreferrer noopener\">Deep Blue<\/a>\u00a0de battre\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Garry_Kasparov\" rel=\"noreferrer noopener\">Garry Kasparov<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aujourd\u2019hui, on privil\u00e9gie les techniques d\u2019apprentissage automatique dites du \u00ab<em><a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Big_data\" rel=\"noreferrer noopener\">big data<\/a><\/em>\u00bb. Des\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/R%C3%A9seau_de_neurones_artificiels\" rel=\"noreferrer noopener\">r\u00e9seaux de neurones artificiels<\/a>\u00a0sont entra\u00een\u00e9s sur des centaines de millions de parties pour \u00abapprendre\u00bb \u00e0 jouer correctement. Le programme r\u00e9cemment victorieux au jeu de\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Go_(jeu)\" rel=\"noreferrer noopener\">go<\/a>\u00a0se base sur cette strat\u00e9gie.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mais, d\u00e8s lors que chaque strat\u00e9gie cherche la meilleure solution possible sachant qu\u2019elle ne sera jamais la solution optimale, aucune ne peut pr\u00e9tendre incarner \u00abla v\u00e9rit\u00e9 informatique \u00bb. Certes, l\u2019une peut se montrer plus performante qu\u2019une autre, mais \u00e7a ne lui conf\u00e8re pas une sup\u00e9riorit\u00e9 dans l\u2019absolu.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En d\u2019autres termes, il n\u2019existe pas d\u2019approche logicielle unique \u00e0 un probl\u00e8me donn\u00e9, mais l\u2019ing\u00e9nieur informaticien peut emprunter plusieurs voies. Tel un \u00e9crivain qui r\u00e9digera plut\u00f4t de la po\u00e9sie ou de la prose, il choisira l\u2019approche avec laquelle il est le plus familier, celle qu\u2019il trouve la plus \u00e9l\u00e9gante.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\"><a><\/a>Un logiciel \u00e9l\u00e9gant ?<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">L\u2019\u00e9l\u00e9gance renvoie explicitement \u00e0 une dimension esth\u00e9tique, et le lecteur non informaticien pourrait se demander en quoi un logiciel peut \u00eatre \u00e9l\u00e9gant. Le\u00a0<em><a target=\"_blank\" href=\"http:\/\/www.larousse.fr\/dictionnaires\/francais\/%c3%a9l%c3%a9gance\/28362?q=%c3%a9l%c3%a9gance#28224\" rel=\"noreferrer noopener\">Larousse<\/a><\/em>\u00a0d\u00e9finit l\u2019\u00e9l\u00e9gance comme une \u00ab<em>qualit\u00e9 de ce qui est exprim\u00e9 avec justesse et agr\u00e9ment, avec une nettet\u00e9 sobre, sans lourdeur<\/em>\u00bb.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cette d\u00e9finition permet notamment de classer une d\u00e9monstration math\u00e9matique comme \u00e9l\u00e9gante ou non. De m\u00eame, on peut diviser les programmes suivant qu\u2019ils sont \u00e9l\u00e9gants ou non. Rien d\u2019\u00e9tonnant en v\u00e9rit\u00e9 d\u00e8s lors que les\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Algorithme\" rel=\"noreferrer noopener\">algorithmes<\/a>, objets math\u00e9matiques par excellence, forment la colonne vert\u00e9brale d\u2019un logiciel.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">D\u00e9but 2017, une revue scientifique am\u00e9ricaine sp\u00e9cialis\u00e9e en informatique publie un bref article proposant quatre crit\u00e8res\u200a<sup data-fn=\"c4151e1e-32aa-4e66-8d51-ae7ab39eeb0f\" class=\"fn\"><a href=\"#c4151e1e-32aa-4e66-8d51-ae7ab39eeb0f\" id=\"c4151e1e-32aa-4e66-8d51-ae7ab39eeb0f-link\">6<\/a><\/sup>\u00a0que devrait rencontrer un logiciel pour \u00eatre qualifi\u00e9 d\u2019\u00e9l\u00e9gant\u00a0[<a href=\"#3\" rel=\"nofollow\">3<\/a>]. Ces crit\u00e8res s\u2019int\u00e8grent parfaitement dans la d\u00e9finition de l\u2019\u00e9l\u00e9gance susmentionn\u00e9e.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Les deux premi\u00e8res caract\u00e9ristiques sont triviales. Un programme doit d\u2019abord privil\u00e9gier le\u00a0<strong>minimalisme<\/strong>\u00a0en \u00e9tant court et simple. Le second crit\u00e8re est l\u2019<strong>accomplissement<\/strong>\u00a0: un logiciel doit pouvoir faire ce qu\u2019il est cens\u00e9 faire.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La\u00a0<strong>modestie<\/strong>\u00a0constitue la troisi\u00e8me dimension. Trop souvent, on esp\u00e8re trouver une solution \u00e0 tous les probl\u00e8mes en une seule fois gr\u00e2ce \u00e0 un \u00abalgorithme universel\u00bb. Si la g\u00e9n\u00e9ricit\u00e9 n\u2019est pas mauvaise en soi, la complexit\u00e9 d\u00e9coulant d\u2019une universalit\u00e9 esp\u00e9r\u00e9e \u00e9touffe souvent toute \u00e9l\u00e9gance.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L\u2019auteure propose la\u00a0<strong>r\u00e9v\u00e9lation<\/strong>\u00a0comme dernier crit\u00e8re. Un logiciel doit \u00ab<em>nous apprendre quelque chose de nouveau ou nous rappeler quelque chose d\u2019oubli\u00e9<\/em>\u00bb\u00a0[<a href=\"#3\" rel=\"nofollow\">3<\/a>]. L\u2019ing\u00e9nieur informaticien exploite, par exemple, une propri\u00e9t\u00e9 sous-jacente d\u2019un probl\u00e8me (telle une sym\u00e9trie) pour le r\u00e9soudre efficacement.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mais l\u2019\u00e9l\u00e9gance d\u2019un programme implique-t-elle automatiquement que la programmation soit un art ? En fait, la dimension artistique d\u00e9coule en plus du fait que la programmation implique l\u2019utilisation d\u2019un support : le\u00a0<a href=\"https:\/\/fr.wikipedia.org\/wiki\/Code_source\" target=\"_blank\" rel=\"noreferrer noopener\">code source<\/a><sup data-fn=\"cd5f3a51-ebf7-49c1-9a19-cd2d9b481f5d\" class=\"fn\"><a href=\"#cd5f3a51-ebf7-49c1-9a19-cd2d9b481f5d\" id=\"cd5f3a51-ebf7-49c1-9a19-cd2d9b481f5d-link\">7<\/a><\/sup>.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\"><a><\/a>La programmation, une forme d\u2019\u00e9criture<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">J\u2019ose m\u00eame \u00e9tablir un parall\u00e8le entre l\u2019\u00e9criture de\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Code_source\" rel=\"noreferrer noopener\">code source<\/a>\u00a0et l\u2019\u00e9criture \u00abclassique\u00bb. Loin de se limiter \u00e0 une simple analogie, le vocabulaire commun utilis\u00e9 pour d\u00e9crire les deux types de production souligne une forme de convergence esth\u00e9tique.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Car, tout comme pour un texte de qualit\u00e9, on attend en effet d\u2019un \u00abbon\u00bb programme qu\u2019il soit \u00abbien \u00e9crit\u00bb. Et, en y regardant de plus pr\u00e8s, la similitude entre ces deux types d\u2019\u00e9criture n\u2019est pas seulement s\u00e9mantique.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tout d\u2019abord, dans les deux cas, la r\u00e9daction doit \u00eatre\u00a0<strong>claire<\/strong>. Pour un texte, il s\u2019agit de construire des phrases limpides en choisissant un vocabulaire adapt\u00e9<sup data-fn=\"a1d4a765-24bf-4e4c-bc63-e46d91e95aec\" class=\"fn\"><a href=\"#a1d4a765-24bf-4e4c-bc63-e46d91e95aec\" id=\"a1d4a765-24bf-4e4c-bc63-e46d91e95aec-link\">8<\/a><\/sup>. Semblablement, pour du\u00a0<a href=\"https:\/\/fr.wikipedia.org\/wiki\/Code_source\" target=\"_blank\" rel=\"noreferrer noopener\">code source<\/a>, on veillera \u00e0 utiliser les instructions les plus lisibles et \u00e0 les regrouper en des s\u00e9quences intelligibles.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ensuite, on exige d\u2019un programme (texte) qu\u2019il soit bien\u00a0<strong>structur\u00e9<\/strong>. Cette structuration d\u00e9marre par des\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Routine_(informatique)\" rel=\"noreferrer noopener\">routines<\/a>\u00a0(paragraphes) coh\u00e9rentes. Celles-ci sont regroup\u00e9es logiquement en\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Objet_(informatique)\" rel=\"noreferrer noopener\">objets<\/a>\u00a0et\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Module_(programmation)\" rel=\"noreferrer noopener\">modules<\/a>\u00a0(chapitres). Le tout est rassembl\u00e9 en\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Biblioth%C3%A8que_logicielle\" rel=\"noreferrer noopener\">biblioth\u00e8ques logicielles<\/a>\u00a0(livres).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Une\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Interface_de_programmation\" rel=\"noreferrer noopener\">interface de programmation applicative (API)<\/a>\u00a0d\u00e9signe la normalisation de l\u2019\u00e9criture des\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Routine_(informatique)\" rel=\"noreferrer noopener\">routines<\/a>\u00a0et de leur organisation. Or, \u00e0 l\u2019instar d\u2019un livre, une\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Interface_de_programmation\" rel=\"noreferrer noopener\">API<\/a>\u00a0doit \u00eatre\u00a0<strong>coh\u00e9rente<\/strong>. Un livre suit une certaine homog\u00e9n\u00e9it\u00e9 dans la forme (concepts, d\u00e9nomination de personnages, etc.). De m\u00eame, une\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Interface_de_programmation\" rel=\"noreferrer noopener\">API<\/a>\u00a0respecte un ensemble de conventions (par exemple pour nommer les\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Variable_(informatique)\" rel=\"noreferrer noopener\">variables<\/a>).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un aspect important d\u2019un logiciel est sa\u00a0<strong>documentation<\/strong>\u00a0qui comprend les informations n\u00e9cessaires pour le comprendre et l\u2019utiliser. Ici aussi, une similarit\u00e9 existe avec le livre. Notons particuli\u00e8rement les commentaires\u200a<sup data-fn=\"abec6fe8-01a7-4c4c-98b8-73e8750e2ce0\" class=\"fn\"><a href=\"#abec6fe8-01a7-4c4c-98b8-73e8750e2ce0\" id=\"abec6fe8-01a7-4c4c-98b8-73e8750e2ce0-link\">9<\/a><\/sup>. Par exemple, en <a href=\"https:\/\/fr.wikipedia.org\/wiki\/Assembleur\">langage assembleur<\/a>, le signe % permet d\u2019indiquer que ce qui suit sur la ligne doit \u00eatre ignor\u00e9 par le <a href=\"https:\/\/fr.wikipedia.org\/wiki\/Compilateur\">compilateur<\/a>. Cette possibilit\u00e9 permet de documenter les instructions du code source. Un exemple fictif :<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>% On charge le contenu de l\u2019adresse 0xA000 dans l\u2019accumulateur\nLOAD 0xA000<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">dans le code\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Code_source\" rel=\"noreferrer noopener\">code source<\/a>\u00a0(notes de bas de page) ou un index des\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Routine_(informatique)\" rel=\"noreferrer noopener\">routines<\/a>\u00a0et des\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Objet_(informatique)\" rel=\"noreferrer noopener\">objets<\/a>\u00a0(index terminologique).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Code_source\" rel=\"noreferrer noopener\">code source<\/a>\u00a0d\u2019un logiciel partage une autre caract\u00e9ristique avec la po\u00e9sie : l\u2019importance de la\u00a0<strong>pr\u00e9sentation<\/strong>. Dans les deux cas, on emploie l\u2019indentation, l\u2019alignement, l\u2019espacement, voire les couleurs, pour aider visuellement le lecteur \u00e0 appr\u00e9hender la structure g\u00e9n\u00e9rale.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Enfin, un \u00e9l\u00e9ment essentiel pour produire des logiciels de qualit\u00e9 est le\u00a0<a href=\"https:\/\/fr.wikipedia.org\/wiki\/R%C3%A9usinage_de_code\" target=\"_blank\" rel=\"noreferrer noopener\">r\u00e9usinage du code<\/a>\u00a0[<a href=\"#4\" rel=\"nofollow\">4<\/a>]. Comme pour l\u2019\u00e9criture \u00abclassique\u00bb, il s\u2019agit d\u2019adopter un processus it\u00e9ratif. On commence par une premi\u00e8re mouture du\u00a0<a href=\"https:\/\/fr.wikipedia.org\/wiki\/Code_source\" target=\"_blank\" rel=\"noreferrer noopener\">code source<\/a>, puis, par passes successives, on l\u2019affine.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\"><a><\/a>Les hackers, artistes du code<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Si tout le monde peut participer \u00e0 la production artistique (\u00e0 commencer par le d\u00e9butant qui apprend un instrument), l\u2019art se caract\u00e9rise n\u00e9anmoins par des producteurs auxquels est attribu\u00e9 un statut singulier : les artistes. Je me limiterai ici \u00e0 les d\u00e9finir comme \u00abreconnus par les autres comme produisant une \u0153uvre\u00bb.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Une communaut\u00e9 souvent \u00e9voqu\u00e9e sur ce blog jouit d\u2019un statut similaire en informatique : les hackers. Dans mon\u00a0<a href=\"https:\/\/www.francq.info\/index.php\/blog\/2015-10.html\" rel=\"nofollow\">billet d\u2019octobre 2015 qui leur \u00e9tait consacr\u00e9<\/a>, j\u2019\u00e9crivais d\u00e9j\u00e0 qu\u2019ils d\u00e9fendent une r\u00e9elle m\u00e9ritocratie bas\u00e9e sur \u00ab<em>l\u2019art de d\u00e9velopper des programmes performants et \u201c\u00e9l\u00e9gants\u201d<\/em>\u00bb.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour les hackers, seules les capacit\u00e9s informatiques sont valoris\u00e9es au sein du collectif. Dans les premiers temps du\u00a0<a href=\"https:\/\/fr.wikipedia.org\/wiki\/Massachusetts_Institute_of_Technology\" target=\"_blank\" rel=\"noreferrer noopener\">MIT<\/a>, o\u00f9 le mouvement hacker na\u00eet, un enfant de 12 ans est ainsi reconnu par les hackers comme l\u2019un des leurs gr\u00e2ce \u00e0 ses r\u00e9alisations logicielles innovantes\u00a0[<a href=\"#5\" rel=\"nofollow\">5<\/a>].<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La reconnaissance par les pairs est au c\u0153ur du syst\u00e8me de valorisation des hackers\u00a0[<a href=\"#6\" rel=\"nofollow\">6<\/a>]. Les hackers estiment que seuls les autres hackers sont capables d\u2019\u00e9valuer l\u2019excellence de leurs d\u00e9veloppements en termes de cr\u00e9ativit\u00e9, d\u2019\u00e9l\u00e9gance et de qualit\u00e9 d\u2019\u00e9criture du\u00a0<a href=\"https:\/\/fr.wikipedia.org\/wiki\/Code_source\" target=\"_blank\" rel=\"noreferrer noopener\">code source<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/fr.wikipedia.org\/wiki\/Emmanuel_Kant\" target=\"_blank\" rel=\"noreferrer noopener\">Emmanuel Kant<\/a>\u00a0affirme que la perception de la beaut\u00e9 (artistique) est subjective, et qu\u2019elle dit plus sur celui qui per\u00e7oit que sur la r\u00e9alit\u00e9 de l\u2019objet per\u00e7u\u00a0[<a href=\"#7\" rel=\"nofollow\">7<\/a>]. Il y a bien un processus similaire chez les hackers. Ils se d\u00e9finissent aussi comme les personnes sachant juger de la qualit\u00e9 d\u2019un logiciel.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\"><a><\/a>La commercialisation de l\u2019art et du code<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Tout comme les artistes, la plupart des hackers accordent peu d\u2019importance \u00e0 la r\u00e9ussite financi\u00e8re\u00a0[<a href=\"#8\" rel=\"nofollow\">8<\/a>]. Le plus souvent, la qualit\u00e9 intrins\u00e8que des productions (musique, romans, logiciels, etc.) importe bien plus que les retomb\u00e9es \u00e9conomiques potentielles.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Les relations parfois difficiles entre les hackers et les entreprises trouvent en partie leurs origines dans l\u2019opposition qui existe parfois entre qualit\u00e9 d\u2019une solution et rentabilit\u00e9. Cet antagonisme prend deux formes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tout d\u2019abord, les int\u00e9r\u00eats commerciaux poussent parfois \u00e0 la diffusion de solutions logicielles de faible qualit\u00e9. La d\u00e9fiance r\u00e9currente entre les hackers et\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Microsoft\" rel=\"noreferrer noopener\">Microsoft<\/a>\u00a0exemplifie bien cet aspect. Les premiers reprochent notamment au second de vendre des logiciels peu s\u00fbrs.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La seconde forme tient au caract\u00e8re\u00a0<a href=\"https:\/\/fr.wikipedia.org\/wiki\/Logarithme\" target=\"_blank\" rel=\"noreferrer noopener\">logarithmique<\/a>\u00a0de l\u2019am\u00e9lioration qualitative logicielle<sup data-fn=\"f421566d-f091-41b0-8ec8-aed59af51d9a\" class=\"fn\"><a href=\"#f421566d-f091-41b0-8ec8-aed59af51d9a\" id=\"f421566d-f091-41b0-8ec8-aed59af51d9a-link\">10<\/a><\/sup>. Au fur et \u00e0 mesure de cette am\u00e9lioration, l\u2019investissement en temps (et donc en argent) grandit alors que le diff\u00e9rentiel de qualit\u00e9 diminue. Si les informaticiens souhaitent continuellement am\u00e9liorer la qualit\u00e9 de leur production, les managers s\u2019y opposent lorsqu\u2019il n\u2019y a aucun avantage commercial \u00e0 la cl\u00e9.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L\u2019\u00e9thique hacker s\u2019oppose d\u00e8s lors \u00e0 la doctrine n\u00e9olib\u00e9rale et \u00e0 son cort\u00e8ge d\u2019indicateurs quantitatifs d\u00e9coupl\u00e9s de toute r\u00e9alit\u00e9 qualitative. Citons parmi les m\u00e9triques imb\u00e9ciles pr\u00e9sentes aujourd\u2019hui le nombre de lignes de code source \u00e9crites<sup data-fn=\"4c41b238-2c8c-4160-80b2-7722611dd57b\" class=\"fn\"><a href=\"#4c41b238-2c8c-4160-80b2-7722611dd57b\" id=\"4c41b238-2c8c-4160-80b2-7722611dd57b-link\">11<\/a><\/sup>, la quantit\u00e9 de\u00a0<a href=\"https:\/\/fr.wikipedia.org\/wiki\/Bug_(informatique)\" target=\"_blank\" rel=\"noreferrer noopener\">bugs<\/a>\u00a0corrig\u00e9s<sup data-fn=\"257add3b-42a0-475b-8b14-f8eb422629db\" class=\"fn\"><a href=\"#257add3b-42a0-475b-8b14-f8eb422629db\" id=\"257add3b-42a0-475b-8b14-f8eb422629db-link\">12<\/a><\/sup>\u00a0ou encore le nombre d\u2019articles scientifiques publi\u00e9s<sup data-fn=\"a5903817-4d35-4f4a-a4fd-c72062adc058\" class=\"fn\"><a href=\"#a5903817-4d35-4f4a-a4fd-c72062adc058\" id=\"a5903817-4d35-4f4a-a4fd-c72062adc058-link\">13<\/a><\/sup>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L\u2019art se trouve travers\u00e9 par les m\u00eames ph\u00e9nom\u00e8nes. De la promotion des\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Blockbuster\" rel=\"noreferrer noopener\">blockbusters<\/a>\u00a0en passant par la production d\u2019\u0153uvres pr\u00eates \u00e0 consommer \u00e0 la\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Stock_Aitken_Waterman\" rel=\"noreferrer noopener\">Stock Aitken Waterman<\/a>, on observe partout les d\u00e9g\u00e2ts artistiques r\u00e9sultant d\u2019une main mise croissante du commercial.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\"><a><\/a>Une syntaxe et un vocabulaire simplifi\u00e9s<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Si les similarit\u00e9s entre art et programmation informatique appara\u00eetront d\u00e9sormais au lecteur comme \u00e9videntes, des diff\u00e9rences les distinguent bien entendu, la plus importante \u00e9tant que le cadre normatif de la programmation est bien plus strict que celui de l\u2019art.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">On pourrait d\u00e9battre longtemps sur les libert\u00e9s r\u00e9elles d\u2019un artiste. La mode, le contexte social et culturel (<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Pablo_Picasso\" rel=\"noreferrer noopener\">Pablo Picasso<\/a>\u00a0n\u2019aurait certainement pas \u00e9t\u00e9\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Pablo_Picasso\" rel=\"noreferrer noopener\">Pablo Picasso<\/a>\u00a0\u00e0 la\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Renaissance\" rel=\"noreferrer noopener\">Renaissance<\/a>), l\u2019\u00e9tat des technologies ou encore le parcours personnel d\u2019un artiste influencent une \u0153uvre.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mais l\u2019artiste garde une tr\u00e8s grande latitude. Son expression peut passer par le verbe, la musique, la peinture, la sculpture, etc. De plus, pour chaque mode d\u2019expression, une multitude de formes existent (guitare \u00e9lectrique ou synth\u00e9tiseur, prose ou vers, sur toile ou sur papier, etc.).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L\u2019ing\u00e9nieur informaticien est plus contraint dans son mode d\u2019expression du fait qu\u2019il utilise un\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Langage_de_programmation\" rel=\"noreferrer noopener\">langage de programmation<\/a>\u00a0pour donner vie \u00e0 ce qu\u2019il imagine. Il en trouvera certes de tr\u00e8s nombreux \u00e0 sa disposition, mais le nombre de\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Paradigme_(programmation)\" rel=\"noreferrer noopener\">paradigmes de programmation<\/a>\u00a0reste tr\u00e8s limit\u00e9.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En outre, les caract\u00e9ristiques d\u2019un\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Langage_de_programmation\" rel=\"noreferrer noopener\">langage de programmation<\/a>\u00a0paraissent bien simplistes au regard des possibilit\u00e9s offertes \u00e0 l\u2019artiste. Alors qu\u2019un auteur dispose de plusieurs milliers de mots et le musicien d\u2019une gamme infinie de timbres, l\u2019ing\u00e9nieur informaticien jongle avec un vocabulaire d\u2019une centaine de mots et des r\u00e8gles de grammaire plus que sommaires.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\"><a><\/a>Une cr\u00e9ativit\u00e9 pour d\u00e9passer les limites<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Il ne faudrait pour autant pas conclure que la forme quelque peu \u00e9l\u00e9mentaire de la programmation informatique restreint la cr\u00e9ativit\u00e9. C\u2019est m\u00eame plut\u00f4t le contraire. Cette forme limit\u00e9e implique en r\u00e9alit\u00e9 que les chemins pour atteindre les incroyables potentialit\u00e9s de l\u2019informatique sont plus sinueux.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pour contourner les capacit\u00e9s computationnelles limit\u00e9es des premiers ordinateurs dans les ann\u00e9es 1960, les ing\u00e9nieurs informaticiens invent\u00e8rent de nombreuses astuces (\u00ab<em>hacks<\/em>\u00bb en anglais ce qui donnera \u00abhacker\u00bb) pour rendre les programmes plus rapides et moins gourmands en m\u00e9moire\u00a0[<a href=\"#6\" rel=\"nofollow\">6<\/a>].<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si les ordinateurs sont plus puissants, les probl\u00e8mes auxquels s\u2019attaque l\u2019informatique deviennent \u00e9galement plus complexes. Comme je l\u2019ai indiqu\u00e9 plus haut, de nombreux ing\u00e9nieurs informaticiens cherchent encore \u00e0 \u00e9luder les capacit\u00e9s existantes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Malgr\u00e9 les grandes \u00e9coles et les capitaux des gros groupes, l\u2019innovation informatique viendra probablement toujours majoritairement des hackers\u200a[N]\u200a\u200a[N]\u200aLes entreprises, notamment celles du num\u00e9rique, l\u2019ont bien compris puisqu\u2019elles cherchent \u00e0 recruter des hackers en leur proposant des cadres professionnels bien moins contraignants que ceux des \u00abinformaticiens lambda\u00bb.. Pour le dire autrement, la capacit\u00e9 \u00e0 cr\u00e9er sans cesse de nouveaux\u00a0<em>hacks<\/em>\u00a0demeure plus d\u00e9cisive que la ma\u00eetrise de tel ou tel\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Langage_de_programmation\" rel=\"noreferrer noopener\">langage de programmation<\/a>.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\"><a><\/a>Que doit faire l\u2019\u00e9cole en informatique ?<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">C\u2019est pourquoi je pense que le d\u00e9bat actuel du \u00abcodage \u00e0 l\u2019\u00e9cole\u00bb passe \u00e0 c\u00f4t\u00e9 de l\u2019essentiel. Pour rappel, il est de bon ton aujourd\u2019hui de d\u00e9fendre l\u2019introduction de cours de programmation dans le cursus scolaire obligatoire. L\u2019id\u00e9e est de susciter des vocations qui d\u00e9boucheront demain, assurent les d\u00e9fenseurs de cette id\u00e9e, sur de nouveaux\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Google\" rel=\"noreferrer noopener\">Google<\/a>\u00a0ou\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Apple\" rel=\"noreferrer noopener\">Apple<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mais ma\u00eetriser un\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Langage_de_programmation\" rel=\"noreferrer noopener\">langage de programmation<\/a>\u00a0n\u2019a rien de compliqu\u00e9 en tant que tel. La Toile regorge de tutoriaux qui facilitent la prise en main de la programmation et de nombreuses\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Biblioth%C3%A8que_logicielle\" rel=\"noreferrer noopener\">biblioth\u00e8ques logicielles<\/a>\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Open_source\" rel=\"noreferrer noopener\">open source<\/a>\u00a0fournissent une multitude de fonctions de base.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">L\u2019innovation informatique se trouve dans la mani\u00e8re d\u2019assembler les briques tr\u00e8s \u00e9l\u00e9mentaires d\u2019un\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Langage_de_programmation\" rel=\"noreferrer noopener\">langage de programmation<\/a>\u00a0pour r\u00e9aliser un programme innovant. Ce n\u2019est donc pas la ma\u00eetrise de la programmation en soi qui se r\u00e9v\u00e8le essentielle, mais les capacit\u00e9s de conception et de projection.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Or celles-ci s\u2019acqui\u00e8rent dans le cadre d\u2019une solide formation g\u00e9n\u00e9rale. Si les sciences \u00abdures\u00bb et les math\u00e9matiques en sont des \u00e9l\u00e9ments essentiels, des disciplines comme l\u2019histoire ou la rh\u00e9torique participent \u00e0 la formation d\u2019un \u00e9l\u00e8ve susceptible d\u2019appr\u00e9hender des probl\u00e9matiques complexes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Transformer chaque \u00e9l\u00e8ve en programmeur ne m\u2019appara\u00eet donc pas comme prioritaire. Introduire la programmation pourrait certes motiver certains \u00e9l\u00e8ves. Mais est-ce plus important qu\u2019une introduction aux doctrines politiques (absente des cursus) ou \u00e0 la musique (en voie de disparation) ?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Par contre, il faut enseigner une culture informatique qui permette aux jeunes de mieux comprendre le monde informatis\u00e9 dans lequel ils grandissent et les enjeux auxquels ils sont confront\u00e9s (pensons simplement \u00e0 la vie priv\u00e9e). Je d\u00e9fends depuis longtemps la mise en place de \u00abcours d\u2019\u00e9ducation num\u00e9rique\u00bb d\u00e8s l\u2019\u00e9cole primaire.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\"><a><\/a>Une cr\u00e9ativit\u00e9 en danger ?<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">Alors que l\u2019informatique \u00e9tend son emprise sur nos soci\u00e9t\u00e9s chaque jour un peu plus, j\u2019ai parfois le sentiment que son \u00e9volution n\u2019est pas toujours \u00e0 la hauteur de son succ\u00e8s.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pourtant, la puissance actuelle disponible et les progr\u00e8s th\u00e9oriques permettent de concevoir des applications inimaginables il y a quelques ann\u00e9es encore. Que ce soient les avanc\u00e9es en intelligence artificielle ou la complexit\u00e9 de l\u2019informatique mobile, l\u2019innovation en informatique est multiple.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le probl\u00e8me se situe plut\u00f4t, selon moi, dans le manque de hackers pour relever les d\u00e9fis pos\u00e9s par l\u2019informatique moderne. L\u00e0 o\u00f9 la croissance de l\u2019informatique en exigerait un plus grand nombre, l\u2019industrie et les institutions d\u2019enseignement pr\u00e9f\u00e8rent trop souvent des informaticiens pr\u00e9format\u00e9s.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">De trop nombreux informaticiens et chercheurs se contentent de suivre la mode technologique (aujourd\u2019hui\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/R%C3%A9seau_de_neurones_artificiels\" rel=\"noreferrer noopener\">les r\u00e9seaux de neurones artificiels<\/a>) et d\u2019exploiter les\u00a0<a target=\"_blank\" href=\"https:\/\/fr.wikipedia.org\/wiki\/Biblioth%C3%A8que_logicielle\" rel=\"noreferrer noopener\">biblioth\u00e8ques logicielles<\/a>\u00a0les plus populaires sans r\u00e9ellement chercher \u00e0 comprendre comment elles fonctionnent.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cette absence de regard critique sur les solutions informatiques engendre deux menaces : d\u2019une part, le d\u00e9ploiement de technologies immatures voire dangereuses (et ses\u00a0<a href=\"https:\/\/www.francq.info\/index.php\/blog\/2016-11.html\" target=\"_blank\" rel=\"noreferrer noopener\">probl\u00e8mes de cybers\u00e9curit\u00e9<\/a>), d\u2019autre part, un manque de diversit\u00e9, et donc d\u2019innovation, parmi ceux qui les d\u00e9veloppent \u2013 ce second danger renfor\u00e7ant de surcro\u00eet le premier.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Or, il est tout \u00e0 fait possible d\u2019\u00e9viter ces \u00e9cueils potentiels. D\u2019abord par un enseignement (notamment en informatique) d\u2019avantage bas\u00e9 sur la cr\u00e9ativit\u00e9 que sur la ma\u00eetrise de th\u00e9or\u00e8mes et de m\u00e9thodologies rigides. Ensuite par une recherche en informatique se focalisant sur l\u2019innovation r\u00e9elle, en redonnant du temps aux chercheurs au lieu d\u2019exiger une production quantitative abrutissante. Mais ceci est une autre histoire\u2026<a href=\"http:\/\/www.twitter.com\/pascalfrancq\" target=\"_blank\" rel=\"noreferrer noopener\"><\/a><\/p>\n\n\n\n<h5 class=\"wp-block-heading\">R\u00e9f\u00e9rences<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"1\">[1]\u00a0Donald E. Knuth,\u00a0<em>The Art of Computer Programming. Vol. 1, Fundamental Algorithms<\/em>, 3\u1d49 \u00e9d., Addison-Wesley, 1997.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"2\">[2]\u00a0Louis Fine, \u00abThe Role of the University in Computers, Data Processing, and Related Fields\u00bb,\u00a0<em>Communications of the ACM<\/em>, 2(9), pp. 7\u201314. , 159.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"3\">[3]\u00a0Robin K. Hill, What Makes a Program Elegant?,\u00a0<em>Communications of the ACM<\/em>, 60(3), p. 13, 2017.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"4\">[4]\u00a0Eric S. Raymond,\u00a0<em>The Cathedral and the Bazaar: Musings on Linux and Open Source by an Accidental Revolutionary<\/em>, O\u2019Reilly, 2001.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"5\">[5]\u00a0Steven Levy,\u00a0<em>Hackers. Heroes of the Computer Revolution<\/em>, Penguin Books, 1993.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"6\">[6]\u00a0Pascal Francq,\u00a0<em>Internet: Tome 1, La construction d\u2019un mythe<\/em>, \u00c9ditions Modulaires Europ\u00e9ennes, 2011.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"7\">[7]\u00a0Emmanuel Kant,\u00a0<em>Critique de la facult\u00e9 de Juger<\/em>, \u0152uvres II, Pl\u00e9iade, Gallimard, 1790.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\" id=\"8\">[8]\u00a0Pekka Himanen,\u00a0<em>The Hacker Ethic: A Radical Approach to the Philosophy of Business<\/em>, Random House, 2001.<\/p>\n\n\n\n<h5 class=\"wp-block-heading\">Notes<\/h5>\n\n\n<ol class=\"wp-block-footnotes\"><li id=\"f856ca00-a9a4-4e4f-b714-c1383b869265\">L\u2019utilisation de l\u2019expression \u00abing\u00e9nieur informaticien\u00bb ne fait pas explicitement r\u00e9f\u00e9rence \u00e0 un enseignement particulier, mais plut\u00f4t \u00e0 un ensemble de comp\u00e9tences et \u00e0 une certaine approche dans la r\u00e9solution de probl\u00e8mes informatiques. Je connais ainsi des personnes qui sont des ing\u00e9nieurs informaticiens m\u00eame si elles ne sont pas titulaires du grade correspondant. La r\u00e9ciproque est h\u00e9las vraie aussi, la formation \u00abd\u2019ing\u00e9nieur informaticien\u00bb n\u2019\u00e9tant malheureusement pas toujours \u00e0 la hauteur des attentes. <a href=\"#f856ca00-a9a4-4e4f-b714-c1383b869265-link\" aria-label=\"Aller \u00e0 la note de bas de page 1\">\u21a9\ufe0e<\/a><\/li><li id=\"874da37c-3219-4a9e-84bc-d27a4928498f\">Un exemple simple est le remplacement d\u2019un calcul trop complexe par une approximation acceptable. <a href=\"#874da37c-3219-4a9e-84bc-d27a4928498f-link\" aria-label=\"Aller \u00e0 la note de bas de page 2\">\u21a9\ufe0e<\/a><\/li><li id=\"54b4b56f-ac01-48cc-bd83-0f57e7339e7f\">\u200aIl s\u2019agit de ma propre traduction. <a href=\"#54b4b56f-ac01-48cc-bd83-0f57e7339e7f-link\" aria-label=\"Aller \u00e0 la note de bas de page 3\">\u21a9\ufe0e<\/a><\/li><li id=\"7b0f46b8-2407-4cf6-89e5-9fc09c183956\">Si les ouvrages de\u00a0Donald E. Knuth\u00a0tr\u00f4nent certainement dans la biblioth\u00e8que de nombreux ing\u00e9nieurs et informaticiens, l\u2019\u00e9tendue des sujets abord\u00e9s ainsi que leur rigueur en rendent la lecture approfondie ardue. De plus, les nombreux exercices propos\u00e9s \u00e0 la fin de chaque chapitre, dont certains pourraient faire l\u2019objet d\u2019une th\u00e8se, finissent parfois par d\u00e9sesp\u00e9rer les lecteurs les plus courageux. <a href=\"#7b0f46b8-2407-4cf6-89e5-9fc09c183956-link\" aria-label=\"Aller \u00e0 la note de bas de page 4\">\u21a9\ufe0e<\/a><\/li><li id=\"70f3622e-00ec-493a-9477-91f75553cd4b\">Lorsqu\u2019il n\u2019y a pas de r\u00e9el consensus sur une explication, les scientifiques parlent d\u2019hypoth\u00e8ses (\u00abmultiples explications possibles\u00bb), certaines \u00e9tant plus probables que d\u2019autres. Bien entendu, l\u2019\u00e9volution scientifique n\u2019est pas statique et se caract\u00e9rise par des r\u00e9volutions paradigmatiques. Une explication en remplace alors une autre. Mais, \u00e0 un moment donn\u00e9, la majorit\u00e9 des scientifiques s\u2019accordent sur une explication ou son absence. Si les convictions de chaque scientifique influencent bien \u00e9videmment ses recherches, ces convictions ne font pas partie de la science en tant que telle. Notons que les math\u00e9matiques admettent parfois plusieurs d\u00e9monstrations pour une m\u00eame hypoth\u00e8se. <a href=\"#70f3622e-00ec-493a-9477-91f75553cd4b-link\" aria-label=\"Aller \u00e0 la note de bas de page 5\">\u21a9\ufe0e<\/a><\/li><li id=\"c4151e1e-32aa-4e66-8d51-ae7ab39eeb0f\">En pratique, ces crit\u00e8res pourraient tout aussi bien s\u2019appliquer aux d\u00e9monstrations math\u00e9matiques. C\u2019est une cons\u00e9quence des liens structurels entre informatique et math\u00e9matiques, la premi\u00e8re reposant en grande partie sur les secondes. <a href=\"#c4151e1e-32aa-4e66-8d51-ae7ab39eeb0f-link\" aria-label=\"Aller \u00e0 la note de bas de page 6\">\u21a9\ufe0e<\/a><\/li><li id=\"cd5f3a51-ebf7-49c1-9a19-cd2d9b481f5d\">Les logiciels sont d\u00e9velopp\u00e9s gr\u00e2ce \u00e0 des langages de programmation qui permettent d\u2019\u00e9crire les instructions qui devront \u00eatre ex\u00e9cut\u00e9es par l\u2019ordinateur. L\u2019ensemble des instructions d\u2019un programme \u00e9crites dans un langage de programmation s\u2019appelle le code source du programme. <a href=\"#cd5f3a51-ebf7-49c1-9a19-cd2d9b481f5d-link\" aria-label=\"Aller \u00e0 la note de bas de page 7\">\u21a9\ufe0e<\/a><\/li><li id=\"a1d4a765-24bf-4e4c-bc63-e46d91e95aec\">Certains auteurs, tels certains philosophes allemands et fran\u00e7ais, semblent se faire un devoir d\u2019\u00e9crire de la mani\u00e8re la plus obscure possible. Pour autant, avec le recul, et quelque que soit la qualit\u00e9 du fond, on finit toujours par consid\u00e9rer cela comme un aspect n\u00e9gatif de leur \u0153uvre (pensons, par exemple, \u00e0\u00a0Georg Wilhelm Friedrich Hegel). <a href=\"#a1d4a765-24bf-4e4c-bc63-e46d91e95aec-link\" aria-label=\"Aller \u00e0 la note de bas de page 8\">\u21a9\ufe0e<\/a><\/li><li id=\"abec6fe8-01a7-4c4c-98b8-73e8750e2ce0\">Tous les langages de programmation proposent une mani\u00e8re d\u2019ajouter du texte libre dans un code source qui ne doit pas \u00eatre interpr\u00e9t\u00e9 comme des instructions. <a href=\"#abec6fe8-01a7-4c4c-98b8-73e8750e2ce0-link\" aria-label=\"Aller \u00e0 la note de bas de page 9\">\u21a9\ufe0e<\/a><\/li><li id=\"f421566d-f091-41b0-8ec8-aed59af51d9a\">\u200aNotons que dans la plupart des domaines (art, science, sport, etc.), l\u2019am\u00e9lioration qualitative suit \u00e9galement une courbe logarithmique. <a href=\"#f421566d-f091-41b0-8ec8-aed59af51d9a-link\" aria-label=\"Aller \u00e0 la note de bas de page 10\">\u21a9\ufe0e<\/a><\/li><li id=\"4c41b238-2c8c-4160-80b2-7722611dd57b\">\u200aUn tel crit\u00e8re pousse \u00e0 produire plus de lignes que n\u00e9cessaire pour \u00e9crire et documenter un code source, ce qui viole les principes d\u2019\u00e9l\u00e9gance des programmes et ceux de la qualit\u00e9 du code source. <a href=\"#4c41b238-2c8c-4160-80b2-7722611dd57b-link\" aria-label=\"Aller \u00e0 la note de bas de page 11\">\u21a9\ufe0e<\/a><\/li><li id=\"257add3b-42a0-475b-8b14-f8eb422629db\">Corriger un grand nombre de bugs n\u2019est possible que si le programme en contient un grand nombre d\u00e8s le d\u00e9part, c\u2019est-\u00e0-dire quand les programmes sont tr\u00e8s mal \u00e9crits. De plus, diff\u00e9rentes \u00e9tudes montrent que cette pratique incite certains programmeurs \u00e0 ajouter des bugs expr\u00e8s de mani\u00e8re \u00e0 valoriser ensuite le fait qu\u2019ils en corrigent. Entre-temps, ces logiciels sont utilis\u00e9s\u2026 <a href=\"#257add3b-42a0-475b-8b14-f8eb422629db-link\" aria-label=\"Aller \u00e0 la note de bas de page 12\">\u21a9\ufe0e<\/a><\/li><li id=\"a5903817-4d35-4f4a-a4fd-c72062adc058\">Les chercheurs sont plus int\u00e9ress\u00e9s \u00e0 publier qu\u2019\u00e0 \u00e9crire du code source de qualit\u00e9 pouvant \u00eatre facilement r\u00e9utilis\u00e9. Il en r\u00e9sulte un frein important \u00e0 la circulation des innovations informatiques \u00e0 l\u2019int\u00e9rieur et \u00e0 l\u2019ext\u00e9rieur de la communaut\u00e9 scientifique en informatique. <a href=\"#a5903817-4d35-4f4a-a4fd-c72062adc058-link\" aria-label=\"Aller \u00e0 la note de bas de page 13\">\u21a9\ufe0e<\/a><\/li><\/ol>","protected":false},"excerpt":{"rendered":"<p>Lorsque j\u2019explique que je con\u00e7ois et programme des algorithmes, mes interlocuteurs me regardent g\u00e9n\u00e9ralement interloqu\u00e9s comme si j\u2019\u00e9tais une sorte d\u2019extraterrestre. Pour de nombreuses personnes, la programmation semble relever d\u2019une forme de chamanisme. Pour d\u2019autres, la programmation rel\u00e8ve d\u2019un \u00absimple\u00bb acte technique sp\u00e9cialis\u00e9 au m\u00eame titre que la r\u00e9solution d\u2019une\u00a0\u00e9quation diff\u00e9rentielle. Les enseignements d\u2019informatique dans [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"[{\"content\":\"L\u2019utilisation de l\u2019expression \u00abing\u00e9nieur informaticien\u00bb ne fait pas explicitement r\u00e9f\u00e9rence \u00e0 un enseignement particulier, mais plut\u00f4t \u00e0 un ensemble de comp\u00e9tences et \u00e0 une certaine approche dans la r\u00e9solution de probl\u00e8mes informatiques. Je connais ainsi des personnes qui sont des ing\u00e9nieurs informaticiens m\u00eame si elles ne sont pas titulaires du grade correspondant. La r\u00e9ciproque est h\u00e9las vraie aussi, la formation \u00abd\u2019ing\u00e9nieur informaticien\u00bb n\u2019\u00e9tant malheureusement pas toujours \u00e0 la hauteur des attentes.\",\"id\":\"f856ca00-a9a4-4e4f-b714-c1383b869265\"},{\"content\":\"Un exemple simple est le remplacement d\u2019un calcul trop complexe par une approximation acceptable.\",\"id\":\"874da37c-3219-4a9e-84bc-d27a4928498f\"},{\"content\":\"\u200aIl s\u2019agit de ma propre traduction.\",\"id\":\"54b4b56f-ac01-48cc-bd83-0f57e7339e7f\"},{\"content\":\"Si les ouvrages de\u00a0Donald E. Knuth\u00a0tr\u00f4nent certainement dans la biblioth\u00e8que de nombreux ing\u00e9nieurs et informaticiens, l\u2019\u00e9tendue des sujets abord\u00e9s ainsi que leur rigueur en rendent la lecture approfondie ardue. De plus, les nombreux exercices propos\u00e9s \u00e0 la fin de chaque chapitre, dont certains pourraient faire l\u2019objet d\u2019une th\u00e8se, finissent parfois par d\u00e9sesp\u00e9rer les lecteurs les plus courageux.\",\"id\":\"7b0f46b8-2407-4cf6-89e5-9fc09c183956\"},{\"content\":\"Lorsqu\u2019il n\u2019y a pas de r\u00e9el consensus sur une explication, les scientifiques parlent d\u2019hypoth\u00e8ses (\u00abmultiples explications possibles\u00bb), certaines \u00e9tant plus probables que d\u2019autres. Bien entendu, l\u2019\u00e9volution scientifique n\u2019est pas statique et se caract\u00e9rise par des r\u00e9volutions paradigmatiques. Une explication en remplace alors une autre. Mais, \u00e0 un moment donn\u00e9, la majorit\u00e9 des scientifiques s\u2019accordent sur une explication ou son absence. Si les convictions de chaque scientifique influencent bien \u00e9videmment ses recherches, ces convictions ne font pas partie de la science en tant que telle. Notons que les math\u00e9matiques admettent parfois plusieurs d\u00e9monstrations pour une m\u00eame hypoth\u00e8se.\",\"id\":\"70f3622e-00ec-493a-9477-91f75553cd4b\"},{\"content\":\"En pratique, ces crit\u00e8res pourraient tout aussi bien s\u2019appliquer aux d\u00e9monstrations math\u00e9matiques. C\u2019est une cons\u00e9quence des liens structurels entre informatique et math\u00e9matiques, la premi\u00e8re reposant en grande partie sur les secondes.\",\"id\":\"c4151e1e-32aa-4e66-8d51-ae7ab39eeb0f\"},{\"content\":\"Les logiciels sont d\u00e9velopp\u00e9s gr\u00e2ce \u00e0 des langages de programmation qui permettent d\u2019\u00e9crire les instructions qui devront \u00eatre ex\u00e9cut\u00e9es par l\u2019ordinateur. L\u2019ensemble des instructions d\u2019un programme \u00e9crites dans un langage de programmation s\u2019appelle le code source du programme.\",\"id\":\"cd5f3a51-ebf7-49c1-9a19-cd2d9b481f5d\"},{\"content\":\"Certains auteurs, tels certains philosophes allemands et fran\u00e7ais, semblent se faire un devoir d\u2019\u00e9crire de la mani\u00e8re la plus obscure possible. Pour autant, avec le recul, et quelque que soit la qualit\u00e9 du fond, on finit toujours par consid\u00e9rer cela comme un aspect n\u00e9gatif de leur \u0153uvre (pensons, par exemple, \u00e0\u00a0Georg Wilhelm Friedrich Hegel).\",\"id\":\"a1d4a765-24bf-4e4c-bc63-e46d91e95aec\"},{\"content\":\"Tous les langages de programmation proposent une mani\u00e8re d\u2019ajouter du texte libre dans un code source qui ne doit pas \u00eatre interpr\u00e9t\u00e9 comme des instructions.\",\"id\":\"abec6fe8-01a7-4c4c-98b8-73e8750e2ce0\"},{\"content\":\"\u200aNotons que dans la plupart des domaines (art, science, sport, etc.), l\u2019am\u00e9lioration qualitative suit \u00e9galement une courbe logarithmique.\",\"id\":\"f421566d-f091-41b0-8ec8-aed59af51d9a\"},{\"content\":\"\u200aUn tel crit\u00e8re pousse \u00e0 produire plus de lignes que n\u00e9cessaire pour \u00e9crire et documenter un code source, ce qui viole les principes d\u2019\u00e9l\u00e9gance des programmes et ceux de la qualit\u00e9 du code source.\",\"id\":\"4c41b238-2c8c-4160-80b2-7722611dd57b\"},{\"content\":\"Corriger un grand nombre de bugs n\u2019est possible que si le programme en contient un grand nombre d\u00e8s le d\u00e9part, c\u2019est-\u00e0-dire quand les programmes sont tr\u00e8s mal \u00e9crits. De plus, diff\u00e9rentes \u00e9tudes montrent que cette pratique incite certains programmeurs \u00e0 ajouter des bugs expr\u00e8s de mani\u00e8re \u00e0 valoriser ensuite le fait qu\u2019ils en corrigent. Entre-temps, ces logiciels sont utilis\u00e9s\u2026\",\"id\":\"257add3b-42a0-475b-8b14-f8eb422629db\"},{\"content\":\"Les chercheurs sont plus int\u00e9ress\u00e9s \u00e0 publier qu\u2019\u00e0 \u00e9crire du code source de qualit\u00e9 pouvant \u00eatre facilement r\u00e9utilis\u00e9. Il en r\u00e9sulte un frein important \u00e0 la circulation des innovations informatiques \u00e0 l\u2019int\u00e9rieur et \u00e0 l\u2019ext\u00e9rieur de la communaut\u00e9 scientifique en informatique.\",\"id\":\"a5903817-4d35-4f4a-a4fd-c72062adc058\"}]"},"categories":[6],"tags":[103,97],"class_list":["post-1529","post","type-post","status-publish","format-standard","hentry","category-art","tag-philosophy","tag-social"],"views":11,"_links":{"self":[{"href":"https:\/\/www.francq.info\/index.php\/wp-json\/wp\/v2\/posts\/1529","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.francq.info\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.francq.info\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.francq.info\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.francq.info\/index.php\/wp-json\/wp\/v2\/comments?post=1529"}],"version-history":[{"count":8,"href":"https:\/\/www.francq.info\/index.php\/wp-json\/wp\/v2\/posts\/1529\/revisions"}],"predecessor-version":[{"id":2824,"href":"https:\/\/www.francq.info\/index.php\/wp-json\/wp\/v2\/posts\/1529\/revisions\/2824"}],"wp:attachment":[{"href":"https:\/\/www.francq.info\/index.php\/wp-json\/wp\/v2\/media?parent=1529"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.francq.info\/index.php\/wp-json\/wp\/v2\/categories?post=1529"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.francq.info\/index.php\/wp-json\/wp\/v2\/tags?post=1529"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}