• Nenhum resultado encontrado

Paradigmas de Linguagem de Programação. Linguagens de Programação Análise histórica e atual

N/A
N/A
Protected

Academic year: 2021

Share "Paradigmas de Linguagem de Programação. Linguagens de Programação Análise histórica e atual"

Copied!
61
0
0

Texto

(1)

Paradigmas de Linguagem

de Programação

(2)

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”.

(3)

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

(4)

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

(5)

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

(6)

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

(7)

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

(8)
(9)

Classificação das Linguagens de Programação

1 – Quanto ao Nível

2 – Quanto a Geração

3 – Quanto ao Paradigma

(10)

Classificação das LPs - Quanto ao Nível

1.1 – Baixo Nível

1.2 – Médio Nível

1.3 – Alto Nível

(11)

Classificação das LPs - Quanto ao Nível –

Baixo Nível

▪ São linguagens voltadas para a máquina;

(12)

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.

(13)

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.

(14)

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.

(15)

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;

(16)

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.

(17)

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

(18)

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

(19)

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:

(20)
(21)

Classificação das LPs - Quanto a Geração –

Segunda Geração

Projeto em Delphi ➔ 22 linhas, revertendo para Assembly terá aproximadamente

15 mil linhas!

(22)

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

(23)

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.

(24)

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

(25)

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).

(26)

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).

(27)
(28)

Classificação das LPs - Quanto a Geração –

Quarta Geração

▪ Linguagens orientadas à aplicação

▪ Os programas escritos em linguagens da 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

(29)

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

(30)

Classificação das LPs – Quanto ao Paradigma

Recapitulando a definição de paradigma

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.

(31)

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,

como

vimos anteriormente, é a forma que uma linguagem resolve um ou mais tipos

de problemas

Pode dizer-se que um paradigma é um ponto de vista que determina como uma

realidade é entendida e como se atua sobre ela

(32)

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

(33)

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

(34)

Classificação das LPs – Quanto ao Paradigma

(35)

Histórico das Linguagens de Programação

▪ As linguagens a seguir foram selecionadas com base nos rankings

TIOBE

e

IEEE

Spectrum

;

▪ Dados de 2017 visualizados em 20181;

▪ 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.

(36)
(37)

Ranking IEEE Spectrum

(38)
(39)

Ranking IEEE Spectrum

(40)
(41)

Ranking TIOBE

(42)

▪ 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

(43)

#include <stdio.h>

int main(void) {

for(int i=0; i<4; i++)

printf("Hello, world!\n");

return 0; }

(44)

▪ 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;

(45)

#include <iostream>

int main()

{

for(int i=0; i<4; i++)

std::cout << "Hello, world!\n";

}

(46)

▪ 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++;

(47)

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!"); }

}

(48)

▪ 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

(49)

for x in range(0, 4):

print ("Hello, World!")

(50)

▪ 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

(51)

for (var i = 0; i < 4; i++) {

print("Hello, world!")

}

(52)

▪ 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

(53)

<?php

for($i = 0; $i < 4; $i++){

echo "Hello, world! ";

}

?>

(54)

▪ 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;

(55)

using System; using System.Collections.Generic; using System.Linq; using System.Text.RegularExpressions; namespace Rextester {

public class Program {

public static void Main(string[] args) {

for(int i=0; i<4; i++)

Console.WriteLine("Hello, world!"); }

} }

(56)

▪ 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;

(57)

fun main(args: Array<String>) {

for (i in 1..4)

println("Hello, world!")

}

(58)

▪ 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.

(59)

for i in 0..<4 {

print("Hello, world!")

}

(60)

▪ 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.

(61)

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

.

Referências

Documentos relacionados

– Por padrão, as variáveis são sempre globais (Escopo léxico).. • Para indicar variáveis locais, usa-se

– Especializadas no desenvolvimento de programas para interface entre o programa e o hardware da máquina – Lidam com eventos imprevistos como erros. – Incluem

Paradigmas de Linguagem de Programação em Python Prof... Paradigmas de Linguagem de Programação em Python

n  Independentemente das necessidades de um projeto de desenvolvimento de software específico, um conjunto geral de características das linguagens de programação pode ser

Caso contrário, cria uma tabela de símbolos e gera o código intermediário, que são passados para a fase de síntese.. Síntese – (front end) constrói o programa objeto

Compreender melhor noções de programação básica, de C++, de Cobol, de Java, de TML, de Ajax, de hardware, de Windows e de Linux faz parte para desenvolver qualquer tipo

De acordo com os resultados, os aspectos positivos mais recorrentes foram: (a) linguagem mais adequada para a proposta da disciplina; (b) atenção ao gerenciamento da

• A alteração entre os modos de operação pode ser feita por uma chave ou pelo próprio software de