{"id":55281,"date":"2020-01-17T00:00:00","date_gmt":"2020-01-16T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/chto-sdelalo-lisp-osobennym"},"modified":"2020-02-18T14:03:23","modified_gmt":"2020-02-18T11:03:23","slug":"chto-sdelalo-lisp-osobennym","status":"publish","type":"post","link":"https:\/\/prohoster.info\/fr\/blog\/news\/chto-sdelalo-lisp-osobennym","title":{"rendered":"Qu'est-ce qui a rendu Lisp si sp\u00e9cial","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<blockquote><p>\u00ab<i>Le plus grand des langages de programmation jamais cr\u00e9\u00e9s<\/i>\u00ab<br \/>\n \u2014 Alan Kay, \u00abon Lisp\u00bb<\/p><\/blockquote>\n<p>\n<img decoding=\"async\" alt=\"Qu&#039;est-ce qui a rendu Lisp si sp\u00e9cial\" src=\"\/wp-content\/uploads\/2020\/01\/64f1d8e27f54f8acd763bc17d0bfb57b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nLorsque McCarthy a d\u00e9velopp\u00e9 Lisp \u00e0 la fin des ann\u00e9es 1950, il se distinguait radicalement des langages existants, le plus important \u00e9tant <noindex><a rel=\"nofollow\" href=\"http:\/\/www.paulgraham.com\/history.html\">Fortran<\/a><\/noindex>.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nLisp a incarn\u00e9 neuf nouvelles id\u00e9es :<\/p>\n<p>1. <b>Instructions conditionnelles (Conditionals)<\/b>. Les instructions conditionnelles sont des constructions if-then-else. Aujourd'hui, nous les consid\u00e9rons comme acquises. Elles ont \u00e9t\u00e9 <noindex><a rel=\"nofollow\" href=\"http:\/\/www-formal.stanford.edu\/jmc\/history\/lisp\/node2.html\">invent\u00e9es<\/a><\/noindex> par McCarthy lors du d\u00e9veloppement de Lisp. (Fortran \u00e0 l'\u00e9poque n'avait que des instructions goto, \u00e9troitement li\u00e9es \u00e0 l'instruction de branchement sur le mat\u00e9riel sous-jacent.) McCarthy, \u00e9tant dans le comit\u00e9 Algol, a introduit les instructions conditionnelles dans Algol, d'o\u00f9 elles se sont r\u00e9pandues dans d'autres langages.<\/p>\n<p>2. <b>Types fonctionnels (A function type)<\/b>. Dans Lisp, les fonctions sont des objets de premi\u00e8re classe \u2014 elles sont un type de donn\u00e9es, tout comme les nombres, les cha\u00eenes, etc., et ont une repr\u00e9sentation litt\u00e9rale, peuvent \u00eatre stock\u00e9es dans des variables, peuvent \u00eatre pass\u00e9es comme arguments, etc. <\/p>\n<p>3. <b>R\u00e9cursion (Recursion)<\/b>. La r\u00e9cursivit\u00e9 existait bien s\u00fbr en tant que concept math\u00e9matique avant Lisp, mais Lisp a \u00e9t\u00e9 le premier langage de programmation \u00e0 la supporter. (Cela est peut-\u00eatre implicite dans la cr\u00e9ation de fonctions en tant qu'objets de premi\u00e8re classe.)<\/p>\n<p>4. <b>Nouvelle conception des variables (A new concept of variables)<\/b>. Dans Lisp, toutes les variables sont des pointeurs efficaces. Les valeurs sont ce que poss\u00e8dent les types, et non les variables, et l'affectation ou le liaisonnement des variables signifie la copie de pointeurs, et non de ce \u00e0 quoi ils pointent.<\/p>\n<p>5. <b>Garbage-collection (Collecte des d\u00e9chets)<\/b>.<\/p>\n<p>6. <b>Programmes compos\u00e9s d'expressions (Programs composed of expressions)<\/b>. Les programmes en Lisp sont des arbres d'expressions, chacun retournant une valeur. (Certaines expressions Lisp peuvent retourner plusieurs valeurs.) Cela contraste avec Fortran et de nombreux autres langages populaires, qui distinguent \u00ab expressions \u00bb et \u00ab instructions \u00bb.<\/p>\n<p>Il \u00e9tait naturel d'avoir une telle distinction en Fortran, car le langage \u00e9tait orient\u00e9 vers une structure lin\u00e9aire (ce qui n'est pas surprenant pour un langage dont le format d'entr\u00e9e \u00e9tait la carte perfor\u00e9e). Vous ne pouviez pas avoir d'instructions imbriqu\u00e9es. Et tant que vous aviez besoin d'expressions math\u00e9matiques pour travailler, il n'y avait pas de sens \u00e0 forcer quoi que ce soit d'autre \u00e0 retourner une valeur, car il se pouvait qu'il n'y ait rien qui attendait un retour.<\/p>\n<p>Les limitations ont \u00e9t\u00e9 lev\u00e9es avec l'av\u00e8nement des langages \u00e0 structure de bloc, mais \u00e0 ce stade, il \u00e9tait d\u00e9j\u00e0 trop tard. La distinction entre expressions et instructions avait d\u00e9j\u00e0 \u00e9t\u00e9 \u00e9tablie. Elle a \u00e9t\u00e9 rapport\u00e9e de Fortran \u00e0 Algol et ensuite \u00e0 leurs descendants.<\/p>\n<p>Lorsqu'un langage est enti\u00e8rement compos\u00e9 d'expressions, vous pouvez composer des expressions comme vous le souhaitez. Vous pouvez \u00e9crire soit (en utilisant la syntaxe\u00a0<noindex><a rel=\"nofollow\" href=\"http:\/\/www.paulgraham.com\/arc.html\">Arc<\/a><\/noindex>)<\/p>\n<pre><code class=\"lisp\">(if foo (= x 1) (= x 2))<\/code><\/pre>\n<p>\nou<\/p>\n<pre><code class=\"lisp\">(= x (if foo 1 2))<\/code><\/pre>\n<p>\n7. <b>Type de symbole<\/b>. Les symboles se distinguent des cha\u00eenes, dans ce cas, vous pouvez v\u00e9rifier l'\u00e9galit\u00e9 en comparant les pointeurs.<\/p>\n<p>8. <b>Une notation pour le code<\/b> en utilisant des arbres de symboles.<\/p>\n<p>9. <b>L'ensemble du langage toujours disponible.<\/b>. Il n'y a pas de distinction explicite entre le temps de lecture, le temps de compilation et le temps d'ex\u00e9cution. Vous pouvez compiler ou ex\u00e9cuter du code en temps de lecture, ou lire ou ex\u00e9cuter du code pendant que vous compilez, ou lire ou compiler du code en temps d'ex\u00e9cution.<\/p>\n<p>L'ex\u00e9cution de code lors de la lecture permet aux utilisateurs de reprogrammer la syntaxe de Lisp ; l'ex\u00e9cution de code lors de la compilation est \u00e0 la base des macros ; la compilation \u00e0 l'ex\u00e9cution est \u00e0 la base de l'utilisation de Lisp comme langage d'extension dans des programmes tels qu'Emacs ; et enfin, la lecture \u00e0 l'ex\u00e9cution permet aux programmes d'interagir en utilisant des s-expressions, une id\u00e9e r\u00e9cemment r\u00e9invent\u00e9e dans XML.<\/p>\n<h4>Conclusion<\/h4>\n<p>\nLorsque Lisp a \u00e9t\u00e9 invent\u00e9 pour la premi\u00e8re fois, toutes ces id\u00e9es \u00e9taient tr\u00e8s \u00e9loign\u00e9es des pratiques de programmation habituelles dict\u00e9es par le mat\u00e9riel disponible \u00e0 la fin des ann\u00e9es 1950.<\/p>\n<p>Avec le temps, le langage par d\u00e9faut, incarn\u00e9 par le succ\u00e8s des langages populaires, a progressivement \u00e9volu\u00e9 vers Lisp. Les points 1 \u00e0 5 sont maintenant largement r\u00e9pandus. Le point 6 commence \u00e0 appara\u00eetre dans le mainstream. Il existe une forme du point 7 en Python, bien qu'il n'y ait pas de syntaxe ad\u00e9quate. Le point 8, qui (avec le point 9) rend les macros possibles dans Lisp, n'existe toujours que dans Lisp, peut-\u00eatre parce que (a) il n\u00e9cessite ces parenth\u00e8ses ou quelque chose d'aussi mauvais, et (b) si vous ajoutez ce dernier accroissement de puissance, vous ne pouvez plus pr\u00e9tendre avoir invent\u00e9 un nouveau langage, mais seulement d\u00e9velopp\u00e9 un nouveau dialecte de Lisp ; -)<\/p>\n<p>Bien que cela soit utile pour les programmeurs modernes, il est \u00e9trange de d\u00e9crire Lisp en termes de ses diff\u00e9rences par rapport aux approches al\u00e9atoires adopt\u00e9es dans d'autres langages. Ce n'est peut-\u00eatre pas ce \u00e0 quoi pensait McCarthy. Lisp n'a pas \u00e9t\u00e9 con\u00e7u pour corriger les erreurs de Fortran ; il est plut\u00f4t apparu comme un sous-produit d'une tentative. <noindex><a rel=\"nofollow\" href=\"http:\/\/www.paulgraham.com\/rootsoflisp.html\">d'axiomatiser le calcul<\/a><\/noindex>.<br \/>\n<br \/>Source : <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/476994\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>&#171;\u0412\u0435\u043b\u0438\u0447\u0430\u0439\u0448\u0438\u0439 \u0438\u0437 \u043a\u043e\u0433\u0434\u0430-\u043b\u0438\u0431\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f&#171; \u2014 Alan Kay, \u00abon Lisp\u00bb \u041a\u043e\u0433\u0434\u0430 \u041c\u0430\u043a\u043a\u0430\u0440\u0442\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043b Lisp \u0432 \u043a\u043e\u043d\u0446\u0435 1950-\u0445, \u043e\u043d \u0440\u0430\u0434\u0438\u043a\u0430\u043b\u044c\u043d\u043e \u043e\u0442\u043b\u0438\u0447\u0430\u043b\u0441\u044f \u043e\u0442 \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u044e\u0449\u0438\u0445 \u044f\u0437\u044b\u043a\u043e\u0432, \u0441\u0430\u043c\u044b\u043c \u0433\u043b\u0430\u0432\u043d\u044b\u043c \u0438\u0437 \u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0431\u044b\u043b Fortran. Lisp \u0432\u043e\u043f\u043b\u043e\u0442\u0438\u043b \u0434\u0435\u0432\u044f\u0442\u044c \u043d\u043e\u0432\u044b\u0445 \u0438\u0434\u0435\u0439: 1. \u0423\u0441\u043b\u043e\u0432\u043d\u044b\u0435 \u0432\u044b\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043d\u0438\u044f (Conditionals).\u00a0\u0423\u0441\u043b\u043e\u0432\u043d\u044b\u0435 \u0432\u044b\u0441\u043a\u0430\u0437\u044b\u0432\u0430\u043d\u0438\u044f \u044d\u0442\u043e if-then-else \u043a\u043e\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f. \u0421\u0435\u0439\u0447\u0430\u0441 \u043c\u044b \u0432\u043e\u0441\u043f\u0440\u0438\u043d\u0438\u043c\u0430\u0435\u043c \u0438\u0445 \u043a\u0430\u043a \u0434\u043e\u043b\u0436\u043d\u043e\u0435. \u041e\u043d\u0438 \u0431\u044b\u043b\u0438 \u0438\u0437\u043e\u0431\u0440\u0435\u0442\u0435\u043d\u044b \u041c\u0430\u043a\u043a\u0430\u0440\u0442\u0438 \u0432\u043e \u0432\u0440\u0435\u043c\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":55282,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-55281","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"&quot;\u0412\u0435\u043b\u0438\u0447\u0430\u0439\u0448\u0438\u0439 \u0438\u0437 \u043a\u043e\u0433\u0434\u0430-\u043b\u0438\u0431\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f&quot; \u2014 Alan Kay, \u00abon Lisp\u00bb\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/fr\/blog\/news\/chto-sdelalo-lisp-osobennym\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0427\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b\u043e Lisp \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u044b\u043c | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"&quot;\u0412\u0435\u043b\u0438\u0447\u0430\u0439\u0448\u0438\u0439 \u0438\u0437 \u043a\u043e\u0433\u0434\u0430-\u043b\u0438\u0431\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f&quot; \u2014 Alan Kay, \u00abon Lisp\u00bb\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/fr\/blog\/news\/chto-sdelalo-lisp-osobennym\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-01-16T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:03:23+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Ce qui a rendu Lisp sp\u00e9cial | ProHoster","description":"\"Le plus grand des langages de programmation jamais cr\u00e9\u00e9s\" \u2014 Alan Kay, \u00ab on Lisp \u00bb","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/news\/chto-sdelalo-lisp-osobennym","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0427\u0442\u043e \u0441\u0434\u0435\u043b\u0430\u043b\u043e Lisp \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u044b\u043c | ProHoster","og:description":"&quot;\u0412\u0435\u043b\u0438\u0447\u0430\u0439\u0448\u0438\u0439 \u0438\u0437 \u043a\u043e\u0433\u0434\u0430-\u043b\u0438\u0431\u043e \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0445 \u044f\u0437\u044b\u043a\u043e\u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f&quot; \u2014 Alan Kay, \u00abon Lisp\u00bb","og:url":"https:\/\/prohoster.info\/fr\/blog\/news\/chto-sdelalo-lisp-osobennym","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-01-16T21:00:00+00:00","article:modified_time":"2020-02-18T11:03:23+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"55281","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:46:29","updated":"2022-10-01 02:03:35","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/55281","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=55281"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/55281\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/55282"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=55281"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=55281"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=55281"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}