{"id":455,"date":"2018-01-28T11:57:42","date_gmt":"2018-01-28T10:57:42","guid":{"rendered":"http:\/\/wollef.org\/?p=455"},"modified":"2018-01-28T11:57:42","modified_gmt":"2018-01-28T10:57:42","slug":"histoire-de-la-programmation-14-des-premiers-bits-au-premier-langage","status":"publish","type":"post","link":"https:\/\/wollef.org\/blog\/histoire-de-la-programmation-14-des-premiers-bits-au-premier-langage\/","title":{"rendered":"Histoire de la programmation 1\/4 : Des premiers bits au premier langage"},"content":{"rendered":"<p><span class=\"TextRun SCXW265219413\" lang=\"FR-FR\" xml:lang=\"FR-FR\"><span class=\"NormalTextRun SCXW265219413\">Les langages de progra<\/span><\/span><span class=\"TextRun SCXW265219413\" lang=\"FR-FR\" xml:lang=\"FR-FR\"><span class=\"NormalTextRun SCXW265219413\">mmation sont une invention cr\u00e9\u00e9e par l&#8217;humanit\u00e9. M<\/span><\/span><span class=\"TextRun SCXW265219413\" lang=\"FR-FR\" xml:lang=\"FR-FR\"><span class=\"NormalTextRun SCXW265219413\">\u00eame s&#8217;ils ont \u00e9t\u00e9 invent\u00e9s il y a quelques dizaines d&#8217;ann\u00e9es, il y a eu beaucoup d&#8217;\u00e9volutions. Je vous invite \u00e0 parcourir quelques \u00e9tapes de ces \u00e9volutions avec moi.<\/span><\/span><span class=\"EOP SCXW265219413\" data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<h1>Bits et langage machine &#8230;<span data-ccp-props=\"{&quot;335559738&quot;:120}\">\u00a0<\/span><\/h1>\n<p>Tout au d\u00e9but,\u00a0les ordinateurs fonctionnent avec des \u00e9tats allum\u00e9s ou \u00e9teints de courants \u00e9lectriques, charg\u00e9s\u00a0ou d\u00e9charg\u00e9s\u00a0de m\u00e9moires : les bits, 0 ou 1 en langage binaire.<span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p>Les premiers informaticiens devaient travailler \u00e0 ce niveau et saisir de longues s\u00e9ries de 0 et\u00a0de 1 pour parvenir \u00e0 leur fin.\u00a0<span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p>Par exemple pour un micro-processeur dans les ann\u00e9es 70, le Z80, un programme pour trouver le plus grand nombre d&#8217;une s\u00e9rie de nombres ressemble au niveau mat\u00e9riel \u00e0 :\u00a0<span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p><strong><i>00100001 10100011 01110010 01000110<\/i><\/strong><br \/>\n<strong> <i>10010111 00100011 10111110 00110000<\/i><\/strong><br \/>\n<strong> <i>00000001 01111110 00010000 11111001<\/i><\/strong><br \/>\n<strong> <i>00110010 11110010 01111010\u00a0<\/i>\u00a0<\/strong><\/p>\n<p>Pas tr\u00e8s facile \u00e0 lire et \u00e0 \u00e9crire, non ?<span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p>Ceci est un exemple de langage machine qui \u00e0 \u00e9t\u00e9 le pain quotidien de pionniers de l&#8217;informatique<span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p>Par commodit\u00e9 les informaticiens ont utilis\u00e9 la base 16 pour repr\u00e9senter les m\u00eames informations, ce qui donne la repr\u00e9sentation suivante du m\u00eame programme en langage machine :<span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<p><strong>21 A3 72 46 97 23 BE 30 01 7E 10 F9 32 F2 7A.\u00a0<\/strong><\/p>\n<p>Un peu plus facile \u00e0 lire et \u00e0 recopier, mais pas forc\u00e9ment \u00e0 comprendre&#8230;\u00a0<span data-ccp-props=\"{}\">\u00a0<\/span><\/p>\n<h1>L&#8217;assembleur<span data-ccp-props=\"{&quot;335559738&quot;:120}\">\u00a0<\/span><\/h1>\n<p>Pour mieux exprimer ces instructions pour le processeur,\u00a0les informaticiens ont imagin\u00e9\u00a0l&#8217;assembleur, un programme qui transforme des instructions plus lisibles dans ces suites\u00a0de 0 et de 1.<span data-ccp-props=\"{&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p>Ces instructions\u00a0plus lisibles\u00a0sont\u00a0des mn\u00e9moniques et ressemblent pour le m\u00eame programme \u00e0 :<span data-ccp-props=\"{&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p><strong>LD HL,72A3H<\/strong><br \/>\n<strong> LD B,(HL)<\/strong><br \/>\n<strong> SUB A<\/strong><br \/>\n<strong> L1: INC HL<\/strong><br \/>\n<strong> CP (HL)<\/strong><br \/>\n<strong> JR NC,L2<\/strong><br \/>\n<strong> LD A,(HL)<\/strong><br \/>\n<strong> L2: DJNZ L1<\/strong><br \/>\n<strong> LD (7AF2H), A\u00a0\u00a0<\/strong><\/p>\n<p>On appelle mn\u00e9moniques ces codes car ils ont une vague ressemblance avec des mots anglais. Ne trouvez-vous pas ?<span data-ccp-props=\"{&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p>LD comme\u00a0Load, SUB comme\u00a0substract, INC comme\u00a0increment, JR comme Jump\u00a0Relative, etc.<span data-ccp-props=\"{&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p>La t\u00e2che \u00e9t\u00e9 devenue un peu plus facile pour saisir du code mais encore bien difficile pour concevoir des programmes complexes.<span data-ccp-props=\"{&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<h1>Le premier langage de programmation<span data-ccp-props=\"{&quot;335559738&quot;:120,&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/h1>\n<p>L&#8217;\u00e9tape suivante et d\u00e9terminante sera l&#8217;invention des langages de programmation.<span data-ccp-props=\"{&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p>Personne ne pensait qu&#8217;il serait possible d&#8217;inventer des langages de programmation capables\u00a0de diriger un ordinateur, avant qu&#8217;en 1953, John\u00a0Backus\u00a0de la soci\u00e9t\u00e9 IBM ne se mette \u00e0 concevoir avec quelques autres ing\u00e9nieurs le langage Fortran : un langage lisible \u00e0 l&#8217;\u0153il nu, facilement compr\u00e9hensible, et non une suite de 0 et de 1, ou un jargon insipide comme le langage machine..<span data-ccp-props=\"{&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p>C&#8217;est un exploit intellectuel d&#8217;avoir con\u00e7u cette construction abstraite qu&#8217;a \u00e9t\u00e9 ce premier langage de programmation et son impl\u00e9mentation dans un ordinateur : sa simple conception a n\u00e9cessit\u00e9 24 ann\u00e9es-hommes de travail des meilleurs informaticiens de l&#8217;\u00e9poque.\u00a0<span data-ccp-props=\"{&quot;335559739&quot;:160,&quot;335559740&quot;:259}\">\u00a0<\/span><\/p>\n<p>Je parlerai plus en d\u00e9tail du Fortran dans le prochain post de cette s\u00e9rie d&#8217;articles !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Les langages de programmation sont une invention cr\u00e9\u00e9e par l&#8217;humanit\u00e9. M\u00eame s&#8217;ils ont \u00e9t\u00e9 invent\u00e9s il y a quelques dizaines d&#8217;ann\u00e9es, il y a eu beaucoup d&#8217;\u00e9volutions. Je vous invite \u00e0 parcourir quelques \u00e9tapes de ces \u00e9volutions avec moi.\u00a0 Bits et langage machine &#8230;\u00a0 Tout au d\u00e9but,\u00a0les ordinateurs fonctionnent avec des \u00e9tats allum\u00e9s ou \u00e9teints <a class=\"read-more\" href=\"https:\/\/wollef.org\/blog\/histoire-de-la-programmation-14-des-premiers-bits-au-premier-langage\/\">Continue Reading<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[28,35,4,47,14],"tags":[],"class_list":["post-455","post","type-post","status-publish","format-standard","hentry","category-histoire-programmation-java","category-assembleur","category-histoire","category-langage-machine","category-programmation"],"_links":{"self":[{"href":"https:\/\/wollef.org\/blog\/wp-json\/wp\/v2\/posts\/455","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wollef.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wollef.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wollef.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wollef.org\/blog\/wp-json\/wp\/v2\/comments?post=455"}],"version-history":[{"count":0,"href":"https:\/\/wollef.org\/blog\/wp-json\/wp\/v2\/posts\/455\/revisions"}],"wp:attachment":[{"href":"https:\/\/wollef.org\/blog\/wp-json\/wp\/v2\/media?parent=455"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wollef.org\/blog\/wp-json\/wp\/v2\/categories?post=455"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wollef.org\/blog\/wp-json\/wp\/v2\/tags?post=455"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}