1 / 52

O Essencial sobre Linguagens de Programação Luís Caires Maio 2005

O Essencial sobre Linguagens de Programação Luís Caires Maio 2005. O Essencial sobre Linguagens de Programação.  O que é uma linguagem de programação?  O que é comum a todas as linguagens de programação?  Que géneros de linguagens de programação existem?

hallam
Download Presentation

O Essencial sobre Linguagens de Programação Luís Caires Maio 2005

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. O Essencial sobreLinguagens de ProgramaçãoLuís CairesMaio 2005

  2. O Essencial sobreLinguagens de Programação  O que é uma linguagem de programação?  O que é comum a todas as linguagens de programação?  Que géneros de linguagens de programação existem?  Que linguagens de programação são mais usadas?

  3. Processos, Algoritmos e Programas

  4. Processos, Algoritmos e Programas  Informática Estudaprocessamentoautomático da informação.

  5. Processos, Algoritmos e Programas  Informática Estudaprocessamentoautomático da informação.  Processamento (2 sabores)

  6. Processos, Algoritmos e Programas  Informática Estudaprocessamentoautomático da informação.  Processamento (2 sabores) Obtenção de resultados (saída) a partir de dados (entrada) + 2 10 8

  7. Processos, Algoritmos e Programas  Informática Estudaprocessamentoautomático da informação.  Processamento (2 sabores) Diálogo interactivo com o ambiente 0

  8. Processos, Algoritmos e Programas  Informática Estudaprocessamentoautomático da informação.  Processamento (2 sabores) Diálogo interactivo com o ambiente 0

  9. Processos, Algoritmos e Programas  Informática Estudaprocessamentoautomático da informação.  Processamento (2 sabores) Diálogo interactivo com o ambiente 10

  10. Processos, Algoritmos e Programas  Informática Estudaprocessamentoautomático da informação.  Processamento (2 sabores) Diálogo interactivo com o ambiente 10

  11. Processos, Algoritmos e Programas  Informática Estudaprocessamentoautomático da informação.  Processamento (2 sabores) Diálogo interactivo com o ambiente 8

  12. Processos, Algoritmos e Programas  Informática Estudaprocessamentoautomático da informação.  Processamento (2 sabores) Diálogo interactivo com o ambiente 8

  13. Processos, Algoritmos e Programas  Informática Estudaprocessamentoautomático da informação.  Processamento (2 sabores) Diálogo interactivo com o ambiente 20

  14. Processos, Algoritmos e Programas  Informática Estudaprocessamentoautomático da informação.  Processamento (2 sabores) Obtenção de resultados (saída) a partir de dados (entrada) Diálogo interactivo com o ambiente  Automático

  15. Processos, Algoritmos e Programas  Informática Estudaprocessamentoautomático da informação.  Processamento (2 sabores) Obtenção de resultados (saída) a partir de dados (entrada) Diálogo interactivo com o ambiente Automático Realizável por uma máquina (o computador)

  16. Processos, Algoritmos e Programas  Informática Estudaprocessamentoautomático da informação.  Processamento (2 sabores) Obtenção de resultados (saída) a partir de dados (entrada) Diálogo interactivo com o ambiente  Automático Realizável por uma máquina (o computador) Logo: Requer uma especificação rigorosa

  17. Como descrever processos?  Processo Começar por ler um número. Se esse valor fôr par, escrever “PAR”, caso contrário, escrever “INPAR”. Terminar.

  18. Processos e Programas  Processo Começar por ler um número. Se esse valor fôr par, escrever “PAR”, caso contrário, escrever “INPAR”. Terminar.  Programa readX; if (X mod 2 = O) thenMSG := “par!” elseMSG := “ínpar!”; writeMSG

  19. Processos e Programas Programa um texto correctamente escrito numa linguagem de programação (Visual Basic, Java, etc.)  Um programa não é um algoritmo / processo!  Um programa é uma descrição possível de um algoritmo / processo

  20. Processos e Programas  Infelizmente, nem todos os programas descrevem processos interessantes ou relevantes :-)  Por outro lado, pense na sua linguagem preferida (Java?). Será que é garantidamente possível descrever qualquer algoritmo/processo imaginável na linguagem Java?

  21. Expressividade Todas as linguagens de programação são igualmente expressivas Facto: se um algoritmo / processo pode ser implementado numa certa linguagem, então também pode ser implementado noutra linguagem qualquer  Quer isto dizer que as linguagens de programação são todas equivalentes?

  22. Expressividade  A expressividade teórica não é tudo (é “impossível” perceber programas escritos para a máquina de Turing)  A facilidade de expressão disponibilizada é muito muito muito importante!  A expressividade de uma linguagem de programação depende dos conceitos primitivos por esta disponibilizados

  23. Muitas aspectos a considerar Que modelos de computação suportados? Fazer cálculos (operações matemáticas?) Fazer cálculos intensivos (paralelismo?) Manter bases de dados (sincronização?) Gerir um computador (hardware) Controlar um dispositivo (ex: nave espacial) Suportar aplicações na internet

  24. Muitas aspectos a considerar Que tipos de dados são manipuláveis? Números Texto Aglomerados (informação estruturada) Objectos (programas em execução) Que entidades são“cidadãs de primeira classe”?

  25. Muitas aspectos a considerar Que mecanismos de abstracção existem? Cada linguagem fornece um conjunto de ingredientes básicos, mas É possível definir NOVOS ingredientes por combinação dos ingredientes básicos? Uma linguagem com mecanismos de abstracção poderosos é muito flexível porque é uma linguagem extensível!

  26. Muitas aspectos a considerar É fácil produzir programas grandes ? É possível escrever um programa por partes, para melhor o estruturar e compreender, tal como um livro pode ser dividido em capítulos, secções, etc? É fácil substituir certas partes por outras (talvez melhores ...) no futuro?

  27. Muitas aspectos a considerar Programas são fáceis de modificar no futuro? É fácil compreender a funcionalidade de um programa, muito depois (um ano) de este ter sido escrito? É fácil compreender programas escritos por outras pessoas?  Alteração pontual pode ter repercussões graves noutro “sítio” do programa?

  28. Muitas aspectos a considerar Como são os programas executados? De forma eficiente?  Interpretados (Visual Basic) ?  Compilados (C++) ?  ou Semi-Interpretados (Java) ?

  29. Execução de Programas Programas interpretados O processador executa um programa especial: o interpretador a função do interpretador é interpretar passo a passo o programa fonte (escrito em JavaScript, por exemplo) Programa fonte Interpretador Processador

  30. Execução de Programas Programas compilados Programa fonte O compilador traduz o programa fonte (em C, por exemplo) num outro programa (o programa objecto) O programa objecto é directamente executável pelo processador hardware Compilador Programa objecto Processador

  31. Execução de Programas Programas semi-interpretados O compilador traduz o programa fonte (em Java, por exemplo) num programa (o código intermédio) para uma máquina virtual A máquina virtual é um interpretador que simula um processador poderoso mas eficiente! Programa fonte Compilador Código intermédio Máquina Virtual Processador

  32. Muitas aspectos a considerar Que garantias dá a linguagem?  Que género de erros são detectáveis?  Que género de erros são detectados?  Quando são detectados? O ideal é serem detectados o mais cedo possível, ou seja, antes do programa ser executado!

  33. Muitas linguagens, no passado e no presente FORTRAN (para fazer contas, um record de longevidade) ALGOL (uma boa ideia antes do tempo) SMALLTALK (a ideia de programar só com objectos) LISP (a ideia de programar só com funções) PROLOG (a ideia de programar só com relações) ML (programação funcional “at it´s best”) C (programar um sistema Operativo: UNIX) JAVA (programar com objectos, no fim do séc. XX ) C# (Java, à moda da Microsoft)

  34. Muitas linguagens, no passado e no presente FORTRAN(para fazer contas, um record de longevidade) São assim tão diferentes? Sim, mas ... “The next 700 programming languages” vão ser muito muito parecidas ;-) JAVA(programar com objectos, no fim do século)

  35. Ingredientes básicos Valores básicos V  números (0, 1, 2.92)  sequências de caracteres (“luis”, “maria”)

  36. Ingredientes básicos Expressões V  sobre números (2+3, 2.0*3.14)  sobre sequências de caracteres (“luis”@ “maria”)

  37. Definições As definições dão nomes a entidades declare numero_de_conta = 10 in < corpo da definição> nome Valor inteiro

  38. Definições Uma definição só é válida num certo âmbito declare numero_de_conta = 10 in < corpo da definição> nome Valor inteiro âmbito

  39. Manipulação de “estado” Células de memória M podem ser reservadas X = new podem ser escritasX := E podem ser lidas? X

  40. Manipulação de “estado” Usando definições podemos dar nomes às células de memória declare numero_de_conta = 10 saldo = new in { saldo := 0 ; saldo := ?saldo + 100 }

  41. Parametrização Parametrizando um programa num nome obtém-se generalidade  Acumular o valor inteiro 100 ao saldo saldo := ?saldo + 100  Acumular o valor VAL ao saldo saldo := ?saldo + VAL  Função que incrementa o saldo com um valor qq fun(VAL) { saldo := ?saldo + VAL }

  42. Parametrização Parametrizando um programa num nome obtém-se generalidade  Acumular o valor inteiro 100 ao saldo saldo := ?saldo + 100  Acumular VAL ao saldo saldo := ?saldo + VAL  Função que incrementa o saldo com um valor qq fun(VAL) saldo := ?saldo + VAL Parametrização em VAL

  43. Definição de funções Usando definições podemos dar também nomes a funções: declare numero_de_conta = 10 saldo = new acum = fun (x) saldo := ?saldo + x in { saldo := 0 ; acum(10); }

  44. Definição de funções Da mesma forma, podemos dar nomes a programas declareConta = declare numero_de_conta = 10 saldo = new acum = fun (x) saldo := ?saldo + x in { saldo := 0 ;} in ...

  45. Definição de funções Quais são os elementos definidos no programa Conta? declareConta = declare numero_de_conta = 10 saldo = new acum = fun (x) saldo := ?saldo + x in { saldo := 0 ;} in ....

  46. Definição de funções Quais são os elementos definidos no programa Conta? declareConta = declare numero_de_conta= 10 saldo= new acum= fun (x) saldo := ?saldo + x in { saldo := 0 ;} in .... nomes locais

  47. Alargando o âmbito das definições Objectos: encapsulam dados e funções declareConta = object privatenumero_de_conta = 10 privatesaldo = new public acum = fun (x) saldo := ?saldo + x public val = fun () ?saldo in { saldo := 0 ;} in ...

  48. Alargando o âmbito das definições Objectos: encapsulam dados e funções declareConta = object privatenumero_de_conta = 10 privatesaldo = new public acum = fun (x) saldo := ?saldo + x public val = fun () ?saldo in { saldo := 0 ;} in ... nomes locais

  49. Alargando o âmbito das definições Objectos: encapsulam dados e funções declareConta = object privatenumero_de_conta = 10 privatesaldo = new public acum = fun (x) saldo := ?saldo + x public val = fun () ?saldo in { saldo := 0 ;} in ... nomes públicos

  50. Classes e Objectos Objectos agregam dados e funções declareConta = object ... in declare cc = newConta in { cc.acum(10); cc.acum(29); write cc.val(); }

More Related