6. Tecnologia da
Informação
Linguagens de Programação 6
A solução
Servidores
Infra-estrutura
Componentes
Metodologias
Linguagens de
Programação
Itens de
QualidadeTécnicas
Banco de
Dados
Design
Patterns
Ferramentas
Case
7. Linguagens de Programação 7
Conceitos
Linguagem de programação é um conjunto de regras sintáticas e
semânticas usadas para definir um programa de computador
Programa de computador é a formalização de um algoritmo em
qualquer linguagem capaz de ser transformada em instruções
que serão executadas por um computador gerando os
resultados esperados
Algoritmo é a descrição de um conjunto de ações que
obedecidas, resultam uma sucessão finita de passos para atingir
um objetivo
8. Linguagens de Programação 8
A comunicação
Linguagem
humana
Algoritmo Código
Fonte
Código
Intermediário
Linguagem
Máquina
9. Linguagens de Programação 9
Técnicas Programação
Programação Linear: proposta para resolver problemas na forma de
maximização ou minimização de funções lineares, sujeitas a um conjunto de
restrições que podem ser expressos sob a forma de inequações ou equações
lineares
Programação Modular: paradigma de programação no qual o desenvolvimento
das rotinas de programação é feito através de módulos, que são interligados
entre si através de uma interface comum
Programação Estruturada: forma de programação de computadores que
preconiza que todos os programas possíveis podem ser reduzidos a apenas três
estruturas: sequência, decisão e iteração
Programação Orientada a Objetos: paradigma de análise, projeto e
programação de sistemas de software baseado na composição e interação entre
diversas unidades de software chamadas de objetos
10. Linguagens de Programação 10
Classificação Linguagens
ACM – Association for Computing Machinery
Paradigma
Estrutura de Tipos
Grau de Abstração
Geração
11. Linguagens de Programação 11
Classificação - ACM
Fundada em 1947 como a primeira sociedade cientifica e educacional
dedicada a computação, é composta por grupos denominados capítulos
(chapters), grupos especiais e universidades e faculdades ao redor do mundo
12. Linguagens de Programação 12
Classificação - Paradigma
Refere-se a visão que o programador possui sobre a estruturação e execução do
programa. A programação OO pode ser abstraída como uma coleção de objetos que
interagem entre si. Já a programação funcional pode ser abstraída como uma sequência
de funções executadas de forma empilhada
13. Linguagens de Programação 13
Classificação – Estrutura de Tipos
• Fracamente tipada - tipo da variável muda dinamicamente conforme a
situação.
• Fortemente tipada - tipo da variável, uma vez atribuído, se mantém o
mesmo até ser descartada da memória.
• Dinamicamente tipada - tipo da variável é definido em tempo de execução.
• Estaticamente tipada - tipo da variável é definido em tempo de compilação.
14. Linguagens de Programação 14
Classificação – Grau de Abstração
• Linguagem de programação de baixo nível - cujos simbolos são uma
representação direta do código de máquina que será gerado.
• Linguagem de programação de médio nível - 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
• 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
15. Linguagens de Programação 15
Classificação - Geração
• Primeira Geração – conhecida como linguagem de máquina (ou binária), que usa apenas 0 (zero)
e 1 (um) para programar softwares.
• Segunda Geração – linguagem de montagem, que é uma notação legível por humanos para o
código de máquina que uma arquitetura de computador específica usa.
• Terceira Geração – linguagem de programação projetada para ser facilmente entendida pelo ser
humano, incluindo coisas como variáveis com nomes.
• Quarta Geração – linguagens não-procedimentais que descreve o que quer que seja feito
(derivativas do SQL, por exemplo).
• Quinta Geração – linguagem declarativa que limita-se a fornecer uma descrição do problema que
se pretende computar, usando a base de dados, as regras relacionais e o mecanismo de
unificação para produzir a solução.
18. Software de Sistema
Responsabilidades
• Gerenciar memória.
• Controlar a comunicação entre
componentes de HW.
• Ler e interpretar entradas do
teclado.
• Executar tarefas básicas de um
sistema: copiar, mover, renomear,
etc.,
Define o padrão de comportamento do
hardware, tornando-o utilizável
Tipos
• Sistema Operacional: alocador
de recursos que permite ao
computador trabalhar de forma
eficiente e segura.
• Tradutor: responsáveis pela
transformação de uma linguagem
de programação em linguagem de
máquina.
Linguagens de Programação 18
19. Software Aplicativo
Tipos
• Uso geral: são programas que
podem ser utilizados em vários
tipos de aplicações, como editores
de texto, gráficos, planilhas,
gerenciadores de banco de dados,
etc.
• Uso específico: se destinam
exclusivamente a um único tipo de
aplicação, como folha de
pagamento, crediário, imposto de
renda, cadastro, contas a pagar e
receber, etc.
Voltados para a solução de problemas
relacionados ao usuário final
Linguagens de Programação 19
20. Software Utilitário
Fornecem o complemento necessário para
uma ferramenta básica de gerenciamento do
SO
Exemplos
• Backup.
• Compactador de disco.
• Desfragmentador de disco.
• Anti-vírus.
Linguagens de Programação 20
22. Linguagens de Programação 22
Características das Linguagens*
Facilidade Projeto Código
Eficiência do Compilador
Portabilidade do Código
Disponibilidade de ferramentas
Manutenabilidade
* Pressman, 2002
23. Linguagens de Programação 23
Características das Linguagens
Linguagem
(implementa)
• Construções estruturadas;
• Estruturas de dados sofisticadas;
• E/S especializadas;
• Construção orientadas a objeto.
24. Linguagens de Programação 24
Características das Linguagens
Quando um requisito não funcional de
desempenho for crítico é importante pensar na
utilização de compiladores “otimizantes”
25. Linguagens de Programação 25
Características das Linguagens
Portabilidade
• Código-fonte pode ser transportado
de processador e compilador;
• Código-fonte permanece imutável
quando o ambiente muda;
• Código-fonte pode ser integrado a
diferentes pacotes de software;
26. Linguagens de Programação 26
Características das Linguagens
• Ferramentas de depuração;
• Ferramentas para controle do código fonte;
• Ferramentas de engenharia reversa;
• Ferramentas de testes.
Buscar um ambiente de desenvolvimento de
software avançado, que inclua ferramentas
convencionais e automatizadas
27. Linguagens de Programação 27
Características das Linguagens
O quão fácil o código-fonte é entendido e
modificável
Vislumbrar características de
autodocumentação da linguagem, bem como
um processo que a permita
35. Linguagens de Programação 35
Identificadores significativos para nomes (rotinas, variáveis,
constantes, etc.).
Interna - Código
Comentários:
• No início do bloco – título e objetivos;
• No corpo do bloco – declarações de variáveis, comandos
complexos, interfaces, integrações;
• No final do bloco – autor, revisor, histórico de manutenção.
Uso de endentação.
36. Linguagens de Programação 36
Externa – Especificação Técnica
Rotina/funções/stored procedure/Serviços:
• Identificação;
• Parâmetros de entrada/saída;
• Pré-condições;
• Exceções;
• Lógica.
Tela/Relatório :
• Identificação do objeto;
• Finalidade;
• Modo de Operação;
• Nome do Campo;
• Descrição do Campo;
• Tipo do Campo;
• Tamanho do Campo;
• Quebras;
• Totalizadores.
• Objetivos;
• Escopo;
• Restrições;
• Armazenamento;
• Versionamento.
42. Tecnologia – Popularidade*
Linguagens de Programação 42
* TIOBE Nov/2010
Programming
Language
Position
Nov 2010
Position
Nov 2005
Position
Nov 1995
Position
Nov 1985
Java 1 1 - -
C 2 2 1 1
C++ 3 3 2 8
PHP 4 4 - -
C# 5 7 - -
Python 6 8 10 -
(Visual) Basic 7 5 3 4
Objective-C 8 42 - -
Perl 9 6 5 -
Ruby 10 24 - -
Lisp 13 14 12 2
Ada 16 17 6 3
43. Sugestões Bibliográficas
• Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides. Design Patterns: Elements of
Reusable Object-Oriented Software. 1 ed. Estados Unidos da América: Addison-Wesley, 1995.
• Craig Larman. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and
Design and Iterative Development. 1 ed. Estados Unidos da América: Prentice Hall, 2004.
• Fowler, Martin. Refactoring: Improving the Design of Existing Code. Massachusetts: Addison
Wesley, 2006.
• Meyer, B. Object-Oriented Software Construction. New Jersey: Prentice Hall, 1988.
• Pressman, R. S. Engenharia de Software. 5. ed. São Paulo: Makron Books, 2002.
• Kosanski, N., Woods, E.. Software Systems Architecture: working with stakeholders using view
points and perspectives. New Jersey: Addison-Wesley, 2005.
• Manzano, José Augusto N. G., Algoritmos – Lógica para Desenvolvimento de Programas – São
Paulo, Ed. Érica, 1999.
• Xavier, Gley Fabiano Cardoso. Lógica de Programação - Editora SENAC-SP, 2001.
• Saliba, W. Luiz Caran, Técnicas de Programação – Uma abordagem Estruturada – São Paulo,
Ed. Makron Books, 1992.
Linguagens de Programação 43