{"id":1003,"date":"2026-01-19T11:35:21","date_gmt":"2026-01-19T10:35:21","guid":{"rendered":"https:\/\/www.sourcecode-exhibition.softwareheritage.org\/2026\/01\/19\/une-ode-obscurcie-la-reconnaissance-de-lecriture-manuscrite\/"},"modified":"2026-03-23T19:05:36","modified_gmt":"2026-03-23T18:05:36","slug":"une-ode-obscurcie-la-reconnaissance-de-lecriture-manuscrite","status":"publish","type":"post","link":"https:\/\/www.sourcecode-exhibition.softwareheritage.org\/fr\/une-ode-obscurcie-la-reconnaissance-de-lecriture-manuscrite\/","title":{"rendered":"Une ode obscurcie . la reconnaissance de l\u2019\u00e9criture manuscrite"},"content":{"rendered":"<p>[et_pb_section fb_built=\u00a0\u00bb1&Prime; _builder_version=\u00a0\u00bb4.27.5&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb background_color=\u00a0\u00bb#86D1F5&Prime; global_colors_info=\u00a0\u00bb{}\u00a0\u00bb][et_pb_row column_structure=\u00a0\u00bb3_5,2_5&Prime; _builder_version=\u00a0\u00bb4.27.5&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb global_colors_info=\u00a0\u00bb{}\u00a0\u00bb][et_pb_column type=\u00a0\u00bb3_5&Prime; _builder_version=\u00a0\u00bb4.27.5&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb global_colors_info=\u00a0\u00bb{}\u00a0\u00bb][et_pb_text _builder_version=\u00a0\u00bb4.27.5&Prime; _dynamic_attributes=\u00a0\u00bbcontent\u00a0\u00bb _module_preset=\u00a0\u00bbdefault\u00a0\u00bb text_font=\u00a0\u00bb|700|||||||\u00a0\u00bb text_text_color=\u00a0\u00bb#000000&Prime; text_font_size=\u00a0\u00bb36px\u00a0\u00bb text_line_height=\u00a0\u00bb1.1em\u00a0\u00bb global_colors_info=\u00a0\u00bb{}\u00a0\u00bb]@ET-DC@eyJkeW5hbWljIjp0cnVlLCJjb250ZW50IjoicG9zdF90aXRsZSIsInNldHRpbmdzIjp7ImJlZm9yZSI6IiIsImFmdGVyIjoiIiwiZW5hYmxlX2h0bWwiOiJvZmYifX0=@[\/et_pb_text][et_pb_text _builder_version=\u00a0\u00bb4.27.5&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb _dynamic_attributes=\u00a0\u00bbcontent\u00a0\u00bb hover_enabled=\u00a0\u00bb0&Prime; sticky_enabled=\u00a0\u00bb0&Prime;]@ET-DC@eyJkeW5hbWljIjp0cnVlLCJjb250ZW50IjoicG9zdF9jYXRlZ29yaWVzIiwic2V0dGluZ3MiOnsiYmVmb3JlIjoiIiwiYWZ0ZXIiOiIiLCJsaW5rX3RvX3Rlcm1fcGFnZSI6Im9uIiwic2VwYXJhdG9yIjoiIHwgIiwiY2F0ZWdvcnlfdHlwZSI6ImNhdGVnb3J5IiwiZW5hYmxlX2h0bWwiOiJvZmYifX0=@[\/et_pb_text][et_pb_text _builder_version=\u00a0\u00bb4.27.5&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb _dynamic_attributes=\u00a0\u00bbcontent\u00a0\u00bb hover_enabled=\u00a0\u00bb0&Prime; sticky_enabled=\u00a0\u00bb0&Prime;]@ET-DC@eyJkeW5hbWljIjp0cnVlLCJjb250ZW50IjoicG9zdF90YWdzIiwic2V0dGluZ3MiOnsiYmVmb3JlIjoiIiwiYWZ0ZXIiOiIiLCJsaW5rX3RvX3Rlcm1fcGFnZSI6Im9uIiwic2VwYXJhdG9yIjoiIHwgIiwiY2F0ZWdvcnlfdHlwZSI6InBvc3RfdGFnIiwiZW5hYmxlX2h0bWwiOiJvZmYifX0=@[\/et_pb_text][\/et_pb_column][et_pb_column type=\u00a0\u00bb2_5&Prime; _builder_version=\u00a0\u00bb4.27.5&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb global_colors_info=\u00a0\u00bb{}\u00a0\u00bb][et_pb_image src=\u00a0\u00bbhttps:\/\/www.sourcecode-exhibition.softwareheritage.org\/wp-content\/uploads\/2025\/12\/Picto_SCE_11.png\u00a0\u00bb title_text=\u00a0\u00bbPicto_SCE_11&Prime; align=\u00a0\u00bbcenter\u00a0\u00bb _builder_version=\u00a0\u00bb4.27.5&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb global_colors_info=\u00a0\u00bb{}\u00a0\u00bb][\/et_pb_image][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=\u00a0\u00bb1&Prime; _builder_version=\u00a0\u00bb4.27.5&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb background_color=\u00a0\u00bb#000000&Prime; background_enable_image=\u00a0\u00bboff\u00a0\u00bb parallax=\u00a0\u00bbon\u00a0\u00bb custom_padding=\u00a0\u00bb59px||108px|||\u00a0\u00bb global_colors_info=\u00a0\u00bb{}\u00a0\u00bb][et_pb_row _builder_version=\u00a0\u00bb4.27.5&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb global_colors_info=\u00a0\u00bb{}\u00a0\u00bb][et_pb_column type=\u00a0\u00bb4_4&Prime; _builder_version=\u00a0\u00bb4.27.5&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb global_colors_info=\u00a0\u00bb{}\u00a0\u00bb][et_pb_image src=\u00a0\u00bbhttps:\/\/www.sourcecode-exhibition.softwareheritage.org\/wp-content\/uploads\/2025\/12\/Projet_SoftwareHeritage13.jpg\u00a0\u00bb title_text=\u00a0\u00bbProjet_SoftwareHeritage13&Prime; _builder_version=\u00a0\u00bb4.27.5&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb global_colors_info=\u00a0\u00bb{}\u00a0\u00bb][\/et_pb_image][\/et_pb_column][\/et_pb_row][et_pb_row column_structure=\u00a0\u00bb1_2,1_2&Prime; _builder_version=\u00a0\u00bb4.27.5&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb custom_padding=\u00a0\u00bb0px|||||\u00a0\u00bb global_colors_info=\u00a0\u00bb{}\u00a0\u00bb][et_pb_column type=\u00a0\u00bb1_2&Prime; _builder_version=\u00a0\u00bb4.27.5&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb global_colors_info=\u00a0\u00bb{}\u00a0\u00bb][et_pb_text module_class=\u00a0\u00bblegende\u00a0\u00bb _builder_version=\u00a0\u00bb4.27.5&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb text_text_color=\u00a0\u00bb#FFFFFF\u00a0\u00bb text_font_size=\u00a0\u00bb20px\u00a0\u00bb background_color=\u00a0\u00bb#000000&Prime; min_height=\u00a0\u00bb25.8px\u00a0\u00bb custom_margin=\u00a0\u00bb||||false|false\u00a0\u00bb custom_padding=\u00a0\u00bb20px|20px|20px|20px|true|true\u00a0\u00bb hover_enabled=\u00a0\u00bb0&Prime; custom_css_free_form=\u00a0\u00bb.legende   {||   ||  &#8211;p: 12px; \/* taille du carr\u00e9 mang\u00e9 *\/||||  padding: calc(2rem + var(&#8211;p));||  width: 320px;||  font-family: monospace;||||  clip-path: polygon(||    \/* haut gauche *\/||    0 0,||    calc(100% &#8211; var(&#8211;p)) 0,||    calc(100% &#8211; var(&#8211;p)) var(&#8211;p),||    100% var(&#8211;p),||    100% 100%,||    var(&#8211;p) 100%,||    var(&#8211;p) calc(100% &#8211; var(&#8211;p)),||    0 calc(100% &#8211; var(&#8211;p))||  );||}\u00a0\u00bb border_color_all=\u00a0\u00bb#FFFFFF\u00a0\u00bb global_colors_info=\u00a0\u00bb{}\u00a0\u00bb sticky_enabled=\u00a0\u00bb0&Prime;]<\/p>\n<p>Adrian Cable, International Obfuscated C Code Contest, \u201cBest of Show\u201d, 2013 [CC BY-SA 4.0].<\/p>\n<p>[\/et_pb_text][\/et_pb_column][et_pb_column type=\u00a0\u00bb1_2&Prime; _builder_version=\u00a0\u00bb4.27.5&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb global_colors_info=\u00a0\u00bb{}\u00a0\u00bb][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=\u00a0\u00bb1&Prime; _builder_version=\u00a0\u00bb4.27.5&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb background_color=\u00a0\u00bb#BAE3FA\u00a0\u00bb global_colors_info=\u00a0\u00bb{}\u00a0\u00bb][et_pb_row _builder_version=\u00a0\u00bb4.27.5&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb global_colors_info=\u00a0\u00bb{}\u00a0\u00bb][et_pb_column type=\u00a0\u00bb4_4&Prime; _builder_version=\u00a0\u00bb4.27.5&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb global_colors_info=\u00a0\u00bb{}\u00a0\u00bb][et_pb_text _builder_version=\u00a0\u00bb4.27.5&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb global_colors_info=\u00a0\u00bb{}\u00a0\u00bb]<\/p>\n<h1><strong>\u00c0 propos du code<\/strong><\/h1>\n<p>[\/et_pb_text][et_pb_text _builder_version=\u00a0\u00bb4.27.5&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb global_colors_info=\u00a0\u00bb{}\u00a0\u00bb]<\/p>\n<p style=\"font-weight: 400;\"><strong>Ce code en C est un exemple de code obscurci (obfuscated code), issu d\u2019une longue tradition qui valorise la virtuosit\u00e9 du programmeur plut\u00f4t que la lisibilit\u00e9 du code. Le programme r\u00e9alise un minuscule moteur de reconnaissance de l\u2019\u00e9criture (OCR) en seulement 4 096 octets, gr\u00e2ce \u00e0 un algorithme original et une nouvelle m\u00e9thode de compression des trac\u00e9s. <\/strong><\/p>\n<p style=\"font-weight: 400;\">Comme souvent dans ces codes obscurcis, le code source lui-m\u00eame forme une sc\u00e8ne en ASCII art \u2013 un paysage nocturne avec un renard et un chien \u2013 illustrant le pangramme \u00ab The quick brown fox jumps over a lazy dog \u00bb (Le vif renard brun saute au-dessus du chien paresseux). Cette mise en forme rappelle que le code source peut aussi avoir une dimension esth\u00e9tique et ludique. Sous cette apparence se cache pourtant le plus petit moteur OCR capable de reconna\u00eetre tous les caract\u00e8res ASCII imprimables. Le charme du programme tient \u00e0 sa \u00ab fausse p\u00e9dagogie \u00bb : il montre la puissance expressive du C en d\u00e9tournant toutes les conventions \u2013 uniquement des boucles for, macros surcharg\u00e9es, op\u00e9rateurs ternaires et jeux de pointeurs \u2013 transformant de \u00ab mauvaises pratiques \u00bb en outils artistiques. M\u00eame la fonction main est utilis\u00e9e \u00e0 r\u00e9p\u00e9tition, \u00e0 des fins \u00e0 la fois satiriques et pratiques.     <\/p>\n<p style=\"font-weight: 400;\">Au-del\u00e0 de la ma\u00eetrise technique, ce chef d\u2019\u0153uvre obscurci rappelle aux programmeurs comme aux non-programmeurs que sous les couches de conventions se cache un monde de cr\u00e9ativit\u00e9 et de possibilit\u00e9s expressives \u00e0 d\u00e9couvrir. Il c\u00e9l\u00e8bre la programmation \u00e0 la fois comme artisanat et comme art, r\u00e9affirmant que l\u2019\u00e9l\u00e9gance, l\u2019humour et l\u2019innovation sont au c\u0153ur du patrimoine culturel durable de la programmation. <\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section][et_pb_section fb_built=\u00a0\u00bb1&Prime; _builder_version=\u00a0\u00bb4.27.5&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb background_color=\u00a0\u00bb#86D1F5&Prime; global_colors_info=\u00a0\u00bb{}\u00a0\u00bb][et_pb_row column_structure=\u00a0\u00bb1_2,1_2&Prime; _builder_version=\u00a0\u00bb4.27.5&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb global_colors_info=\u00a0\u00bb{}\u00a0\u00bb][et_pb_column type=\u00a0\u00bb1_2&Prime; _builder_version=\u00a0\u00bb4.27.5&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb global_colors_info=\u00a0\u00bb{}\u00a0\u00bb][et_pb_text _builder_version=\u00a0\u00bb4.27.5&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb global_colors_info=\u00a0\u00bb{}\u00a0\u00bb]<\/p>\n<h1><strong>BIOGRAPHIE<\/strong><\/h1>\n<p>[\/et_pb_text][et_pb_text _builder_version=\u00a0\u00bb4.27.5&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb global_colors_info=\u00a0\u00bb{}\u00a0\u00bb]<\/p>\n<p style=\"font-weight: 400;\">Adrian Cable explore depuis longtemps l\u2019intersection ludique entre d\u00e9veloppement logiciel, art et p\u00e9dagogie. En plus de ses participations \u00e0 l\u2019International Obfuscated C Code Contest, il a contribu\u00e9 \u00e0 plusieurs projets open source majeurs, dont Homebridge, Pion\/WebRTC, le noyau Linux et le langage Go. Son travail montre que le code peut \u00eatre \u00e0 la fois fonctionnel, esth\u00e9tique, formateur et volontairement atypique. Il d\u00e9fend une vision de la programmation comme discipline technique et forme d\u2019expression, invitant les d\u00e9veloppeurs \u00e0 repenser les possibilit\u00e9s du code au-del\u00e0 des normes et des contraintes habituelles.   <\/p>\n<p>[\/et_pb_text][\/et_pb_column][et_pb_column type=\u00a0\u00bb1_2&Prime; _builder_version=\u00a0\u00bb4.27.5&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb global_colors_info=\u00a0\u00bb{}\u00a0\u00bb][et_pb_text _builder_version=\u00a0\u00bb4.27.5&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb text_font=\u00a0\u00bb||||||||\u00a0\u00bb text_font_size=\u00a0\u00bb26px\u00a0\u00bb header_font=\u00a0\u00bbEscuela-regular||||||||\u00a0\u00bb header_font_size=\u00a0\u00bb27px\u00a0\u00bb background_color=\u00a0\u00bb#BAE3FA\u00a0\u00bb width=\u00a0\u00bb79%\u00a0\u00bb custom_padding=\u00a0\u00bb20px||20px|20px|true|false\u00a0\u00bb border_radii=\u00a0\u00bbon|100px|100px|100px|100px\u00a0\u00bb border_width_all=\u00a0\u00bb2px\u00a0\u00bb border_color_all=\u00a0\u00bb#FFFFFF\u00a0\u00bb global_colors_info=\u00a0\u00bb{}\u00a0\u00bb]<\/p>\n<p><strong>#Esth\u00e9tique<\/strong><\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=\u00a0\u00bb4.27.5&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb text_font=\u00a0\u00bb||||||||\u00a0\u00bb text_font_size=\u00a0\u00bb26px\u00a0\u00bb header_font=\u00a0\u00bbEscuela-regular||||||||\u00a0\u00bb header_font_size=\u00a0\u00bb27px\u00a0\u00bb background_color=\u00a0\u00bb#BAE3FA\u00a0\u00bb width=\u00a0\u00bb79%\u00a0\u00bb custom_padding=\u00a0\u00bb20px||20px|20px|true|false\u00a0\u00bb border_radii=\u00a0\u00bbon|100px|100px|100px|100px\u00a0\u00bb border_width_all=\u00a0\u00bb2px\u00a0\u00bb border_color_all=\u00a0\u00bb#FFFFFF\u00a0\u00bb global_colors_info=\u00a0\u00bb{}\u00a0\u00bb]<\/p>\n<p><strong>#Langage C<\/strong><\/p>\n<p>[\/et_pb_text][et_pb_text _builder_version=\u00a0\u00bb4.27.5&Prime; _module_preset=\u00a0\u00bbdefault\u00a0\u00bb text_font=\u00a0\u00bb||||||||\u00a0\u00bb text_font_size=\u00a0\u00bb26px\u00a0\u00bb header_font=\u00a0\u00bbEscuela-regular||||||||\u00a0\u00bb header_font_size=\u00a0\u00bb27px\u00a0\u00bb background_color=\u00a0\u00bb#BAE3FA\u00a0\u00bb width=\u00a0\u00bb79%\u00a0\u00bb custom_padding=\u00a0\u00bb20px||20px|20px|true|false\u00a0\u00bb border_radii=\u00a0\u00bbon|100px|100px|100px|100px\u00a0\u00bb border_width_all=\u00a0\u00bb2px\u00a0\u00bb border_color_all=\u00a0\u00bb#FFFFFF\u00a0\u00bb global_colors_info=\u00a0\u00bb{}\u00a0\u00bb]<\/p>\n<p><strong>#Code obscurci<\/strong><\/p>\n<p>[\/et_pb_text][\/et_pb_column][\/et_pb_row][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Adrian Cable, International Obfuscated C Code Contest, \u201cBest of Show\u201d, 2013 [CC BY-SA 4.0].\u00c0 propos du codeCe code en C est un exemple de code obscurci (obfuscated code), issu d\u2019une longue tradition qui valorise la virtuosit\u00e9 du programmeur plut\u00f4t que la lisibilit\u00e9 du code. Le programme r\u00e9alise un minuscule moteur de reconnaissance de l\u2019\u00e9criture (OCR) [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":1737,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"categories":[137],"tags":[149,148,150],"class_list":["post-1003","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-artefact-culturel","tag-code-obscurci","tag-esthetique","tag-langage-c"],"_links":{"self":[{"href":"https:\/\/www.sourcecode-exhibition.softwareheritage.org\/fr\/wp-json\/wp\/v2\/posts\/1003","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sourcecode-exhibition.softwareheritage.org\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sourcecode-exhibition.softwareheritage.org\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sourcecode-exhibition.softwareheritage.org\/fr\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sourcecode-exhibition.softwareheritage.org\/fr\/wp-json\/wp\/v2\/comments?post=1003"}],"version-history":[{"count":7,"href":"https:\/\/www.sourcecode-exhibition.softwareheritage.org\/fr\/wp-json\/wp\/v2\/posts\/1003\/revisions"}],"predecessor-version":[{"id":1740,"href":"https:\/\/www.sourcecode-exhibition.softwareheritage.org\/fr\/wp-json\/wp\/v2\/posts\/1003\/revisions\/1740"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.sourcecode-exhibition.softwareheritage.org\/fr\/wp-json\/wp\/v2\/media\/1737"}],"wp:attachment":[{"href":"https:\/\/www.sourcecode-exhibition.softwareheritage.org\/fr\/wp-json\/wp\/v2\/media?parent=1003"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sourcecode-exhibition.softwareheritage.org\/fr\/wp-json\/wp\/v2\/categories?post=1003"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sourcecode-exhibition.softwareheritage.org\/fr\/wp-json\/wp\/v2\/tags?post=1003"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}