Scheme

Origem: Wikipédia, a enciclopédia livre.

Scheme
Lambda lc.svg

Paradigma Multiparadigma: funcional e procedural
Surgido em 1975
Última versão {{{ultima_versao}}} ()
Criado por Gerald Jay Sussman e Guy L. Steele Jr
Estilo de tipagem: forte, dinâmica
Compiladores MIT/GNU Scheme, Chez Scheme, SCM, GNU Guile, Ypsilon, PLT Scheme
Dialetos: Linguagem T
Influenciada por Lisp
Influenciou Cat, Common Lisp, Ruby, Dylan, Lua
Licença: {{{licença}}}
Página oficial {{{website}}}

Scheme é uma linguagem de programação multi-paradigma que suporta programação funcional e procedural. Foi criada por Guy L. Steele e Gerald Jay Sussman no outono de 1975, a partir da linguagem Lisp com o intuito de estudar a teoria dos atores de Carl Hewitt. O modelo de Hewitt era orientado a objeto (e influenciado pelo Smalltalk). Os objetos eram chamados atores e as mensagens eram também atores. Sussman e Steele tiveram algum problema no entender algumas das conseqüências do modelo a partir dos artigos de Hewitt e decidiram construir uma implementação de brinquedo de uma linguagem de atores visando experimentá-la. Escreveram um pequeno interpretador Lisp e adicionaram os mecanismos necessários para a criação de atores e envio de mensagens[1]. Existem dois padrões que definem a linguagem Scheme: o padrão oficial IEEE e um padrão popular chamado "Revisedn Report on the Algorithmic Language Scheme", abreviado como RnRS, onde n é o número de revisões.

Índice

[editar] Características

Scheme adota uma filosofia minimalista, assim sendo, provê o mínimo de noções possíveis, e, na prática, qualquer outra noção pode ser adicionada via bibliotecas, como todos os dialetos do Lisp, possui pouca sintaxe comparado à maioria das outras linguagens. Devido à sua sintaxe completamete aninhada, não existem regras de precedência de operadores e sua notação parentizada é usada para todas as chamadas de função, desta forma não há ambigüidades como as que são encontradas nas linguagens de notação infixa.

(5+3)   seria assim:  (+ 5 3)     
(5+3)x2 seria assim:  (* (+ 5 3) 2)              
(8/2)   seria assim:  (/ 8 2)            

O MIT usou desde a década de 80 até 2008 a linguagem Scheme em seu curso introdutório de programação. O livro-texto usado na disciplina, "Structure and Interpretation of Computer Programs" (escrito por Gerald Sussman e Harold Abelson), ganhou notoriedade pela abordagem inovadora e pela incomum profundidade para um curso introdutório.

[editar] Exemplos de código

[editar] Hello world

 (define hello-world
   (lambda ()
     (display "Hello World") 
     (newline)))
 (hello-world)

ou simplesmente:

 (display "Hello World")

[editar] Loops

Cálculo do fatorial de um número:

 (define (fatorial n)
   (cond ((= n 0)  1)
         (else (* n (fatorial (- n 1))))))

 (fatorial 5)
 ;; => 120

[editar] Números Perfeitos

Exemplo de programa que mostra os n primeiros números perfeitos:

 (define inverteListax
  (lambda (lista1 lista2)
    (if (null? lista1) lista2
        (inverteListax (cdr lista1) (cons (car lista1) lista2)))))
 
 (define inverteLista
   (lambda (lista)
     (inverteListax lista '())))
 
 (define (perf n)
    (let loop ((i 1)
                (sum 0))
       (cond ((= i n)
              (= sum n))
             (
                (= 0 (modulo n i))
                (loop (+ i 1) (+ sum i)))
             (else
              (loop (+ i 1) sum)))))
  
 (define aux
   (lambda (x n l)
     (if (= x 0) l
         (if (perf n) (aux (- x 1) (+ n 1) (cons n l))
                      (aux x (+ n 1) l)))))
  
 (define main
   (lambda (x)
     (aux x 1 '())))
 
 (define perfeitos
   (lambda (n)
     (inverteLista (main n))))

[editar] Compiladores

Alguns compiladores de Scheme:

  • Bigloo;
  • Chez Scheme;
  • Chicken;
  • Gambit;
  • Gauche;
  • Guile;
  • Ikarus;
  • JScheme;
  • Kawa;
  • Larceny;
  • MIT/GNU Scheme;
  • Mosh;
  • PLT Scheme;
  • Pvts;
  • RScheme;
  • Scheme 48;
  • SCM;
  • SISC;
  • Stalin;
  • STk;
  • STklos;
  • TinyScheme;
  • Ypsilon.

[editar] Bibliografia

  • DYBVIG, R. KENT(1996); The Scheme Programming Language - Ansi Scheme. Prentice Hall PTR, New Jersey, 1996. ISBN 0-13-454646-6
  • ABELSON, HAROLD; SUSSMAN, GERALD JAY; SUSSMAN JULIE(1996); Structure and Interpretation of Computer Programs. McGraw-Hill, New York, 1996. ISBN 0-07-000484-6

[editar] Ver também

Referências

  1. BERGIN, Thomas J.; GIBSON, Richard G.. History of Programming Languages II. New York: ACM Press, Addison-Wesley, 1996. pp. 864. ISBN 0-201-89502-1

[editar] Ligações externas

  • Schemers - Uma página de referência da linguagem


Singleton.png Este artigo é um esboço sobre Programação. Você pode ajudar a Wikipédia expandindo-o.