APL/SNOBOL As primeiras linguagens dinâmicas
description
Transcript of APL/SNOBOL As primeiras linguagens dinâmicas
![Page 1: APL/SNOBOL As primeiras linguagens dinâmicas](https://reader035.fdocument.pub/reader035/viewer/2022081418/56815141550346895dbf5e09/html5/thumbnails/1.jpg)
APL/SNOBOLAPL/SNOBOLAs primeiras linguagens dinâmicasAs primeiras linguagens dinâmicas
Alunos: Braully Rocha da Silva
Bruno Ferreira Machado
Ricardo Pulice de Almeida
![Page 2: APL/SNOBOL As primeiras linguagens dinâmicas](https://reader035.fdocument.pub/reader035/viewer/2022081418/56815141550346895dbf5e09/html5/thumbnails/2.jpg)
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.
![Page 3: APL/SNOBOL As primeiras linguagens dinâmicas](https://reader035.fdocument.pub/reader035/viewer/2022081418/56815141550346895dbf5e09/html5/thumbnails/3.jpg)
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.
![Page 4: APL/SNOBOL As primeiras linguagens dinâmicas](https://reader035.fdocument.pub/reader035/viewer/2022081418/56815141550346895dbf5e09/html5/thumbnails/4.jpg)
• 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.
![Page 5: APL/SNOBOL As primeiras linguagens dinâmicas](https://reader035.fdocument.pub/reader035/viewer/2022081418/56815141550346895dbf5e09/html5/thumbnails/5.jpg)
• 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'
![Page 6: APL/SNOBOL As primeiras linguagens dinâmicas](https://reader035.fdocument.pub/reader035/viewer/2022081418/56815141550346895dbf5e09/html5/thumbnails/6.jpg)
• Compiladores / Interpretadores
Interpretador para DOS: http://burks.bton.ac.uk/burks/software/langs/install.sw?2.freeapl.zip#2.freeapl.zipInterpretador 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/aplc.tar.Z
![Page 7: APL/SNOBOL As primeiras linguagens dinâmicas](https://reader035.fdocument.pub/reader035/viewer/2022081418/56815141550346895dbf5e09/html5/thumbnails/7.jpg)
• Documentações:
Manuais de APL360 e APL1130: http://www.classiccmp.org/bitsavers/pdf/ibm/apl/
![Page 8: APL/SNOBOL As primeiras linguagens dinâmicas](https://reader035.fdocument.pub/reader035/viewer/2022081418/56815141550346895dbf5e09/html5/thumbnails/8.jpg)
Exemplo APL
![Page 9: APL/SNOBOL As primeiras linguagens dinâmicas](https://reader035.fdocument.pub/reader035/viewer/2022081418/56815141550346895dbf5e09/html5/thumbnails/9.jpg)
Outro exemplo APL
![Page 10: APL/SNOBOL As primeiras linguagens dinâmicas](https://reader035.fdocument.pub/reader035/viewer/2022081418/56815141550346895dbf5e09/html5/thumbnails/10.jpg)
Teclado APL
![Page 11: APL/SNOBOL As primeiras linguagens dinâmicas](https://reader035.fdocument.pub/reader035/viewer/2022081418/56815141550346895dbf5e09/html5/thumbnails/11.jpg)
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").
![Page 12: APL/SNOBOL As primeiras linguagens dinâmicas](https://reader035.fdocument.pub/reader035/viewer/2022081418/56815141550346895dbf5e09/html5/thumbnails/12.jpg)
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.
![Page 13: APL/SNOBOL As primeiras linguagens dinâmicas](https://reader035.fdocument.pub/reader035/viewer/2022081418/56815141550346895dbf5e09/html5/thumbnails/13.jpg)
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.
![Page 14: APL/SNOBOL As primeiras linguagens dinâmicas](https://reader035.fdocument.pub/reader035/viewer/2022081418/56815141550346895dbf5e09/html5/thumbnails/14.jpg)
• 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.
![Page 15: APL/SNOBOL As primeiras linguagens dinâmicas](https://reader035.fdocument.pub/reader035/viewer/2022081418/56815141550346895dbf5e09/html5/thumbnails/15.jpg)
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.
![Page 16: APL/SNOBOL As primeiras linguagens dinâmicas](https://reader035.fdocument.pub/reader035/viewer/2022081418/56815141550346895dbf5e09/html5/thumbnails/16.jpg)
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.
![Page 17: APL/SNOBOL As primeiras linguagens dinâmicas](https://reader035.fdocument.pub/reader035/viewer/2022081418/56815141550346895dbf5e09/html5/thumbnails/17.jpg)
• Exemplo de código para imprimir "Hello you." na saída-padrão:
OUTPUT = 'Hello you.'END
![Page 18: APL/SNOBOL As primeiras linguagens dinâmicas](https://reader035.fdocument.pub/reader035/viewer/2022081418/56815141550346895dbf5e09/html5/thumbnails/18.jpg)
• Compiladores / Interpretadores
Podem ser encontrados compiladores em: http://www.idiom.com/free-compilers/LANG/Snobol4-1.html
Compilador e interpretador de SNOBOL4+: ftp://ftp.snobol4.com/snobol4p.zip
![Page 19: APL/SNOBOL As primeiras linguagens dinâmicas](https://reader035.fdocument.pub/reader035/viewer/2022081418/56815141550346895dbf5e09/html5/thumbnails/19.jpg)
• 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.htmDocumentação de Spitbol: http://www.snobol4.com/spitbol360/
![Page 20: APL/SNOBOL As primeiras linguagens dinâmicas](https://reader035.fdocument.pub/reader035/viewer/2022081418/56815141550346895dbf5e09/html5/thumbnails/20.jpg)
Exemplos SNOBOL
![Page 21: APL/SNOBOL As primeiras linguagens dinâmicas](https://reader035.fdocument.pub/reader035/viewer/2022081418/56815141550346895dbf5e09/html5/thumbnails/21.jpg)
![Page 22: APL/SNOBOL As primeiras linguagens dinâmicas](https://reader035.fdocument.pub/reader035/viewer/2022081418/56815141550346895dbf5e09/html5/thumbnails/22.jpg)