Buscar

PARADIGMAS DE LINGUAGENS DE PROGRAMAÇÃO Aula1

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

Continue navegando