• Nenhum resultado encontrado

Influência da Arquitetura de Computadores no Projeto de uma LP

N/A
N/A
Protected

Academic year: 2019

Share "Influência da Arquitetura de Computadores no Projeto de uma LP"

Copied!
53
0
0

Texto

(1)

Disciplina:

Paradigmas de

Linguagens de

Programação

Parte 1

(2)

2

Influência da Arquitetura de Computadores no

Projeto de uma LP

• A arquitetura básica de computadores exerceu um efeito crucial sobre o projeto de LPs.

• A maior parte dos computadores foi projetada na arquitetura de von Neumann.

• As LPs projetadas sobre essa arquitetura são as chamadas imperativas.

(3)
(4)

4

Métodos de Implementação de uma LP

• Dois dos principais componentes de um computador são a memória interna e seu processador.

• A memória interna e usada para armazenas programas e dados.

• O processador garante a realização de um conjunto de instruções de máquina (macroinstruções).

• Na maioria dos computadores as macroinstruções são implementadas por um conjunto de níveis mais baixos denominados microinstruções.

• O sistema operacional e as implementações são dispostos em camadas sobre a interface da linguagem de máquina de um computador.

(5)
(6)

6

Métodos de Implementação de uma LP

• Dois dos principais componentes de um computador são a memória interna e seu processador.

• A memória interna e usada para armazenas programas e dados.

• O processador garante a realização de um conjunto de instruções de máquina (macroinstruções).

• Na maioria dos computadores as macroinstruções são implementadas por um conjunto de níveis mais baixos denominados microinstruções.

• O sistema operacional e as implementações são dispostos em camadas sobre a interface da linguagem de máquina de um computador.

(7)

Métodos de Implementação de uma LP

• A figura 1.2 do livro-texto também ilustra a arquitetura em

(8)

8

Métodos de Implementação de uma LP

• As linguagens de programação podem ser implementadas por meio de três métodos gerais:

• Compilação

• Interpretação Pura

(9)

Compilação

• A linguagem que um compilador traduz é chamada linguagem-fonte.

• O processo de compilação

(10)

10

Compilação

• O Analisador Léxico reúne os caracteres do programa-fonte em unidades léxicas:

• Identificadores

• Palavras especiais

• Operadores

(11)

Compilação

• O Analisador Sintático pegas as unidades léxicas e cria as estruturas

hierárquicas (árvores de análise – parse trees), que serão vistas quando

(12)

12

Compilação

• O Gerador de Código Intermediário produz um programa em uma linguagem

intermediária e

analisa a semântica.

• A Otimização é uma melhoria nos

(13)

Compilação

• O Gerador de código converte a versão do código intermediário em linguagem de máquina.

• A Tabela de símbolos é o banco de dados para o

processo de compilação e seu principal conteúdo são as

(14)

14

Compilação

• A velocidade de conexão entre a memória de uma computador e seu

processador usualmente determina a velocidade do computador, porque, muitas vezes, as instruções podem ser executadas mais rapidamente do que podem ser transferidas para o processador para serem executadas.

• Essa conexão é chamada de gargalo de von Neumann.

(15)

Interpretação Pura

• Programas podem ser interpretados por outro programa chamado interpretador.

• O interpretador age como uma simulação de software de uma máquina com instruções de alto nível em vez de instruções de máquina.

• A interpretação pura exige mais espaço, pois além do programa-fonte, a tabela de símbolos deve estar presente na interpretação.

• A interpretação tem execução de 10 a 100 vezes mais lenta do que a compilação, já que o significado de cada expressão e instrução deve ser determinado diretamente do programa fonte em tempo de execução.

(16)

16

Interpretação Pura

• O processo de

(17)

Implementação Híbrida

• É o meio termo entre compiladores e interpretadores puros.

• Esse método é mais rápido que a interpretação pura, porque as

instruções da linguagem fonte são decodificadas somente uma vez.

• Em vez de traduzir código em linguagem intermediária para código de máquina, ele

simplesmente interpreta o código de máquina.

(18)

18

Evolução das LPs

(19)

Fortran (1957)

• Desenvolvida por Backus para a IBM.

• Destinou-se a aplicações numéricas-científicas(poucos dados e muita computação).

• Enfatizava a eficiência em execução e não de armazenamento. • Não havia alocação dinâmica de memória.

• Não focava na eficiência dos programadores.

• Exemplo: Estruturas de controle eram baseadas em goto.

(20)

20

Evolução do Fortran

• ó é ! " # ç á $

# % á $

# á !$

• & ç

'" á ( ) ú )

• * ç+ ç $ , á

- . / 0 1

$

"232& 456

7 í

(21)

Evolução do Fortran

•2 8 $

• ç 89

$

•# ç - - ç

-$

•& ç

8 á 8 :1

6;< ç *

!;; <;; * ó $

•= * *

- * á- $

"232& 45>

7 í

(22)

22

Evolução do Fortran

• * 8 í $

"232& 454

•& ç ç á $

•& ç 8

? 8 $

"232& , 4@

•& ç ç $

•& ç á A0#A$

"232& 66 46>

• ç+ 32& #="#A 1&B,&0 1 ,&0$

• ç 7&#A ç ú $

• ç AB 3

ç ç $

"232& 4; 44;

7 í

(23)
(24)

24

LISP (1959)

• Fomentada a partir da necessidade e interesse na Inteligência Artificial.

• A primeira versão é chamada LISP pura e gerou dialetos como o COMMON LISP e SCHEME.

• A LISP tem somente dois tipos de estruturas de dados: átomos e listas.

• Átomos: símbolos sob a forma de identificadores e são os elementos das listas.

(25)
(26)

26

Algol 60 (1960)

• Influenciou fortemente as LPs subseqüentes com enorme importância teórica.

• Criada por um comitê de especialistas.

(27)
(28)

28

COBOL (1964)

• Primeira LP encomendada pelo DoD (Departamento de Defesa Americano).

• Este nome é a sigla de COmmon Business Oriented Language

(Linguagem Orientada aos Negócios), que define seu objetivo principal em sistemas comerciais, financeiros e administrativos para empresas e governos.

• Destina-se para aplicações comerciais. • Muitos dados e pouca computação.

• Tentou enfatizar a legibilidade (se aproximando do inglês).

(29)

Estrutura Básica do COBOL

• O COBOL consiste basicamente em quatro divisões separadas: • IDENTIFICATION DIVISION

• A IDENTIFICATION DIVISION possui informações documentais, como nome do programa, quem o codificou e quando essa codificação foi realizada.

• ENVIRONMENT DIVISION

• A ENVIRONMENT DIVISION descreve o computador e os periféricos que serão utilizados pelo programa.

• DATA DIVISION

• A DATA DIVISION descreve os arquivos de entrada e saída que serão usadas pelo programa. Também define as áreas de trabalho e constantes necessárias para o processamento dos dados.

• PROCEDURE DIVISION

(30)

30

Exemplo COBOL

• Programa que monta formato de data.

• Exemplo da saída deste programa :

(31)

Basic (1964)

• Foco em estudantes de arte e ciências humanas.

Beginners All-purpose Symbolic Instruction Code

• Fácil para os iniciantes aprenderem usando pouca memória computacional.

• Deu origem ao QuickBasic (1988) e o Visual Basic (1990).

• Um programa em BASIC tradicional tem suas linhas numeradas, sendo que é quase que padrão usar números de 10 em 10 (o que facilita a posterior introdução de linhas intermediárias, se necessário). Os

(32)

32

(33)

PL/I (1965)

• Primeira tentativa em grande escala de projetar uma linguagem que poderia ser utilizada para um amplo espectro de áreas de aplicação.

• Ao contrário das demais, já que as LPs anteriores e a maioria das subseqüentes concentravam-se em uma área de aplicação particular.

• Objetivo: Substituir o Fortran IV, Algol 60 e COBOL

• Facilidades:

• Permitiu que os programas criassem tarefas executadas concorrentemente (implementação fraca).

• Tornou possível detectar e manipular 23 tipos de exceções, ou erros em tempos de execução (um recorde para a época).

• Permitiu que procedimentos fossem usados recursivamente.

(34)

34

(35)
(36)

36

Algol(1968)

• Foi fonte de diversas idéias novas no projeto de linguagens.

• Faz uso da ortogonalidade com poucas exceções.

• Possibilidade de inclusão de tipos de dados definidos pelo usuário.

• Introduziu o tipo matriz dinâmica (conhecido como flex), não especificando limites de alocação.

• Exemplo: flex [1:0] int lista

• Lista é uma matriz dinâmica de números inteiros sem alocar espaço de armazenamento.

(37)

Pascal (1971)

• Recebeu este nome em homenagem ao matemático Blaise Pascal Foi criada em 1970 pelo suíço Niklaus Wirth, tendo em mente encorajar o uso de código estruturado.

• Projetada para o ensino de programação estruturada.

• Enfocou na simplicidade.

• É provavelmente uma das linguagens mais bem resolvidas entre as

(38)

38

(39)

C (1972)

• Desenvolvida dentro da AT&T.

• A linguagem C tem instruções de controle adequadas e facilidades de estruturação de dados para permitir seu uso em muitas áreas de

aplicação.

• Acesso de baixo-nível, através de inclusões de código Assembly no meio do programa C.

• Completa ausência de verificação de tipos: 2 grupos os que adoram (flexibilidade) e os que detestam (falta de segurança).

• Coletor de lixo (mais comum em linguagens interpretadas).

• Ausência de vetores que crescem automaticamente.

(40)

40

C (1972)

• Algumas variações da linguagem C apareceram, até que em 1989, criou-se a padronização com o ANSI C. Um dos objetivos do processo de

padronização ANSI C era incorporar muitas das características não-oficiais subseqüentemente introduzidas.

• Entretanto, muitos programas tinham sido escritos e que não compilavam em certas plataformas, ou com um certo compilador, devido ao uso de bibliotecas de funções não-padrão e ao fato de alguns compiladores não aderirem ao ANSI C.

• Após o processo da padronização ANSI, as especificações da linguagem C permaneceram relativamente estáticas por algum tempo.

(41)
(42)

42

Ada (1983)

• Criada pela empresa Cii-Honeywell Bull como vencedora de licitação do Departamento de Defesa Americano.

• Evoluiu a partir do Pascal.

• O nome Ada vem de Ada Lovelace, considerada a primeira mulher programadora da história da computação.

• Foi a LP que mais demandou esforço (cerca de 100 pessoas) e tempo (8 anos).

• Apropriada para programação concorrente e sistemas de tempo real.

(43)

Ada (1983)

• Incorpora a maioria dos conceitos de engenharia de software e projeto de linguagens.

• Embora ser considere que a inclusão de muitos recursos tenha sido um exagero, a maioria concorda que os recursos são valiosos.

• Desenvolver um compilador para ADA foi uma tarefa difícil. Apenas 4 anos depois, o compiladores úteis começaram a aparecer.

(44)

44

(45)

Smalltalk (1972)

• Primeira LP orientada à objetos.

• Introduziu o conceito de interfaces gráficas com o usuário.

• As unidades de programa do Smalltalk são os objetos.

• Estruturas que encapsulam dados e um conjunto de operações (métodos) e que ficam disponíveis à outros objetos.

• Computação feita para invocar objetos. A resposta é um objeto que retorna a informação solicitada ou notifica o remetente que o

(46)

46

C++ (1985)

• Evoluiu a partir do C e passou por uma seqüência de modificações para melhorar seus recursos imperativos e suportar POO.

• Batizada inicialmente por “C with classes”.

• Tornou-se rapidamente uma linguagem popular.

• Fator de popularidade: compiladores baratos e úteis logo no começo e similaridade com a Linguagem C.

• É compatível com C (a maioria dos programas em C pode ser compilada como programas C++) e é possível vincular código C na maioria das

implementações.

• Herdou a maioria das inseguranças do C, o que o torna menos confiável que o Java.

(47)

Java (1995)

• Início a partir do C++, removendo numerosas construções, alterando algumas e adicionando outras.

• A linguagem resultante oferece grande parte do poder e da flexibilidade do C++, mas em uma linguagem menor, mais simples e mais segura.

• Não é possível escrever subprogramas independentes em JAVA. Todos os subprogramas JAVA são métodos definidos em classes.

• O JAVA usa a desalocação de armazenagem de maneira implícita

(48)

48

Java (1995)

• Diferente do C e do C++, o JAVA inclui coerções de tipos (conversões implícitas) somente se elas estiverem ampliando (de um tipo menor para um tipo maior:

• Exemplo:

• int => float é feita coerção.

(49)
(50)

50

C# (2000) – C sharp

• C# é uma linguagem de programação orientada a objetos criada pela Microsoft, faz parte da sua plataforma .NET. A empresa baseou C# nas linguagens C++ e Java, e ela é considerada a linguagem símbolo do .NET.

• A Microsoft submeteu o C# à ECMA (ECMA (acrônimo para European Computer Manufacturers Association dedicada à padronização de

sistemas de informação) para uma padronização formal.

• Em Dezembro de 2001 a associação liberou a especificação ECMA-334

Especificação da Linguagem C#. Em 2003 tornou-se um padrão ISO

(ISO/IEC 23270).

(51)
(52)

52

Linguagens de Programação Populares

(53)

Trabalho Individual 1 (1º Bimestre)

• Elabore uma peça técnica (máximo 50 linhas) com o seguinte tema:

• Data da entrega: Prova – 1º Bimestre (20/09/2010)

• O template para a peça técnica encontra-se na sala virtual e deverá ser

utilizado.

Referências

Documentos relacionados

Este dado diz respeito ao número total de contentores do sistema de resíduos urbanos indiferenciados, não sendo considerados os contentores de recolha

Para analisar as Componentes de Gestão foram utilizadas questões referentes à forma como o visitante considera as condições da ilha no momento da realização do

insights into the effects of small obstacles on riverine habitat and fish community structure of two Iberian streams with different levels of impact from the

In this work, improved curves are the head versus flow curves predicted based on the correlations presented in Table 2 and improved by a shut-off head prediction

Segundo o mesmo autor, a animação sociocultural, na faixa etária dos adultos, apresenta linhas de intervenção que não se esgotam no tempo livre, devendo-se estender,

Para preparar a pimenta branca, as espigas são colhidas quando os frutos apresentam a coloração amarelada ou vermelha. As espigas são colocadas em sacos de plástico trançado sem

Na experiência em análise, os professores não tiveram formação para tal mudança e foram experimentando e construindo, a seu modo, uma escola de tempo