SETL

SETL
Paradigma multiparadigma, imperativo, orientado a objeto
Surgido em 1969
Criado por Jacob Theodore Schwartz no Courant Institute of Mathematical Sciences
Estilo de tipagem dinâmica
Influenciou SETL2, ProSet, ABC, Slim
Página oficial http://setl.org/

SETL é uma linguagem de programação de "altíssimo nível", baseada na teoria matemática de conjuntos. Foi originalmente desenvolvida por Jacob Theodore Schwartz no Courant Institute of Mathematical Sciences na NYU no fim dos anos 1960.

SETL fornece dois tipos básicos de dados agregados: conjuntos não-ordenados, e sequências (este último também chamado de tuplas). Os elementos dos conjuntos e tuplas podem ser de qualquer tipo arbitrário, incluindo conjuntos e tuplas eles mesmos. Mapeamentos (Maps) são fornecidos como conjuntos de pares (ou seja, tuplas de dimensão 2)[1] e podem ter domínio arbitrário e tipos de intervalos arbitrários. Operações primitivas em SETL incluem pertinência de conjuntos, união, interseção e construção de conjuntos de potência[2], entre outras.

A linguagem SETL fornece expressões booleanas quantificadas construídas utilizando-se quantificadores universais e quantificadores existênciais da lógica de primeira ordem.

A linguagem SETL fornece diversos iterators para produzir uma variedade de laços sobre estruturas de dados agregados.

Na década de 1970, SETL foi portada para o BESM-6, ES EVM e outros sistemas de informática russos.

David Bacon, que antes era um estudante de PhD na NYU com Jack Schwartz ainda mantém ativamente o compilador SETL e seu website.

Exemplo de código

Imprime todos os números primos de 2 to N:

print([n in [2..N] | forall m in {2..n - 1} | n mod m > 0]);

A notação é semelhante a de uma List comprehension.

A definição do procedimento fatorial:

procedure factorial(n); -- calcula o factorial n!
return if n = 1 then 1 else n * factorial(n - 1) end if;
end factorial;

Uma expressão mais convencional em SETL para fatoriais em que (n > 0):

*/[1..n]

História

A linguagem ABC, predecessora da linguagem Python, foi inspirada por SETL -- Lambert Meertens passou um ano com o grupo SETL na NYU antes de partir para cima do projeto final da ABC!

Referências

  1. BAL, Henri E.; GRUNE, Dick (1994). Programming Language Essentials (em inglês). Wokingham: Addison-Wesley. 231 páginas. ISBN 0-201-63179-2  !CS1 manut: Nomes múltiplos: lista de autores (link)
  2. GUEZZI, Carlo; JAZAYERI, Mehdi (1998). Programming Languages Concepts (em inglês) 3ª ed. New York: John Wiley & Sons. 123 páginas. ISBN 0-471-10426-4  !CS1 manut: Nomes múltiplos: lista de autores (link)
  3. http://mail.python.org/pipermail/python-dev/2000-August/008881.html

Ver também}

Bibliografia

  • Schwartz, Jacob T., "Set Theory as a Language for Program Specification and Programming". Courant Institute of Mathematical Sciences, New York University, 1970.
  • Schwartz, Jacob T., "On Programming, An Interim Report on the SETL Project", Computer Science Department, Courant Institute of Mathematical Sciences, New York University (1973).
  • Schwartz, Jacob T., Dewar, R.B.K., Dubinsky, E., and Schonberg, E., Programming With Sets: An Introduction to SETL, 1986. ISBN 0-387-96399-5.

Ligações externas

  • Distribuição binários para UNIX de SETL
  • Programming on SETL
  • documentação SETL
  • The SETL programming language, por Robert Dewar
  • SETL wiki[ligação inativa]
Ícone de esboço Este artigo sobre programação de computadores é um esboço. Você pode ajudar a Wikipédia expandindo-o.
  • v
  • d
  • e