Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Linguagens e Paradigmas de Programação Aula 1 – História e evolução da linguagens de programação Prof. Wilson Hissamu Shirado Contato: hissamu.shirado@gmail.com Linguagens de Programação Definição: Linguagens de programação são usadas para descrever algoritmos; Precisa suportar a definição de ações e prover meios para especificar operações básicas de computação; Permite que os usuários especifiquem como estes passos devem ser sequenciados para resolver um problema; Notação que pode ser usada para especificar algoritmos com precisão;. Classificação das Linguagens de Programação As linguagens de baixo nível são restritas a linguagem de máquina e tem uma forte relação entre as operações implementadas pela linguagem e as operações implementadas pelo hardware. A programação mesmo sendo com algoritmos simples resulta em longos programas, o que dificulta o processo de validação e detecção de erros. O cálculo de endereços de memória devem ser feitos manualmente, com um árduo trabalho e uma grande probabilidade de erros. Indicada para funções que precisam implementar instruções de máquina específicas A grande eficiência e o reduzido tamanho dos programas desenvolvidos Classificação das Linguagens de Programação Classificação das Linguagens de Programação As linguagens de alto nível aproximam-se das linguagens utilizadas por humanos para expressar problemas e algoritmos. Cada declaração numa linguagem de alto nível equivale a várias declarações numa linguagem de baixo nível A vantagem principal das linguagens de alto nível é a abstração. Provê facilidades para a depuração, como visualização dos valores das variáveis, dos registradores e da pilha. Classificação das Linguagens de Programação Processamento de Linguagens: Problema básico: linguagem de nível mais alto implementada para/em baixo nível Duas abordagens básicas: Programas Interpretados; Programas traduzidos (Compilados). Atividade: Fazer um comparativo entre vantagens e desvantagens de linguagens compiladas e interpretadas 6 Classificação das Linguagens de Programação Interpretação Diretamente executadas Sequência: Obter a próxima instrução (aquela cujo endereço é especificado no indicador de instruções da máquina). Deslocar o indicador de instruções (obtendo o endereço da próxima instrução a ser executada). Decodificar a instrução. Executar a instrução. Classificação das Linguagens de Programação Tradução: traduzidos para versões equivalentes em linguagem de máquina, antes de serem executadas. Sequência: Subprogramas podem ser inicialmente traduzidos para código Assembly (compilador) este pode depois ser traduzido para código relocável (objeto), em linguagem de máquina (montador) em seguida, unidades em código relocável (objeto) podem ser ligadas em uma única unidade relocável /um único código objeto (linker) e, finalmente, o programa inteiro é carregado na memória principal, como código executável de máquina (carregador) Breve atividade... Pesquise na internet quais as vantagens e desvantagens de códigos compilados e interpretados. Programas Compilados Vantagens: Pronto para ser executado; Execução mais rápida compilação somente se tiver sem nenhum erro estruturas de dados mais completas otimização de codigo fonte mais segurança ao código Desvantagens: processo de correção de erro é mais demorado complexidade para compilação necessita de mais memória Programas Interpretados Vantagens Não precisa ser compilado Consome menos memória Correções são mais rápidas de serem realizadas resultado imediato do programa depuração mais simples pode rodar em diversas plataformas Desvantagens Processo de interpretação é mais lento Necessário fornecer o código fonte ao usuário necessita sempre ser lido o código orinal para ser executado verificação de erros acontece durante a execução Evolução histórica das Linguagens de Programação Gerações de linguagens de programação: 1ª Geração; 2ª Geração; 3ª Geração; 4ª Geração; 5ª Geração; nª Geração Primeira geração Remonta aos dias da codificação em linguagem de máquina, surgidas com o início da computação na década de 50, especificamente de 1950 a 1962. A Linguagem de máquina e Assembly representam esta primeira geração das linguagens de programação. Totalmente dependentes da máquina, exibem o mais baixo nível de abstração que uma linguagem pode ser representada Segunda Geração Desenvolvida de 1962 a 1974; Serviu de base para o desenvolvimento das modernas linguagens de programação; Amplo uso com grande familiaridade e aceitação no mercado e a grande quantidade de bibliotecas de software; Permitiram a programação multi-usuário, sistemas de execução em tempo real e desenvolvimento de gerenciadores de base de dados; As linguagens Fortran, Cobol, Algol e algumas extensões como Basic, foram os representantes dessa geração. Terceira geração São caracterizadas pela grande capacidade procedural e estrutural de seus dados - de 1974 a 1986; Possibilidade de criar sistemas distribuídos, incorporar recursos mais inteligentes, e exigir um hardware menos robusto; Categorias: linguagens de propósito geral; Linguagem Algol: aplicações envolvendo desde a área científica a área comercial: linguagens C, Pascal, PL/1 e Modula-2; linguagens especializadas forma sintática não usual; Lisp (lista/símbolos); Prolog (conhecimento); SmallTalk (objetos); APL (vetores) e Forth (microprocessadores). Quarta geração A quarta geração das linguagens de programação foram desenvolvidas a partir de 1986; Geração de sistemas especialistas, o desenvolvimento de inteligência artificial e a possibilidade de execução dos programas em paralelo; Conhecidas também como linguagens artificiais contém uma sintaxe distinta para representação de estruturas de controle e dos dados. Quarta geração categorias: linguagens de consulta, geradoras de programas e outras linguagens (4GL) Consulta: manipular bases de dados, permitindo o gerenciamento de um grande número de informações armazenados em arquivos. Geradoras de programas: criar facilmente programas complexos em linguagens de terceira geração, utilizando bem menos declarações e comandos Outras: apoio à decisão, linguagens utilizadas para modelagem de sistemas, linguagens de prototipação, e linguagens de especificação formal que produzem código de máquina Principais LP’s ao longo da história 957 FORTRAN 1958 ALGOL 1960 LISP 1960 COBOL 1962 APL 1962 SIMULA 1964 BASIC 1964 PL/1 1966 ISWIM 1970 Prolog 1972 C 1986 C++ 1986 CLP(R) 1986 Eiffel 1988 CLOS 1988 Mathematica 1988 Oberon 1990 Haskell 1995 Delphi 1995 Java 1975 Pascal 1975 Scheme 1977 OPS5 1978 CSP 1978 FP 1980 dBase II 1983 Smalltalk 80 1983 Ada 1983 Parlog 1984 Standard ML Tendências atuais Aplicação com metodologias orientadas a objetos. Ambiente de geração automática de código, onde o programador especifica através de ferramentas visuais as características do programa e a ferramenta se encarrega de gerar a codificação na linguagem específica. “Quinta geração ” baseada em métodos de consulta e utilizam comandos escritos em linguagens naturais, permitindo uma fácil comunicação com o computador. Evolução: FORTRAN Desenvolvida a partir da década de 1950; Opção à linguagens de baixo nível (Assembly); Foi a primeira linguagem de programação imperativa; O Fortran permite a criação de programas que primam pela velocidade de execução; Evolução: COBOL A linguagem COBOL (Common Business Language) foi publicada pelo Departamento de Defesa americano em1960, logo após o surgimento de FORTRAN. Sua área de aplicação é a de computação de negócios. Ela teve pouco efeito no desenvolvimento de outras linguagens, em função de sua área específica de aplicação. Desde o seu surgimento, houveram poucas iniciativas de desenvolvimento de novas linguagens de negócios, uma vez que COBOL já atendia aosprincipais requisitos desta área. Evolução: BASIC A linguagem BASIC (Beginner ’ s All-purpose Symbolic Instruction Code) foi projetada em 1964 por dois matemáticos, John Kemeny e Thomas Kurtz, da universidade de Dartmouth; BASIC teve como objetivos: ser uma linguagem fácil de aprender e usar; ser amigável; permitir acessos públicos e privados; considerar o tempo do usuário mais importante que o do computador. As razões para a sua popularidade foram a facilidade de aprendizado para iniciantes e a sua implementação em computadores com memórias pequenas. As versões contemporâneas de BASIC são o QuickBASIC e o Visual BASIC. Evolução: PASCAL A linguagem Pascal, assim como diversas outras linguagens imperativas, evoluiu de ALGOL. Desenvolvida por Niklaus Wirth, que propôs uma versão com pequenas contribuições e alterações de ALGOL 60. Esta versão foi chamada de Pascal (1971) e foi amplamente utilizada Pascal foi projetada para ser uma linguagem de ensino de programação; Em função disso, ela não possui algumas características necessárias para projetos de grande porte, como arrays de tamanhos variáveis. Como características positivas de Pascal estão a simplicidade e a expressividade. Além disso, é uma linguagem um pouco mais segura do que FORTRAN e C. Na metade dos anos 90 a popularidade de Pascal entrou em declínio.a no ensino de linguagens de programação. Evolução: C A linguagem C (1972) deriva de ALGOL 68, CPL, BCPL e B, e foi desenvolvida e implementada por Dennis Ritchie, dos laboratórios BELL; O sistema operacional Unix foi originalmente escrito em linguagem assembly, e posteriormente reescrito em linguagem C; C possui declarações de controle e facilidades de estruturação de dados que permitem o seu uso em diversas áreas de aplicação. Além disso, possui um grande conjunto de operadores.; A inclusão de C em Unix permitiu a sua gratuidade e consequente popularidade. Evolução: ADA Linguagem derivada do Pascal; A linguagem Ada foi criada em função da grande quantidade de linguagens diferentes existentes em computadores do Departamento de Defesa em 1974; O objetivo principal da criação de Ada foi o de desenvolver uma linguagem de alto-nível para sistemas embarcados; Ada possui quatro características principais: pacotes para o encapsulamento de dados, especificações para tipos de dados e procedimentos; manuseio de exceções; procedimentos com tipos genéricos definidos em tempo de execução; execução concorrente de unidades especiais de programas, chamadas de tarefas. A extensão mais recente de Ada (Ada 95) provê o suporte para a programação orientada a objetos e o compartilhamento de dados. Evolução: Smalltalk Os computadores no final dos anos 60 eram usados exclusivamente por programadores profissionais e cientistas. Alan Kay desenvolveu em seu trabalho de doutorado em 1969 uma previsão de que os futuros computadores seriam poderosos, e utilizados por não programadores. Suas idéias foram apoiadas pela Xerox e foi desenvolvida a linguagem Smalltalk (1980). Smalltalk introduziu os conceitos de sistemas de janelas e de desenvolvimento orientado a objetos. Evolução: C++ A linguagem ”C++” (1985) combina as características dos paradigmas imperativo e orientado a objetos (O.O.); C++ evoluiu de C através de uma sequência de modificações para melhorar as suas características imperativas e suportar a O.O.; A parte mais essencial do suporte à orientação a objetos é o mecanismo de classes e objetos. C++ provê uma coleção de classes pré-definidas, juntamente com a possibilidade de o usuário definir suas classes. As classes de C++ podem ser instanciadas inúmeras vezes; C++ tornou-se uma linguagem popular em função de sua compatibilidade com a linguagem C. Evolução: Java Desenvolvida a partir de 1995 pela Sun Microsystems; Busca portabilidade entre diversas plataformas usando o conceito das máquinas virtuais; Possui um mecanismo automático de desalocação de memória, chamado de garbage collection, que livra o programador da tarefa de eliminar variáveis e posições de memória não mais utilizadas; Conversão implícita de tipos de dados de um tipo menor para outro maior, p.ex. de int para float O uso de Java vem crescendo mais do que o das outras linguagens. Dúvidas, Perguntas, Questionamentos?
Compartilhar