Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar...

58
Aspectos preliminares Linguagens de Programa¸c˜ ao Marco A L Barbosa cba Este trabalho est´ a licenciado com uma Licen¸ ca Creative Commons - Atribui¸c˜ ao-CompartilhaIgual 4.0 Internacional. http://github.com/malbarbo/na-lp-copl

Transcript of Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar...

Page 1: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Aspectos preliminares

Linguagens de Programacao

Marco A L Barbosa

cbaEste trabalho esta licenciado com uma Licenca Creative Commons - Atribuicao-CompartilhaIgual 4.0 Internacional.

http://github.com/malbarbo/na-lp-copl

Page 2: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Conteudo

Razoes para estudar conceitos de linguagens de programacao

Domınios de programacao

Criterios para avaliacao de linguagens

Influencias no projeto de linguagens

Categorias de linguagens

Metodos de implementacao

Referencias

Page 3: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Razoes para estudar conceitos de linguagens deprogramacao

Page 4: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Razoes para estudar conceitos de linguagens deprogramacao

I Aumentar a capacidade de expressar ideias

I Melhorar as condicoes de escolha da linguagem apropriadapara cada problema

I Aumentar a capacidade de aprender novas linguagens

I Melhorar o uso das linguagens ja conhecidas

I Entender a importancia da implementacao

I Avanco da area de computacao

4 / 27

Page 5: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Razoes para estudar conceitos de linguagens deprogramacao

I Aumentar a capacidade de expressar ideias

I Melhorar as condicoes de escolha da linguagem apropriadapara cada problema

I Aumentar a capacidade de aprender novas linguagens

I Melhorar o uso das linguagens ja conhecidas

I Entender a importancia da implementacao

I Avanco da area de computacao

4 / 27

Page 6: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Razoes para estudar conceitos de linguagens deprogramacao

I Aumentar a capacidade de expressar ideias

I Melhorar as condicoes de escolha da linguagem apropriadapara cada problema

I Aumentar a capacidade de aprender novas linguagens

I Melhorar o uso das linguagens ja conhecidas

I Entender a importancia da implementacao

I Avanco da area de computacao

4 / 27

Page 7: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Razoes para estudar conceitos de linguagens deprogramacao

I Aumentar a capacidade de expressar ideias

I Melhorar as condicoes de escolha da linguagem apropriadapara cada problema

I Aumentar a capacidade de aprender novas linguagens

I Melhorar o uso das linguagens ja conhecidas

I Entender a importancia da implementacao

I Avanco da area de computacao

4 / 27

Page 8: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Razoes para estudar conceitos de linguagens deprogramacao

I Aumentar a capacidade de expressar ideias

I Melhorar as condicoes de escolha da linguagem apropriadapara cada problema

I Aumentar a capacidade de aprender novas linguagens

I Melhorar o uso das linguagens ja conhecidas

I Entender a importancia da implementacao

I Avanco da area de computacao

4 / 27

Page 9: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Razoes para estudar conceitos de linguagens deprogramacao

I Aumentar a capacidade de expressar ideias

I Melhorar as condicoes de escolha da linguagem apropriadapara cada problema

I Aumentar a capacidade de aprender novas linguagens

I Melhorar o uso das linguagens ja conhecidas

I Entender a importancia da implementacao

I Avanco da area de computacao

4 / 27

Page 10: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Domınios de programacao

Page 11: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Domınios de programacao

I Aplicacoes cientıficas

I Estruturas simples (arranjos e matrizes)I Muitas operacoes com pontos flutuantesI Fortran, Algol, C/C++I Fortress, Mathlab (Octave), numpy (Python)

I Aplicacoes comerciais

I Producao de relatoriosI Formatacao de numeros decimais e caracteresI Cobol

I Inteligencia artificial

I Manipulacao de sımbolos (lista ligada)I Criacao e execucao de codigoI Lisp, PrologI C/C++

6 / 27

Page 12: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Domınios de programacao

I Aplicacoes cientıficas

I Estruturas simples (arranjos e matrizes)I Muitas operacoes com pontos flutuantesI Fortran, Algol, C/C++I Fortress, Mathlab (Octave), numpy (Python)

I Aplicacoes comerciais

I Producao de relatoriosI Formatacao de numeros decimais e caracteresI Cobol

I Inteligencia artificial

I Manipulacao de sımbolos (lista ligada)I Criacao e execucao de codigoI Lisp, PrologI C/C++

6 / 27

Page 13: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Domınios de programacao

I Aplicacoes cientıficas

I Estruturas simples (arranjos e matrizes)I Muitas operacoes com pontos flutuantesI Fortran, Algol, C/C++I Fortress, Mathlab (Octave), numpy (Python)

I Aplicacoes comerciais

I Producao de relatoriosI Formatacao de numeros decimais e caracteresI Cobol

I Inteligencia artificial

I Manipulacao de sımbolos (lista ligada)I Criacao e execucao de codigoI Lisp, PrologI C/C++

6 / 27

Page 14: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Domınios de programacao

I Aplicacoes cientıficas

I Estruturas simples (arranjos e matrizes)I Muitas operacoes com pontos flutuantesI Fortran, Algol, C/C++I Fortress, Mathlab (Octave), numpy (Python)

I Aplicacoes comerciais

I Producao de relatoriosI Formatacao de numeros decimais e caracteresI Cobol

I Inteligencia artificial

I Manipulacao de sımbolos (lista ligada)I Criacao e execucao de codigoI Lisp, PrologI C/C++

6 / 27

Page 15: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Domınios de programacao

I Aplicacoes cientıficas

I Estruturas simples (arranjos e matrizes)I Muitas operacoes com pontos flutuantesI Fortran, Algol, C/C++I Fortress, Mathlab (Octave), numpy (Python)

I Aplicacoes comerciais

I Producao de relatoriosI Formatacao de numeros decimais e caracteresI Cobol

I Inteligencia artificial

I Manipulacao de sımbolos (lista ligada)I Criacao e execucao de codigoI Lisp, PrologI C/C++

6 / 27

Page 16: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Domınios de programacao

I Aplicacoes cientıficas

I Estruturas simples (arranjos e matrizes)I Muitas operacoes com pontos flutuantesI Fortran, Algol, C/C++I Fortress, Mathlab (Octave), numpy (Python)

I Aplicacoes comerciais

I Producao de relatoriosI Formatacao de numeros decimais e caracteresI Cobol

I Inteligencia artificial

I Manipulacao de sımbolos (lista ligada)I Criacao e execucao de codigoI Lisp, PrologI C/C++

6 / 27

Page 17: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Domınios de programacao

I Software de sistema

I Eficiencia devido ao uso contınuoI C/C++I D, Go, Rust

I Web

I Codigo dentro do documentoI Javascript, PHP, Java, Ruby, Python

7 / 27

Page 18: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Domınios de programacao

I Software de sistema

I Eficiencia devido ao uso contınuoI C/C++I D, Go, Rust

I Web

I Codigo dentro do documentoI Javascript, PHP, Java, Ruby, Python

7 / 27

Page 19: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Domınios de programacao

I Software de sistema

I Eficiencia devido ao uso contınuoI C/C++I D, Go, Rust

I Web

I Codigo dentro do documentoI Javascript, PHP, Java, Ruby, Python

7 / 27

Page 20: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Domınios de programacao

I Software de sistema

I Eficiencia devido ao uso contınuoI C/C++I D, Go, Rust

I Web

I Codigo dentro do documentoI Javascript, PHP, Java, Ruby, Python

7 / 27

Page 21: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Criterios para avaliacao de linguagens

Page 22: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Criterios para avaliacao de linguagens

I Facilidade de leitura (legibilidade)

I Facilidade de escrita

I Confiabilidade

I Custo

9 / 27

Page 23: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Criterios para avaliacao de linguagens

I Facilidade de leitura

I Simplicidade

I Um conjunto bom de caracterısticas e construcoesI Poucas formas de expressar cada operacaoI Mınima sobrecarga de operadorI Muito simples nao e bom (assembly)

I Ortogonalidade

I Poucas caracterısticas podem ser combinadas de variasmaneiras

I Uma caracterıstica deve ser independente do contexto que eusada (excecoes a regra sao ruins)

I Muito ortogonalidade nao e bom (Algol68)I Linguagens funcionais oferecem uma boa combinacao de

simplicidade e ortogonalidade

10 / 27

Page 24: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Criterios para avaliacao de linguagens

I Facilidade de leitura

I Simplicidade

I Um conjunto bom de caracterısticas e construcoesI Poucas formas de expressar cada operacaoI Mınima sobrecarga de operadorI Muito simples nao e bom (assembly)

I Ortogonalidade

I Poucas caracterısticas podem ser combinadas de variasmaneiras

I Uma caracterıstica deve ser independente do contexto que eusada (excecoes a regra sao ruins)

I Muito ortogonalidade nao e bom (Algol68)I Linguagens funcionais oferecem uma boa combinacao de

simplicidade e ortogonalidade

10 / 27

Page 25: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Criterios para avaliacao de linguagens

I Facilidade de leitura

I Tipos de dados

I Tipos pre-definidos adequados

I Sintaxe

I Flexibilidade para nomear identificadoresI Forma de criar instrucoes compostasI A forma deve ter relacao com o significado

11 / 27

Page 26: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Criterios para avaliacao de linguagens

I Facilidade de leitura

I Tipos de dados

I Tipos pre-definidos adequados

I Sintaxe

I Flexibilidade para nomear identificadoresI Forma de criar instrucoes compostasI A forma deve ter relacao com o significado

11 / 27

Page 27: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Criterios para avaliacao de linguagens

I Facilidade de escrita

I Simplicidade e ortogonalidade

I Poucas construcoes e um conjunto consistente de formas decombinacao

I Suporte para abstracao

I Definir e usar estruturas e operacoes de maneira que osdetalhes possam ser ignorados

I Suporte a subprogramasI Suporte a tipos abstratos de dados

I Expressividade

I Maneira conveniente de expressar a computacao

12 / 27

Page 28: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Criterios para avaliacao de linguagens

I Facilidade de escrita

I Simplicidade e ortogonalidade

I Poucas construcoes e um conjunto consistente de formas decombinacao

I Suporte para abstracao

I Definir e usar estruturas e operacoes de maneira que osdetalhes possam ser ignorados

I Suporte a subprogramasI Suporte a tipos abstratos de dados

I Expressividade

I Maneira conveniente de expressar a computacao

12 / 27

Page 29: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Criterios para avaliacao de linguagens

I Facilidade de escrita

I Simplicidade e ortogonalidade

I Poucas construcoes e um conjunto consistente de formas decombinacao

I Suporte para abstracao

I Definir e usar estruturas e operacoes de maneira que osdetalhes possam ser ignorados

I Suporte a subprogramasI Suporte a tipos abstratos de dados

I Expressividade

I Maneira conveniente de expressar a computacao

12 / 27

Page 30: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Criterios para avaliacao de linguagens

I Confiabilidade

I Verificacao de tipos

I Manipulacao de excecoesI ApelidosI Facilidade de leitura e escrita

13 / 27

Page 31: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Criterios para avaliacao de linguagens

I Confiabilidade

I Verificacao de tiposI Manipulacao de excecoes

I ApelidosI Facilidade de leitura e escrita

13 / 27

Page 32: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Criterios para avaliacao de linguagens

I Confiabilidade

I Verificacao de tiposI Manipulacao de excecoesI Apelidos

I Facilidade de leitura e escrita

13 / 27

Page 33: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Criterios para avaliacao de linguagens

I Confiabilidade

I Verificacao de tiposI Manipulacao de excecoesI ApelidosI Facilidade de leitura e escrita

13 / 27

Page 34: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Criterios para avaliacao de linguagens

I Custo

I Treinar programadores

I Escrever programasI Compilar programasI Executar programasI ConfiabilidadeI ManutencaoI Maior peso no custo: escrita, manutencao e confiabilidade

14 / 27

Page 35: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Criterios para avaliacao de linguagens

I Custo

I Treinar programadoresI Escrever programas

I Compilar programasI Executar programasI ConfiabilidadeI ManutencaoI Maior peso no custo: escrita, manutencao e confiabilidade

14 / 27

Page 36: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Criterios para avaliacao de linguagens

I Custo

I Treinar programadoresI Escrever programasI Compilar programas

I Executar programasI ConfiabilidadeI ManutencaoI Maior peso no custo: escrita, manutencao e confiabilidade

14 / 27

Page 37: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Criterios para avaliacao de linguagens

I Custo

I Treinar programadoresI Escrever programasI Compilar programasI Executar programas

I ConfiabilidadeI ManutencaoI Maior peso no custo: escrita, manutencao e confiabilidade

14 / 27

Page 38: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Criterios para avaliacao de linguagens

I Custo

I Treinar programadoresI Escrever programasI Compilar programasI Executar programasI Confiabilidade

I ManutencaoI Maior peso no custo: escrita, manutencao e confiabilidade

14 / 27

Page 39: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Criterios para avaliacao de linguagens

I Custo

I Treinar programadoresI Escrever programasI Compilar programasI Executar programasI ConfiabilidadeI Manutencao

I Maior peso no custo: escrita, manutencao e confiabilidade

14 / 27

Page 40: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Criterios para avaliacao de linguagens

I Custo

I Treinar programadoresI Escrever programasI Compilar programasI Executar programasI ConfiabilidadeI ManutencaoI Maior peso no custo: escrita, manutencao e confiabilidade

14 / 27

Page 41: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Criterios para avaliacao de linguagens

I Outros criterios

I PortabilidadeI Padronizacao

I Diferentes visoes

I ProgramadorI Projetista da linguagemI Implementador da linguagem

15 / 27

Page 42: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Criterios para avaliacao de linguagens

I Outros criterios

I PortabilidadeI Padronizacao

I Diferentes visoes

I ProgramadorI Projetista da linguagemI Implementador da linguagem

15 / 27

Page 43: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Influencias no projeto de linguagens

Page 44: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Influencias no projeto de linguagens

I Arquitetura do Computador

I Arquitetura de von NeumannI Arquiteturas multicoreI Outras?

I Metodologias de Programacao

I Orientada a processosI Orientada a dadosI Orientacao a objetos

17 / 27

Page 45: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Influencias no projeto de linguagens

I Arquitetura do Computador

I Arquitetura de von NeumannI Arquiteturas multicoreI Outras?

I Metodologias de Programacao

I Orientada a processosI Orientada a dadosI Orientacao a objetos

17 / 27

Page 46: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Categorias de linguagens

Page 47: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Categorias de linguagens

I Imperativas:

Algol68, Fortran, Cobol, Ruby, Python, Go,Java, Pascal, C/C++, . . .

I Funcionais ou Aplicativas: Lisp, Haskell, ML, Scheme, Erlang,Ocaml, F#, Miranda, . . .

I Logicas ou Declarativas: Prolog, Planner, QA-4, Popler,Conniver, QLISP, Mercury, Oz, Frill, . . .

19 / 27

Page 48: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Categorias de linguagens

I Imperativas: Algol68, Fortran, Cobol, Ruby, Python, Go,Java, Pascal, C/C++, . . .

I Funcionais ou Aplicativas: Lisp, Haskell, ML, Scheme, Erlang,Ocaml, F#, Miranda, . . .

I Logicas ou Declarativas: Prolog, Planner, QA-4, Popler,Conniver, QLISP, Mercury, Oz, Frill, . . .

19 / 27

Page 49: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Categorias de linguagens

I Imperativas: Algol68, Fortran, Cobol, Ruby, Python, Go,Java, Pascal, C/C++, . . .

I Funcionais ou Aplicativas: Lisp, Haskell, ML, Scheme, Erlang,Ocaml, F#, Miranda, . . .

I Logicas ou Declarativas: Prolog, Planner, QA-4, Popler,Conniver, QLISP, Mercury, Oz, Frill, . . .

19 / 27

Page 50: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Categorias de linguagens

I Imperativas: Algol68, Fortran, Cobol, Ruby, Python, Go,Java, Pascal, C/C++, . . .

I Funcionais ou Aplicativas: Lisp, Haskell, ML, Scheme, Erlang,Ocaml, F#, Miranda, . . .

I Logicas ou Declarativas: Prolog, Planner, QA-4, Popler,Conniver, QLISP, Mercury, Oz, Frill, . . .

19 / 27

Page 51: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Metodos de implementacao

Page 52: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Metodos de implementacao

I Compilacao

I Interpretacao

I Hıbrido

21 / 27

Page 53: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Metodos de implementacao

22 / 27

Page 54: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Metodos de implementacao - Compilacao

23 / 27

Page 55: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Metodos de implementacao - Interpretacao

24 / 27

Page 56: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Metodos de implementacao - Hıbrido

25 / 27

Page 57: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Referencias

Page 58: Aspectos preliminares - Linguagens de Programação · 2018. 8. 3. · Raz~oes para estudar conceitos de linguagens de programa˘c~ao I Aumentar a capacidade de expressar ideias I

Referencias

I Robert Sebesta, Concepts of programming languages, 9a

edicao. Capıtulo 1.

27 / 27