{"id":113,"date":"2021-06-25T19:17:41","date_gmt":"2021-06-25T19:17:41","guid":{"rendered":"https:\/\/www.louismarchand.me\/?p=113"},"modified":"2021-06-25T19:25:33","modified_gmt":"2021-06-25T19:25:33","slug":"la-creation-dun-langage-de-programmation","status":"publish","type":"post","link":"https:\/\/www.louismarchand.me\/index.php\/2021\/06\/25\/la-creation-dun-langage-de-programmation\/","title":{"rendered":"La cr\u00e9ation d&rsquo;un langage de programmation"},"content":{"rendered":"<p>Cet article est le premier d&rsquo;une s\u00e9rie d&rsquo;articles traitant du d\u00e9veloppement du langage Triumph.<\/p>\n<p>Ceux qui me connaissent savent que j&rsquo;aime particuli\u00e8rement le langage Eiffel. Ce langage, qui peut sembler particulier \u00e0 premi\u00e8re vue a une caract\u00e9ristique que j&rsquo;appr\u00e9cie particuli\u00e8rement. Ce que j&rsquo;appr\u00e9cie particuli\u00e8rement n&rsquo;est pas la syntaxe tr\u00e8s verbale du langage; ni l&rsquo;\u00e9diteur compl\u00e8tement int\u00e9gr\u00e9 au langage Eiffel. Ce qui m&rsquo;int\u00e9resse le plus dans ce langage est le fait qu&rsquo;il respecte, en tout point, les concepts de programmation orient\u00e9e objet; ce qui n&rsquo;est pas \u00e9tonnant consid\u00e9rant que son cr\u00e9ateur, Bertrand Meyer, est l&rsquo;auteur d&rsquo;un des livres les plus influant sur la technologie objet: \u00ab\u00a0Object-Oriented Software Construction\u00a0\u00bb.<\/p>\n<p>Par contre, force est de constater, apr\u00e8s discussion avec plusieurs coll\u00e8gues et \u00e9tudiants, que le langage est assez difficile d&rsquo;approche; particuli\u00e8rement pour ceux qui ont toujours utilis\u00e9 les langages de programmation moderne (Java, Python, C#, etc.) En effet, au niveau syntaxique, Eiffel est bas\u00e9 sur des langages beaucoup plus verbaux et moins symboliques, comme le langage Pascal ou ALGOL. De plus certaines structures rendent le langage plus difficile d&rsquo;approche (les clauses \u00ab\u00a0feature\u00a0\u00bb, \u00ab\u00a0local\u00a0\u00bb, \u00ab\u00a0note\u00a0\u00bb, etc.)<\/p>\n<p>Dans ma volont\u00e9 de bien conseiller mes coll\u00e8gues programmeurs (et sachant que la syntaxe est loin d&rsquo;\u00eatre l&rsquo;\u00e9l\u00e9ment le plus important d&rsquo;un langage), je me suis mis \u00e0 la recherche d&rsquo;un langage de programmation avec une syntaxe plus proche des langages modernes, mais respectant r\u00e9ellement l&rsquo;id\u00e9ologie de la programmation orient\u00e9e objet. Voici les caract\u00e9ristiques de langage que je cherchais exactement:<\/p>\n<ul>\n<li>Syntaxe similaire \u00e0 C,<\/li>\n<li>D\u00e9claratif,<\/li>\n<li>Fortement typ\u00e9,<\/li>\n<li>Par classe,<\/li>\n<li>Avec h\u00e9ritage multiple (pas d&rsquo;interface),<\/li>\n<li>Avec m\u00e9canisme de protection de classe (par exemple, contrats) n&rsquo;\u00e9tant pas bas\u00e9e sur la port\u00e9e priv\u00e9e style C++ (<a href=\"https:\/\/www.louismarchand.me\/index.php\/2021\/06\/25\/pourquoi-je-naime-pas-la-portee-privee\/\">Pourquoi?<\/a>),<\/li>\n<li>Pas de type primitif (un atout)<\/li>\n<\/ul>\n<p>J&rsquo;ai donc recherch\u00e9 ce myst\u00e9rieux langage, sans jamais r\u00e9ussir \u00e0 le trouver. Pour ceux qui seraient curieux, voici des langages qui s&rsquo;en rapprochaient:<\/p>\n<ul>\n<li>Python: Non d\u00e9claratif et m\u00e9canisme de protection des classes inexistantes (ou presque);<\/li>\n<li>D: Pas d&rsquo;h\u00e9ritage multiple;<\/li>\n<li>Cobra: Pas d&rsquo;h\u00e9ritage multiple;<\/li>\n<li>C#: Pas d&rsquo;h\u00e9ritage multiple;<\/li>\n<li>Erlang: Syntaxe de programmation fonctionnelle (encore plus loin du C que le langage Eiffel)<\/li>\n<\/ul>\n<p>Bref, je n&rsquo;ai pas r\u00e9ussi \u00e0 trouver un langage qui permettait de joindre la programmation orient\u00e9e objet et une syntaxe C. Si vous en connaissez un, je suis preneur.<\/p>\n<p>Dans la communaut\u00e9 du logiciel libre, nous avons un dicton: \u00ab\u00a0Si quelque chose n&rsquo;existe pas, cr\u00e9ez-le\u00a0\u00bb. Ayant par le pass\u00e9 \u00e9tudi\u00e9 dans le domaine des langages de programmation, je me suis dit que j&rsquo;\u00e9tais tout d\u00e9sign\u00e9 pour d\u00e9marrer ce projet. De plus, je me suis \u00e9galement dit qu&rsquo;en tant que p\u00e9dagogue, je pourrais \u00e9galement documenter les \u00e9tapes de d\u00e9veloppement de ce langage afin que tous puissent voir comment est con\u00e7u un langage de programmation.<\/p>\n<p>Donc, durant le d\u00e9veloppement du langage, je t\u00e2cherai d&rsquo;\u00e9crire des articles afin de documenter les diff\u00e9rentes \u00e9tapes du d\u00e9veloppement du langage.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cet article est le premier d&rsquo;une s\u00e9rie d&rsquo;articles traitant du d\u00e9veloppement du langage Triumph. Ceux qui me connaissent savent que j&rsquo;aime particuli\u00e8rement le langage Eiffel. Ce langage, qui peut sembler particulier \u00e0 premi\u00e8re vue a une caract\u00e9ristique que j&rsquo;appr\u00e9cie particuli\u00e8rement. Ce que j&rsquo;appr\u00e9cie particuli\u00e8rement n&rsquo;est pas la syntaxe tr\u00e8s verbale du langage; ni l&rsquo;\u00e9diteur compl\u00e8tement&hellip; <a class=\"more-link\" href=\"https:\/\/www.louismarchand.me\/index.php\/2021\/06\/25\/la-creation-dun-langage-de-programmation\/\">Continue reading <span class=\"screen-reader-text\">La cr\u00e9ation d&rsquo;un langage de programmation<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-113","post","type-post","status-publish","format-standard","hentry","category-non-classe","entry"],"_links":{"self":[{"href":"https:\/\/www.louismarchand.me\/index.php\/wp-json\/wp\/v2\/posts\/113","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.louismarchand.me\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.louismarchand.me\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.louismarchand.me\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.louismarchand.me\/index.php\/wp-json\/wp\/v2\/comments?post=113"}],"version-history":[{"count":5,"href":"https:\/\/www.louismarchand.me\/index.php\/wp-json\/wp\/v2\/posts\/113\/revisions"}],"predecessor-version":[{"id":123,"href":"https:\/\/www.louismarchand.me\/index.php\/wp-json\/wp\/v2\/posts\/113\/revisions\/123"}],"wp:attachment":[{"href":"https:\/\/www.louismarchand.me\/index.php\/wp-json\/wp\/v2\/media?parent=113"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.louismarchand.me\/index.php\/wp-json\/wp\/v2\/categories?post=113"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.louismarchand.me\/index.php\/wp-json\/wp\/v2\/tags?post=113"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}