View
215
Download
0
Category
Preview:
Citation preview
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...
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.
++++++++++[>+++++++>++++++++++>+++>+<<<<] >++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>. 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
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
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.
– 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.
Recommended