Scheme

 Scheme

Grupo: Inessa Luerce, Vinícius Rodrigues dos Santos, Rodrigo Medeiros Duarte

A Linguagem de Programação Scheme.

Criação

A linguagem Scheme surgiu na década de 1970 como um experimento, concebido como um dialeto da linguagem Lisp. Seus criadores, Guy Lewis Steele Jr. e Gerald Jay Sussman, inicialmente denominaram sua criação como Schemer, porém, o nome teve que sofrer alteração. O fato é que o sistema que usavam na época dava suporte para, somente, 6 caracteres para nome de arquivos. Por causa disso, o nome da linguagem foi encurtada para Scheme.

Características

A idéia da liguagem é ser simples, limpa e divertida de se programar. Isso ao mesmo tempo em que dá suporte aos paradígmas funcional, procedural e orientação a objetos. Em alguns casos, a facilidade de programar significa um altísso nível de código e problemas ao criar processos muito específicos - otimizados - . Felizmente, esse não é o caso do Scheme, pois essa facilidade é causada pela sua sintaxe trivial para todos os processos.

Resumindo, o programador terá muito mais tempo para se dedicar à solução do problema do que implementando-a.

Tendo opção de interpretadores, relativamente, leves, Scheme é bem usado na computação embarcada. É usado até hoje por cursos de informática para introduzir os estudantes à computação.

Há suporte a incorporação dos scripts em Scheme noutros sistemas feitos, pricipalmente, com outra linguagem - como a linguagem C - . Um forte exemplo sobre isso é o compilador chamado Bigloo, o qual pode gerar um código C, JVM ou .NET a partir de um código em Scheme.

Sintaxe

Conceitos Basicos:

Scheme, assim como o Lisp, utiliza os conceitos de notações pré-fixada e cálculo lambda.
A maneira com que expressões são escritas em Scheme a primeira vista pode ser estranha, pois é diferente até mesmo da maneira com escrevemos espressões matemáticas. Entretanto, vamos preceber que a notação de Scheme tem uma grande vantagem. que é a homogeneidade. Existe basicamente uma única regra que rege a escrita de qualquer expressão. Em Scheme, quando queremos calcular o valor de uma função, escrevemos:

(f x)

, ao invés de f(x), como é usual em matématica. Se a função tiver varios parâmetros, como exemplo g(x,y), escrevemos:

(g x y)

Os pareêteses permitem o que chamamos de aninhamento de expressões, ou composição de funções. Assim, a expressão f(g(x)) é escrita como:

(f (g x))

Os operadores aritméticos básicos (+, -, x, /), apesar de usualmente serem escritos com notação infixada, ou seja, o operador é escrito entre os operandos, como em x + y, na verdade são funções como outras quaisquer, que têm como dominio os pares de reais e como imagem os reais. Em Scheme, esses operadores são escritos como as outras funções, no que é usualmente chamado de notação pré-fixada. então, 5 + 3 se escreve em Scheme como:

+ 5 3

e (5+3) x 2 se escreve da seguinte forma:

(* (+ 5 3) 2)

Tudo que escrevemos em Scheme é chamado genericamente de expressão S, ou mais simplesmente expressão. As expressões que escrevemos em Scheme podem ser classificadas em dois tipos: átomos e listas. Os átomos podem ser de três tipos: numerais, strings, que são sempre escritos entre aspas, como “Um exemplo de texto”; e símbolos, por exemplo a, define, nil?, +. Uma lista, por sua vez, é uma sequência de expressões entre parênteses, separadas por espaços; por exemplo:

(+ 3 4)
(define a (+ 3 x))
(3 4 5)
(display "alo mundo")
((3 4)(2 3)()((9)+))

Na sintaxe de numerais, vale a pena observar o uso do ponto decimal (como em inglês), ao invés da vírgula, e a possibilidade de usar notação científica para números muito grandes ou muito pequenos. Com essa notação, um valor como 3.5 × 10- 7 pode ser escrito como 3.5e-7.

Em geral, espaços entre os diversos símbolos de uma expressão só são relevantes para separar um símbolo de outro. Assim, as expressões abaixo são equivalentes:

(a b (c)) ( a b ( c) )

enquanto essas não são:

(a b (c)) (ab (c))

pois a b é interpretado como dois símbolos seguidos, enquanto ab é considerado como um único símbolo. Neste texto, apenas por convenção, vamos usar apenas um único espaço entre duas expressões seguidas; assim, escreveremos (a b (c d)), e não ( a b( c d ) ). Qualquer expressão pode ser quebrada em várias linhas; para o interpretador, uma mudança de linha equivale a um espaço em branco. Em geral, o uso de quebras de linha pode ajudar na leitura de expresões mais complexas.

Finalmente, podemos comentar expressões. Comentários são uma importante forma de colocarmos explicações adicionais. Um comentário é qualquer texto colocado em uma linha após um ponto-e-vírgula (`;'), e é totalmente ignorado pelo interpretador.

Compiladores

Alguns Compiladores para a linguagem scheme

Tutorial em video para o DrScheme. Este video mostra como utilizar a IDE do PLT Scheme

Interpretador

Muitas linguagens oferecem um dispositivo chamado “REPL” (Read-Eval-Print Loop). O REPL é um programa que lê expressões ou trechos de programa, “avalia” (ou “executa”) e mostra o resultado. Python, Ruby, Common Lisp e a vasta maioria das implementações de Scheme oferecem um REPL. Na prática, a experiência de usar o REPL é semelhante à de interagir com um computador usando linha de comando em um terminal.

Um interpretador online que pode ser usado para testar os exemplos abaixo é o SISC

Exemplos de Códigos

Alo Mundo

(define alo-mundo
  (lambda ()
    (display "Alo Mundo!") 
    (newline)))

Fatorial

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

Potência

(define(exp m n)
   (if(zero? n)1
      (* m (exp m (- n 1))))) 

Fibonacci

(define(fibonacci n)
   (if(or(= n 0) (= n 1)) 1
      (+ (fibonacci(- n 1))
      (fibonacci(- n 2)))))  

Utilização da Linguagem

Devido à sua habilidade de representar várias abstrações de programação com um conjunto bem definido de primitivas, Scheme é frequentemente utilizada para estudo de linguagens de programação. O Massachusetts Institute of Technology (MIT), um dos líderes mundiais em tecnologia, usou a linguagem em seu curso introdutório à programação, durante os anos 80 até 2008. Outros dois projetos distintos (entre 1981 e 1982) usaram variações de Scheme para seus cursos: Yale e Indiana University.

Referências

 
scheme-1-trabalho.txt · Last modified: 2012/03/18 21:53 by clp · [Old revisions]