{"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\/es\/blog\/news\/chto-sdelalo-lisp-osobennym","title":{"rendered":"Qu\u00e9 hizo a Lisp especial","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<blockquote><p>&#171;<i>El mayor de los lenguajes de programaci\u00f3n jam\u00e1s creados<\/i>&#171;<br \/>\n \u2014 Alan Kay, \u00abon Lisp\u00bb<\/p><\/blockquote>\n<p>\n<img decoding=\"async\" alt=\"Qu\u00e9 hizo a Lisp especial\" src=\"\/wp-content\/uploads\/2020\/01\/64f1d8e27f54f8acd763bc17d0bfb57b.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nCuando McCarthy desarroll\u00f3 Lisp a finales de la d\u00e9cada de 1950, era radicalmente diferente de los lenguajes existentes, el m\u00e1s importante de los cuales 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 incorpor\u00f3 nueve ideas nuevas:<\/p>\n<p>1. <b>Sentencias condicionales (Conditionals)<\/b>. Las sentencias condicionales son construcciones if-then-else. Ahora las consideramos como algo normal. Fueron <noindex><a rel=\"nofollow\" href=\"http:\/\/www-formal.stanford.edu\/jmc\/history\/lisp\/node2.html\">inventadas<\/a><\/noindex> por McCarthy durante el desarrollo de Lisp. (Fortran en ese momento solo ten\u00eda sentencias goto, estrechamente vinculadas a la instrucci\u00f3n de bifurcaci\u00f3n en el hardware subyacente). McCarthy, al formar parte del comit\u00e9 de Algol, introdujo sentencias condicionales en Algol, desde donde se expandieron a otros lenguajes.<\/p>\n<p>2. <b>Tipos funcionales (A function type)<\/b>. En Lisp, las funciones son objetos de primer clase; son un tipo de dato, al igual que los n\u00fameros, las cadenas, etc., y tienen una representaci\u00f3n literal, pueden almacenarse en variables, pueden ser pasadas como argumentos, etc. <\/p>\n<p>3. <b>Recursi\u00f3n (Recursion)<\/b>. La recursi\u00f3n, por supuesto, exist\u00eda como concepto matem\u00e1tico antes de Lisp, pero Lisp fue el primer lenguaje de programaci\u00f3n que la apoy\u00f3. (Esto puede inferirse de la creaci\u00f3n de funciones como objetos de primer clase.)<\/p>\n<p>4. <b>Un nuevo concepto de variables (A new concept of variables)<\/b>. En Lisp, todas las variables son punteros efectivos. Los valores son lo que posee el tipo, no la variable, y la asignaci\u00f3n o vinculaci\u00f3n de variables significa copiar punteros, no lo que apuntan.<\/p>\n<p>5. <b>Recolecci\u00f3n de basura (Garbage-collection)<\/b>.<\/p>\n<p>6. <b>Programas compuestos de expresiones (Programs composed of expressions)<\/b>. Los programas en Lisp son \u00e1rboles de expresiones, cada uno de los cuales devuelve un valor. (Algunas expresiones de Lisp pueden devolver m\u00faltiples valores.) Esto contrasta con Fortran y muchos otros lenguajes exitosos que diferencian entre 'expresiones' y 'sentencias'.<\/p>\n<p>Era natural tener tal distinci\u00f3n en Fortran, porque el lenguaje era linealmente orientado (no es sorprendente para un lenguaje cuyo formato de entrada era la tarjeta perforada). No pod\u00edas tener sentencias anidadas. Y aunque necesitabas expresiones matem\u00e1ticas para trabajar, no ten\u00eda sentido hacer que algo m\u00e1s devolviera un valor, porque podr\u00eda no haber nada que esperara un retorno.<\/p>\n<p>Las restricciones se levantaron con la llegada de lenguajes estructurados por bloques, pero para ese momento ya era demasiado tarde. La distinci\u00f3n entre expresiones y sentencias ya se hab\u00eda consolidado. Pas\u00f3 de Fortran a Algol y luego a sus descendientes.<\/p>\n<p>Cuando un lenguaje est\u00e1 completamente compuesto de expresiones, puede formar expresiones como desee. Puede escribir ya sea (utilizando la sintaxis\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>\no<\/p>\n<pre><code class=\"lisp\">(= x (if foo 1 2))<\/code><\/pre>\n<p>\n7. <b>Tipo s\u00edmbolo (A symbol type)<\/b>. Los s\u00edmbolos son diferentes de las cadenas, en este caso puede verificar la igualdad comparando punteros.<\/p>\n<p>8. <b>Notaci\u00f3n para c\u00f3digo (A notation for code)<\/b> utilizando \u00e1rboles de s\u00edmbolos.<\/p>\n<p>9. <b>Todo el lenguaje siempre disponible (The whole language always available)<\/b>. No hay distinci\u00f3n expl\u00edcita entre el tiempo de lectura, el tiempo de compilaci\u00f3n y el tiempo de ejecuci\u00f3n. Puede compilar o ejecutar c\u00f3digo mientras lo lee, o leer o ejecutar c\u00f3digo mientras lo compila, o leer o compilar c\u00f3digo mientras se ejecuta.<\/p>\n<p>Ejecutar c\u00f3digo durante la lectura permite a los usuarios reprogramar la sintaxis de Lisp; ejecutar c\u00f3digo durante la compilaci\u00f3n es la base para macros; compilar durante la ejecuci\u00f3n es la base para usar Lisp como lenguaje de extensi\u00f3n en programas como Emacs; y finalmente, leer durante la ejecuci\u00f3n permite que los programas interact\u00faen utilizando s-expresiones, una idea recientemente reinventada en XML.<\/p>\n<h4>Conclusi\u00f3n<\/h4>\n<p>\nCuando Lisp fue inventado, todas estas ideas estaban muy lejos de las pr\u00e1cticas de programaci\u00f3n habituales dictadas por el hardware disponible a finales de los a\u00f1os 50.<\/p>\n<p>Con el tiempo, el lenguaje por defecto, encarnado en el \u00e9xito de lenguajes populares, ha evolucionado gradualmente hacia Lisp. Los puntos 1-5 ahora est\u00e1n ampliamente distribuidos. El punto 6 comienza a aparecer en el mainstream. En Python, en cierta forma, existe el punto 7, aunque no hay una sintaxis adecuada. El punto 8, que (junto con el punto 9) hace posibles los macros en Lisp, todav\u00eda existe solo en Lisp, quiz\u00e1s porque (a) requiere estos par\u00e9ntesis o algo igual de malo, y (b) si agregas este \u00faltimo aumento de potencia, ya no puedes afirmar que has inventado un nuevo lenguaje, sino que simplemente has desarrollado un nuevo dialecto de Lisp ;)<\/p>\n<p>Aunque esto es \u00fatil para los programadores modernos, es extra\u00f1o describir Lisp en t\u00e9rminos de su diferencia con los tricks aleatorios adoptados en otros lenguajes. Quiz\u00e1s esto no sea lo que ten\u00eda en mente McCarthy. Lisp no fue dise\u00f1ado para corregir los errores de Fortran; m\u00e1s bien surgi\u00f3 como un subproducto de un intento <noindex><a rel=\"nofollow\" href=\"http:\/\/www.paulgraham.com\/rootsoflisp.html\">axiomatizar los c\u00e1lculos<\/a><\/noindex>.<br \/>\n<br \/>Fuente: <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\/es\/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=\"es_ES\" \/>\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\/es\/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\udd47Lo que hizo a Lisp especial | ProHoster","description":"\"El mayor de todos los lenguajes de programaci\u00f3n jam\u00e1s creados\" \u2014 Alan Kay, \u00abon Lisp\u00bb","canonical_url":"https:\/\/prohoster.info\/es\/blog\/news\/chto-sdelalo-lisp-osobennym","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","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\/es\/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\/es\/wp-json\/wp\/v2\/posts\/55281","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=55281"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/55281\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/55282"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=55281"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=55281"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=55281"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}