{"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\/pt\/blog\/news\/chto-sdelalo-lisp-osobennym","title":{"rendered":"O que tornou Lisp especial","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<blockquote><p>\u00ab<i>O maior de todos os tempos j\u00e1 criado linguagens de programa\u00e7\u00e3o<\/i>\u00ab<br \/>\n \u2014 Alan Kay, \u00abon Lisp\u00bb<\/p><\/blockquote>\n<p>\n<img decoding=\"async\" alt=\"O que tornou Lisp especial\" src=\"\/wp-content\/uploads\/2020\/01\/64f1d8e27f54f8acd763bc17d0bfb57b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nQuando McCarthy criou Lisp no final da d\u00e9cada de 1950, ele diferia radicalmente das linguagens existentes, a mais importante das quais 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 incorporou nove novas ideias:<\/p>\n<p>1. <b>Declara\u00e7\u00f5es condicionais (Conditionals)<\/b>. As declara\u00e7\u00f5es condicionais s\u00e3o constru\u00e7\u00f5es if-then-else. Hoje as consideramos garantidas. Elas foram <noindex><a rel=\"nofollow\" href=\"http:\/\/www-formal.stanford.edu\/jmc\/history\/lisp\/node2.html\">inventadas<\/a><\/noindex> por McCarthy durante o desenvolvimento do Lisp. (Fortran na \u00e9poca s\u00f3 tinha comandos goto, intimamente ligados \u00e0 instru\u00e7\u00e3o de ramifica\u00e7\u00e3o na m\u00e1quina subjacente.) McCarthy, ao fazer parte do comit\u00ea do Algol, introduziu declara\u00e7\u00f5es condicionais no Algol, de onde se espalharam para outras linguagens.<\/p>\n<p>2. <b>Tipos funcionais (A function type)<\/b>. Em Lisp, fun\u00e7\u00f5es s\u00e3o objetos de primeira classe \u2014 s\u00e3o um tipo de dado, assim como n\u00fameros, strings etc., e t\u00eam uma representa\u00e7\u00e3o literal, podem ser armazenadas em vari\u00e1veis, podem ser passadas como argumentos, etc. <\/p>\n<p>3. <b>Recurs\u00e3o (Recursion)<\/b>. A recurs\u00e3o, claro, j\u00e1 existia como conceito matem\u00e1tico antes do Lisp, mas o Lisp foi a primeira linguagem de programa\u00e7\u00e3o a suport\u00e1-la. (Isso pode ser subentendido na cria\u00e7\u00e3o de fun\u00e7\u00f5es como objetos de primeira classe.)<\/p>\n<p>4. <b>Um novo conceito de vari\u00e1veis (A new concept of variables)<\/b>. Em Lisp, todas as vari\u00e1veis s\u00e3o ponteiros efetivos. Os valores s\u00e3o o que os tipos t\u00eam, e n\u00e3o as vari\u00e1veis, e a atribui\u00e7\u00e3o ou o v\u00ednculo de vari\u00e1veis significa copiar ponteiros, e n\u00e3o o que eles apontam.<\/p>\n<p>5. <b>Coleta de lixo (Garbage-collection)<\/b>.<\/p>\n<p>6. <b>Programas compostos de express\u00f5es (Programs composed of expressions)<\/b>. Programas em Lisp s\u00e3o \u00e1rvores de express\u00f5es, cada uma das quais retorna um valor. (Algumas express\u00f5es Lisp podem retornar m\u00faltiplos valores.) Isso contrasta com o Fortran e muitas outras linguagens bem-sucedidas que diferenciam \"express\u00f5es\" e \"declara\u00e7\u00f5es.\"<\/p>\n<p>Era natural ter tal distin\u00e7\u00e3o no Fortran, pois a linguagem era orientada a linhas (n\u00e3o surpreendentemente para uma linguagem cujo formato de entrada era cart\u00f5es perfurados). N\u00e3o era poss\u00edvel ter declara\u00e7\u00f5es aninhadas. E enquanto voc\u00ea precisava de express\u00f5es matem\u00e1ticas para trabalhar, n\u00e3o fazia sentido fazer qualquer coisa al\u00e9m disso retornar um valor, pois poderia n\u00e3o haver algo esperando um retorno.<\/p>\n<p>As limita\u00e7\u00f5es foram removidas com o surgimento de linguagens de bloco estruturado, mas por essa altura j\u00e1 era tarde demais. A distin\u00e7\u00e3o entre express\u00f5es e declara\u00e7\u00f5es j\u00e1 estava solidificada. Ela passou do Fortran para o Algol e depois para seus descendentes.<\/p>\n<p>Quando uma linguagem \u00e9 composta inteiramente de express\u00f5es, voc\u00ea pode compor express\u00f5es como desejar. Voc\u00ea pode escrever, seja (usando a sintaxe\u00a0<noindex><a rel=\"nofollow\" href=\"http:\/\/www.paulgraham.com\/arc.html\">Arc<\/a><\/noindex>)<\/p>\n<pre><code class=\"lisp\">(se foo (= x 1) (= x 2))<\/code><\/pre>\n<p>\nou<\/p>\n<pre><code class=\"lisp\">(= x (se foo 1 2))<\/code><\/pre>\n<p>\n7. <b>Tipo s\u00edmbolo (A symbol type)<\/b>. Os s\u00edmbolos diferem de strings, e nesse caso voc\u00ea pode verificar a igualdade comparando os ponteiros.<\/p>\n<p>8. <b>Nota\u00e7\u00e3o para c\u00f3digo (A notation for code)<\/b> usando \u00e1rvores de s\u00edmbolos.<\/p>\n<p>9. <b>Toda a linguagem sempre dispon\u00edvel (The whole language always available)<\/b>. N\u00e3o h\u00e1 distin\u00e7\u00e3o expl\u00edcita entre tempo de leitura, tempo de compila\u00e7\u00e3o e tempo de execu\u00e7\u00e3o. Voc\u00ea pode compilar ou executar c\u00f3digo durante a leitura, ou ler ou executar c\u00f3digo enquanto compila, ou ler ou compilar c\u00f3digo durante a execu\u00e7\u00e3o.<\/p>\n<p>Executar c\u00f3digo durante a leitura permite que os usu\u00e1rios reprogramem a sintaxe do Lisp; executar c\u00f3digo durante a compila\u00e7\u00e3o \u00e9 a base para macros; compilar durante a execu\u00e7\u00e3o \u00e9 a base para usar Lisp como linguagem de extens\u00e3o em programas como o Emacs; e, finalmente, ler durante a execu\u00e7\u00e3o permite que programas interajam usando s-express\u00f5es, uma ideia recentemente reinventada no XML.<\/p>\n<h4>Conclus\u00e3o<\/h4>\n<p>\nQuando o Lisp foi apenas inventado, todas essas ideias estavam longe das pr\u00e1ticas comuns de programa\u00e7\u00e3o que eram ditadas pelo hardware dispon\u00edvel no final dos anos 1950.<\/p>\n<p>Com o tempo, a linguagem padr\u00e3o, encapsulada no sucesso de linguagens populares, evoluiu gradualmente em dire\u00e7\u00e3o ao Lisp. Os itens 1-5 agora s\u00e3o amplamente utilizados. O item 6 come\u00e7a a surgir no mainstream. Em Python existe, de alguma forma, o item 7, embora n\u00e3o haja uma sintaxe adequada. O item 8, que (junto com o item 9) torna poss\u00edveis os macros no Lisp, ainda existe apenas no Lisp, possivelmente porque (a) exige esses par\u00eanteses ou algo igualmente desfavor\u00e1vel, e (b) se voc\u00ea adicionar esse \u00faltimo aumento de poder, n\u00e3o poder\u00e1 mais afirmar que inventou uma nova linguagem, mas apenas que desenvolveu um novo dialeto do Lisp; -)<\/p>\n<p>Embora isso seja \u00fatil para programadores modernos, \u00e9 estranho descrever Lisp em termos de suas diferen\u00e7as em rela\u00e7\u00e3o a truques aleat\u00f3rios adotados em outras linguagens. Talvez isso n\u00e3o seja o que McCarthy tinha em mente. O Lisp n\u00e3o foi projetado para corrigir os erros do Fortran; ele surgiu mais como um subproduto de uma tentativa <noindex><a rel=\"nofollow\" href=\"http:\/\/www.paulgraham.com\/rootsoflisp.html\">axiomatizar c\u00e1lculos<\/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.3 - 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\/pt\/blog\/news\/chto-sdelalo-lisp-osobennym\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\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\/pt\/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\udd47O que tornou o Lisp especial | ProHoster","description":"\"A maior linguagem de programa\u00e7\u00e3o j\u00e1 criada\" \u2014 Alan Kay, 'on Lisp'","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/news\/chto-sdelalo-lisp-osobennym","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","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\/pt\/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\/pt\/wp-json\/wp\/v2\/posts\/55281","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=55281"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/55281\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media\/55282"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=55281"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=55281"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=55281"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}