APL/SNOBOL
As primeiras linguagens dinâmicas
Alunos: Braully Rocha da Silva
Bruno Ferreira Machado
Ricardo Pulice de Almeida
APL
• Histórico
APL (Array Programming Language ou "A
Programming Language") foi uma das primeiras
linguagens criadas para processar arrays. Foi criada
por Kenneth E. Iverson enquanto ele estudava na
Universidade Harvard. A linguagem tinha como nome
original "Notação Iverson" e foi criada visando acabar
com as ambigüidades e com as confusões das
notações matemáticas. No fim dos anos 60, graças
aos esforços da IBM, a comunidade científica teve
conhecimento da APL.
APL é uma notação orientada a usuários, facilitando a
comunicação de pessoas com pessoas e/ou
computadores. A notação usa símbolos como letras,
números, formas especiais e álgebra com uma
sintaxe bastante simples para unir esses símbolos e
processar dados. Os dados podem tanto ser números
ou textos. A linguagem é formada de inúmeros
"dialetos" diferentes.
• Mais sobre a linguagem:
APL é caracterizada por verificação dinâmica de tipos e
alocação dinâmica de memória. Foi projetada como uma
linguagem de descrição de hardware ( IBM por Ken Iverson) e
é altamente expressiva ( muitos operadores tanto para
escalares quanto para arrays de muitas dimensões). A
linguagem foi criada pensando-se em comunicação de
procedimentos matemáticos. É uma linguagem simples de
aprender e simples de usar, pois foi criada para ser assim. APL
é uma linguagem concisa: o que você faz em muitas e muitas
linhas usando Basic ou Fortran, por exemplo, pode fazer em
pouquíssimas, ou até em somente uma, linha em APL.
Por ser uma linguagem muito concisa e ter muitos símbolos
que representam diferentes funções, APL é uma linguagem
difícil de ser lida. Muitas vezes o próprio implementador não
consegue entender muito bem o que ele mesmo escreveu. Isso
é um grande problema da linguagem, pois restringe o seu uso
àqueles que gastam um bom tempo tentando entendê-la.
• Exemplo de código para imprimir "Hello you." na
saída-padrão:
Simplesmente: 'Hello you.' basta, mas também pode
ser feito da seguinte forma:
a <- 'Hello you.'
'a'
• Compiladores / Interpretadores
Interpretador para DOS:
http://burks.bton.ac.uk/burks/software/langs/install.sw?
2.freeapl.zip#2.freeapl.zip
Interpretador para Windows:
http://burks.bton.ac.uk/burks/software/langs/install.sw?
2.j406a.exe#2.j406a.exe
Compilador:
http://web.engr.oregonstate.edu/~budd/Books/aplc/apl
c.tar.Z
• Documentações:
Manuais de APL360 e APL1130:
http://www.classiccmp.org/bitsavers/pdf/ibm/apl/
Exemplo APL
Outro exemplo APL
Teclado APL
SNOBOL
• Histórico
A primeira linguagem SNOBOL (StriNg Oriented and
symBOlic Language) criada foi desenvolvida por
David J. Farber, Ralph E. Griswold e Ivan P. Polonsky
nos Laboratórios Bell, em 1962. SNOBOL foi uma das
primeiras linguagens criadas para processamentos de
listas. Era usada originalmente para processamento
de textos e desenvolvimento de compiladores. Uma
das primeiras opções de nome para a linguagem foi
SEXI (String EXtraction Interpreter). O nome SNOBOL
foi escolhido, segundo dizem, porque um dos
implementadores originais disse algo como "This
program doesn't have a snowball's chance in hell of
succeding." (algo como "esse programa tem a mesma
chance de fazer sucesso como uma bola de neve no
inferno").
O sistema SNOBOL original foi escrito no assembler
BEFAP (Bell Laboratories FORTRAN assembly
program, na sigla em inglês) para o IBM 7090. O
maior defeito da linguagem foi a falta de funções
embutidas nela. Uma nova versões, com processos
embutidos, foi lançada em 1964, o SNOBOL2.
Funções definidas pelo programador foram
implementadas no SNOBOL3 (1965). Os trabalhos no
SNOBOL4 começaram em 1966 e ele trouxe de novo:
padrões melhorados, tipos de dados numéricos,
arrays, estruturas e tabelas. O SNOBOL4 é usado até
hoje.
O SNOBOL4 tem duas implementações mais
conhecidas: uma é vanilla SNOBOL4 (32-bits) e a
outra é a spitbol 360 (16-bits). As documentações de
ambas encontram-se nas Referências Bibliográficas.
• Mais sobre a linguagem:
Vantagens de Snobol4: variáveis são dinamicamente
tipadas, ou seja, o tipo de uma variável é definido pelo
último valor que ela recebeu. Snobol4 na verdade só
usa definições de tipos de variáveis em variáveis
locais de procedimentos. Os operadores e funções
nativas da linguagem checam os tipos de seus
argumentos e esses são convertidos para tipos
apropriados. Se essa conversão não for possível, uma
mensagem de erro será exibida na tela.
Snobol não possui nenhum mecanismo explícito para
devolver memória ao sistema. Isso deve ser previsto
pela implementação do código. Isso torna a
linguagem mais complexa de ser implementada mas
mais fácil de ser usada. Snobol4, em geral, tem
muitas facilidades para diagnóstico de erros em
tempo de execução. A linguagem permite uma
depuração eficiente e "armadilhas" para capturar
praticamente todos os erros em run-time.
Desvantagens de Snobol4: espaços em branco fazem
a diferença no código. Isso atrapalha muito na
implementação do programa. Snobol também não
possui operadores de comparação. Todas as
comparações são feitas por funções que retornam
"null" se a condição for verdadeira e retorna um fail se
for falsa. Em Snobol a única estrutura de controle,
tecnicamente, é a "go to". Escrever um programa em
Snobol exige constantes invenções para nomes de
rótulos, e nomes que facilitem a compreensão de
quem ler o código. Mas geralmente isso não ocorre.
• Exemplo de código para imprimir "Hello you."
na saída-padrão:
OUTPUT = 'Hello you.'
END
• Compiladores / Interpretadores
Podem ser encontrados compiladores em:
http://www.idiom.com/freecompilers/LANG/Snobol4-1.html
Compilador e interpretador de SNOBOL4+:
ftp://ftp.snobol4.com/snobol4p.zip
• Documentações:
Documentação do SNOBOL4:
http://public.planetmirror.com/pub/snobol/snocone/doc
/
Documentação de Vanilla Snobol:
http://burks.bton.ac.uk/burks/language/snobol/catspaw
/manual/contents.htm
Documentação de Spitbol:
http://www.snobol4.com/spitbol360/
Exemplos SNOBOL
Download

APL/SNOBOL