Вы находитесь на странице: 1из 32

Linguagens de Programao

Prof. Wilker Luz

Aula 01
Roteiro
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
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
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)
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
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
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
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
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
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
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
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
Arquitetura Von Neumann
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
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
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
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
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
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
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
O processo de compilao
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
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
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)
Processo de interpretao pura
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)
Sistema de implementao hbrido
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
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
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
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
Referncia
Captulo 1 do livro

Вам также может понравиться