Você está na página 1de 32

Captulo 1

Aspectos Preliminares
Conceitos de Linguagens de Programao Robert W. Sebesta

Tpicos do Captulo 1
Razes para estudar conceitos de linguagens de programao
Domnios de programao
Critrios de avaliao de linguagens
Influncias no projeto de linguagens
Categorias de linguagens
Trade-offs no projeto de linguagens
Mtodos de implementao
Ambientes de programao
Conceitos de Linguagens de Programao Robert W. Sebesta

Razes para estudar conceitos


de linguagens de programao
Capacidade aumentada para expressar ideias
Embasamento melhorado para escolher linguagens apropriadas
Habilidade aumentada para aprender novas linguagens
Melhor entendimento da importncia da implementao
Melhor uso de linguagens j conhecidas
Avano geral da computao
Conceitos de Linguagens de Programao Robert W. Sebesta

Domnios de programao
Aplicaes cientficas
Grande nmero de computaes de aritmtica de ponto flutuante; uso de matrizes
Fortran
Aplicaes empresariais
Produz relatrio, usa nmeros decimais e caracteres
COBOL
Inteligncia artificial
Smbolos em vez de nmeros manipulados; uso de listas ligadas
LISP
Programao de sistemas
Precisa de eficincia por causa do uso contnuo
C
Software para a Web
Ecltica coleo de linguagens: de marcao (como XHTML), de scripting (como PHP),
de propsito geral (como Java)
Conceitos de Linguagens de Programao Robert W. Sebesta

Critrios de avaliao de linguagens


Legibilidade: facilidade com a qual os programas podem ser lidos e
entendidos
Facilidade de escrita: facilidade com a qual uma linguagem pode ser
usada para criar programas para um dado domnio
Confiabilidade: conformidade com as especificaes
Custo: o custo total definitivo de uma linguagem
Conceitos de Linguagens de Programao Robert W. Sebesta

Critrio de avalio: legibilidade


Simplicidade geral
Um conjunto controlvel de recursos e construes
Mnima multiplicidade de recursos
Mnima sobrecarga de operadores
Ortogonalidade
Um conjunto relativamente pequeno de construes primitivas pode ser combinado a
um nmero relativamente pequeno de formas
Cada possvel combinao legal
Tipos de dados
Mecanismos adequados para definir tipos de dados
Projeto da sintaxe
Formato dos identificadores
Palavras especiais e mtodos de formar sentenas compostas
Forma e significado: construes autodescritivas, palavras-chave significativas
Conceitos de Linguagens de Programao Robert W. Sebesta

Critrio de avaliao: facilidade de escrita


Simplicidade e ortogonalidade
Poucas construes, nmero pequeno de primitivas e um pequeno
conjunto de regras para combin-las
Suporte abstrao
A habilidade de definir e usar estruturas ou operaes complicadas de
forma a permitir que muitos dos detalhes sejam ignorados
Expressividade
Um conjunto de formas relativamente convenientes de especificar as
operaes
Fora e nmero de operadores e funes pr-definidas
Conceitos de Linguagens de Programao Robert W. Sebesta

Critrio de avaliao: confiabilidade


Verificao de tipos
Testes para detectar erros de tipos
Tratamento de excees
Interceptar erros em tempo de execuo e tomar medidas corretivas
Utilizao de apelidos
Nomes distintos que podem ser usados para acessar a mesma clula de
memria
Legibilidade e facilidade de escrita
Uma linguagem que no oferece maneiras naturais para expressar os
algoritmos requeridos ir necessariamente usar abordagens no naturais,
reduzindo a confiabilidade
Conceitos de Linguagens de Programao Robert W. Sebesta

Critrio de avaliao: custo


Treinar programadores para usar a linguagem
Escrever programas (proximidade com o propsito da aplicao em
particular)
Compilar programas
Executar programas
Sistema de implementao da linguagem: disponibilidade de
compiladores gratuitos
Confiabilidade baixa leva a custos altos
Manter programas
Conceitos de Linguagens de Programao Robert W. Sebesta

Critrio de avaliao: outros


Portabilidade
A facilidade com a qual os programas podem ser movidos de uma
implementao para outra
Generalidade
A aplicabilidade a uma ampla faixa de aplicaes
Bem definida
Em relao completude e preciso do documento oficial que define a
linguagem
Conceitos de Linguagens de Programao Robert W. Sebesta

Influncias no projeto de linguagens


Arquitetura de computadores
Linguagens so projetadas considerando a principal arquitetura de
computadores, chamada de arquitetura de von Neumann
Metodologias de projeto de programas
Novas metodologias de desenvolvimento de software (por exemplo,
desenvolvimento de software orientado a objeto) levaram a novos
paradigmas de programao e, por extenso, a novas linguagens de
programao
Conceitos de Linguagens de Programao Robert W. Sebesta

Influncias na arquitetura de computadores


Principal arquitetura de computadores: von Neumann
Linguagens imperativas, mais populares, por causa dos computadores
von Neumann
Dados e programas armazenados na memria
A memria separada da CPU
Instrues e dados so canalizadas a partir da memria para CPU
Base para linguagens imperativas
Variveis modelam as clulas de memria
Sentenas de atribuio so baseadas na operao de envio de dados
e instrues
Iterao eficiente
Conceitos de Linguagens de Programao Robert W. Sebesta

Arquitetura Von Neumann


Conceitos de Linguagens de Programao Robert W. Sebesta

Arquitetura Von Neumann


Ciclo de obteno e execuo (em um computador com arquitetura
von Neumann)

inicialize o contador de programa


repita para sempre
obtenha a instruo apontada pelo contador de programa
incremente o contador de programa
decodifique a instruo
execute a instruo
fim repita
Conceitos de Linguagens de Programao Robert W. Sebesta

Influncias na metodologia de programa

Anos 1950 e comeo dos 1960: Aplicaes simples; preocupao com


a eficincia da mquina
Final dos anos 60: Eficincia das pessoas se tornou importante;
legibilidade, melhores estruturas de controle
Programao estruturada
Projeto descendente (top-down) e de refinamento passo a passo
Final dos anos 70: Da orientao aos procedimentos para uma
orientao aos dados
Abstrao de dados
Meio dos anos 80: Programao orientada a objetos
Abstrao de dados + herana + vinculao dinmica de mtodos
Conceitos de Linguagens de Programao Robert W. Sebesta

Categorias de linguagens
Imperativa
Caractersticas centrais so variveis, sentenas de atribuio e de iterao
Inclui linguagens que suportam programao orientada a objeto
Inclui linguagens de scripting
Inclui as linguagens visuais
Exemplos: C, Java, Perl, JavaScript, Visual BASIC .NET, C++
Funcional
Principais meios de fazer os clculos pela aplicao de funes para determinados
parmetros
Exemplos: LISP, Scheme
Lgica
Baseada em regras (regras so especificadas sem uma ordem em particular)
Example: Prolog
De marcao/programao hbrida
Linguagens de marcao estendida para suportar alguma programao
Exemplos: JSTL, XSLT
Conceitos de Linguagens de Programao Robert W. Sebesta

Trade-Offs no projeto de linguagens


Confiabilidade x custo de execuo
Exemplo: Java exige que todas as referncias aos elementos de um vetor
sejam verificadas para garantir que os ndices esto em suas faixas legais
Legibilidade x facilidade de escrita
Exemplo: APL inclui um poderoso conjunto de operadores (e um grande
nmero de novos smbolos), permitindo que computaes complexas
sejam escritas em um programa compacto, com o custo de baixa
legibilidade
Facilidade de escrita (flexibilidade) x confiabilidade
Exemplo: Ponteiros de C++ so poderosos e flexveis, mas no so
confiveis
Conceitos de Linguagens de Programao Robert W. Sebesta

Viso em camadas de um computador


O Sistema operacional e as
implementaes de
linguagem so colocados
em camadas superiores
interface de linguagem de
mquina de um
computador
Conceitos de Linguagens de Programao Robert W. Sebesta

Mtodos de implementao
Compilao
Programas so traduzidos para linguagem de mquina
Interpretao pura
Programas so interpretados por outro programa chamado interpretador
Sistemas de implementao hbridos
Um meio termo entre os compiladores e os interpretadores puros
Conceitos de Linguagens de Programao Robert W. Sebesta

Compilao
Traduz programas (linguagem de fonte) em cdigo de mquina
(linguagem de mquina)
Traduo lenta, execuo rpida
Processo de compilao tem vrias fases:
anlise lxica: agrupa os caracteres do programa fonte em unidades
lxicas
anlise sinttica: transforma unidades lxicas em rvores de anlise
sinttica (parse trees), que representam a estrutura sinttica do programa
anlise semntica: gera cdigo intermedirio
gerao de cdigo: cdigo de mquina gerado
Conceitos de Linguagens de Programao Robert W. Sebesta

O processo de compilao
Conceitos de Linguagens de Programao Robert W. Sebesta

Terminologias de compilao adicionais

Mdulo de carga (imagem executvel): o cdigo de usurio e de


sistema juntos
Ligao e carga: o processo de coletar programas de sistema e lig-los
aos programas de usurio
Conceitos de Linguagens de Programao Robert W. Sebesta

Gargalo de Von Neumann


A velocidade de conexo entre a memria de um computador e seu
processador determina a velocidade do computador
Instrues de programa normalmente podem ser executadas mais
rapidamente do que a velocidade de conexo, o que resulta em um
gargalo
Conhecido como gargalo de von Neumann; o fator limitante primrio
na velocidade dos computadores
Conceitos de Linguagens de Programao Robert W. Sebesta

Interpretao pura
Sem traduo
Fcil implementao de programas (mensagens de erro em tempo de
execuo podem referenciar unidades de cdigo fonte)
Execuo mais lenta (tempo de execuo de 10 a 100 vezes mais lento
do que nos sistemas compilados)
Geralmente requer mais espao
Raramente usada em linguagens de alto nvel
Volta significativa com algumas linguagens de scripting para a Web
(como JavaScript e PHP)
Conceitos de Linguagens de Programao Robert W. Sebesta

Processo de interpretao pura


Conceitos de Linguagens de Programao Robert W. Sebesta

Sistemas de implementao hbridos


Um meio termo entre os compiladores e os interpretadores puros
Uma linguagem de alto nvel traduzida para uma linguagem
intermediria que permite fcil interpretao
Mais rpido do que interpretao pura
Exemplos
Programas em Perl eram parcialmente compilados para detectar erros
antes da interpretao
As primeiras implementaes de Java eram todas hbridas; seu formato
intermedirio, byte code, fornece portabilidade para qualquer mquina que
tenha um interpretador de bytecodes e um sistema de tempo de execuo
associado (juntos, so chamados de Mquina Virtual Java)
Conceitos de Linguagens de Programao Robert W. Sebesta

Sistema de implementao hbrido


Conceitos de Linguagens de Programao Robert W. Sebesta

Sistemas de implementao Just-in-Time

Inicialmente traduz os programas para uma linguagem intermediria


Ento, compila os mtodos da linguagem intermediria para linguagem
de mquina quando esses so chamados
A verso em cdigo de mquina mantida para chamadas
subsequentes
Sistemas JIT so agora usados amplamente para programas Java
As linguagens .NET tambm so implementadas com um sistema JIT
Conceitos de Linguagens de Programao Robert W. Sebesta

Pr-processadores
As instrues de pr-processador so comumente usadas para
especificar que o cdigo de outro arquivo deve ser includo
Um pr-processador um programa que processa um programa
imediatamente antes de o programa ser compilado para expandir
macros embutidos
Um exemplo conhecido: pr-processador de C
expande #include, #define e macros similares
Conceitos de Linguagens de Programao Robert W. Sebesta

Ambientes de programao
Coleo de ferramentas usadas no desenvolvimento de software
UNIX
Um ambiente de programao mais antigo
Agora bastante usado por meio de uma interface grfica com o usurio
(GUI) que roda sobre o UNIX
Microsoft Visual Studio .NET
Grande e complexo
Usado para desenvolver software em qualquer uma das cinco
linguagens .NET
NetBeans
Usado primariamente para o desenvolvimento de aplicaes Web usando
Java, mas tambm oferece suporte a JavaScript, Ruby e PHP
Conceitos de Linguagens de Programao Robert W. Sebesta

Resumo
O estudo de linguagens de programao valioso por diversas razes:
Aumenta nossa capacidade de usar diferentes construes ao escrever
programas
Permite que escolhamos linguagens para os projetos de forma mais
inteligente
Torna mais fcil o aprendizado de novas linguagens
Critrios mais importantes para a avaliao de linguagens:
Legibilidade, facilidade de escrita, confiabilidade e custo geral
As principais influncias no projeto de linguagens so a arquitetura de
mquina e as metodologias de projeto de software
Os principais mtodos de implementar linguagens de programao so
a compilao, a interpretao pura e a implementao hbrida

Você também pode gostar