{"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\/it\/blog\/news\/chto-sdelalo-lisp-osobennym","title":{"rendered":"Cosa ha reso speciale Lisp","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<blockquote><p>\u00ab<i>Il linguaggio di programmazione pi\u00f9 grande mai creato<\/i>\u00ab<br \/>\n \u2014 Alan Kay, \u00abon Lisp\u00bb<\/p><\/blockquote>\n<p>\n<img decoding=\"async\" alt=\"Cosa ha reso speciale Lisp\" src=\"\/wp-content\/uploads\/2020\/01\/64f1d8e27f54f8acd763bc17d0bfb57b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQuando McCarthy svilupp\u00f2 Lisp alla fine degli anni '50, era radicalmente diverso dai linguaggi esistenti, il pi\u00f9 importante dei quali era <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 ha incarnato nove nuove idee:<\/p>\n<p>1. <b>Espressioni condizionali (Conditionals)<\/b>. Le espressioni condizionali sono la costruzione if-then-else. Oggi le consideriamo scontate. Furono <noindex><a rel=\"nofollow\" href=\"http:\/\/www-formal.stanford.edu\/jmc\/history\/lisp\/node2.html\">inventate<\/a><\/noindex> da McCarthy durante lo sviluppo di Lisp. (Fortran in quel periodo aveva solo istruzioni goto, strettamente legate all'istruzione di branch sull'hardware sottostante.) McCarthy, facendo parte del comitato di Algol, introdusse le espressioni condizionali in Algol, da dove si diffusero in altri linguaggi.<\/p>\n<p>2. <b>Tipi funzionali (A function type)<\/b>. In Lisp, le funzioni sono oggetti di primo livello \u2014 sono un tipo di dato, proprio come numeri, stringhe, ecc., e hanno una rappresentazione letterale, possono essere memorizzate in variabili, possono essere passate come argomenti, e cos\u00ec via. <\/p>\n<p>3. <b>Ricorsione (Recursion)<\/b>. La ricorsione, naturalmente, esisteva come concetto matematico prima di Lisp, ma Lisp \u00e8 stato il primo linguaggio di programmazione a supportarla. (Questo \u00e8 implicitamente suggerito dalla creazione di funzioni come oggetti di primo livello.)<\/p>\n<p>4. <b>Nuova concezione di variabili (A new concept of variables)<\/b>. In Lisp, tutte le variabili sono puntatori efficaci. I valori appartengono ai tipi, non alle variabili, e l'assegnazione o il binding delle variabili significa copiare i puntatori, non ci\u00f2 a cui puntano.<\/p>\n<p>5. <b>Raccolta dei rifiuti (Garbage-collection)<\/b>.<\/p>\n<p>6. <b>Programmi composti da espressioni (Programs composed of expressions)<\/b>. I programmi in Lisp sono alberi di espressioni, ognuna delle quali restituisce un valore. (Alcune espressioni Lisp possono restituire valori multipli.) Questo contrasta con Fortran e con molti altri linguaggi di successo, che distinguono tra 'espressioni' e 'istruzioni'.<\/p>\n<p>Era naturale avere tale distinzione in Fortran, perch\u00e9 il linguaggio era orientato linearmente (non sorprende per un linguaggio il cui formato di input era la scheda perforata). Non era possibile avere istruzioni annidate. E mentre erano necessarie espressioni matematiche per lavorare, non aveva senso costringere nient'altro a restituire un valore, perch\u00e9 poteva non esserci nulla che si aspettava un ritorno.<\/p>\n<p>Le restrizioni sono state rimosse con l'avvento dei linguaggi a blocchi, ma a quel punto era gi\u00e0 troppo tardi. La distinzione tra espressioni e istruzioni si era gi\u00e0 consolidata. \u00c8 passata da Fortran ad Algol e oltre ai loro discendenti.<\/p>\n<p>Quando un linguaggio \u00e8 completamente composto da espressioni, puoi costruire espressioni come desideri. Puoi scrivere sia (usando la sintassi\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>\noppure<\/p>\n<pre><code class=\"lisp\">(= x (if foo 1 2))<\/code><\/pre>\n<p>\n7. <b>Tipo simbolo (A symbol type)<\/b>. I simboli si differenziano dalle stringhe, in questo caso puoi verificare l'uguaglianza confrontando i puntatori.<\/p>\n<p>8. <b>Notazione per il codice (A notation for code)<\/b> utilizzando alberi di simboli.<\/p>\n<p>9. <b>L'intero linguaggio \u00e8 sempre disponibile (The whole language always available)<\/b>. Non c'\u00e8 una distinzione esplicita tra tempo di lettura, tempo di compilazione e tempo di esecuzione. Puoi compilare o eseguire codice durante la lettura, oppure leggere o eseguire codice mentre compili, oppure leggere o compilare codice durante l'esecuzione.<\/p>\n<p>Eseguire codice durante la lettura consente agli utenti di riprogrammare la sintassi di Lisp; l'esecuzione di codice durante la compilazione \u00e8 alla base delle macro; la compilazione durante l'esecuzione \u00e8 alla base dell'uso di Lisp come linguaggio di estensione in programmi come Emacs; e infine, la lettura durante l'esecuzione consente ai programmi di interagire utilizzando s-expression, un'idea recentemente reinventata in XML.<\/p>\n<h4>Conclusione<\/h4>\n<p>\nQuando Lisp \u00e8 stato appena inventato, tutte queste idee erano molto lontane dalle pratiche comuni di programmazione dettate dall'hardware disponibile alla fine degli anni '50.<\/p>\n<p>Nel tempo, la lingua predefinita, incarnata dal successo di linguaggi popolari, \u00e8 evoluta verso Lisp. I punti 1-5 sono ora ampiamente diffusi. Il punto 6 inizia a emergere nel mainstream. In Python, in qualche modo, \u00e8 presente il punto 7, anche se non esiste una sintassi appropriata. Il punto 8, che (assieme al punto 9) rende possibili i macro in Lisp, esiste ancora solo in Lisp, forse perch\u00e9 (a) richiede queste parentesi o qualcosa di altrettanto sfavorevole, e (b) se aggiungi questo ultimo incremento di potenza, non puoi pi\u00f9 affermare di aver inventato un nuovo linguaggio, ma solo di aver sviluppato un nuovo dialetto di Lisp; -)<\/p>\n<p>Sebbene sia utile per i programmatori moderni, \u00e8 strano descrivere Lisp in termini delle sue differenze rispetto a tecniche casuali adottate in altri linguaggi. Forse non era questo che pensava McCarthy. Lisp non \u00e8 stato progettato per correggere gli errori di Fortran; \u00e8 emerso piuttosto come un sottoprodotto di un tentativo di <noindex><a rel=\"nofollow\" href=\"http:\/\/www.paulgraham.com\/rootsoflisp.html\">di assiomatizzare i calcoli<\/a><\/noindex>.<br \/>\n<br \/>Fonte: <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.1.1 - 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\/it\/blog\/news\/chto-sdelalo-lisp-osobennym\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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\/it\/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\udd47Cosa rende Lisp speciale | ProHoster","description":"\"Il pi\u00f9 grande linguaggio di programmazione mai creato\" \u2014 Alan Kay, \u00abon Lisp\u00bb","canonical_url":"https:\/\/prohoster.info\/it\/blog\/news\/chto-sdelalo-lisp-osobennym","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"it_IT","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\/it\/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\/it\/wp-json\/wp\/v2\/posts\/55281","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=55281"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/55281\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/55282"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=55281"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=55281"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=55281"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}