linguagens fora do padrÃo de mercado -...

32
LINGUAGENS FORA DO PADRÃO DE MERCADO Alunos: Clayton Reis da Silva Leonardo Lessa Aramaki Leonardo Machado Azevedo Manoel Mariano Siqueira Júnior

Upload: vuongtruc

Post on 08-Feb-2019

215 views

Category:

Documents


0 download

TRANSCRIPT

LINGUAGENS FORA DO PADRÃO DE MERCADO

Alunos:

Clayton Reis da Silva Leonardo Lessa Aramaki

Leonardo Machado Azevedo Manoel Mariano Siqueira Júnior

Essas pessoas criaram as linguagens de programação Forth, Prolog, Ada. Todas estas linguagens tinhas diversas vantagens e pontos inovadores.

Entretanto, nenhuma delas foi muito utilizada.

Essas pessoas criaram C e Unix, que esta sendo utilizado por mais de 30

anos...

Estas pessoas criaram as primeiras linguagens de programação orientadas a

objetos - Smalltalk e Simula. Nenhuma destas linguagens foi muito divulgada.

Essa pessoa tentou colocar orientação a objeto na linguagem C, criando o

Objective C. A linguagem criada não foi amplamente utilizada; hoje em dia ela é utilizada as vezes nos sistemas operacionais Mac OS.

Outra pessoa tentou colocar orientação a objeto na linguagem C, criando C++. Através de um simples olhar para a cara desta pessoa é possível ver

que C++ teve um sucesso muito maior que o objective C.

Eifell, Scheme, Cecil, Haskell, Erlang - linguagens de programação muito

interessantes, porém não utilizadas por ninguém além de pessoas especializadas

Qual é a regra até agora? Se a pessoa tem barba, ela tem sucesso. Se a pessoa não tem barba...

Autor do Basic. Não tem barba, mas tem bigode. Basic é amplamente

utilizado, porém tem fama ruim.

O problema é o bigode... Perl é uma outra linguagem de programação que tem praticamente a mesma utilização que o Basic e uma má fama quase

igual a ele :-). Olham só o bigode do autor da linguagem!

Autores de linguagens Ruby e Python. Muito menos utilizados que Perl e

Basic.

Autores de Lisp e Pascal.

Autor de Java.

Autor de C#.

BRAINFUCK – Uma linguagem feita para diversão

++++++++++[>+++++++>++++++++++>+++>+<<<<] >++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>. Acima está o código do “Hello World” escrito em Brainfuck. Fácil de decorar, não?

UM POUCO DE HISTÓRIA: - QUEM A CRIOU - PARA QUE FOI CRIADA O compilador de 200 bytes. - PORQUE NÃO DEU CERTO ASPECTOS DA LINGUAGEM: - ELEMENTOS: Um array de 30000 bytes e um ponteiro que se move pelo array. - FERRAMENTAS: A habilidade de incrementar/decrementar a célula do array; Ler o byte da entrada e escrever um byte na saída.

- COMO FUNCIONA Os oito caracteres da linguagem: , / . / < / > / + / - / [ / ] - PROBLEMAS: A dificuldade de ler o código; O comportamento quanto aos estouros de array. LINGUAGENS “PARENTES”: A “mãe”: P’’ As linguagens que vieram após a Brainfuck. CURIOSIDADES

EIFFEL – preocupação com Engenharia de Software

VISÃO GERAL

HISTÓRIA – criada por Bertrand Meyer em 1985

CARACTERÍSTICAS PRINCIPAIS DA LINGUAGEM • SIMPLICIDADE – instruções básicas (atribuição, criação de

objeto, rotina, condicional, iteração, case), sintaxe simples • ORIENTAÇÃO À OBJETOS • PROJETO POR CONTRATO – conceito de Engenharia de

Software • PORTABILIDADE – Windows, Linux, UNIX, OS/2, entre

outros • GARBAGE COLLECTOR

FILOSOFIA POR TRÁS DA LINGUAGEM Eiffel foi desenvolvida com a preocupação de Engenharia de Software, com o conceito conhecido como Projeto por Contrato, que básicamente são checagens de condições denominadas asserções: • class invariants • pré-condições • pós-condições

Suponha que queremos que nossos contadores sejam sempre não-negativos. A classe terá uma invariante: indexing ... class COUNTER feature ... invariant item >= 0

A palavra-chave require inicia a pré-condição. A palavra-chave ensure inicia a pós-condição.

decrement is -- Decrease counter by one require item > 0 do item := item -1 ensure item = old item -1 end. -- old "item" representa o valor de "item" antes do método ser chamado.

Por que não deu certo?

Linguagem pouco acessível, sem padrão ISO/ANSI Pouca fama de confiabilidade Código ”trabalhoso”

------------------------------------------------- classe HELLO WORLD (hello_world.e) ------------------------------------------------- class HELLO_WORLD creation make feature make is local io:BASIC_IO do !!io io.put_string("%N Hello World!!!!") end --make end -- class HELLO_WORLD

Forth – Uma linguagem para

microprocessadores

ALGUMAS CARACTERÍSTICAS: - PROCEDURAL - BASEADA EM PILHAS DE DADOS - COMANDOS ORGANIZADOS EM UMA LISTA EXTENSÍVEL CHAMADA DE DICIONÁRIO - TRABALHA FACILMENTE COM BASES ENTRE 2 E 36 - PODE SER TANTO COMPILADA QUANTO INTERPRETADA - APRESENTA ESTRUTURAS DE CONTROLE COMUNS EM LINGUAGENS PROCEDURAIS

DEFINIÇÃO DE UMA PALAVRA (COMANDO) FORTH:

: NOME PALAVRA_1 PALAVRA_2 ... PALAVRA_N ; EXEMPLO DE DEFINIÇÃO DE PALAVRA:

: HELLO . “HELLO WORLD!!!” ;

VANTAGENS: - EXTREMAMENTE COMPACTA - FACILMENTE DEPURÁVEL - ALTA ROBUSTEZ - BAIXO CUSTO NO DESENVOLVIMENTO DE SISTEMAS NESSA LINGUAGEM DESVANTAGENS - EXIGE, NO MÍNIMO, UM NÍVEL RAZOÁVEL DE CONHECIMENTO DA ESTRUTURA DA LINGUAGEM - REQUER CONHECIMENTO DO HARDWARE E DA ARQUITETURA DA MÁQUINA ONDE ELA SERÁ UTILIZADA

UTILIZAÇÕES: - É APLICADA EM SISTEMAS COMPOSTOS DE MICROPROCESSADORES PARA DESEMPENHAR FUNÇÕES DE CONTROLE OU MONITORAÇÃO DE ROBÔS, AERONAVES, AUTOMÓVEIS, APARELHOS DOMÉSTICOS, ETC. - É USADA NO CARREGADOR DE BOOT DO SISTEMA OPERACIONAL FREEBSD POR QUE NÃO É PADRÃO DE MERCADO? PORQUE É UMA LINGUAGEM COM FINS ESPECÍFICOS.

- LISP - A LINGUAGEM DA

INTELIGÊNCIA

– Inventada por John McCarthy (1959); –LISP = LISt Processing – a lista é a estrutura de dados fundamental desta linguagem; –Muito usada em Inteligência Artificial; –Manipulação de informação simbólica ; –Muitas versões e dialetos: FranzLisp, MacLisp, InterLisp, Scheme, LeLisp, ZetaLisp e Common LISP (praticamente o padrão) ; –Estilo de programação funcional – uso intenso de recursão; –LISP é freqüentemente implementada por um interpretador

–Usuário entra com uma expressão; –Interpretador avalia expressão e imprime o resultado;

–Gerenciamento de memória automático (garbage collector)

PRINCIPAIS ESTRUTURAS DE DADOS EM LISP – 2 Estruturas de dados principais: o átomo e a lista – Átomo –Símbolos a b c xxx x1 x-1 –Constantes Números: 1 2 1.33 -2.95 Cadeias: “abc de” “x y z” – 2 símbolos especiais para boolean: nil e t – nil : false – t : true – Lista

– seqüência de átomos ou listas entre parênteses

FUNÇÕES – Principais Funções pré-definidas: – Aritmética: + - / * > (+ 3 4 5 6)

18 – Relacionais: > = < >= <= > (> 3 4)

nil – Manipulação de listas: car cdr cons > (car '(a b))

A – Condicionais: if cond

> (cond ((= 1 2) 'a) ((> 2 3) 'b) ((< 3 4) 'c) )

C

– Lógicas: AND OR NOT – Apenas Números > (or (< 2 3) (> 2 3)) T

– Para comparar símbolos, usa-se o predicado eq, e para comparar listas estruturalmente, usa-se o predicado equal.

– Funções definidas pelo usuário: – (defun nome lista-de-argumentos expressão) – Define uma função chamada nome que avalia expressão substituindo os símbolos da lista-de-argumentos pelos valores passados quando a função for invocada

> (defun test (a b) (* 2 (+ a b))) TEST > (test 3 4) 14

PORQUE NÃO É PADRÃO DE MERCADO?

– LISP evoluiu durante mais de 30 anos e se desenvolveu para a inteligência artificial, mas não é adequado para aplicações convencionais, pois a sua base é voltada para a programação lógica.

CONCLUSÃO: O que define uma linguagem de programação ser fora do padrão de mercado? As linguagens que foram apresentadas são fora do padrão de mercado, porém não necessáriamente foram mal projetadas, muitas vezes possuindo vantagens ou mesmo idéias inovadoras. Mas por que não deram certo? Algumas são inovadoras demais, outras são para fins bem específicos, não tendo uma abrangência muito ampla. Há algumas linguagens que nem são sérias, e outras, embora bem projetadas, não são muito acessíveis, não sendo padronizadas ou mesmo eficientemente suportadas por uma comunidade desenvolvedora.