{"id":1587,"date":"2017-08-28T10:55:09","date_gmt":"2017-08-28T08:55:09","guid":{"rendered":"https:\/\/blog.alwaysdata.com\/?p=1587"},"modified":"2020-02-11T15:35:21","modified_gmt":"2020-02-11T14:35:21","slug":"nouveaux-langages-cest-parti","status":"publish","type":"post","link":"https:\/\/blog.alwaysdata.com\/fr\/2017\/08\/28\/nouveaux-langages-cest-parti\/","title":{"rendered":"Nouveaux langages&nbsp;: c\u2019est&nbsp;parti&nbsp;!"},"content":{"rendered":"<p>Depuis les d\u00e9buts d\u2019alwaysdata\u200a\u2014\u200ail y&nbsp;a plus de 10 ans&nbsp;!\u200a\u2014\u200atrois langages majeurs&nbsp;peuvent \u00eatre utilis\u00e9s pour faire tourner des applications web&nbsp;: <a href=\"https:\/\/help.alwaysdata.com\/fr\/langages\/php\">PHP<\/a>, <a href=\"https:\/\/help.alwaysdata.com\/fr\/langages\/python\">Python<\/a> et <a href=\"https:\/\/help.alwaysdata.com\/fr\/langages\/ruby\">Ruby<\/a>. Si PHP est un poids lourd depuis longtemps, Python et Ruby \u00e9taient alors les petits nouveaux du&nbsp;monde du web, et nous \u00e9tions parmi&nbsp;les tout premiers h\u00e9bergeurs \u00e0&nbsp;faire tourner des applications \u00e9crites dans ces langages.<\/p>\n<p>Aujourd\u2019hui, PHP est toujours un poids lourd, Python et Ruby ont m\u00fbri, et les petits nouveaux se sont multipli\u00e9s&nbsp;: <a href=\"https:\/\/nodejs.org\/\">Node.js<\/a>,&nbsp;<a href=\"https:\/\/golang.org\/\">Go<\/a>, <a href=\"https:\/\/www.lua.org\/\">Lua<\/a>, <a href=\"http:\/\/elixir-lang.org\/\">Elixir<\/a>, <a href=\"https:\/\/www.haskell.org\/\">Haskell<\/a>, <a href=\"http:\/\/www.clojure.com\/\">Clojure<\/a>, etc. Bien que les interpr\u00e9teurs et compilateurs \u00e9taient d\u00e9j\u00e0 install\u00e9s sur nos serveurs et utilisables, par exemple, en SSH, il n\u2019\u00e9tait pas possible de faire tourner des applications web d\u00e9velopp\u00e9es avec ces langages\u2026 jusqu\u2019\u00e0 maintenant&nbsp;!<\/p>\n<p>Un nouveau type de site fait son apparition&nbsp;:&nbsp;<em>Programme utilisateur<\/em>. Lorsque vous cr\u00e9ez un site avec ce type, vous devez indiquer une commande qui sera ex\u00e9cut\u00e9e et qui fait tourner un serveur HTTP. Ce programme&nbsp;peut \u00eatre \u00e9crit dans le langage de votre choix, interpr\u00e9t\u00e9 ou compil\u00e9&nbsp;: si la commande d\u00e9marre correctement (vous pouvez tester en SSH), votre application&nbsp;sera joignable.<\/p>\n<h3>Un exemple avec Node.js<\/h3>\n<p>Prenons un exemple avec un <em>Hello World <\/em>impl\u00e9ment\u00e9 en Node.js. Cr\u00e9ons un fichier <em>~\/www\/hello.js<\/em> contenant&nbsp;:<\/p>\n<pre class=\"lang:js decode:true\" title=\"~\/www\/hello.js\">var http = require('http');\n\nvar server = http.createServer(function (request, response) {\n  response.writeHead(200, {\"Content-Type\": \"text\/plain\"});\n  response.end(\"Hello World\\n\");\n});\n\nserver.listen(8100, '127.3.151.58');<\/pre>\n<p>Le programme va \u00e9couter sur l\u2019IP 127.1.251.59 et le port 8100&nbsp;: ce ne sont pas des valeurs prises au hasard, vous devrez utiliser&nbsp;celles qui sont indiqu\u00e9es lorsque vous cr\u00e9ez votre site, dans l\u2019administration alwaysdata. Indiquons ensuite dans le formulaire de cr\u00e9ation du site la commande suivante&nbsp;:<\/p>\n<p><a href=\"https:\/\/blog.alwaysdata.com\/wp-content\/uploads\/2017\/08\/Screenshot-programme-utilisateur.png\"><img decoding=\"async\" class=\"aligncenter size-full wp-image-1615\" src=\"https:\/\/blog.alwaysdata.com\/wp-content\/uploads\/2017\/08\/Screenshot-programme-utilisateur.png\" alt=\"node ~\/www\/hello.js\" width=\"723\" height=\"167\" srcset=\"https:\/\/blog.alwaysdata.com\/wp-content\/uploads\/2017\/08\/Screenshot-programme-utilisateur.png 723w, https:\/\/blog.alwaysdata.com\/wp-content\/uploads\/2017\/08\/Screenshot-programme-utilisateur-300x69.png 300w\" sizes=\"(max-width: 723px) 100vw, 723px\"><\/a><\/p>\n<p>C\u2019est tout&nbsp;: notre site en Node.js est bien joignable et affiche un \u00e9l\u00e9gant <em>Hello World<\/em>.<\/p>\n<h3>Planning d\u00e9couverte<\/h3>\n<p>Vous tr\u00e9pignez de tester une application \u00e9crite dans votre langage favori&nbsp;? Allez\u2011y, et n\u2019h\u00e9sitez pas \u00e0&nbsp;contacter notre support si vous avez besoin d\u2019aide (ou \u00e0&nbsp;laisser un commentaire sur cet article pour exprimer votre joie). Si vous manquez d\u2019inspiration, nous allons d\u00e9marrer sur ce blog une s\u00e9rie d\u2019articles d\u2019initiation pour h\u00e9berger ses&nbsp;applications dans divers langages.<\/p>\n<p>Premier concern\u00e9&nbsp;: Node.js,&nbsp;avec m\u00eame une surprise (les d\u00e9veloppeurs de Node.js nous sollicitent depuis tant de temps qu\u2019ils l\u2019ont bien m\u00e9rit\u00e9e)\u2026<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Depuis les d\u00e9buts d\u2019alwaysdata\u200a\u2014\u200ail y&nbsp;a&nbsp;plus de 10 ans&nbsp;!\u200a\u2014\u200atrois langages majeurs&nbsp;peuvent \u00eatre utilis\u00e9s pour faire tourner des applications web&nbsp;: PHP, Python et Ruby. Si PHP \u2026 <a class=\"read-more\" href=\"https:\/\/blog.alwaysdata.com\/fr\/2017\/08\/28\/nouveaux-langages-cest-parti\/\">Keep reading<\/a><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"wp_typography_post_enhancements_disabled":false,"footnotes":""},"categories":[1],"tags":[106,107,108,109,118,104,105],"class_list":["post-1587","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-clojure","tag-elixir","tag-golang","tag-haskell","tag-languages","tag-lua","tag-node-js"],"acf":[],"_links":{"self":[{"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/posts\/1587","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/comments?post=1587"}],"version-history":[{"count":0,"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/posts\/1587\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/media?parent=1587"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/categories?post=1587"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.alwaysdata.com\/fr\/wp-json\/wp\/v2\/tags?post=1587"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}