Características das Linguagens de Programação 2011-01 Oscar Luiz Monteiro de Farias, D.Sc. 1 Exemplos de Linguagens de Programação (LPs) • C++ (C), C#, Visual C • Algol, Pascal, Delphi, Modula II, • HPFortran (www.mhpcc.edu) • Ada • Smalltalk, Simula, Java, Java ME • Scheme, Lisp, Haskell, Erlang • Prolog • Perl, PHP, Phyton, Ruby, Groovy, etc... 2011-01 Oscar Luiz Monteiro de Farias, D.Sc. 2 Linguagens de Programação (LPs)... • • • • • • • • • Evolução das LPs Paradigma de programação Sintaxe e Semântica Variáveis, Expressões e Comandos Tipos de dados Escopo e Extent Procedures Abstração de Dados Tratamento de Exceções (Exception Handling) • Concorrência 2011-01 Oscar Luiz Monteiro de Farias, D.Sc. 3 Linguagens de Programação (LPs) • Input/Output • Programação em Rede (Networking Programming) • Acesso a Banco de Dados • Outras características/features 2011-01 Oscar Luiz Monteiro de Farias, D.Sc. 4 Ambiente de evolução da LP Situar a LP em questão no seu contexto histórico Linguagens de que sofreu influência Suporte institucional Audiência/faixas de uso intencionadas 2011-01 Oscar Luiz Monteiro de Farias, D.Sc. 5 Paradigma de Programação É um modelo (ou estilo) de programação. Existem diferentes paradigmas de programação. Os paradigmas diferem segundo os conceitos ou abstrações usados para representar os elementos de um programa (objetos, funções, variáveis, restrições, etc.) e as etapas que compõem uma computação (atribuição, avaliação, fluxo de dados, message passing, etc.). 2011-01 Oscar Luiz Monteiro de Farias, D.Sc. 6 Paradigma Imperativo Fundamenta-se em comandos que atualizam o estado de variáveis. (em latim imperare= comandar). • A linguagem de programação provê comandos, tais como os comandos de atribuição, que explicitamente alteram o estado da memória do computador. • Este paradigma está intimamente associado à arquitetura de von Neumann. Muitos acham o paradigma imperativo o meio mais fácil de se expressar. Adicionado-se subprogramas ou procedures à lp tem-se o paradigma procedural. 2011-01 Oscar Luiz Monteiro de Farias, D.Sc. 7 Paradigma Funcional • A computação é expressa como a avaliação de funções matemáticas. Evita alterações de estado e dados mutáveis. Tem suas raízes no lambda calculus. Lambda Calculus: sistema formal desenvolvido por Alonso Church (1930's), para investigar a definição de funções, aplicação de funções e recursividade. O paradigma funcional trata valores como entidades singulares. Valores nunca são modificados, mas sim dão origem a novos valores. A computação nas linguagens funcionais é realizada através da aplicação de funções a valores. Ex.: (+ 6 8). 2011-01 Oscar Luiz Monteiro de Farias, D.Sc. 8 Exemplo: ALGOL60 Cálculo do produto interno de dois vetores a[] e b[] c = 0; for i := 1 step 1 until n do c := c + a[i] x b[i]; 2011-01 Oscar Luiz Monteiro de Farias, D.Sc. 9 Observações Primeiramente devemos mentalmente executar o programa antes de compreendêlo. A maior parte do programa refere-se a comandos necessários ao controle da ordem na qual o valor é computado, embora qualquer ordem de avaliação da soma seja aceitável. Requer que o tamanho exato dos argumentos seja passado como o valor de n. Só funciona para arrays de nome a[] eb[]. (ou deve-se acrescentar os conceitos de passagem de parâmetros/procedures). 2011-01 Oscar Luiz Monteiro de Farias, D.Sc. 10 Exemplo em pf Variante de lisp com as operações: - NULL, tal que NULL (lista vazia) = true - FIRST (x1, x2, …, xn) = x1 - REST (x1, x2, …, xn) = (x2, …, xn) - assumindo a existência de expressões condicionais recursivas function INNERP(X, Y) if NULL(X) then 0 else FIRST(X)*FIRST(Y)+ INNERP(REST(X), REST(Y)) 2011-01 Oscar Luiz Monteiro de Farias, D.Sc. 11 Outros Paradigmas Orientado a Objetos Declarativo Orientado a Lógica Orientado a Eventos Data Flow Etc. 2011-01 Oscar Luiz Monteiro de Farias, D.Sc. 12 Sintaxe & Semântica A sintaxe de uma lp está relacionada à forma assumida pelos seus diversos comandos. Ex.: diversas lps possuem comandos iterativos (loop) que variam em sua forma, mas são, de certo modo, equivalentes. Em uma lp seqüências de palavras podem ser combinadas em sentenças, que formam os programas. A sintaxe de uma linguagem é o conjunto de regras que determinam se uma sentença é bem formada (well-formed) ou não. A notação BNF (Backus-Naur form) é utilizada para definir a sintaxe. Alternativa para definir sintaxe: Context-Free Grammars (Noam Chomsky). 2011-01 Oscar Luiz Monteiro de Farias, D.Sc. 13 Semântica Está relacionada com o significado dos comandos. Existem diversos frameworks para se descrever a semântica de uma lp. Classificam-se em: operacional, denotacional e axiomático. 2011-01 Oscar Luiz Monteiro de Farias, D.Sc. 14 Semântica: frameworks Operational: a semântica é especificada como uma máquina abstrata ou sistema de transição, cuja computação representa uma possível execução de um programa. Denotational: existem funções definidas indutivamente mapeando cada programa em uma entidade abstrata representando o seu comportamentoobservável e cada parte do programa a uma entidade abstrata representando sua contribuição para aquele comportamento. Axiomático: compreende regras para deduzir assertivas sobre a correção ou equivalência do programa e suas partes. Os projetistas raramente usam descrições formais da semântica (frameworks) durante o processo de criação de uma linguagem. 2011-01 Oscar Luiz Monteiro de Farias, D.Sc. 15 Tipos de Dados Um tipo de dado (data type) representa um conjunto de elementos (objetos) que possuem características pré-definidas, bem como um conjunto das operações que podem ser aplicadas sobre estes elementos. 2011-01 Oscar Luiz Monteiro de Farias, D.Sc. 16 Abstração Uma abstração surge do reconhecimento das semelhanças entre certos objetos, situações ou processos no mundo real, e da decisão de se concentrar nestas semelhanças e ignorar, naquele momento, as diferenças. Ex.: árvores, rios, cavalos, carros, etc … Uma abstração denota as características essenciais de um objeto, que o distingüe de todos os outros tipos de objetos e, assim, fornece fronteiras conceituais bem definidas, relativas à perspectiva do observador (Booch). 2011-01 Oscar Luiz Monteiro de Farias, D.Sc. 17 Abstração de Dados Trata-se de um mecanismo que encapsula a representação e as operações relativas a um tipo de dados (data type) . 2011-01 Oscar Luiz Monteiro de Farias, D.Sc. 18 Tipos de Dados Abstratos Um tipo de dados abstrato (abstract data type) é um tipo de dados com as suas respectivas operações, mas cuja representação é oculta ao usuário. 2011-01 Oscar Luiz Monteiro de Farias, D.Sc. 19 Escopo e Extent Escopo refere-se ao modo pelo qual entidades nomeadas (eg. variáveis, labels, tipos e procedures) são controladas relativamente à sua capacidade de ter um efeito em um programa. Escopo representa um contexto ao qual valores e expressões estão associadas 2011-01 Oscar Luiz Monteiro de Farias, D.Sc. 20 Static scoping [1] Free-variable - trata-se de uma variável que não é declarada no bloco begin .. end em que é usada. Escopo em ALGOL60 i i i i i 2011-01 Oscar Luiz Monteiro de Farias, D.Sc. 21 Static scoping [2] O escopo mais interno contendo o comando no qual a variável é utilizada é pesquisado para ver se a variável foi aí declarada. Se tal não aconteceu a busca continua no escopo que engloba o escopo anterior e assim sucessivamente, até que o escopo mais externo seja alcançado. Se a variável não foi aí declarada, ocorre um erro. 2011-01 Oscar Luiz Monteiro de Farias, D.Sc. 22 Dynamic scoping Em tempo de execução (run-time) verifica-se aquelas procedures e blocos que ainda não terminaram, tentando-se encontrar a primeira ocorrência do nome em uma declaração. As procedures e blocos são examinados na ordem reversa de sua invocação. Se o identificador não é encontrado ocorre um erro. Em caso contrário, a primeira ocorrência do identificador faz com que os atributos sejam associados ao nome. 2011-01 Oscar Luiz Monteiro de Farias, D.Sc. 23 Exemplo begin boolean b := true; procedure P; print(b) end; begin boolean b := false; P end end Qual é o valor que é impresso? static scoping: true dynamic scoping: false 2011-01 Oscar Luiz Monteiro de Farias, D.Sc. 24 Referências Internet → sites confiáveis (organizações, universidades, empresas, institutos de pesquisa, especialistas de renome...) Utilizar o padrão UERJ para dissertações/teses Sempre que incluir em sua monografia algo que se encontra em outro trabalho deve-se obrigatoriamente citar a fonte 2011-01 Oscar Luiz Monteiro de Farias, D.Sc. 25