stringtranslate.com

Yo nadé

ISWIM ( If You See What I Mean ) es un lenguaje de programación informática 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 las Comunicaciones de la ACM en 1966. [1]

Aunque no se ha implementado, ha demostrado ser muy influyente en el desarrollo de lenguajes de programación, especialmente lenguajes de programación funcional 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, formado por una sintaxis de cálculo lambda a la que se añaden variables mutables y de asignación y un potente mecanismo de control: el operador de punto de programa . Al estar basado en el cálculo lambda, ISWIM tiene funciones de orden superior y variables de alcance léxico .

La semántica operacional 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 la notación matemática, por lo que Landin abandonó los puntos y coma de ALGOLbegin entre declaraciones y ... endbloques y los reemplazó con la regla del fuera de juego y el alcance basado en la sangría .

Una característica distintiva de ISWIM en términos de notación es el uso de wherecláusulas. Un programa ISWIM es una expresión única calificada por cláusulas where (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 . [3]

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 verbosa, pero aparte de la notación equivale exactamente a los tipos de datos algebraicos que se encuentran en los lenguajes funcionales modernos. [4] Las variables ISWIM no tenían declaraciones de tipo explícitas y parece probable (aunque no se afirma explícitamente en el artículo de 1966) que Landin pretendiera que el lenguaje fuera tipificado 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 completó ninguna implementación directa de ISWIM , pero el lenguaje PAL de Art Evan [5] y el lenguaje Gedanken de John C. Reynolds [6] capturaron la mayoría de los conceptos de Landin , incluidas las poderosas operaciones de transferencia de control. Ambos se tipificaron 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 descendencia de ISWIM es eliminar las características imperativas (asignación y el operador J) dejando un lenguaje puramente funcional. [7] Luego se hace posible cambiar a la evaluación perezosa . Este camino condujo 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 . 9 (3). Association for Computing Machinery : 157–165. doi :10.1145/365230.365257. S2CID  13409665.
  2. ^ Plotkin, Gordon (1975). Llamada por nombre, llamada por valor y el cálculo lambda (PDF) (Informe).
  3. ^ Este artículo se basa en material tomado de ISWIM en el Diccionario gratuito en línea de informática antes del 1 de noviembre de 2008 e incorporado bajo los términos de "renovación de la licencia" del GFDL , versión 1.3 o posterior.
  4. ^ Turner, DA (2013), Un poco de historia de los lenguajes de programación funcional, Lecture Notes in Computer Science, vol. 7829, Berlín, Heidelberg: Springer Berlin Heidelberg, págs. 1–20, doi :10.1007/978-3-642-40447-4_1, ISBN 978-3-642-40446-7, recuperado el 28 de enero de 2024 , El artículo de ISWIM también tiene la primera aparición de definiciones de tipo algebraico utilizadas para definir estructuras. Esto se hace en palabras, pero la idea de suma de productos está claramente presente
  5. ^ Evans, Art (1968). "PAL: un lenguaje diseñado para enseñar lingüística de programación". Actas de la Conferencia Nacional ACM . Conferencia Nacional ACM. Asociación para Maquinaria Computacional .
  6. ^ Reynolds, John C. (septiembre de 1969). GEDANKEN: un lenguaje simple sin tipos que permite estructuras de datos funcionales y co-rutinas (informe). Laboratorio Nacional de Argonne.
  7. ^ 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.