{"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\/ro\/blog\/news\/chto-sdelalo-lisp-osobennym","title":{"rendered":"Ce a f\u0103cut Lisp at\u00e2t de special","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<blockquote><p>\u00ab<i>Cel mai mare dintre limbajele de programare create vreodat\u0103<\/i>\u00ab<br \/>\n \u2014 Alan Kay, \u201edespre Lisp\u201d<\/p><\/blockquote>\n<p>\n<img decoding=\"async\" alt=\"Ce a f\u0103cut Lisp at\u00e2t de special\" src=\"\/wp-content\/uploads\/2020\/01\/64f1d8e27f54f8acd763bc17d0bfb57b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nC\u00e2nd McCarthy a dezvoltat Lisp la sf\u00e2r\u0219itul anilor '50, acesta era radical diferit de limbajele existente, dintre care cel mai important 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 a \u00eentruchipat nou\u0103 idei noi:<\/p>\n<p>1. <b>Declara\u021bii condi\u021bionale (Conditionals)<\/b>. Declara\u021biile condi\u021bionale sunt o construc\u021bie if-then-else. Acum le consider\u0103m de la sine \u00een\u021belese. Ele au fost <noindex><a rel=\"nofollow\" href=\"http:\/\/www-formal.stanford.edu\/jmc\/history\/lisp\/node2.html\">inventate<\/a><\/noindex> de McCarthy \u00een timpul dezvolt\u0103rii Lisp. (Fortran avea doar declara\u021bii goto, str\u00e2ns legate de instruc\u021biunile de ramificare hardware.) McCarthy, fiind \u00een comitetul Algol, a introdus declara\u021biile condi\u021bionale \u00een Algol, de unde s-au r\u0103sp\u00e2ndit \u00een alte limbaje.<\/p>\n<p>2. <b>Tipuri func\u021bionale (A function type)<\/b>. \u00cen Lisp, func\u021biile sunt obiecte de prim\u0103 clas\u0103 \u2014 ele reprezint\u0103 un tip de date, la fel ca numerele, \u0219irurile etc., \u0219i au o reprezentare literal\u0103, pot fi stocate \u00een variabile, pot fi transmise ca argumente etc. <\/p>\n<p>3. <b>Recursie (Recursion)<\/b>. Recursivitatea, desigur, a existat ca o concept matematic \u00eenainte de Lisp, dar Lisp a fost prima limbaj de programare care a sus\u021binut-o. (Acest lucru este posibil sugerat \u00een crearea func\u021biilor ca obiecte de prim\u0103 clas\u0103.)<\/p>\n<p>4. <b>Noi concepte de variabile (A new concept of variables)<\/b>. \u00cen Lisp, toate variabilele sunt indicatoare eficiente. Valorile sunt ceea ce au tipurile, nu variabilele, iar atribuirea sau legarea variabilelor \u00eenseamn\u0103 copierea indicatoarelor, nu a celor la care indic\u0103.<\/p>\n<p>5. <b>Colectarea de gunoi (Garbage-collection)<\/b>.<\/p>\n<p>6. <b>Programele sunt compuse din expresii (Programs composed of expressions)<\/b>. Programele \u00een Lisp sunt arbori de expresii, fiecare dintre acestea return\u00e2nd o valoare. (Unele expresii Lisp pot returna valori multiple.) Aceasta este \u00een contrast cu Fortran \u0219i cu multe alte limbi de succes, care fac distinc\u021bia \u00eentre \u201eexpresii\u201d \u0219i \u201edeclara\u021bii.\u201d<\/p>\n<p>A fost natural s\u0103 existe o astfel de distinc\u021bie \u00een Fortran, deoarece limbajul era orientat liniar (nu este surprinz\u0103tor pentru un limbaj al c\u0103rui format de intrare era perforat). Nu putea\u021bi avea declara\u021bii imbricate. \u0218i de\u0219i aveai nevoie de expresii matematice pentru lucru, nu avea sens s\u0103 for\u021bezi ceva altceva s\u0103 returneze o valoare, deoarece putea s\u0103 nu existe nimic care s\u0103 a\u0219tepte o \u00eentoarcere.<\/p>\n<p>Restric\u021biile au fost ridicate odat\u0103 cu apari\u021bia limbajelor de programare structurate pe blocuri, dar la acel moment era deja prea t\u00e2rziu. Distinc\u021bia \u00eentre expresii \u0219i declara\u021bii s-a consolidat deja. Ea a trecut de la Fortran la Algol \u0219i mai departe la urma\u0219ii lor.<\/p>\n<p>C\u00e2nd un limbaj este complet format din expresii, pute\u021bi construi expresii cum dori\u021bi. Pute\u021bi scrie fie (folosind sintaxa\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>\nsau<\/p>\n<pre><code class=\"lisp\">(= x (if foo 1 2))<\/code><\/pre>\n<p>\n7. <b>Tipul simbol (A symbol type)<\/b>. Simbolurile difer\u0103 de \u0219irurile de caractere, \u00een acest caz pute\u021bi verifica egalitatea compar\u00e2nd pointerele.<\/p>\n<p>8. <b>Nota\u021bie pentru cod (A notation for code)<\/b> folosind arbori din simboluri.<\/p>\n<p>9. <b>\u00centregul limbaj este \u00eentotdeauna disponibil (The whole language always available)<\/b>. Nu exist\u0103 o distinc\u021bie explicit\u0103 \u00eentre timpul de citire, timpul de compilare \u0219i timpul de execu\u021bie. Pute\u021bi compila sau rula codul \u00een timpul citirii, sau citi sau rula codul \u00een timp ce compila\u021bi, sau citi sau compila codul \u00een timpul execu\u021biei.<\/p>\n<p>Executarea codului \u00een timpul citirii permite utilizatorilor s\u0103 reprogramaze sintaxa Lisp; executarea codului \u00een timpul compil\u0103rii este baza pentru macrocomenzi; compilarea \u00een timpul rul\u0103rii este baza utiliz\u0103rii Lisp ca limbaj de extensie \u00een programe precum Emacs; \u0219i \u00een cele din urm\u0103, citirea \u00een timpul rul\u0103rii permite programelor s\u0103 interac\u021bioneze, folosind s-expresii, o idee recent reinven\u021bionat\u0103 \u00een XML.<\/p>\n<h4>Concluzie<\/h4>\n<p>\nC\u00e2nd Lisp a fost inventat, toate aceste idei erau foarte departe de practicile de programare obi\u0219nuite dictate de hardware-ul disponibil la sf\u00e2r\u0219itul anilor '50.<\/p>\n<p>De-a lungul timpului, limbajul implicit, \u00eentruchipat \u00een succesul limbajelor populare, a evoluat treptat spre Lisp. Punctele 1-5 sunt acum foarte r\u0103sp\u00e2ndite. Punctul 6 \u00eencepe s\u0103 apar\u0103 \u00een mainstream. \u00cen Python exist\u0103, \u00eentr-o anumit\u0103 form\u0103, punctul 7, de\u0219i nu exist\u0103 o sintax\u0103 adecvat\u0103. Punctul 8, care (\u00eempreun\u0103 cu punctul 9) face posibile macrocomenzile \u00een Lisp, exist\u0103 \u00eenc\u0103 doar \u00een Lisp, poate deoarece (a) necesit\u0103 aceste paranteze sau ceva la fel de prost \u0219i (b) dac\u0103 ad\u0103uga\u021bi aceast\u0103 ultim\u0103 cre\u0219tere a puterii, nu ve\u021bi mai putea sus\u021bine c\u0103 a\u021bi inventat un nou limbaj, ci doar a\u021bi dezvoltat un nou dialect al Lisp-ului; -)<\/p>\n<p>De\u0219i este util pentru programatorii moderni, este ciudat s\u0103 descrii Lisp \u00een termeni de diferen\u021bele sale fa\u021b\u0103 de diversele tehnici adoptate \u00een alte limbaje. Poate c\u0103 acesta nu era scopul lui McCarthy. Lisp nu a fost proiectat pentru a corecta erorile Fortran-ului; a ap\u0103rut mai degrab\u0103 ca un produs secundar al unei \u00eencerc\u0103ri <noindex><a rel=\"nofollow\" href=\"http:\/\/www.paulgraham.com\/rootsoflisp.html\">de a axiomatiza calculele<\/a><\/noindex>.<br \/>\n<br \/>Sursa: <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.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\/ro\/blog\/news\/chto-sdelalo-lisp-osobennym\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\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\/ro\/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 a f\u0103cut ca Lisp s\u0103 fie special | ProHoster","description":"\"Cel mai mare dintre limbajele de programare create vreodat\u0103\" \u2014 Alan Kay, \u201eon Lisp\u201d","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/news\/chto-sdelalo-lisp-osobennym","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","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\/ro\/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\/ro\/wp-json\/wp\/v2\/posts\/55281","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=55281"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/55281\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/55282"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=55281"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=55281"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=55281"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}