Introdução a Linguagens de
Programação
Profº. Johni Douglas Marangon
lp.johnidouglas.com.br
Histórico
• Década de 1940 surge os primeiros computadores programados em
linguagem de máquina – zeros e uns.
• Década de 1950 surgem as linguagem simbólicas/assembly. As
instruções de máquina eram representadas por mnemônicos. Logo
após surgem os “macros” que abreviavam uma sequencia de
mnemônicos.
• Na segunda metade da década de 1950 começam a surgir as
linguagem de alto nível.
• Fortran – computação cientifica.
• Cobol – processamento de dados comerciais.
• Lisp – Computação simbólica.
• O grande beneficio dessa linguagens era a possibilidade de escrever
código com mais facilidade.
• Nesse momento temos o surgimento da era das “linguagens de
ordem mais alta” que distingue as linguagens de programação de alto
nível e independente de máquina.
• Centenas de linguagem forma surgindo com o tempo. Algumas
tiveram um grande sucesso e outras influenciaram projetos de novas
linguagens.
• Existem varias formas de classificar as linguagem de programação.
• Classificação das linguagem de programação quanto a sua geração.
•
•
•
•
•
Primeira geração: Linguagem de máquina.
Segunda geração: Linguagem de simbólica/assembly.
Terceira geração: Linguagem de alto nível voltada para programadores.
Quarta geração: Linguagem cridas para aplicações especificas.
Quinta geração: Linguagem baseadas em lógica.
• Classificação quanto a forma.
• Linguagem imperativas: determina “COMO” o processo deve ser feito. É
baseada em estados definidos em variáveis e ações.
Ex: Java, C.
• Linguagem declarativas: O próprio programa determina “O QUE” deve ser
realizado.
Ex: HTML, SQL.
Fundamentos
• Para se tronar um bom usuário de linguagem de programação é
importante conhecer suas características, pontos fortes e fracos.
• Três princípios de linguagem de programação (TUCKER, 2008).
• Sintaxe: É como o programa está estruturalmente correto. Conjunto básico de
palavras e símbolos.
• Nomes e tipos: Vocabulário da linguagem de programação, regras de nomes
de entidades, escopo de visibilidade, tipos de dados.
• Semântica: Efeito que cada comandos tem sobre os valores de
identificadores, como exemplo temos o efeito de um comando de atribuição a
uma variável, conversão de tipos de dados.
Benefícios estudo Linguagem de Programação
• Capacidade aumentada para expressar ideias: Reduz as limitações ao
desenvolver um software e aumentada.
• Embasamento para escolher linguagens adequadas: Saber escolher a
linguagem que melhor se adapte ao seu problema.
• Habilidade aumenta em aprender novas linguagens: O
desenvolvimento de software é uma profissão de aprendizagem
continuo, conhecer os conceitos de programação torna esse processo
mais fácil.
• Melhor entendimento da importância da implementação: Ao
estender os aspectos de uma linguagem de programação nos leva
usar de maneira mais inteligente uma forma de programação.
• Melhor uso de linguagens já conhecidas: Estudar os recursos
desconhecidos das linguagens de programação a fim de obter
melhores resultados.
• Avanço geral da computação: Novas linguagens de programação e
recursos surgem a todo o momento entender as novidade nos
auxiliam a tomar melhores decisões.
Aplicação de linguagens de programação
• Aplicações cientificas: Aplicação dos primeiros computadores digitais,
se caracteriza por operações com pontos flutuantes e estrutura de
vetores e matrizes.
• Aplicações empresariais: Inicio na década de 1950 com o Cobol e se
caracteriza pela facilidade de gerar relatório e armazenar e recuperar
dados.
• Inteligência artificial: Uso de computação simbólica nos quais
símbolos são manipuladores, primeira linguagem desenvolvida foi o
LISP.
• Programação de sistemas: ferramentas que dão suporte ao
desenvolvimento de software. IDE e compiladores.
• Software para web: possui uma infinidade de linguagens sendo
utilizadas que vão desde linguagem de marcação até linguagens de
programação.
Critérios avaliação linguagens de programação
• Um dos objetivos do estudo de linguagem de programação é avaliar
os recursos e impactos que as linguagens de programação tem no
desenvolvimento e manutenção de software.
• Legibilidade: facilidade de escrita e entendimento aplicados ao
contexto do domínio do programa.
• Simplicidade geral: Linguagem com muitas construções básicas é de difícil
aprendizado, uma linguagem com muitos recursos também tem
complicadores.
• Ortogonalidade: Conjunto de instruções que permitem um número pequeno
de maneiras de construir estrutura de controle, combinação de conceitos.
Possibilidade de passar parâmetros por valor e referencia. Passar uma função
como parâmetro. Fazer operações com tipos de dados diferentes.
• Tipos de dados: Mecanismos para definir tipos de dados e estrutura de dados
de forma legível e eficiente.
• Projetos de sintaxe: Forma como os identificadores são declarados e a
expressividade das palavras.
• Facilidade de escrita: Facilidade de escrita de uma linguagem para um
determinado problema.
• Simplicidade de ortogonalidade: Se uma linguagem possui um conjunto muito
grande de possiblidade de construções ele pode levar ao uso incorreto de
alguns deles.
• Suporte a abstração: Definir estruturas onde determinados detalhes pode ser
omitidos ou ignorados. Exemplo uso de subprogramas.
• Expressividade: Meio de construir objetos de forma direta e objetiva. Um
exemplo e o uso de count++ ao invés de count = count + 1.
• Confiabilidade: Fator muito importante na escolha da linguagem de
programação.
• Verificação de tipos: Etapa normalmente executada pelo compilador. Usada
para evitar erros de tipos em tempo de execução.
• Tratamento de exceções: Habilidade do programa de interceptar erros e
tomar medidas corretivas.
• Uso de apelidos: Definição de diversos apelidos a nomes envolvidos na escrita
de um código.
• Legibilidade de facilidade de escrita: Meios naturais de expressar algoritmos.
Projetos de linguagens de programação
• Os projetistas de linguagem de programação devem criar meios para
permitir aos programadores resolver seus problemas. Os seguintes
elementos impõem restrições a um projeto de linguagem de
programação.
• Arquitetura: Permite definir a melhor utilidade de um computador a um
domínio de aplicação. Podem surgir necessidade de uma linguagem ser
projetada para uma arquitetura especifica.
• Configuração técnica: As linguagens de programação deve satisfazer
imposições técnicas nas quais elas forma utilizadas. Ex: sistemas operacionais,
IDE, redes.
• Padrões: esforço para definir padrões ao qual os programadores deve aderir,
o processo de padronização muitas vezes é lento e burocrático. É
acompanhado por diversos profissionais envolvidos. A ISO e ANSI são duas
das maiores organizações que supervisiona e mante padrões.
• Sistemas legados: São software antigos mantidos pela equipe de
desenvolvimento. As novas versões da linguagem de programação deve dar
suporte ao código mais antigo sem prejudicar a sua integridade.
Paradigmas de linguagem de programação
Paradigma é um padrão, norma, exemplo. Na programação é um
padrão para a solução de problemas racionados a um determinado
gênero de programas e linguagens. Algumas linguagens de
programação suportam mais de um paradigma de programação.
• Programação orientada a objetos: O programa é uma coleção de
objetos que interagem entre si passando mensagens que
transformam o seu estado.
• Programação Funcional: Um problema é tratado com uma coleção de
funções matemáticas. As funções interagem entre si usando
composição funcional, condições e recursão.
• Programação lógica: Modela um problema declarando qual resultado
deve obter e não como ele deve ser obtido.
• Programação orientada a eventos: Definimos também como
manipulação de eventos e ocorre de forma espontânea, esta
acoplado a programação orientada a objetos. Exemplo: ações em tela,
clique de mouse, pressionamento de teclas.
• Programação imperativa: O programa e as suas variáveis estão
armazenadas juntas e o programa possui uma serie de cálculos para
atribuir valores a variáveis, obter entradas, produzir saídas ou
direcionar para outros pontos.
• Programação orientada a aspectos: Separa o código de acordo com a
sua importância. Estende a programação orientada a eventos.
• Programação concorrente: Acoplada a programação orientada a
objetos, funcional, lógica e imperativa e se caracteriza pelo acesso a
elementos que compartilham a mesma informação.
• Programação reflexiva: capacidade de um programa de se auto
modificar em tempo de execução. Também é conhecido como meta
programação. Ex: Criar um função em tempo de execução.
Ambiente de desenvolvimento
• É uma coleção de ferramentas usadas no processo de desenvolvimento de
um software.
• Normalmente é composta por uma IDE e um compilador.
• Pode incluir um conjunto muito grande de ferramentas e tem como
objetivo otimizar as fazes de desenvolvimento de um software.
• O ALM - Application Lifecycle Management – reúne um conjunto de
ferramentas e processos envolvidos em todo o ciclo de vida de uma
aplicação.
• É importante destacar que os processos deve ser automatizados para evitar
falhas, diminuir o tempo de resposta e evitar desperdício de tempo.
• Processo envolvidos em um ALM.
• Gerencia de requisitos.
• Gerencia de configuração, mudanças e build.
• Gerencia de testes.
• As ferramentas devem promover a integração e comunicação entre
membros da equipe.
•
•
•
•
Sistemas de controle de versão.
IDE.
Sistemas de gerenciamento de bugs.
Sistemas de gerenciamento de projetos.
Download

Slides - Linguagens de Programação