Seguindo Algol, Scheme é uma linguagem de programação alcançada estaticamente. O uso de cada uma das variáveis é associado a uma ligação aparentemente léxica da variável. Scheme possui tipos latentes em oposição aos tipos manifestos. Tipos são associados com valores, também chamados de objetos, ao invés de serem associados com variáveis. Outras linguagens com tipos latentes são APL, Snobol e outros dialetos de Lisp. Linguagens com tipos manifestos, algumas vezes referidas como fortemente tipadas, incluem Algol 60, Pascal e C.
Todos os objetos criados em Scheme, incluindo procedures e continuações, possuem graus ilimitados. Nenhum objeto em Scheme é destruído. Implementações de Scheme (geralmente) não rodam fora de armazenagem. É permitido recuperar o objeto ocupado por um objeto se for possível provar que o objeto possivelmente não pode ter nenhuma relevância em computações futuras.
Implementações de Scheme devem ser necessariamente recursivas. Isto permite a execução de uma computação iterativa em um espaço constante, ainda mais se a computação iterativa é descrita por um procedimento sintaticamente recursivo. No entanto, com uma implementação recursiva, a iteração pode ser expressa usando o mecanismo de chamada de procedimento.
Procedures podem ser criados criadas dinamicamente, armazenados em estrutura de dados e retornados como resultados de procedures. Outras linguagens com estas propriedades incluem Common Lisp e ML.
Uma característica distinta de Scheme é que continuações também têm status de "primeira classe". Continuações são úteis para implementação de uma grande variedade de construção avançada controle.
Argumentos para procedures Scheme são sempre passados por valor, o que significa que as atuais expressões argumentos são avaliadas antes que o procedure ganhe o controle, se o procedure precisa do resultado da avaliação ou não. ML, C e APL são outras três linguagens que sempre passsam argumentos por valor.
O modelo de aritmética de Scheme é projetado para permanecer tão independente quanto possível do modo particular, no qual números são representados no computador. Em Scheme, todo inteiro é um número racional, todo número racional é um número real e todo número real é um número complexo. Assim, a distinção entre inteiro e a aritmética real, tão importante a muitas linguagens de programação, não aparece em Scheme. Ao invés disto, há uma distinção entre aritmética exata e aritmética inexata sobre aproximações. Como em Commom Lisp, aritmética exata não é limitada a inteiros.
quinta-feira, 27 de agosto de 2009
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário