Linguagens de Programação 1 –...

42
Linguagens de Programação 1 – Introdução Vítor E. Silva Souza ( [email protected] ) http://www.inf.ufes.br/~vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal do Espírito Santo Este obra foi licenciada sob uma Licença Creative Commons Atribuição 3.0 Não Adaptada.

Transcript of Linguagens de Programação 1 –...

Page 1: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Linguagens de Programação

1 – Introdução

Vítor E. Silva Souza

([email protected])http://www.inf.ufes.br/~vitorsouza

Departamento de Informática

Centro Tecnológico

Universidade Federal do Espírito Santo

Este  obra  foi  licenciada  sob  uma  Licença  Creative  Commons  Atribuição  3.0  Não  Adaptada.

Page 2: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Conteúdo  do  curso

• Introdução;• Amarrações;• Valores  e  tipos  de  dados;• Variáveis  e  constantes;• Expressões  e  comandos;

• Modularização;• Polimorfismo;• Exceções;• Concorrência;• Avaliação  de  linguagens.

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 2

• Estes  slides  foram  baseados  em:– Slides  do  prof.  Flávio  M.  Varejão;– Livro  “Linguagens  de  Programação  – Conceitos  e  Técnicas”  (Varejão);

– Livro  “Linguagens  de  Programação  – Princípios  e  Paradigmas,  2a  edição”  (Tucker  &  Noonan).

Page 3: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Por  que  estudar  LPs• Maior  capacidade  de  desenvolver  soluções  computacionais  para  problemas;

• Maior  habilidade  ao  usar  uma  LP;• Maior  capacidade  para  escolher  LPs  apropriadas;• Maior  habilidade  para  aprender  novas  LPs;• Maior  habilidade  para  projetar  novas  LPs.

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 3

Page 4: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Contexto

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 4

Processo de Desenvolvimento de Software

Page 5: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Papel  das  LPs  no  PDS• O  objetivo  de  LPs  é  tornar  mais  efetivo  o  processo  de  desenvolvimento  de  software  (PDS);

• PDS  visa  geração  e  manutenção  de  software  de  modo  produtivo  e  garantia  de  padrões  de  qualidade;

• Principais  Propriedades  Desejadas  em  um  Software:– Confiabilidade;– Manutenibilidade;– Eficiência.

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 5

Page 6: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Papel  das  LPs  no  PDS• Requisitos:  análise  da  viabilidade  tecnológica;• Projeto:  utilização  de  métodos  e  modelos  adequados  à  linguagem;

• Implementação:  papel  essencial  da  LP;• Validação:  podem  facilitar  o  processo  (ex.:  depuradores);

• Manutenção:  modularização,  legibilidade,  etc.  influenciam.

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 6

Page 7: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Objetivos  de  projeto• Segundo  Tucker  &  Noonan:

– Simplicidade  e  legibilidade:  fácil  de  escrever,  ler,  aprender,  ensinar;

– Clareza  nas  ligações (amarrações,  parte  2  do  curso);– Confiabilidade:  tratamento  de  exceções,  restringir  vazamento  de  memória,  tipagem forte,  sintaxe/semântica  bem  definidas,  verificação  &  validação;

– Suporte:  compiladores  acessíveis  (baratos,  muitas  plataformas),  cursos,  livros,  comunidade;

– Abstração:  não  ter  que  reinventar  a  roda;

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 7

Page 8: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Objetivos  de  projeto• Segundo  Tucker  &  Noonan (continua):

– Ortogonalidade:  menor  número  de  regras  excepcionais  possível,  cidadãos  de  primeira  classe;

– Implementação  eficiente:  implementações  iniciais  de  Java,  Ada  e  Algol sofreram  críticas.

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 8

Page 9: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Propriedades  desejáveis  em  LPs• Segundo  Varejão:

– Legibilidade;– Redigibilidade;– Confiabilidade;– Eficiência;– Facilidade  de  aprendizado;– Modificabilidade;– Reusabilidade;– Portabilidade.

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 9

Page 10: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Legibilidade• Marcadores  de  bloco:

• Desvios  incondicionais:  goto;• Duplicação  de  significado  de  vocábulos:

– Java:  this;– C/C++:  *p = (*p)*q;

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 10

if (x > 1)if (x == 2)

x = 3;elsex = 4;

Page 11: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Legibilidade• Efeitos  colaterais:

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 11

int x = 1;int retornaCinco() {x = x + 3;return 5;

}void main() {int y;y = retornaCinco();y = y + x;

}

Page 12: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Redigibilidade• Tipos  de  Dados  Limitados  (FORTRAN);• Ausência  de  Tratamento  de  Exceções;• Conflito  Ocasional  com  Legibilidade:

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 12

void f(char *q, char *p) {for (;*q=*p; q++,p++);

}

O que faz o código acima?

Page 13: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Confiabilidade• Declaração  de  tipos:

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 13

boolean u = true;int v = 0; while (u && v < 9) {v = u + 2;if (v == 6) u = false;

}

Algo de errado no código acima? Em Java, compila? E em C?

Page 14: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Tratamento  de  exceções

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 14

// Abre uma conexão com um banco de dados.Connection conn = null;try {Class.forName(driver);conn = DriverManager.getConnection(url, usu, senha);

}catch (ClassNotFoundException | SQLException ex) {System.out.println("Problemas ao abrir conexao...");}return conn;

Separa o código de tratamento de erro.

Page 15: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Eficiência• Verificação  dinâmica  de  tipos;• Controle  de  índice  de  vetor:

– Java  o  faz;– C/C++  não.

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 15

Page 16: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Facilidade  de  aprendizado• Excesso  de  características  pode  ser  prejudicial:

• C++  vs.  Java:– Herança  múltipla;– Herança  pública  e  privativa;– Ligação  tardia  ativada  ou  desativada;– Qual  linguagem  é  mais  fácil  de  aprender?

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 16

c = c + 1;c+=1;c++;++c;

Page 17: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Modificabilidade• Uso  de  constantes:

• Em  C,  pi seria  de  fato  constante?• E  em  C++?

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 17

const float pi = 3.14;

Page 18: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Reusabilidade• Criação  de  bibliotecas  de  função:

• Frameworks  e  plataformas  de  desenvolvimento.

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 18

void troca (int *x, int *y) {int z = *x;*x = *y;*y = z;

}

Page 19: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Portabilidade• Rigor  no  projeto;• Pode  constrastar com  eficiência.

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 19

Page 20: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Especificação  de  LPs• Três  componentes:  léxico,  sintaxe  e  semântica:• Por  exemplo:

– Léxico:  a,  =,  b,  ; fazem  parte  da  linguagem;– Sintaxe:  a seguido  de  =,  seguido  de  b,  seguido  de  ;é  um  comando  válido  de  atribuição;

– Semântica:  o  valor  de  b deve  ser  copiado  para  a  posição  de  memória  definida  por  a.

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 20

a = b;

Page 21: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Especificação  de  LPs• Sintaxe  é  geralmente  definida  em  BNF:

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 21

<expressão> ::= <valor> | <valor><operador><expressão><valor> ::= <número> | <sinal><número><número> ::= <semsinal> | <semsinal>.<semsinal><semsinal> ::= <dígito> | <dígito><semsinal><dígito> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9<sinal> ::= + | -<operador> ::= + | - | / | *

Esse assunto será retomado na disciplina de Compiladores.

Page 22: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Especificação  de  LPs• Semântica:

– Descrição  informal  em  linguagem  natural;– Enfoque  operacional:  usar  LP  mais  elementar.

• Necessidade  de  padronização:– ISO,  IEEE,  ANSI,  NIST,  etc.;– Auxilia  na  portabilidade  e  na  aceitação  da  LP;– Timing é  importante.

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 22

Exemplos: ANSI/ISO Cobol 2002, ISO Fortran 2004, ISO Haskell 1998, ISO Prolog 2000, ANSI/ISO C 1999, ANSI/ISO C++ 2003, ANSI/ISO Ada (2005), ANSI Smalltalk 2002, ISO Pascal 1990.

Page 23: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Implementação  de  LPs• Compilação,  interpretação  ou  híbrido?• Compilação:

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 23

Page 24: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Implementação  de  LPs• Interpretação:

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 24

Page 25: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Implementação  de  LPs• Híbrido:

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 25

Page 26: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Implementação  de  LPs• Compilação:

– Eficiência;– Problemas  com  portabilidade  e  depuração;

• Interpretação  pura:– Flexibilidade,  portabilidade,  facilidade  para  prototipação  e  depuração;

– Problemas  com  eficiência  e  maior  consumo  de  memória;– Raramente  usada;

• Híbrido:– Une  vantagens  (e  desvantagens)  dos  outros  métodos;– JVM,  JIT-­‐compiler.

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 26

Page 27: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Paradigmas  de  LPs• Segundo  Varejão:

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 27

Paradigmas de LPs

Imperativo Declarativo

Estruturado

Orientado a objetos

Concorrente Funcional Lógico

Page 28: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Paradigmas  de  LPs• Segundo  Tucker  &  Noonan,  há  quatro  paradigmas:

– Imperativo;– Orientado  a  objetos;– Funcional;– Lógico.

• Outras  características  tratadas  como  tópicos  especiais:– Manipulação  de  eventos;– Concorrência;– Correção  (especificação  formal).

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 28

Page 29: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Paradigma  imperativo• Processo  de  mudança  de  estados;• Variável,  valor  e  atribuição;• Células  de  memória;• Arquitetura  de  von  Neumann-­‐Eckert:  entrada-­‐processamento-­‐saída.

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 29

Page 30: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Paradigma  estruturado• Refinamentos  sucessivos;• Blocos  aninhados  de  comandos;• Desestímulo  ao  uso  de  desvio  incondicional;• Abordagem  top-­‐down,  organizando  o  fluxo  de  controle.• Exemplos:  Pascal,  C,  Fortran,  Cobol,  Perl,  etc.

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 30

Page 31: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Paradigma  Orientado  a  Objetos• Abstração,  encapsulamento,  modularização;• Herança  e  polimorfismo;• Exemplos:  Smalltalk,  Java,  C++,  C#,  Python,  etc.

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 31

Page 32: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Paradigma  declarativo• Especificação  sobre  a  tarefa  a  ser  realizada;• Abstrai-­‐se  como  o  computador  é  implementado;• “Faça  isso”  (imperativo)  vs.  “É  preciso  chegar  neste  estado”  (sem  dizer  como,  declarativo);

• Em  alguns  aspectos  mais  próximo  do  que  aprendemos  na  matemática,  por  exemplo:

– Atribuição  ou  equação  sem  solução?

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 32

x = x + 1

Page 33: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Paradigma  funcional• Programa  composto  por  funções;• Funções  compostas  por  outras  funções;• Exemplos:  Lisp,  Haskell.

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 33

(defun fatorial (n)(if (= n 0)

1(* n (fatorial (- n 1)))))

Page 34: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Paradigma  lógico• Dedução  automática,  baseado  em  regras;• Cláusulas  definem  predicados  e  relações  factuais;• Exemplo:  Prolog.

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 34

% Fatos:progenitor(maria,joao). progenitor(jose,joao).progenitor(joao,mario).

% Regras:descendente(Y,X) :- progenitor(X,Y). descendente(Y,X) :- progenitor(A,Y), descendente(A,X).

% Questões:q1 :- descendente(mario,jose).

Page 35: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Evolução  das  LPs• Dificuldade  de  programação  em  linguagem  de  máquina;• Foco  de  primeiras  LPs  era  eficiência  de  processamento  e  consumo  de  memória;

• A  medida  que  o  hardware  evoluiu,  o  foco  mudou  para  a  baixa  produtividade  de  programação,  surgindo:– Programação  estruturada;– Tipos  abstratos  de  dados;– Orientação  a  objetos.

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 35

Page 36: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Origem  das  LPs• Fortran  (Formula  Translator)  – 1957,  IBM:

– Aplicações  numéricas;– Eficiência  computacional  (ex.:  não  há  alocação  dinâmica);

• Lisp (List Processor)  – 1959,  MIT:– Programação  funcional;– Processamento  simbólico  (IA);– Common  Lisp,  Scheme;

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 36

Page 37: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Origem  das  LPs• Algol (Algorithmic Language)  – 1960,  ETH  Zurich:

– Programação  estruturada;– 1ª  LP  com  sintaxe  formal  definida;– Importância  teórica  (ALGOL-­‐like);

• Cobol (Common  Business  Oriented Lang.)  – 1960,  DoD:– Aplicações  comerciais;– Muitos  dados,  pouca  computação;

• Basic  – 1964,  Darthmouth University:– Ensino  para  leigos;– Estudantes  de  artes  e  ciências  humanas;– Precursora  do  Visual  Basic,  da  Microsoft;

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 37

Page 38: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Origem  das  LPs• Pascal  – 1964,  Niklaus Wirth  (Stanford  University):

– Ensino  de  programação  estruturada;– Simplicidade;– Precursora  do  Object Pascal  e  Delphi;

• C  – 1972,  Dennis  Ritchie  (AT&T  Bell  Labs):– Desenvolvimento  de  SOs /  Unix;– Precursora  do  C++;

• Prolog  – 1972,  Unv.  Aix-­‐Marselha  /  Univ.  Edinburgo:– Programação  lógica;– Inteligência  artificial;

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 38

Page 39: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Origem  das  LPs• Smalltalk – 1972,  Xerox  PARC:

– Programação  OO  (1ª  LP  OO  pura);– Inovações  em  GUIs;

• Ada  (Lovelace)  – 1983,  DoD:– Programação  concorrente;– Centenas  de  pessoas  envolvidas  durante  8  anos;– Grande  e  complexa;– Sistemas  de  tempo  real;

• C++  – 1985,  Bjarne Stroustrup (AT&T  Bell  Labs):– Disseminação  da  programação  OO;– Linguagem  complexa.

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 39

Page 40: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Origem  das  LPs• Java  – 1995,  James  Gosling (Sun  Microsystems):

– Hoje  pertence  à  Oracle;– Criada  com  foco  na  Internet;– Mais  simples  e  confiável  que  C++;

• Linguagens  modernas:

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 40

• C#;• Groovy;• Go;• Haskell;• Lua;

• Perl;• PHP;• Python;• Ruby;• Scala;

• Shell  Script;• Swift;• E  muitas  outras...

Page 41: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 41

Orig

em  das  LP

s

Page 42: Linguagens de Programação 1 – Introduçãovitorsouza/archive/2020/wp-content/uploads/acade… · Linguagens de Programação 1 – Introdução VítorE. Silva Souza (vitor.souza@ufes.br)

http://nemo.inf.ufes.br/

Agosto  2014 Linguagens  de  Programação  -­‐ Introdução 42