15/03/2018
1
Professor Ariel da Silva DiasEvolução das Principais 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áquinamotivaram inventar os assemblers e as linguagens demontagem;
◦ “Problemas que demoravam duas semanas para rodar emcódigo de máquina, podiam ser programados em algumashoras usando Speedcoding”.
Linguagens◦ Short code, Speedcoding.
Professor Ariel da Silva Dias - www.arieldias.com
15/03/2018
2
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 noFortran 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 decomputadores.
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
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 introduzidospor 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
15/03/2018
3
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 novaslinguagens;
◦ Instruções de controle adequadas e facilidades deestruturação de dados;
Linguagens◦ Paradigma Estruturado: PASCAL
◦ Paradigma Imperativo: C
Professor Ariel da Silva Dias - www.arieldias.com
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
15/03/2018
4
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
Figura 1 – Genealogia das Linguagens de Programação de alto nível
Professor Ariel da Silva Dias - www.arieldias.com
15/03/2018
5
1 – Quanto ao Nível
2 – Quanto a Geração
3 – Quanto ao Paradigma
Professor Ariel da Silva Dias - www.arieldias.com
1.1 – Baixo Nível
1.2 – Médio Nível
1.3 – Alto Nível
Professor Ariel da Silva Dias - www.arieldias.com
15/03/2018
6
São linguagens voltadas para a máquina;
Genericamente são chamadas de linguagensAssembly.
Professor Ariel da Silva Dias - www.arieldias.com
Vantagens: Maior velocidade de processamento;ocupa menos espaço na memória.
Desvantagens: Pouca portabilidade, logo, umcódigo gerado para um tipo de processador nãoserve para outro; difícil de ser programado.
Professor Ariel da Silva Dias - www.arieldias.com
15/03/2018
7
São linguagens voltadas ao ser humano e amáquina;
Possuem comandos muito simples e outros muitocomplicados;
Exemplo: Linguagem C – Pode-se acessar registrosdo sistemas, acessar diretamente a memória e, aomesmo tempo, realizar operações de alto nívelcomo condicionais e estrutura de repetição.
Professor Ariel da Silva Dias - www.arieldias.com
Vantagens: Linguagens poderosas, permitindo odesenvolvimento de diversos tipos de softwares,desde os mais simples aos mais complexos.
Desvantagens: Alguns comandos com sintaxemuito difícil de compreender.
Professor Ariel da Silva Dias - www.arieldias.com
15/03/2018
8
São linguagens voltadas ao ser humano;
Utilizam sintaxe mais estruturada, tornando o seucódigo mais fácil de entender e de reparar;
São linguagens independentes da arquitetura docomputador*;
Professor Ariel da Silva Dias - www.arieldias.com
Vantagens: por serem compiladas ou interpretadas,possuem maior portabilidade, podendo serexecutadas em várias plataformas com o mínimode alterações; Por ser uma linguagem menosestruturada, a programação torna-se mais fácil
Desvantagens: As rotinas geradas (em linguagemde máquina) são mais genéricas e, por tanto, maiscomplexas e assim, são mais lentas e ocupam maismemória.
Professor Ariel da Silva Dias - www.arieldias.com
15/03/2018
9
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
Os primeiros computadores eram programados emlinguagem de máquina, em notação binária
A instrução 0010 0001 0110 1100, quandoexecutada, realiza a soma do valor armazenado noregistrador 0001, com o dado armazenado naposição de memória 01101100
Professor Ariel da Silva Dias - www.arieldias.com
15/03/2018
10
Compreende as linguagens simbólica ou de montagem(Assembly);
Foi projetada para minimizar as dificuldades daprogramação em notação binária
Códigos de operação e endereços binários foramsubstituídos por mnemônicos: mov, mul, add, label,goto
Assim, a instrução de máquina 0010 0001 0110 1100evoluiu para:
ADD R1, Total
Professor Ariel da Silva Dias - www.arieldias.com Professor Ariel da Silva Dias - www.arieldias.com
15/03/2018
11
Projeto em Delphi 22 linhas, revertendo para Assembly terá aproximadamente 15 mil linhas!
Professor Ariel da Silva Dias - www.arieldias.com
Linguagem orientada ao usuário
Surgiram na década de 60
Algumas são voltadas a solução de problemascientíficos: Fortran, Pascal, Algol.
Outras são voltadas para solução de problemascomerciais: Cobol
Linguagens Procedimentais (procedurais ouimperativas) e Linguagens Declarativas
Professor Ariel da Silva Dias - www.arieldias.com
15/03/2018
12
Linguagem Procedimentais: o programa específicauma sequência de passos (procedimentos) parasolucionar 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 Ariel da Silva Dias - www.arieldias.com
Linguagens Declarativas: dividem-se em duasclasses:
◦ 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 dededução), permitindo deduzir novas verdades (PROLOG)
Professor Ariel da Silva Dias - www.arieldias.com
15/03/2018
13
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
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
15/03/2018
14
Professor Ariel da Silva Dias - www.arieldias.com
Linguagens orientadas à aplicação
Os programas escritos em linguagens de quarta geraçãonecessitam de menor número de linhas de código
Em geral, essas linguagens são projetadas para atender a classesespecíficas de aplicações
Facilita a programação e o produto final é intuitivo para ousuá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
15/03/2018
15
São usadas principalmente na área de IA – sistemasespecialistas, processadores de linguagem naturale sistemas com bases de conhecimento
Facilitam a representação do conhecimento que éessencial para a simulação de comportamentosinteligentes
Armazena conhecimento complexo de modo que amáquina pode obter inferências a partir dainformação codificada
Professor Ariel da Silva Dias - www.arieldias.com
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
15/03/2018
16
Forma utilizada para resolver um problemacomputacional;
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
Algumas linguagens criadas durante a história,introduziram novas formas de se pensar sobreprogramaçã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
15/03/2018
17
Outras linguagens são evolução de linguagens maisantigas
Exemplo: Linguagem C++ Trata-se de uma evoluçãoda linguagem C (imperativa) com características deorientação a objetos, importadas de Simula
Exemplo: Linguagem C++ Paradigma orientada aobjetos + paradigma concorrente
Exemplo: ADA Paradigma Imperativo + paradigmaconcorrente
Professor Ariel da Silva Dias - www.arieldias.com Professor Ariel da Silva Dias - www.arieldias.com
15/03/2018
18
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 demensagem)◦ 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
As linguagens a seguir foram selecionadas combase nos rankings TIOBE e IEEE Spectrum;
Como os rankings sofrem atualizações constantes,serão apresentadas as linguagens que ficaram nosprimeiros lugares e outras com tendência de subirno ranking.
Professor Ariel da Silva Dias - www.arieldias.com
15/03/2018
19
Figura1 – Ranking IEEE Spectrum (2017)
Professor Ariel da Silva Dias - www.arieldias.com
Figura2 – Ranking IEEE Spectrum – WEB (2017)
Professor Ariel da Silva Dias - www.arieldias.com
15/03/2018
20
Figura3 – Ranking IEEE Spectrum – MOBILE (2017)
Professor Ariel da Silva Dias - www.arieldias.com
Figura4 – Ranking IEEE Spectrum – Acadêmico e Empresarial (2017)
Professor Ariel da Silva Dias - www.arieldias.com
15/03/2018
21
Figura5 – Ranking IEEE Spectrum – Embarcado (2017)
Professor Ariel da Silva Dias - www.arieldias.com
Figura6 – Ranking TIOBE (2017)
Professor Ariel da Silva Dias - www.arieldias.com
15/03/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 CProgramming 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.
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;
}
Professor Ariel da Silva Dias - www.arieldias.com
15/03/2018
23
História◦ Década de 80: Bjarne Stroustrup;
◦ Objetivo inicial era criar uma nova versão para o KernelUnix;
◦ Durante o desenvolvimento do novo kernel, novasfuncionalidades foram adicionadas a linguagem C;
◦ O nome inicial era C com classes, 3 anos depois passou aser chamada de C++.
Características◦ Multi-Paradigma;
◦ Compatibilidade com C;
◦ Portabilidade.
Professor Ariel da Silva Dias - www.arieldias.com
#include <iostream>
int main()
{
for(int i=0; i<4; i++)
std::cout << "Hello, world!\n";
}
Professor Ariel da Silva Dias - www.arieldias.com
15/03/2018
24
História◦ Década de 90: Projeto Green – Sun Microsystem;
◦ Criar novas tecnologias que permitissem a comunicaçãoentre diferentes dispositivos (TV, vídeo cassete, etc);
◦ O projeto não deu certo – origem à Linguagem Java;
◦ A expansão da internet permitiu o crescimento epopularização da linguagem.
Características◦ Sintaxe similar a outras mais antigas como C e C++;
◦ Paradigma Orientado a Objetos;
◦ Portabilidade: WORA.
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!");
}}
Professor Ariel da Silva Dias - www.arieldias.com
15/03/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 de2008;
Características◦ Legibilidade do código, com sintaxe moderna e clara;
◦ Suporte a múltiplos paradigmas de programação;
◦ Poema: The Zen of Python
Professor Ariel da Silva Dias - www.arieldias.com
for x in range(0, 4):
print ("Hello, World!")
Professor Ariel da Silva Dias - www.arieldias.com
15/03/2018
26
História◦ JavaScript ≠ Java;
◦ Desenvolvida pela Netscape com nome de LiveScript;
◦ Criada para navegadores com objetivo de proporcionarmaior 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 deoutras linguagens;
◦ Client-Side.
Professor Ariel da Silva Dias - www.arieldias.com
for (var i = 0; i < 4; i++) {
print("Hello, world!")
}
Professor Ariel da Silva Dias - www.arieldias.com
15/03/2018
27
História◦ Criada em 1994;
◦ Em 1997 foi lançado um pacote trazendo um interpretador decomandos SQL;
◦ A terceira versão (PHP 3) contava com o recurso de orientaçãoa objetos;
◦ Em 1998, Zeev e Gutmans escreveram o PHP 4, abandonandocompletamente o PHP 3;
◦ O PHP 5 veio para corrigir algumas falhas em relação a OOpresente no PHP5;
Características◦ Modularizada, ideal para servidores web;
◦ Suporte a programação estruturada e a orientação a objetos;
◦ Server-side.
Professor Ariel da Silva Dias - www.arieldias.com
<?php
for($i = 0; $i < 4; $i++){
echo "Hello, world! ";
}
?>
Professor Ariel da Silva Dias - www.arieldias.com
15/03/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 diferentestecnologias 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 emmeio 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.
Professor Ariel da Silva Dias - www.arieldias.com
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!");
}}
}
Professor Ariel da Silva Dias - www.arieldias.com
15/03/2018
29
História◦ Junho de 2011 - JetBrains;
◦ Segundo o criador, Dmitry Jemerov, a maioria daslinguagens não possuíam as características que elesestavam procurando;
◦ O objetivo era criar uma linguagem que compilasse tão oumais 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.
Professor Ariel da Silva Dias - www.arieldias.com
fun main(args: Array<String>) {
for (i in 1..4)
println("Hello, world!")
}
Professor Ariel da Silva Dias - www.arieldias.com
15/03/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.
Professor Ariel da Silva Dias - www.arieldias.com
for i in 0..<4 {
print("Hello, world!")
}
Professor Ariel da Silva Dias - www.arieldias.com
15/03/2018
31
O programador deve escolher a mais adequadapara usar em cada aplicação;
A escolha da LP está diretamente ligada a trêsfatores:◦ Complexidade do sistema a ser desenvolvido;
◦ Características peculiares da aplicação;
◦ Facilidades que as linguagens oferecem ao suporte demetodologias de desenvolvimento.
Professor Ariel da Silva Dias - www.arieldias.com
Veja a atividade no site www.arieldias.com
Professor Ariel da Silva Dias - www.arieldias.com
15/03/2018
32
Material de aula professor Celso Olivete JúniorUNESP
SEBESTA, Robert W. Conceitos de linguagens deprogramaçã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