Baixe o app para aproveitar ainda mais
Prévia do material em texto
Fundamentos de Análise e Desenvolvimento de Sistemas Prof. Msc. Carlos Queiroz Carlosqueiroz.fate@gmail.com Semestre 2013.2 0-2 Aula 05 – Linguagens de Programação ¤ Perspectiva Histórica ¤ Implementação de Linguagens ¤ Visão geral de algumas linguagens de programação Perspectiva Histórica ¤ Primeira Geração ¤ Segunda Geração ¤ Terceira Geração 3 Perspectiva Histórica ¤ Primeira Geração ¤ Caracterizado pelas Linguagens de Máquina ¤ Sêquencias de instruções codificadas como dígitos numéricos ¤ Problemas ¤ Desenvolver tornava-se uma tarefa tediosa, propensa a erros ¤ Erros eram difíceis de serem localizados e corrigidos (Processo de depuração) ¤ Fortemente atrelada a máquina 4 Perspectiva Histórica ¤ Segunda Geração ¤ Desenvolvimento de sistemas notacionais com os quais as instruções poderiam ser representadas por mnemônicos ¤ Montadores ¤ Programas desenvolvidos para converter expressões mnemônicas em instruções da linguagem de máquina ¤ Linguagens de montagem ¤ Exemplificado pela linguagem Assembly ¤ Problemas ¤ Continuava ainda dependente da máquina ¤ Um programa escrito em uma linguagem de montagem não pode ser facilmente transportado para outro projeto de computador, pois teria que ser reescrito em conformidade com as instruções da nova máquina ¤ O programador ainda é forçado a escrever seus programas em termos de pequenos passos da linguagem de máquina 5 0-6 Exemplo (Primeira Geração) Linguagem de Máquina (Machine language) 156C 166D 5056 30CE C000 (Segunda Geração) Linguagem de Montagem (Assembly language) LD R5, Price LD R6, ShipCharge ADDI R0, R5 R6 ST R0, TotalCost HLT Perspectiva Histórica ¤ Terceira Geração ¤ Possuem primitivas de mais alto nível (instruções em incrementos maiores) ¤ Independência da máquina ¤ Ex.: FORTRAN (FORmula TRANslator), COBOL (Common Business-Oriented Language) ¤ Cada primitiva era projetada de forma que pudesse ser implementada como uma sequência de primitivas de baixo nível disponíveis em linguagens de máquina 7 Perspectiva Histórica ¤ Terceira Geração ¤ Tradutor ¤ Traduz programas expressos em primitivas de alto nível em programas em linguagens de máquinas ¤ Similar aos montadores das linguagens de Segunda Geração, mas capaz de compilar diversas instruções de máquina em pequenas sequências ¤ Tradutor -> Compiladores 8 Perspectiva Histórica ¤ Terceira Geração ¤ Interpretador ¤ Funcionamento similar aos tradutores, exceto que executam as instruções à medida que elas são traduzidas ¤ Não grava uma versão traduzida para uso futuro 9 Perspectiva Histórica ¤ Terceira Geração ¤ Independência de máquina Um programa escrito em uma linguagem de terceira geração pode ser usado em qualquer máquina simplesmente aplicando o compilador apropriado. 10 Compilador ¤ Programas que traduzem programas escritos em linguagem de programação para programas equivalentes escritos em linguagem de máquina ¤ O primeiro é chamado de programa fonte, enquanto que o segundo é chamado de programa objeto ¤ A compilação também verifica se o programa obedece à sintaxe da linguagem, ou seja, se as instruções foram escritas corretamente 11 Linker ¤ O programa-objeto nem sempre está pronto para ser executado ¤ Outros trechos de código precisam ser incluídos ¤ Bibliotecas ¤ Subprogramas ¤ Programa executável é montado por um programa chamado link-editor ou linking-loader ¤ Compilador normalmente chama o link-editor automaticamente 12 Compilação 13 Interpretador ¤ A linguagem que iremos estudar não utiliza o conceito de interpretadores ¤ Simulação de uma “Máquina Virtual” ¤ O Programa fonte é lido, entendido e as instruções são executadas imediatamente 14 Híbridos ¤ A linguagem que iremos estudar não utiliza o conceito de interpretadores ¤ Simulação de uma “Máquina Virtual” ¤ O Programa fonte é lido, entendido e as instruções são executadas imediatamente 15 0-16 O Processo de compilação Código Fonte Programa Objeto 0-17 Exemplo: Análise Léxica e Sintática Árvore de análise sintática Paradigmas de programação ¤ Funcional ¤ Imperativo ¤ Declarativo ¤ Orientado a objetos 0-19 Paradigma Funcional ¤ Um programa é visto como uma entidade que aceita entradas e produz saídas ¤ Tais unidades são chamadas funções ¤ Um programa é construído através da conexão de unidades de programa pré-definidas e menores (funções pré- definidas) para que as saídas de cada unidade sejam usadas como entrada para outra subunidade ¤ Construir funções como um complexo aninhado de funções mais simples ¤ O resultado de uma função é “canalizado” para a próxima função 0-20 Paradigma Imperativo ¤ Também conhecido como paradigma procedural ¤ Define o processo de programação como uma sequência de comandos que, quando seguidos, manipulam dados para obter um resultado desejado 0-21 0-22 Paradigma Declarativo ¤ Pede ao programador que descreva o problema a ser solucionado ao invés de o algoritmo a ser seguido ¤ A tarefa do programador torna-se o desenvolvimento de uma sentença precisa do problema ¤ As primeiras linguagens declarativas tendiam a ser de propósito especial, pois dependem de um algoritmo subjacente para a resolução do problema ¤ Exemplo: (P OR Q) AND (R OR ¬Q) é resolvido para (P or R) Paradigma Orientado a Objetos ¤ É o mais proeminente no desenvolvimento de software atual ¤ Um sistema de software é visto como uma coleção de unidades, chamada Objetos. ¤ Cada objeto é capaz de realizar operações relacionadas ao próprio objeto ou solicitar ações de outros objetos ¤ Objetos interagem para solucionar o problema em questão 23 Paradigma Orientado a Objetos ¤ Objeto ¤ Coleção de procedimentos (Métodos) ¤ Dados (atributos) ¤ Ex.: Lista ¤ Atributo: Elementos da lista ¤ Métodos: Ordenação, inserção e remoção de elementos ¤ Métodos ¤ Pequenas porções de programas imperativos dentro de um objeto 24 Exemplos de Linguagens 25 Tipos de Linguagens ¤ Linguagens de Baixo Nível ¤ Assembly ¤ Linguagens Não Estruturadas ¤ Cobol, Basic ¤ Linguagens Procedurais ¤ C, Pascal, Fortran, Ada, Modula 2, Modula 3 ¤ Linguagens Funcionais ¤ Prolog, Lisp, Scala, Scheme ¤ Linguagens Orientada a Objetos ¤ Simula, Smaltalk, C++, Java ¤ Linguagens Específicas ¤ Linguagens para Bancos de Dados ¤ Clipper, SQL ¤ Linguagens de Simulação ¤ Matlab ¤ Linguagens de Script ¤ Perl, TCL ¤ Linguagens de Formatação de Texto ¤ HTML, Postscript 26 Tipos de Linguagens ¤ Linguagens Não Estruturadas ¤ Ex.: Cobol, Basic ¤ Flexibilidade em relação às linguagens de baixo nível, já que não estão ligadas ao processador utilizado ¤ Semântica dos termos é mais genérica 27 Tipos de Linguagens ¤ Linguagens Procedurais ¤ C, Pascal, Fortran, Ada, Modula 2, Modula 3 ¤ Subtipo das linguagens estruturadas ¤ Possuem uma estrutura de controle que organiza de forma mais clara e eficiente um programa ¤ Programas => Sequência de chamadas de procedimentos 28 Tipos de Linguagens ¤ Linguagens Orientada a Objetos ¤ Simula, Smaltalk, C++,Java 29
Compartilhar