SETL ( SET Language ) es un lenguaje de programación de muy alto nivel [ 1 ] basado en la teoría matemática de conjuntos . [ 2 ] [ 3 ] Fue desarrollado originalmente en el Instituto Courant de Ciencias Matemáticas de la Universidad de Nueva York (NYU) a finales de la década de 1960, por un grupo que incluía a (Jack) Jacob T. Schwartz , [ 1 ] [ 3 ] Robert Dewar y E. Schonberg. [ 1 ] A Schwartz se le atribuye el diseño del lenguaje. [ 4 ]
Diseño
SETL proporciona dos tipos básicos de datos agregados: conjuntos (no ordenados) y tuplas . [ 1 ] [ 2 ] [ 5 ] Los elementos de los conjuntos y las tuplas pueden ser de cualquier tipo arbitrario, incluidos los propios conjuntos y tuplas, excepto el valor indefinido om [ 1 ] (a veces escrito con mayúscula: OM ). [ 6 ] Los mapas se proporcionan como conjuntos de pares (es decir, tuplas de longitud 2) y pueden tener tipos de dominio y rango arbitrarios. [ 1 ] [ 5 ] Las operaciones primitivas en SETL incluyen pertenencia a conjuntos, unión, intersección y construcción de conjuntos potencia, entre otras. [ 1 ] [ 6 ]
SETL proporciona expresiones booleanas cuantificadas construidas utilizando los cuantificadores universales y existenciales de la lógica de predicados de primer orden . [ 1 ] [ 6 ]
SETL proporciona varios iteradores para producir una variedad de bucles sobre estructuras de datos agregadas. [ 1 ] [ 7 ]
Ejemplos
Imprime todos los números primos del 2 al N :
print([n en [2..N] | para todo m en {2..n - 1} | n mod m > 0]);La notación es similar a la comprensión de listas .
Definición de un procedimiento factorial:
procedimiento factorial(n); -- calcula el factorial de n! Devuelve si n = 1 entonces 1 sino n * factorial(n - 1) fin si; factorial final;
Una expresión SETL más convencional para el diseño factorial (n > 0):
*/[1..n]
Usos
Las implementaciones de SETL estaban disponibles en el CDC 6600 , CDC Cyber , DEC VAX , IBM/370 , la estación de trabajo Sun y Apollo . [ 8 ] En la década de 1970, SETL se adaptó al BESM-6 , ES EVM y otros sistemas informáticos rusos. [ 9 ]
SETL se utilizó para una implementación temprana del lenguaje de programación Ada , denominada traductor NYU Ada/ED. [ 10 ] Posteriormente, esta se convirtió en la primera implementación validada de Ada, certificada el 11 de abril de 1983. [ 11 ]
Según Guido van Rossum , " El predecesor de Python , ABC , se inspiró en SETL: ¡ Lambert Meertens pasó un año con el grupo SETL en la NYU antes de idear el diseño final de ABC!" [ 12 ]
Variantes lingüísticas
SET Language 2 (SETL2), un descendiente de SETL incompatible con versiones anteriores, fue creado por Kirk Snyder del Instituto Courant de Ciencias Matemáticas de la Universidad de Nueva York a finales de la década de 1980. [ 13 ] Al igual que su predecesor, se basa en la teoría y la notación de conjuntos finitos, pero también ha recibido influencias en su sintaxis y estilo del lenguaje Ada. [ 13 ]
El lenguaje SET interactivo (ISETL) es una variante de SETL utilizada en matemáticas discretas . [ 14 ]
GNU SETL es una utilidad de línea de comandos que implementa y extiende SETL. [ 15 ]
Referencias
- 1 2 3 4 5 6 7 8 9 Schwartz, JT; Dewar, RBK; Schönberg, E.; Dubinsky, E. (1986). Programación con Conjuntos . págs. v- vii, 2, 48, 53, 57-58 , 63, 113 y siguientes. doi : 10.1007/978-1-4613-9575-1 . ISBN 978-1-4613-9577-5.
- 1 2 "GNU SETL Om" . setl.org . Consultado el 24 de abril de 2024 .
- 1 2 Markoff, John (2009-03-04). "Jacob T. Schwartz, 79, científico inquieto, muere" . The New York Times . ISSN 0362-4331 . Recuperado el 24 de abril de 2024 .
- ^ Schwartz, Jacob T.; Cantone, Domenico; Omodeo, Eugenio G. (2011). Lógica Computacional y Teoría de Conjuntos . págs. vii. doi : 10.1007/978-0-85729-808-9 . ISBN 978-0-85729-807-2.
- 1 2 "Capítulo 2" . www.settheory.com . Consultado el 24 de abril de 2024 .
- 1 2 3 "Capítulo 3" . www.settheory.com . Consultado el 24 de abril de 2024 .
- ↑ "Capítulo 4" . www.settheory.com . Consultado el 24 de abril de 2024 .
- ^ Schwartz, JT; Dewar, RBK; Dubinsky, E.; Schönberg, E. (1986). Programación con conjuntos: Introducción a SETL . Nueva York, Nueva York: Springer-Verlag. ISBN 978-1-4613-9577-5.
- ↑ И.В. Pottosina, ed. (2001). Становление новосибирской школы программирования (мозаика воспоминаний) [ Formación de la escuela de programación de Novosibirsk (mosaico de recuerdos) ] (PDF) (en ruso). Novosibirsk: Институт систем информатики им. A. P. Ершова СО РАН. págs. 106-113 .
- ↑ Dewar, Robert BK; Fisher Jr., Gerald A.; Schonberg, Edmond; Froelich, Robert; Bryant, Stephen; Goss, Clinton F.; Burke, Michael (noviembre de 1980). "El traductor e intérprete de Ada de la NYU". Actas del simposio ACM-SIGPLAN sobre el lenguaje de programación Ada – SIGPLAN '80 . Vol. 15. págs. 194–201 . doi : 10.1145/948632.948659 . ISBN 0-89791-030-3. S2CID 10586359 .
- ↑ SofTech Inc. (11 de abril de 1983). "Informe resumido de validación del compilador Ada: NYU Ada/ED, versión 19.7 V-001" . Waltham, Massachusetts. Archivado del original el 7 de junio de 2017. Consultado el 16 de diciembre de 2010 .
- ↑ Python-Dev: SETL (antes: Tibio sobre los literales de rango)
- 1 2 "SETL2 – EDM2" . www.edm2.com . Consultado el 24 de abril de 2024 .
- ↑ Baxter Hastings, Nancy; Dubinsky, Ed; Levin, Gary (1989). Aprendizaje de matemáticas discretas con ISETL . Nueva York: Springer-Verlag. ISBN 978-0-387-96898-8.
- ↑ "GNU SETL" . setl.org . Consultado el 24 de abril de 2024 .
Lecturas adicionales
- Schwartz, Jacob T., "La teoría de conjuntos como lenguaje para la especificación y programación de programas". Instituto Courant de Ciencias Matemáticas, Universidad de Nueva York, 1970.
- Schwartz, Jacob T., "Sobre programación, un informe provisional sobre el proyecto SETL", Departamento de Ciencias de la Computación, Instituto Courant de Ciencias Matemáticas, Universidad de Nueva York (1973).
- Schwartz, Jacob T., Dewar, RBK, Dubinsky, E., y Schonberg, E., Programación con conjuntos: Una introducción a SETL , 1986. ISBN 0-387-96399-5.
Enlaces externos
- Sitio web oficial

- SETL en GitHub
- Programación en SETL y otras cosas
- Archivo de fuentes históricas de SETL
- Lenguajes de programación académica
- Lenguajes de programación basados en la teoría de conjuntos
- Lenguajes de programación creados en 1969