Baixe o app para aproveitar ainda mais
Prévia do material em texto
9/8/2018 1 Paradigmas de Linguagem de Programação Evolução das Linguagens de Programação Histórico das Linguagens de Programação ▪ Década de 40: código de máquina ▪ No início da década não havia nenhuma linguagem de programação de alto nível e nem linguagem de montagem; ▪ Problemas no desenvolvimento com código de máquina motivaram inventar os assemblers e as linguagens de montagem; ▪ “Problemas que demoravam duas semanas para rodar em código de máquina, podiam ser programados em algumas horas usando Speedcoding”. ▪ Linguagens ▪ Short code, Speedcoding. Professor Ariel da Silva Dias - www.arieldias.com 9/8/2018 2 Histórico das Linguagens de Programação ▪ Década de 50: Programação Alto Nível ▪ Formatação de entrada e saída; ▪ Nome de variáveis de até 6 caracteres (no Fortran 1, pois no Fortran 0 eram apenas 2 caracteres); ▪ Instrução de seleção IF e a instrução DO LOOP; ▪ Interesse por IA em meados do século; ▪ Fortran mudou drasticamente e para sempre o uso de computadores. ▪ Linguagens ▪ Primeira linguagem de alto nível compilada (Imperativa): Fortran ▪ Linguagem para Inteligência Artificial (Funcional): LISP Professor Ariel da Silva Dias - www.arieldias.com Histórico das Linguagens de Programação ▪ Década de 60: Independência de Arquitetura ▪ Algol influenciou as linguagens de programação subsequente; ▪ Permitiu dois meios diferentes de passagem de parâmetros: por valor e por nome; ▪ Permitiu que os procedimentos fossem recursivos; ▪ Surge o acesso por terminal remoto a um computador (antes disso, a maioria dos programas eram introduzidos por cartão perfurados ou fita de papel); ▪ Linguagens ▪ Paradigma Estruturado: ALGOL ▪ Paradigma Orientado a Objeto: COBOL ▪ Paradigma Procedural: Basic Professor Ariel da Silva Dias - www.arieldias.com 9/8/2018 3 Histórico das Linguagens de Programação ▪ Década de 70: Simplicidade de Projeto ▪ Linguagem mais segura – PASCAL; ▪ A academia troca o ensino do FORTRAN para PASCAL; ▪ Pouca contribuição para o desenvolvimento de novas linguagens; ▪ Instruções de controle adequadas e facilidades de estruturação de dados; ▪ Linguagens ▪ Paradigma Estruturado: PASCAL ▪ Paradigma Imperativo: C Professor Ariel da Silva Dias - www.arieldias.com Histórico das Linguagens de Programação ▪ Década de 80: modularização ▪ Ênfase em mecanismos de LP e abstrações ▪ Correção de programas: verificação de tipos, exceções ▪ Programação em tempo real, e concorrente e distribuída ▪ Programação orientada a objetos (herança) ▪ Linguagens ▪ Programação distribuída: ADA 83 ▪ Orientada a Objetos: Smalltalk Professor Ariel da Silva Dias - www.arieldias.com 9/8/2018 4 Histórico das Linguagens de Programação ▪ Década de 90: base na estrutura ▪ Estruturação de Dados: encapsulamento ▪ Estruturação da Computação: classe ▪ Estruturação do Programa: classes e objetos ▪ Programação para Internet: plataforma neutra ▪ Linguagens ▪ Object Pascal ▪ C++ ▪ ADA 95 ▪ Java Professor Ariel da Silva Dias - www.arieldias.com Histórico das Linguagens de Programação Professor Ariel da Silva Dias - www.arieldias.com 9/8/2018 5 Classificação das Linguagens de Programação 1 – Quanto ao Nível 2 – Quanto a Geração 3 – Quanto ao Paradigma Professor Ariel da Silva Dias - www.arieldias.com Classificação das LPs - Quanto ao Nível 1.1 – Baixo Nível 1.2 – Médio Nível 1.3 – Alto Nível Professor Ariel da Silva Dias - www.arieldias.com 9/8/2018 6 Classificação das LPs - Quanto ao Nível – Baixo Nível ▪ São linguagens voltadas para a máquina; ▪ Genericamente são chamadas de linguagens Assembly. Professor Ariel da Silva Dias - www.arieldias.com Classificação das LPs - Quanto ao Nível – Baixo Nível ▪ Vantagens: Maior velocidade de processamento; ocupa menos espaço na memória. ▪ Desvantagens: Pouca portabilidade, logo, um código gerado para um tipo de processador não serve para outro; difícil de ser programado. Professor Ariel da Silva Dias - www.arieldias.com 9/8/2018 7 Classificação das LPs - Quanto ao Nível – Médio Nível ▪ São linguagens voltadas ao ser humano e a máquina; ▪ Possuem comandos muito simples e outros muito complicados; ▪ Exemplo: Linguagem C – Pode-se acessar registros do sistemas, acessar diretamente a memória e, ao mesmo tempo, realizar operações de alto nível como condicionais e estrutura de repetição. Professor Ariel da Silva Dias - www.arieldias.com Classificação das LPs - Quanto ao Nível – Baixo Nível ▪ Vantagens: Linguagens poderosas, permitindo o desenvolvimento de diversos tipos de softwares, desde os mais simples aos mais complexos. ▪ Desvantagens: Alguns comandos com sintaxe muito difícil de compreender. Professor Ariel da Silva Dias - www.arieldias.com 9/8/2018 8 Classificação das LPs - Quanto ao Nível – Alto Nível ▪ São linguagens voltadas ao ser humano; ▪ Utilizam sintaxe mais estruturada, tornando o seu código mais fácil de entender e de reparar; ▪ São linguagens independentes da arquitetura do computador*; Professor Ariel da Silva Dias - www.arieldias.com Classificação das LPs - Quanto ao Nível – Alto Nível ▪ Vantagens: por serem compiladas ou interpretadas, possuem maior portabilidade, podendo ser executadas em várias plataformas com o mínimo de alterações; Por ser uma linguagem menos estruturada, a programação torna-se mais fácil ▪ Desvantagens: As rotinas geradas (em linguagem de máquina) são mais genéricas e, por tanto, mais complexas e assim, são mais lentas e ocupam mais memória. Professor Ariel da Silva Dias - www.arieldias.com 9/8/2018 9 Classificação das LPs - Quanto a Geração 2.1 – 1ª Geração 2.2 – 2ª Geração 2.3 – 3ª Geração 2.4 – 4ª Geração 2.5 – 5ª Geração Professor Ariel da Silva Dias - www.arieldias.com Classificação das LPs - Quanto a Geração – Primeira Geração ▪ Os primeiros computadores eram programados em linguagem de máquina, em notação binária ▪ A instrução 0010 0001 0110 1100, quando executada, realiza a soma do valor armazenado no registrador 0001, com o dado armazenado na posição de memória 01101100 Professor Ariel da Silva Dias - www.arieldias.com 9/8/2018 10 Classificação das LPs - Quanto a Geração – Segunda Geração ▪ Compreende as linguagens simbólica ou de montagem (Assembly); ▪ Foi projetada para minimizar as dificuldades da programação em notação binária ▪ Códigos de operação e endereços binários foram substituídos por mnemônicos: mov, mul, add, label, goto ▪ Assim, a instrução de máquina 0010 0001 0110 1100 evoluiu para: ADD R1, Total Professor Ariel da Silva Dias - www.arieldias.com Classificação das LPs - Quanto a Geração – Segunda Geração Professor Ariel da Silva Dias - www.arieldias.com 9/8/2018 11 Classificação das LPs - Quanto a Geração – Segunda Geração Projeto em Delphi ➔ 22 linhas, revertendo para Assembly terá aproximadamente 15 mil linhas! Professor Ariel da Silva Dias - www.arieldias.com Classificação das LPs - Quanto a Geração – Terceira Geração ▪ Linguagem orientada ao usuário ▪ Surgiram na década de 60 ▪ Algumas são voltadas a solução de problemas científicos: Fortran, Pascal, Algol. ▪ Outras são voltadas para solução de problemas comerciais: Cobol ▪ Linguagens Procedimentais (procedurais ou imperativas) e Linguagens Declarativas Professor Ariel da Silva Dias - www.arieldias.com 9/8/2018 12 Classificação das LPs - Quanto a Geração – Terceira Geração ▪ Linguagem Procedimentais: o programa específica uma sequência de passos (procedimentos) para solucionar um problema ▪ As instruções pertencem geralmente a três classes: - instruções de entrada e saída - instruções de cálculos aritméticos e lógicos - instruções de controle de fluxo de execução. Professor Arielda Silva Dias - www.arieldias.com Classificação das LPs - Quanto a Geração – Terceira Geração ▪ Linguagens Declarativas: dividem-se em duas classes: ▪ Funcionais - Baiseiam-se na teoria das funções recursivas (LISP) ▪ Lógicas - A base é a lógica matemática, um programa declara fatos (dados e relações entre eles) e cláusulas lógicas (regras de dedução), permitindo deduzir novas verdades (PROLOG) Professor Ariel da Silva Dias - www.arieldias.com 9/8/2018 13 Classificação das LPs - Quanto a Geração – Terceira Geração Exemplo Prolog: gosta(joão,flores). gosta(joão,maria). gosta(paulo,maria). Em seguida realizaremos uma questão: ?- gosta(joão,X). Professor Ariel da Silva Dias - www.arieldias.com Classificação das LPs - Quanto a Geração – Terceira Geração Exemplo Prolog: Dados os fatos: pai(arthur,silvio). pai(arthur,carlos). pai(carlos,xico). pai(silvio,ricardo). Utilizaremos a seguinte regra: avo(X,Z) :- pai(X,Y), pai(Y,Z). Se colocarmos as querys abaixo, qual serão as saídas (YES ou NO)? ?- avo(arthur,xico),avo(arthur,ricardo). ?- avo(carlos,arthur),avo(silvio,arthur). Professor Ariel da Silva Dias - www.arieldias.com 9/8/2018 14 Classificação das LPs - Quanto a Geração – Terceira Geração Professor Ariel da Silva Dias - www.arieldias.com Classificação das LPs - Quanto a Geração – Quarta Geração ▪ Linguagens orientadas à aplicação ▪ Os programas escritos em linguagens de quarta geração necessitam de menor número de linhas de código ▪ Em geral, essas linguagens são projetadas para atender a classes específicas de aplicações ▪ Facilita a programação e o produto final é intuitivo para o usuário* ▪ Mais agilidade para o desenvolvimento de aplicações ▪ Minimiza o problema de depuração ▪ Exemplo de linguagens: SQL, PHP Professor Ariel da Silva Dias - www.arieldias.com 9/8/2018 15 Classificação das LPs - Quanto a Geração – Quinta Geração ▪ São usadas principalmente na área de IA – sistemas especialistas, processadores de linguagem natural e sistemas com bases de conhecimento ▪ Facilitam a representação do conhecimento que é essencial para a simulação de comportamentos inteligentes ▪ Armazena conhecimento complexo de modo que a máquina pode obter inferências a partir da informação codificada Professor Ariel da Silva Dias - www.arieldias.com Classificação das LPs – Quanto ao Paradigma Dicionário: 1. Algo que serve de exemplo geral ou de modelo; 2. Conjunto das formas que servem de modelo de derivação ou de flexão; 3. Conjunto dos termos ou elementos que podem ocorrer na mesma posição ou contexto de uma estrutura. Professor Ariel da Silva Dias - www.arieldias.com 9/8/2018 16 Classificação das LPs – Quanto ao Paradigma ▪ Forma utilizada para resolver um problema computacional; ▪ O paradigma de uma linguagem de programação é a sua identidade Pode dizer-se que um paradigma é um ponto de vista que determina como uma realidade é entendida e como se atua sobre ela Professor Ariel da Silva Dias - www.arieldias.com Classificação das LPs – Quanto ao Paradigma Algumas linguagens criadas durante a história, introduziram novas formas de se pensar sobre programação, resultando em formas (paradigmas) distintas de soluções para problemas de algoritmos Fortran: imperativa LISP: funcional Simula: orientada a objetos Prolog: lógica Professor Ariel da Silva Dias - www.arieldias.com 9/8/2018 17 Classificação das LPs – Quanto ao Paradigma ▪ Outras linguagens são evolução de linguagens mais antigas ▪ Exemplo: Linguagem C++ ➔ Trata-se de uma evolução da linguagem C (imperativa) com características de orientação a objetos, importadas de Simula ▪ Exemplo: Linguagem C++ ➔ Paradigma orientada a objetos + paradigma concorrente ▪ Exemplo: ADA ➔ Paradigma Imperativo + paradigma concorrente Professor Ariel da Silva Dias - www.arieldias.com Classificação das LPs – Quanto ao Paradigma Professor Ariel da Silva Dias - www.arieldias.com 9/8/2018 18 Alguns dos Principais Paradigmas ▪ Paradigma Imperativo (estado, atribuição, sequência) ▪ Basic, Pascal, C, Assembly, ADA ▪ Paradigma Funcional (função, aplicação, avaliação) ▪ Lisp, Miranda, Haskell, SCHEME ▪ Paradigma Lógico (relação, dedução) ▪ Prolog ▪ Paradigma Orientado a Objetos (objeto, troca de mensagem) ▪ C++, JAVA, Eiffel, Ocaml, Python ▪ Paradigma Concorrente (processo, comunicação – síncrona ou assíncrona) ▪ Ada, JAVA Professor Ariel da Silva Dias - www.arieldias.com Histórico das Linguagens de Programação ▪ As linguagens a seguir foram selecionadas com base nos rankings TIOBE e IEEE Spectrum; ▪ Como os rankings sofrem atualizações constantes, serão apresentadas as linguagens que ficaram nos primeiros lugares e outras com tendência de subir no ranking. Professor Ariel da Silva Dias - www.arieldias.com 9/8/2018 19 Ranking IEEE Spectrum Figura1 – Ranking IEEE Spectrum (2017) Professor Ariel da Silva Dias - www.arieldias.com Ranking IEEE Spectrum Figura2 – Ranking IEEE Spectrum – WEB (2017) Professor Ariel da Silva Dias - www.arieldias.com 9/8/2018 20 Ranking IEEE Spectrum Figura3 – Ranking IEEE Spectrum – MOBILE (2017) Professor Ariel da Silva Dias - www.arieldias.com Ranking IEEE Spectrum Figura4 – Ranking IEEE Spectrum – Acadêmico e Empresarial (2017) Professor Ariel da Silva Dias - www.arieldias.com 9/8/2018 21 Ranking IEEE Spectrum Figura5 – Ranking IEEE Spectrum – Embarcado (2017) Professor Ariel da Silva Dias - www.arieldias.com Ranking TIOBE Figura6 – Ranking TIOBE (2017) Professor Ariel da Silva Dias - www.arieldias.com 9/8/2018 22 ▪ História ▪ Década de 70: Dennis Ritchie – AT&T Bell Labs; ▪ Seu uso inicial ficou restrito a alguns laboratórios; ▪ 1978 - Kernighan e Ritchie lançaram o livro The C Programming Language; ▪ A partir desta publicação, C ganhou novas características: Biblioteca padrão de I/O, structs, long int, unsign int; ▪ De 1983 a 1989 comitê ANSI. ▪ Características ▪ Paradigma Imperativo; ▪ Acesso direto a memória e disco. C (2º IEEE, 2º TIOBE) Professor Ariel da Silva Dias - www.arieldias.com #include <stdio.h> int main(void) { for(int i=0; i<4; i++) printf("Hello, world!\n"); return 0; } Hello, World! Professor Ariel da Silva Dias - www.arieldias.com 9/8/2018 23 ▪ História ▪ Década de 80: Bjarne Stroustrup; ▪ Objetivo inicial era criar uma nova versão para o Kernel Unix; ▪ Durante o desenvolvimento do novo kernel, novas funcionalidades foram adicionadas a linguagem C; ▪ O nome inicial era C com classes, 3 anos depois passou a ser chamada de C++. ▪ Características ▪ Multi-Paradigma; ▪ Compatibilidade com C; ▪ Portabilidade. C++ (4º IEEE, 3º TIOBE) Professor Ariel da Silva Dias - www.arieldias.com #include <iostream> int main() { for(int i=0; i<4; i++) std::cout << "Hello, world!\n"; } Hello, World! Professor Ariel da Silva Dias - www.arieldias.com 9/8/2018 24 ▪ História ▪ Década de 90: Projeto Green – Sun Microsystem; ▪ Criar novas tecnologias que permitissem a comunicação entre diferentes dispositivos (TV, vídeo cassete, etc); ▪ O projeto não deu certo – origem à Linguagem Java; ▪ A expansão da internet permitiu o crescimento e popularização da linguagem. ▪ Características ▪ Sintaxe similar a outras mais antigas como C e C++; ▪ Paradigma Orientado a Objetos; ▪ Portabilidade: WORA. JAVA (3º IEEE, 1º TIOBE) Professor Ariel da Silva Dias - www.arieldias.com import java.util.*; import java.lang.*; class Rextester { public static void main(String args[]) { for(int i=0; i<4; i++) System.out.println("Hello, World!"); } } Hello, World! Professor Ariel da Silva Dias -www.arieldias.com 9/8/2018 25 ▪ História ▪ Início dos anos 90 – Instituto de Pesquisa Nacional para Matemática e Ciência da Computação (CWI) – Países Baixos; ▪ Parte da sintaxe deriva de C; ▪ Terceira versão da linguagem foi lançada em dezembro de 2008; ▪ Características ▪ Legibilidade do código, com sintaxe moderna e clara; ▪ Suporte a múltiplos paradigmas de programação; ▪ Poema: The Zen of Python Python (1º IEEE, 5º TIOBE) Professor Ariel da Silva Dias - www.arieldias.com for x in range(0, 4): print ("Hello, World!") Hello, World! Professor Ariel da Silva Dias - www.arieldias.com 9/8/2018 26 ▪ História ▪ JavaScript ≠ Java; ▪ Desenvolvida pela Netscape com nome de LiveScript; ▪ Criada para navegadores com objetivo de proporcionar maior interatividade nas páginas; ▪ Sua última versão é de março de 2011; ▪ Influenciada por C e Java; ▪ Características ▪ Não é exatamente uma linguagem de programação; ▪ Pode ser executada dentro de programas ou dentro de outras linguagens; ▪ Client-Side. JavaScript (7º IEEE, 7º TIOBE) Professor Ariel da Silva Dias - www.arieldias.com for (var i = 0; i < 4; i++) { print("Hello, world!") } Hello, World! Professor Ariel da Silva Dias - www.arieldias.com 9/8/2018 27 ▪ História ▪ Criada em 1994; ▪ Em 1997 foi lançado um pacote trazendo um interpretador de comandos SQL; ▪ A terceira versão (PHP 3) contava com o recurso de orientação a objetos; ▪ Em 1998, Zeev e Gutmans escreveram o PHP 4, abandonando completamente o PHP 3; ▪ O PHP 5 veio para corrigir algumas falhas em relação a OO presente no PHP5; ▪ Características ▪ Modularizada, ideal para servidores web; ▪ Suporte a programação estruturada e a orientação a objetos; ▪ Server-side. PHP (8º IEEE, 6º TIOBE) Professor Ariel da Silva Dias - www.arieldias.com <?php for($i = 0; $i < 4; $i++){ echo "Hello, world! "; } ?> Hello, World! Professor Ariel da Silva Dias - www.arieldias.com 9/8/2018 28 ▪ História ▪ Julho 2002: Microsoft; ▪ Faz parte de um conjunto de ferramentas oferecidas na plataforma .NET, a qual foi criada para melhorar a comunicação entre diferentes tecnologias utilizadas pela empresa; ▪ Pensava-se que C# era uma sobreposição de 4 símbolos +; ▪ Porém, a cerquilha se refere ao sinal sustenido, o qual aumenta em meio tom uma nota; ▪ Foram realizadas 6 versões, e a sétima está em desenvolvimento. ▪ Características ▪ Paradigma orientado a objetos; ▪ Interface Web; ▪ Componentes de softwares de diferentes linguagens podem interagir; ▪ Sintaxe simples e de fácil compreensão. C# (5º IEEE, 4º TIOBE) Professor Ariel da Silva Dias - www.arieldias.com public class Program { public static void Main(string[] args) { for(int i=0; i<4; i++) Console.WriteLine("Hello, world!"); } } Hello, World! Professor Ariel da Silva Dias - www.arieldias.com 9/8/2018 29 ▪ História ▪ Junho de 2011 - JetBrains; ▪ Segundo o criador, Dmitry Jemerov, a maioria das linguagens não possuíam as características que eles estavam procurando; ▪ O objetivo era criar uma linguagem que compilasse tão ou mais rápido que o java; ▪ Em 2017 o google anunciou suporte oficial para o Kotlin; ▪ Características ▪ Paradigma orientado a objetos; ▪ Interoperável com código java; ▪ Influenciada por java, C# e Scala. Kotlin (- IEEE, 44 TIOBE) Professor Ariel da Silva Dias - www.arieldias.com fun main(args: Array<String>) { for (i in 1..4) println("Hello, world!") } Hello, World! Professor Ariel da Silva Dias - www.arieldias.com 9/8/2018 30 ▪ História ▪ Apresentada pela Apple em 2015; ▪ Sua criação levou 5 anos; ▪ A linguagem é uma alternativa a objective-c; ▪ Linguagem open source – liberdade para os programadores; ▪ Características ▪ Uso geral; ▪ Multi-paradigmática. Swift (10º IEEE, 12º TIOBE) Professor Ariel da Silva Dias - www.arieldias.com for i in 0..<4 { print("Hello, world!") } Hello, World! Professor Ariel da Silva Dias - www.arieldias.com 9/8/2018 31 ▪ O programador deve escolher a mais adequada para usar em cada aplicação; ▪ A escolha da LP está diretamente ligada a três fatores: ▪ Complexidade do sistema a ser desenvolvido; ▪ Características peculiares da aplicação; ▪ Facilidades que as linguagens oferecem ao suporte de metodologias de desenvolvimento. Escolha de uma linguagem de programação Professor Ariel da Silva Dias - www.arieldias.com ▪ Veja a atividade no site www.arieldias.com Atividade Professor Ariel da Silva Dias - www.arieldias.com 9/8/2018 32 Referências ▪ Material de aula professor Celso Olivete Júnior UNESP ▪ SEBESTA, Robert W. Conceitos de linguagens de programação. 9ª ed. Porto Alegre: Bookman, 2011. 792 p. ISBN 978-85-7780-791-8. ▪ IEEE Spectrum. Disponível em: https://spectrum.ieee.org/computing/software/the-2017-top-programming- languages. ▪ TIOBE. Disponível em: https://www.tiobe.com/tiobe-index/. Professor Ariel da Silva Dias - www.arieldias.com
Compartilhar