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.