APL/SNOBOL As primeiras linguagens dinâmicas

Slides:



Advertisements
Apresentações semelhantes
1.3.2 – Linguagem Assembly Um programa em linguagem de máquina sofre de total falta de clareza O programa é uma sequência de linhas numeradas Cada linha.
Advertisements

Linguagem de Programação COBOL/ALGOL
Linguagem de Montagem Visão geral.
O Essencial sobre Linguagens de Programação Luís Caires Maio 2005.
LABORATÓRIO DE PROGRAMAÇÃO
UML Material retirado da apostila do Professor Cesar Augusto Tacla
XML - Extensible Markup Language
Cálculo Numérico Módulo I Ferramentas de Suporte
Introdução a Informática
INTRODUÇÃO À PROGRAMAÇÃO
Curso Sistemas de Informação Disciplina: Arquitetura de Software
Estruturas de Dados II Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
Wagner Santos C. de Jesus
Universidade Federal do Espírito Santo
Lógica de Programação/ Algoritmos 2013
Linguagens de Programação
Análise e Projeto de Sistemas
Sistemas Operacionais
A Linguagem de Especificação Z
Introdução Visão Geral do Método.
Informática.
Professor Fernando Luís
INTRODUÇÃ A COMPUTAÇÃO ENG. CIVIL
Lógica de Programação UNIDADE 1 – Introdução a) Computador
Aula 1 Minicurso: Astah Ministrantes: André Martins; Camila Brondani;
PROGRAMAÇÃO I UNIDADE 1.
Aula prática 13 Orientação a Objetos – C++ Parte 1
Aula prática 6 Vetores e Matrizes
Alunos: Bruno Tourinho Tomas Jonathan Augusto da Silva.
Alunos: Bruno Tourinho Tomas Jonathan Augusto da Silva.
Projeto de Sistemas de Software
CADEIA DE CARACTERES (Strings)
Análise e Projeto de Sistemas
LINGUAGENS DE PROGRAMAÇÃO PROF. DANIELA PIRES
Caracterização e Objetivos das LP
Linguagem de Programação JAVA
TÉCNICAS DE PROGRAMAÇÃO
Professor: Márcio Amador
02/08/2011 Professor Leomir J. Borba- –
Campus de Caraguatatuba Licenciatura em Matemática Semestre de 2013
Conceitos Programas Programação Linguagens de Programação SQL.
Paradigmas de Linguagens de Programação Aula 2
3. Introdução à Linguagem C
Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
Projeto de Linguagens de Programação
O Processo Unificado (UP)
Programação de PIC em C Exposição das funções básicas para
Monitoria IP ~if669 Garbage Collection e pacotes.
Métodos Formais.
Acabias Marques Luiz. I - Introdução ao Ruby Parte 1 – Introdução a linguagem  O que é Ruby  Instalação  O IRB  Operadores Aritméticos  Tipos de.
Programação de computadores Prof. Giovanni Castro.
Professor Esp. Diego André Sant’Ana Disciplina: Sistemas Operacionais II Sistemas de Arquivos- Tipo de arquivos – Cap
Linguagens de Programação
Critérios de Avaliação das Linguagens de Programação
Acabias Marques Luiz. III – Variáveis, constantes e executáveis Parte 1 – Introdução a linguagem  Variáveis e Constantes  Atalhos na manipulação de.
UML e a Ferramenta Astah
Introdução à Computação - Jorge Macêdo1 ICC – Software Jorge Macêdo.
Algoritmos e Programação MC102
Cálculo Numérico Módulo I Ferramentas de Suporte
Programação Computacional Aula 9: Meu primeiro programa em C
Assembly Equipe: David Lopes Embiruçú (dle) Emanuel Felipe Príncipe Carvalho (efpc) Luis Otávio Cavalcante Borba (locb) Rosana Silva Matos (rsm2)
Algoritmos e Programação I
Evolução das Principais Linguagens de Programação
Linguagem de Programação I PARTE i
MatLab (Matrix Laboratory)
INTRODUÇÃO THOBER CORADI DETOFENO, MSC. Aula 01 JOINVILLE 2015 Universidade do Estado de Santa Catarina – CCT/UDESC.
Arrays Outline 7.1 Introdução 7.2 Arrays 7.3 Declarando e Criando Arrays 7.4 Exemplos usando arrays 7.5 Ordenando arrays 7.6 Procurando em.
1 Especificação de Sistemas de Software e a UML. 2 Modelagem de sistema A modelagem de sistema auxilia o analista a entender a funcionalidade do sistema.
COMO AVALIAR UM OBJETO DE APRENDIZAGEM
1. 2 Prof. Maurício Rodrigues de Morais Programação Orientada a Objetos II.
Transcrição da apresentação:

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/aplc.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 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/free-compilers/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