linguagem da programação

43
História das Linguagens de Programação

Upload: rodrigo-goncalves

Post on 30-Jun-2015

4.064 views

Category:

Technology


0 download

DESCRIPTION

Trabalho

TRANSCRIPT

Page 1: Linguagem da programação

História das Linguagens de Programação

Page 2: Linguagem da programação

O que é linguagem de programação

Uma linguagem de programação é um método padronizado para expressar instruções para um computador. É um conjunto de regras sintáticas e semânticas usadas para definir um programa de computador. Uma linguagem permite que um programador especifique precisamente sobre quais dados um computador vai atuar, como estes dados serão armazenados ou transmitidos e quais ações devem ser tomadas sob várias circunstâncias.

Page 3: Linguagem da programação

O conjunto de palavras (tokens), compostos de acordo com essas regras, constituem o código fonte de um software. Esse código fonte é depois traduzido para código de máquina, que é executado pelo processador

Page 4: Linguagem da programação

Uma das principais metas das linguagens de programação é permitir que programadores tenham uma maior produtividade, permitindo expressar suas intenções mais facilmente do que quando comparado com a linguagem que um computador entende nativamente (código de máquina). Assim, linguagens de programação são projetadas para adotar uma sintaxe de nível mais alto, que pode ser mais facilmente entendida por programadores humanos. Linguagens de programação são ferramentas importantes para que programadores e engenheiro de software possam escrever programas mais organizados e com maior rapidez

Page 5: Linguagem da programação

O primeiro trabalho de linguagem de programação foi criado para um computador que existia, criado pelo Ada Lovelace, esposa de William King-Noel. O projeto do primeiro computador foi idealizado por Charles Babbage que, após gastar fortunas e um longo tempo, não conseguiu concretizar o projeto. A linguagem de programação ADA foi batizada em homenagem a esta primeira programadora.

Page 6: Linguagem da programação

Uma das primeiras linguagens de programação para computadores foi provavelmente Plankalkül, criada por Konrad Zuse na Alemanha Nazista, mas que teve pouco ou nenhum impacto no futuro das linguagens de programação.A primeira linguagem de programação de alto nível amplamente usada foi Fortran, criada em 1954

Page 7: Linguagem da programação

Em 1957 foi criada B-O, que daria origem a Flow-Matic (1958), antecessor imediato de Cobol, de 1959. LIsp e Algol foram criadas em 1958.

Page 8: Linguagem da programação

Diferença entre linguagem interpretada,compilada e scripts

Page 9: Linguagem da programação

Linguagem interpretadaÉ uma linguagem de programação, onde o código fontr nessa linguagem é executado por um programa de computador chamado interpretador, que em seguida é executado pelo sistema operacional ou processador. Mesmo que um código em uma linguagem passe pelo processo de compilação, a linguagem pode ser considerada interpretada, se o programa resultante não for executado diretamente pelo sistema operacional ou processador. Um exemplo disso é o Bytecode, que é um tipo de linguagem interpretada, que passa pelo processo de compilação e, em seguida, é executado por uma máquina virtual, cuja sintaxe é similar a código de máquina e cada comando ocupa 1 byte. Existem também, as linguagens de script, que são linguagens interpretadas, executadas do interior de programas e/ou de outras linguagens de programação.

Page 10: Linguagem da programação

LINGUAGEM COMPILADA

É uma linguagem de programação, onde o código fonte nessa linguagem é executado diretamente pelo sistema operacional ou pelo processador, após ser traduzido, através de um processo chamado compilação, usando um programa de computador chamado compilador, para uma linguagem de baixo nível, como linguagem de montagem ou código de máquina.

Page 11: Linguagem da programação

LINGUAGEM DE SCRIPTTambém conhecido como linguagem de scripting, ou linguagem de extensão, são linguagens de programação executadas do interior de programas e/ou de outras linguagens de programação, não se restringindo a esses ambientes. As linguagens de script servem para estender a funcionalidade de um programa e/ou controlá-lo, acessando sua API e, são freqüentemente usadas como ferramentas de configuração e instalação em sistemas operacionais(Shell script), como por exemplo, em alguns sistemas operacionais da família Linux, que usam a linguagem bash. São também frequentemente usadas em jogos, como por exemplo, o jogo Impossible Creatures, que usa a linguagem Lua para controlar as ações dos personagens e o ambiente de batalha.

Page 12: Linguagem da programação

O que é um paradigma de programação?

Modelo, padrão ou estilo de programação suportado por linguagens que agrupam certas características comuns

A classificação de linguagens em paradigmas é uma conseqüência de decisões de projeto que impactam radicalmente a forma na qual uma aplicação real é modelada do ponto de vista computacional

Page 13: Linguagem da programação

O Paradigma Imperativo

Programas centrados no conceito de um estado (modelado por variáveis) e ações (comandos) que manipulam o estado

Paradigma também denominado de procedural, por incluir sub-rotinas ou procedimentos como mecanismo de estruturação

Primeiro paradigma a surgir e ainda é o dominante

Page 14: Linguagem da programação

Modelo Computacional do Paradigma Imperativo

Entrada Programa

Saída

Estado

Page 15: Linguagem da programação

Vantagens do modelo imperativo

Eficiência (embute modelo de Von Neumann)

Modelagem “natural” de aplicações do mundo real

Paradigma dominante e bem estabelecido

Page 16: Linguagem da programação

Desvantagens do paradigma imperativo

Relacionamento indireto entre E/S resulta em: difícil legibilidade erros introduzidos durante manutenção descrições demasiadamente operacionais

focalizam o como e não o que

Page 17: Linguagem da programação

O Paradigma Orientado a Objetos

Não é um paradigma no sentido estrito: é uma subclassificação do imperativo

A diferença é mais de metodologia quanto à concepção e modelagem do sistema

A grosso modo, uma aplicação é estruturada em módulos (classes) que agrupam um estado (atributos) e operações (métodos) sobre este

Classes podem ser estendidas e/ou usadas como tipos (cujos elementos são objetos)

Page 18: Linguagem da programação

Modelo Computacional do Paradigma Orientado a Objetos

Entrada Programa

Saída

Estado

......

......

Estado

Entrada Programa

Saída

Estado

Entrada Programa

Saída

Estado

Entrada Programa

Saída

Estado

Entrada Programa

Saída

Page 19: Linguagem da programação

Vantagens do Paradigma Orientado a objetos

Todas as do estilo imperativo Classes estimulam projeto centrado em

dados: modularidade, reusabilidade e extensibilidade

Aceitação comercial crescente

Page 20: Linguagem da programação

Problemas do Paradigma OO

Semelhantes aos do paradigma imperativo, mas amenizadas pelas facilidades de estruturação

Page 21: Linguagem da programação

O Paradigma Orientado a Aspectos

Não é um paradigma no sentido estrito A diferença é mais de metodologia

quanto à concepção e modelagem do sistema

É uma nova forma de modularização: Para “requisitos” que afetam várias

partes de uma aplicação

Page 22: Linguagem da programação

O Paradigma Orientado a Aspectos

A grosso modo, uma aplicação é estruturada em módulos (aspectos) que agrupam pontos de interceptação de código (pointcuts) que afetam outros módulos (classes) ou outros aspectos, definindo novo comportamento (advice)

Aspectos podem ser estendidos e/ou usados como tipos

Page 23: Linguagem da programação

Modelo Computacional do Paradigma Orientado a Aspectos

Entrada Programa

Saída

Estado

......

......

Estado

Entrada Programa

Saída

Estado

Entrada Programa

Saída

Estado

Entrada Programa

Saída

Estado

Entrada Programa

Saída

AspectoAspecto

AspectoAspecto

Page 24: Linguagem da programação

Vantagens do Paradigma Orientado a Aspectos

Todas as do paradigma OO Útil para modularizar conceitos que a

Orientação a Objetos não consegue (crosscutting concerns) Em especial, aqueles ligados a requisitos não

funcionais Aumenta a extensibilidade e o reuso

Page 25: Linguagem da programação

Problemas do Paradigma Orientado a Aspectos

Semelhantes aos do OO Ainda é preciso diminuir a relação entre

classes e aspectos Problemas de conflito entre aspectos que

afetam a mesma classe

Page 26: Linguagem da programação

O Paradigma Funcional

Programas são funções que descrevem uma relação explícita e precisa entre E/S

Estilo declarativo: não há o conceito de estado nem comandos como atribuição

Conceitos sofisticados como polimorfismo, funções de alta ordem e avaliação sob demanda

Aplicação: prototipação em geral, IA, concorrência, ...

Page 27: Linguagem da programação

Modelo Computacional do Paradigma Funcional

Entrada Programa

Saída

Page 28: Linguagem da programação

Visão Crítica do Paradigma Funcional

Vantagens Manipulação de programas mais simples: - Prova de propriedades - Transformação (exemplo: otimização) - Concorrência explorada de forma

natural Problemas “O mundo não é funcional!” Implementações ineficientes Mecanismos primitivos de E/S e

formatação

Page 29: Linguagem da programação

O Paradigma Lógico

Programas são relações entre E/S Estilo declarativo, como no paradigma

funcional Na prática, inclui características

imperativas, por questão de eficiência Aplicações: prototipação em geral,

sistemas especialistas, banco de dados, ...

Page 30: Linguagem da programação

Modelo Computacional do Paradigma Lógico

Entrada Programa

Saída

Page 31: Linguagem da programação

Visão Crítica do Paradigma Lógico

Vantagens Em princípio, todas do paradigma

funcional Permite concepção da aplicação em um

alto nível de abstração (através de associações entre E/S)

Problemas Em princípio, todos do paradigma

funcional Linguagens usualmente não possuem

tipos, nem são de alta ordem

Page 32: Linguagem da programação

Gerações de Linguagem de Programação.

Primeira Geração: Linguagem de maquina (Binária)

Usa apenas 0 (zero) e 1 (um) para programar softwares.

Originalmente nenhum tradutor foi usado para montar as linguagens de primeira geração. As instruções de programação eram submetidas através dos interruptores localizados no painel frontal de sistemas de computadores. O principal benefício na primeira geração é que o código escrito pelo usuário é muito rápido e eficiente, desde que este código seja diretamente executado pela CPU.

Page 33: Linguagem da programação

Gerações de Linguagem de Programação.

Segunda Geração: Linguagem de montagem (Assembly)

É uma notação legível por humanos para o código de máquina que uma arquitetura de computador específica usa. A linguagem de máquina, que é um mero padrão de bit, torna-se legível pela substituição dos valores em bruto por símbolos chamados mnemônicos, ou seja, enquanto um computador sabe o que a instrução-máquina IA-21 (10110000 01100001) faz, para os programadores é mais fácil recordar a representação equivalente em instruções mnemônicas

Page 34: Linguagem da programação

Gerações de Linguagem de Programação.

Terceira Geração:Linguagem de alto nível (Fortran, C, ALGOL , COBOL...)

projetada para ser facilmente entendida pelo ser humano, incluindo coisas como variáveis com nomes. Um exemplo disso seria:

COMPUTE COMISSAO = VENDA * 0,5

Page 35: Linguagem da programação

Gerações de Linguagem de Programação.

Quarta Geração: Linguagem de alto nível (FOCUS, NATURAL, SQL...)

São linguagens capazes de gerar código por si só. São linguagens orientadas a objetos, tornando possível a reutilização de partes do código para outros programas.

Diferença entre a 3GL e 4GL, é que as primeiras descrevem como fazer algo, enquanto a segunda descreve o que você quer que seja feito.

Page 36: Linguagem da programação

Gerações de Linguagem de Programação.

Quinta Geração:Linguagens naturais (LISP) São linguagens de programação usadas para criar

programas para inteligência artificial e sistemas especialistas que permitem aos programadores se comunicarem com o computador usando sentenças normais.

Em 1982 o governo japonês lançou o projeto FGCS , que visava construir uma maquina paralela incluindo programação lógica e técnicas de inteligência artificial que teve fim dez anos depois,por não despertar muito interesse na indústria.

Page 37: Linguagem da programação

Tipos de Linguagem de programação

Fracamente tipada, como PHP e Smalltalk, onde o tipo da variável muda dinamicamente conforme a situação.

Fortemente tipada, como Java e Ruby, onde o tipo da variável, uma vez atribuído, se mantém o mesmo até ser descartada da memória.

Dinamicamente tipada, como Perl, Python e Ruby, onde o tipo da variável é definido em tempo de execução.

Estaticamente tipada, como Java e C, onde o tipo da variável é definido em tempo de compilação.

Page 38: Linguagem da programação

Evolução centrada em níveis crescentes de abstração

Linguagens de máquina Endereços físicos e operation code

Linguagens Assembly Mnemônicos e labels simbólicos

Linguagens de “alto nível” Variáveis e atribuição (versus acesso direto à

memória) Estruturas de dados (versus estruturas de

armazenamento)

Page 39: Linguagem da programação

Evolução centrada em níveis crescentes de abstração

Estruturas de controle (versus jumps e gotos) Estrutura de blocos como forma de

encapsulamento Generalização e parametrização (abstração de

tipos de valores)

Page 40: Linguagem da programação

Quanto ao grau de abstraçãoLinguagem de programação de baixo nível, cujos simbolos são uma representação direta do código de máquina que será gerado, onde cada comando da linguagem equivale a um "opcode" do processador, como AssemblyLinguagem de programação de médio nível, que possui símbolos que podem ser convertidos diretamente para código de máquina (goto, expressões matemáticas, atribuição de variáveis), mas também símbolos complexos que são convertidos por um compilador. Exemplo: C, C++Linguagem de programação de alto nível, composta de símbolos mais complexos, inteligível pelo ser humano e não-executável diretamente pela máquina, no nível da especificação de algoritmos, como Pascal, Fortran, ALGOL e SQL

Page 41: Linguagem da programação

Exemplos

AssemblyCriada na década de 50, o Assembly foi das primeiras linguagens de programação a aparecer. Ela usa uma sintaxe complicada e "exageradamente" difícil, isto porque, antes da década de 50 os programadores de máquinas tinham que escrever instruções em código binário, qualquer coisa como: 0110010110011011010110011010111010110101 ... Para escrever uma instrução. Na verdade, o Assembly foi criado para facilitar o uso dessa tarefa, mas é considerado uma linguagem de baixo nível, pois tudo o que o processador interpreta tem que ser descrito pelo programador. Assim o código acima seria "add EAX" em Assembly. Bastava apenas, depois de estar concluída a escrita do código, rodar o compilador e tínhamos o programa.

Page 42: Linguagem da programação

Exemplos

FortranEsta linguagem Fortran (Formula Translator) é uma linguagem de Alto nível, que foi criada partindo do problema e da dificuldade apresentadas pelo Assembly. Apareceu também na década de 50 e foi considerada uma das melhores linguagens da época. Aqui temos várias funções e instruções pré-definidas que nos permite poupar tempo na datilografia de instruções base do processador, ao contrário da linguagem Assembly.

Page 43: Linguagem da programação

Exemplos

PascalOutra linguagem de Alto nível dos anos 60, bem estruturada, mas com regras rígidas, o que a torna difícil de modelar, para se criar novas idéias. É a típica linguagem usada para iniciar os cursos de Programação. Habitualmente ambientes de desenvolvimento (IDE) como o FreePascal, o Kylix e o Delphi são ótimas opções para se programar em Pascal.