Bacharelado em Ciência da Computação PARADIGMAS DE PROGRAMAÇÃO Histórico de Linguagens de Programação Prof. Claudinei Dias email: prof.claudinei.dias@gmail.com
Objetivos Geral: Estudar as características dos principais modelos de programação quanto a estruturação, interação e a relação entre as linguagens de programação. Estudar os tipos de técnicas de implementação utilizados para o desenvolvimento de programas e solução de problemas. Específicos: Estudar os custos de implementação; Comparar técnicas entre linguagens de programação; Estudar as estruturas conceituais para resolver problemas; Entender alguns dos principias conflitos entre os recursos de linguagens. 2
Plano de Ensino 1. Histórico de linguagens de programação 1.1. Motivação 1.2. Histórico 1.3. Paradigmas de programação 3
Motivação Adquirir habilidades de expressar ideias; A profundidade da soluções está relacionada pelos recursos da linguagem com o qual está trabalhando; Avanço do poder computacional e das tecnologias; Aperfeiçoa-se a compreensão do significado da implementação; Aprimora-se a habilidade de aprender novas linguagens. 4
Histórico 1950... FORTRAN 1960... ALGOL-60 COBOL SIMULA LISP 1970... Pascal Smalltalk PROLOG 1980... Ada DBASE II Godel 1990... Haskel Java C++ Delphi ALGOL-60 Modula2 PL BASIC OO Imperativo Funcional Lógico C ML Miranda 5
Programação Imperativa Fortran, Pascal, PL, C Programação Orientada a Objetos Java, C++, Smalltalk Programação Funcional Lisp, Haskel Programação Lógica Prolog 6
Paradigma Imperativo Primeiro paradigma que surgiu Programas desenvolvidos por variáveis e comandos Também denominado de paradigma procedural Vantagens: Eficiência (modelo de Von Neumann) Modelagem natural de aplicações do mundo real Paradigma dominante Problemas: Relacionamento indireto E/S ocasionando difícil legibilidade, erros durante manutenção 7
Paradigma Orientado a Objetos É um sub-paradigma do imperativo O diferencial é a metodologia quanto a modelagem do sistema É estruturada em módulos (classes) que agrupam operações (métodos) Vantagens: Todas as do paradigma imperativo Classes: modularidade, reusabilidade e extensibilidade Problemas: Semelhantes ao do imperativo 8
Paradigma Funcional Modelagem por funções que descrevem relações explicitas e precisa Estilo declarativo sem comandos como atribuição Vantagens: Manipulação de programas mais simples Prova de propriedade Transformações de otimização Problemas: Mecanismos primitivos de E/S 9
Paradigma Lógico Modelagem com relações entre E/S Estilo declarativo mas na prática assume características imperativas Vantagens: Todas do funcional Alto nível de abstração Problemas: Todos do paradigma funcional Não possuem tipos de dados 10
Características importantes em LP Legibilidade É o quanto o código é de fácil leitura e compreensão, quanto maior a legibilidade, mais fácil será de entender o código e achar erros de programação. Por exemplo o uso do goto (como o switch, case em C), dificulta o acompanhamento lógico da leitura do código, ou também o operador * em C, que é usado tanto para operação de multiplicação quanto para uso de ponteiros. (Mattos, Renato. Linguagem de Programação). 11
Características importantes em LP Confiabilidade É o quanto pode-se confiar em um código de uma linguagem, ou seja, uma linguagem com uma boa confiabilidade, não propicia erros de programação, assim sendo a confiabilidade está relacionada a legibilidade. Quando uma linguagem possui recurso de tratamento de exceções, também aumenta a confiabilidade, pois é mais difícil o programador esquecer de tratar a exceção ou de tratar de forma errada. (Canalle, Gabrielle K. ; de Araújo C. Everton. C/C++ e Java: Principais Características). 12
Características importantes em LP Eficiência É o quanto os códigos são mais eficientes, atingem seus objetivos de maneira rápida, segura. Essa característica pode variar de código para código, um site de um banco, por exemplo, é preciso ser seguro, rápido, de fácil acesso, de fácil uso, etc. Essas características são critérios de eficiência. 13
Características importantes em LP Facilidade de aprendizado Está diretamente relacionado à legibilidade, pois se um código não tem boa legibilidade, não tem uma fácil compreensão do código, e não terá um aprendizado fácil. Facilidade de Aprendizado é o quanto é simples para algum programador que não conheça a linguagem, aprende-la. Uma linguagem com uma boa facilidade de aprendizado, tem uma boa legibilidade e é simples de entende-la. 14
Características importantes em LP Ortogonalidade É a capacidade da linguagem de programação de deixar o programador usar seus conceitos básicos sem que se tenha efeitos não desejados ou aleatórios, ou seja, quanto menos exceções de código a linguagem permite. Por exemplo a não necessidade de declaração do tipo da variável, é ruim tanto para a legibilidade quanto para a ortogonalidade. (Mattos, Renato. Linguagem de Programação). 15
Características importantes em LP Modificabilidade São as facilidade oferecidas pela linguagem para que se mude uma parte do código tendo que mudar o mínimo possível as outras partes. Por exemplo uma linguagem Orientada a Objetos possui essa característica, pois é uma característica forte do próprio paradigma, outro exemplo são as constantes que algumas linguagem permitem ser declaradas, assim se for necessário mudar a constate, muda-se uma vez na sua declaração e não no seu uso. (Mattos,Renato. Linguagem de Programação). 16
Características importantes em LP Portabilidade É a capacidade do código de fazer a mesma coisa em diferentes plataformas ou sistemas operacionais independentemente da ferramenta utilizada para traduzi-lo. Assim um mesmo programa pode ser utilizado em diversos ambientes e situações sem que seja necessário fazer uma reescrita de código para adaptá-lo em um novo ambiente ou situação (Mattos,Renato. Linguagem de Programação). 17
Características importantes em LP Reusabilidade É a capacidade de se utilizar o mesmo código, ou trecho do código em outra situação, outra característica forte do paradigma orientado a objetos, assim as linguagem que seguem a esse paradigma são de alta reusabilidade. Essa é uma característica muito boa que se faz ganhar bastante tempo e consequentemente, dinheiro quando se trata de se desenvolver vários softwares. 18
Características importantes em LP x 19
Bibliografia da Disciplina BIBLIOGRAFIA : PRATT, T. W., ZELKOVITZ, M. Programming Languages: Design and Implementation. 4ªed. Prentice Hall, 2001. ISBN 0130276782. MICHELL, JOHH C. Concepts in Programming Languages. Cambridge University Press, 2003. SEBESTA, R.W. Conceitos de Linguagens de Programação. 5a ed. Editora Bookman. 2003. ISBN 8536301716. VAREJÃO, F.M. Linguagens de Programação. Editora Campus. 2005. ISBN 8535213171. 20
Bacharelado em Ciência da Computação PARADIGMAS DE PROGRAMAÇÃO Histórico de Linguagens de Programação Prof. Claudinei Dias email: prof.claudinei.dias@gmail.com