stringtranslate.com

YO NADO

ISWIM ( If You See What I Mean ) es un lenguaje de programación de computadoras abstracto (o una familia de lenguajes) ideado por Peter Landin y descrito por primera vez en su artículo "Los próximos 700 lenguajes de programación", publicado en Communications of the ACM en 1966. [1]

Aunque no se implementó, ha demostrado ser muy influyente en el desarrollo de lenguajes de programación, especialmente lenguajes de programación funcionales como SASL , Miranda , ML , Haskell y sus sucesores, y lenguajes de programación de flujo de datos como Lucid .

Diseño

ISWIM es un lenguaje de programación imperativo con un núcleo funcional, que consiste en un azúcar sintáctico de cálculo lambda al que se agregan variables mutables y asignación y un poderoso mecanismo de control: el operador de punto de programa . Al estar basado en cálculo lambda, ISWIM tiene funciones de orden superior y variables de alcance léxico .

La semántica operativa de ISWIM se define utilizando la máquina SECD de Landin y utiliza llamada por valor, es decir, evaluación entusiasta . [2] Un objetivo de ISWIM era parecerse más a una notación matemática, por lo que Landin abandonó los puntos y comas de ALGOLbegin entre declaraciones y ... endbloques y los reemplazó con la regla de fuera de juego y el alcance basado en sangría .

Una característica notable distintiva de ISWIM es el uso de wherecláusulas. Un programa ISWIM es una expresión única calificada por cláusulas donde (definiciones auxiliares que incluyen ecuaciones entre variables), expresiones condicionales y definiciones de funciones. Junto con CPL , ISWIM fue uno de los primeros lenguajes de programación en utilizar cláusulas Where .

Una característica semántica notable fue la capacidad de definir nuevos tipos de datos, como una suma (posiblemente recursiva) de productos. Esto se hizo utilizando una descripción de estilo de lenguaje natural algo detallada, pero aparte de la notación equivale exactamente a los tipos de datos algebraicos que se encuentran en los lenguajes funcionales modernos. [3] Las variables ISWIM no tenían declaraciones de tipo explícitas y parece probable (aunque no se indica explícitamente en el artículo de 1966) que Landin pretendía que el lenguaje se tipificara dinámicamente, como LISP y a diferencia de ALGOL ; pero también es posible que pretendiera desarrollar alguna forma de inferencia de tipos .

Implementaciones y derivados

No se intentó una implementación directa de ISWIM, pero el lenguaje PAL de Art Evan , [4] y el lenguaje Gedanken de John C. Reynolds , [5] capturaron la mayoría de los conceptos de Landin, incluidas poderosas operaciones de transferencia de control. Ambos fueron escritos dinámicamente . El ML de Robin Milner puede considerarse equivalente a I SWIM sin el operador J y con inferencia de tipos .

Otra línea de descenso de ISWIM es eliminar las características imperativas (la tarea y el operador J) dejando un lenguaje puramente funcional. [6] Entonces es posible cambiar a una evaluación diferida . Este camino llevó a los lenguajes de programación SASL , Kent Recursive Calculator (KRC), Hope , Miranda , Haskell y Clean .

Referencias

  1. ^ Landin, PJ (marzo de 1966). "Los próximos 700 lenguajes de programación" (PDF) . Comunicaciones de la ACM . Asociación para Maquinaria de Computación . 9 (3): 157–165. doi :10.1145/365230.365257. S2CID  13409665.
  2. ^ Plotkin, Gordon (1975). Llamada por nombre, llamada por valor y cálculo Lambda (PDF) (Reporte).
  3. ^ Turner, DA (2013), "Alguna historia de los lenguajes de programación funcionales", Apuntes de conferencias sobre informática , Berlín, Heidelberg: Springer Berlin Heidelberg, págs. 1-20, ISBN 978-3-642-40446-7, consultado el 28 de enero de 2024 , el artículo ISWIM también tiene la primera aparición de definiciones de tipos algebraicos utilizadas para definir estructuras. Esto se hace con palabras, pero la idea de la suma de productos está claramente ahí.
  4. ^ Evans, Arte (1968). "PAL: un lenguaje diseñado para la enseñanza de la lingüística de la programación". Actas de la Conferencia Nacional ACM . Conferencia Nacional ACM. Asociación para Maquinaria de Computación .
  5. ^ Reynolds, John C. (septiembre de 1969). GEDANKEN: un lenguaje simple sin tipos que permite estructuras de datos funcionales y co-rutinas (Reporte). Laboratorio Nacional Argonne.
  6. ^ Ivanović, Mirjana; Budimac, Zoran (abril de 1993). "Una definición de un lenguaje similar a ISWIM a través de Scheme". Avisos ACM SIGPLAN . 28 (4): 29–38. doi : 10.1145/152739.152743 . S2CID  14379260.