O documento apresenta o plano de ensino para a disciplina de Linguagens de Programação ministrada pelo Prof. Adriano Teixeira de Souza. Ele descreve os tópicos que serão abordados, as atividades e critérios de avaliação.
2. Nome
Cidade
Em que área trabalha
Que tecnologias utiliza no dia-a-dia
Expectativas para a disciplina
Prof. Adriano Teixeira de Souza
3. Conteúdo programático
◦ Motivação para o estudo de Linguagens de Programação
◦ Critérios para Avaliação de Linguagens
◦ Métodos de Implementação de Linguagens
◦ Paradigmas de Linguagens de Programação
◦ Evolução Histórica das Linguagens de Programação
◦ Ambientes de Programação
◦ Estilos de Codificação e Padronização
◦ Expressões e Atribuição
◦ Estruturas de Controle
◦ Gerenciamento de Memória
◦ Tratamento de Exceções
◦ Modularização, componentização e reutilização de
código
◦ Escalabilidade
Prof. Adriano Teixeira de Souza
4. Aulas teórico - praticas
Discussões sobe o assunto
Listas de exercícios
Trabalhos
Avaliação bimestral
Nota 1º bimestre
◦ Avaliação bimestral (peso de 50%)
◦ Trabalhos e listas de exercícios (peso de 35% )
◦ Participação e envolvimento em sala (peso 15%)
Nota 2º bimestre
◦ Avaliação bimestral (peso de 50%)
◦ Artigo científico (20% peso)
◦ Trabalhos e listas de exercícios (peso de 15% )
◦ Participação e envolvimento em sala (peso 15%)
Prof. Adriano Teixeira de Souza
5. Linguagem de Programação:
◦ Linguagem usada por uma pessoa para expressar
um processo através do qual um computador pode
resolver um problema.
Porque tantas?
◦ Propósitos diferentes
◦ Avanços tecnológicos
◦ Interesses comerciais
Prof. Adriano Teixeira de Souza
6. Maior habilidade em resolver problemas:
◦ Melhor domínio;
Melhor uso de uma LP
◦ Extrair o máximo de sua funcionalidade e eficiência;
Maior embasamento para escolha de
linguagens
◦ Não escolher apenas a linguagem que estiver mais
familiarizado
Melhor escolha de uma LP
◦ Adequação ao problema
Maior facilidade em aprender novas LPs;
Prof. Adriano Teixeira de Souza
7. Legibilidade
◦ Quão facilmente um programa pode ser lido e entendido
Capacidade de Escrita
◦ Quão facilmente uma linguagem pode ser usada para
criar programas
Confiabilidade
◦ Conformidade com as especificações sob todas as
condições
Custo
◦ O custo final de uma linguagem é uma função de suas
características
Portabilidade
◦ Possibilidade de ser executada sob diversos sistemas
operacionais e plataformas de harware
Prof. Adriano Teixeira de Souza
8. Simplicidade global: uma linguagem com um
grande número de componentes básicos é mais
difícil de aprender do que com poucos desses
componentes → programadores tendem a
aprender subconjunto dela.
Multiplicidade de recursos complica a
legibilidade:
cont = cont + 1
cont += 1
cont++
++cont
Prof. Adriano Teixeira de Souza
9. Facilidade de ler e escrever programas
◦ Legibilidade influi:
desenvolvimento e depuração de programas
manutenção de programas
desempenho de equipes de programação
Fatores que melhoram a legibilidade:
◦ Abstração de dados
◦ Comandos de controle
◦ Modularização de programas
◦ Documentação
◦ Convenções léxicas, sintaxe e semântica
Exemplo em Java: nomes de classes iniciam por letra
maiúscula, nomes de campos usam letras minúsculas
Prof. Adriano Teixeira de Souza
10. Medida de quão facilmente uma linguagem pode ser
usada para criar programas para um domínio de
problema escolhido.
Suporte para abstração: capacidade de definir e,
depois, usar estruturas ou operações complicadas de
uma maneira que permita ignorar muitos dos
detalhes.
Um conjunto relativamente conveniente de maneiras
de especificar operadores
Exemplos:
◦ count++ é mais conveniente do que count = count + 1
◦ a inclusão do for em muitas linguagens modernas
Prof. Adriano Teixeira de Souza
11. Um programa é confiável se ele se comportar
seguindo suas especificações sob todas as
condições.
Verificação de tipos
◦ Testar se existem erros de tipos, pelo compilador
ou durante a execução.
Manipulação de Exceções
◦ Capacidade de interceptar erros em tempo de
execução e por em prática medidas corretivas
◦ Ex: C++ e Java incluem essas facilidades. C e
Fortran não
Prof. Adriano Teixeira de Souza
12. Treinamento dos programadores para usar a
linguagem
Escrita de programas na linguagem
Compilação programas na linguagem
Execução dos programas
◦ Muitas verificações na execução deixando a
execução lenta (Ex: Linguagem interpretada)
Sistema de implementação da linguagem:
◦ Existência de compiladores free
Confiabilidade
◦ Confiabilidade baixa leva a altos custos
Manutenção dos programas
Prof. Adriano Teixeira de Souza
13. Portabilidade
◦ Quão facilmente um programa pode ser movido de
uma implementação para outra
Ex: executar em vários sistemas operacionais, e
plataformas de hardware
Generalidade
◦ Seu uso em uma gama de aplicações
Boa definição
◦ A precisão e a completeza da definição oficial da
linguagem
Existência de boas ferramentas
◦ Compiladores
◦ Debuggers
Prof. Adriano Teixeira de Souza
14. Compilação
◦ Programas são traduzidos para a linguagem de
máquina
Interpretação pura
◦ Programas são interpretados por outro programa
conhecido como interpretador
Sistemas de implementação híbridos
◦ Um meio-termo entre compiladores e
interpretadores puros
Prof. Adriano Teixeira de Souza
15. Traduz programas em alto-nível (linguagem fonte)
em código de máquina (linguagem de máquina)
Tradução lenta, execução rápida
O processo de compilação possui várias fases:
◦ Análise léxica
Converte caracteres de um programa fonte em unidades léxicas
◦ Análise sintática
Transforma unidades léxicas em parse trees, as quais
representam a estrutura sintática do programa
◦ Análise semântica
Gera código intermediário
◦ Geração de código
Código de máquina é gerado
Prof. Adriano Teixeira de Souza
17. Sem tradução
Fácil implementação de programas (erros de
execução podem ser facilmente e
rapidamente mostrados)
Execução lenta (de 10 a 100 vezes mais lenta
do que programas compilados)
Geralmente requer mais espaço
Cada vez mais raro em linguagens de alto-
nível
Embora não seja uma linguagem simples,
JavaScript é puramente interpretado
Prof. Adriano Teixeira de Souza
19. Um meio-termo entre compilador e interpretador
puro
Um programa em uma linguagem de alto-nível é
traduzido para uma linguagem intermediária que
permite fácil interpretação
Mais rápido do que interpretação pura
Exemplos
◦ Programas em Perl são parcialmente compilados para
detectar erros antes da interpretação
◦ Implementações iniciais de Java eram híbridas
A forma intermediária, byte code, provinha portabilidade
para qualquer máquina que tivesse o interpretador de byte
code e um sistema de run-time (juntos, esses são chamados
de Java Virtual Machine)
Prof. Adriano Teixeira de Souza