linguagens de programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software...

55
Linguagens de Programação Prof a Jerusa Marchi Departamento de Informática e Estatística Universidade Federal de Santa Catarina e-mail: [email protected] Linguagens de Programação – p. 1/5

Upload: hathu

Post on 24-Nov-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Linguagens de ProgramaçãoProfa Jerusa Marchi

Departamento de Informática e Estatística

Universidade Federal de Santa Catarina

e-mail: [email protected]

Linguagens de Programação – p. 1/55

Page 2: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Linguagens de Programação

O que é uma Linguagem de Programação?

Método padronizado para expressar instruções para um computador

Conjunto de regras sintáticas e semânticas usadas para definir umprograma de computador

Permite ao programador especificar precisamente em quais dados ocomputador deve atuar, como estes dados serão armazenados outransmitidos e quais ações devem ser tomadas sob cadacircunstância

Linguagens de Programação – p. 2/55

Page 3: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Linguagens de Programação

A especificação de um programa ou código fonte deve seguir as regrassintáticas e semânticas definidas pela linguagem de programação

O código fonte é traduzido para código de máquina, que é executadopelo processador

Produtividade - linguagens de alto nível

Portabilidade - tornar o código fonte independente da máquina alvo

Linguagens de Programação – p. 3/55

Page 4: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Por que estudar LP

Aumentar a capacidade de expressar idéias

conhecimento facilita a expressão e a abstração

conhecer as construções suportadas por alguma linguagempermite desenvolver ou simular tais construções em outraslinguagens

Linguagens de Programação – p. 4/55

Page 5: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Por que estudar LP

Embasamento para escolher linguagens adequadas

A melhor linguagem para o desenvolvimento de um programa é alinguagem que melhor representa/trata o problema que se desejasolucionar

O conhecimento leva ao uso mais eficaz dos recursos efacilidades presentes na linguagem

Permite a evolução da área - desenvolvimento de novos recursos(expansões)

Linguagens de Programação – p. 5/55

Page 6: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Por que estudar LP

Facilita o aprendizado de novas linguagens

Evolução contínua da área exige aprendizado constante

Conhecimento dos conceitos facilita e acelera o aprendizado

Entender melhor a implementação

Permite entender por que uma linguagem foi implementanda detal forma

Permite o uso mais eficiente e racional dos recursos

Linguagens de Programação – p. 6/55

Page 7: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Por que estudar LP

Poder projetar novas linguagens

O entendimento do que existe, permite avaliar e propor novassoluções

Usar os modelos de especificação e técnicas de compilação nasolução de outros problemas

Contribuir para o avanço da computação

Se quem usa conhece, o tempo para aceitação de boaslinguagens será reduzido

Linguagens de Programação – p. 7/55

Page 8: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Classificação de LP

Quanto à Geração

Quanto ao Domínio de Aplicação

Quanto à implementação

Quanto ao Paradigma

Linguagens de Programação – p. 8/55

Page 9: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Classificação de LP

Quanto à Geração

1a Geração: linguagem de máquina (chaves lógicas)

2a Geração: linguagem simbólica (Assembly)

representação simbólica da linguagem de máquinaprecisa ser traduzido para a linguagem de máquina (assemblerou montador)

3a Geração: linguagens estruturadas orientadas a procedimentos

Fortran, Algol, Pascal, C, COBOL, Basic, Ada, etc.

4a Geração: linguagens orientadas à aplicação

lotus, excel, sql, etc.

5a Geração: linguagens voltadas para o desenvolvimento da

inteligência artificialProlog, LISP, Gödel, etc.

Linguagens de Programação – p. 9/55

Page 10: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Classificação de LP

Quanto ao domínio de Aplicação

Aplicações Científicas

Aplicações Empresariais

Inteligência Artificial

Programação de Sistemas

Domínios Específicos

Linguagens de Programação – p. 10/55

Page 11: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Classificação de LP

Aplicações Científicas

Estruturas de dados simples (vetores, matrizes)

Pouca E/S

Alta utilização de CPU

Exemplos:Fortran, Algol 60, Matlab, Scilab e derivadas

Linguagens de Programação – p. 11/55

Page 12: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Classificação de LP

Aplicações Empresariais

Facilidades para representação/manipulação de dadosalfanuméricos

Facilidade para geração de relatórios

Exemplos:Cobol, Sistemas e Linguagens voltadas ao Gerenciamento deBanco de Dados (SQL, Oracle, etc.)

Linguagens de Programação – p. 12/55

Page 13: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Classificação de LP

Inteligência Artificial

Foco está na manipulação simbólica

Exemplos:LISP, Prolog, Haskell, Scheme, etc

Linguagens de Programação – p. 13/55

Page 14: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Classificação de LP

Programação de Sistemas

desenvolvimento de software básico (SO, compiladores)

recursos de baixo nível e bom desempenho

Exemplos:PL/I, C e derivadas

Linguagens de Programação – p. 14/55

Page 15: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Classificação de LP

Domínios Específicos

Linguagens de Scripting: Javascript, perl, php

Linguagens de simulação: GPSS, Arena

Linguagens de Tempo Real: RTJava, RTCC

Linguagens de Programação – p. 15/55

Page 16: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Classificação de LP

Quanto à Implementação

Compiladasgeração de código de baixo nívelvantagem - eficiência na execuçãoFortran, cobol, C, Ada

Interpretadassimulação de uma máquina em softwarevantagem - rapidez no desenvolvimentodesvantagem - maior tempo de execuçãoBasic, APL, PHP, SQL, Prolog, Haskell

Linguagens de Programação – p. 16/55

Page 17: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Classificação de LP

Quanto à Implementação

Híbridascompilação para um código intermediário e interpretaçãodeste códigoo código intermediário pode ou não ser transparenteinterpretação do código intermediáriovantagem - portabilidadedesvantagem - necessidade de uma máquina virtualJava, C#

Linguagens de Programação – p. 17/55

Page 18: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Classificação de LP

Quanto ao Paradigma de Programação

Classificação usualLinguagens Imperativas· Procedurais, Estruturadas· Orientadas a Objetos

Linguagens Declarativas· Lógicas· Funcionais

Linguagens de Programação – p. 18/55

Page 19: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Linguagens Imperativas

Linguagens Procedurais e Estruturadas

baseadas na arquitetura de von Neumann

blocos, procedures (funções) e recursão

geralmente são fortemente tipadas

implementação baseada em pilha

estruturas de controle convencionais

natureza top-down

Linguagens de Programação – p. 19/55

Page 20: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Linguagens Estruturadas

Vantagens

Facilita a organização de prog. e sistemas

Permite ocultar informação

Eficiência

Algumas também possuem facilidades para prog. de grandessistemas

Linguagens de Programação – p. 20/55

Page 21: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Linguagens Estruturadas

Desvantagens

gerenciamento de grandes sistemas pode ser trabalhoso

abstrações menos naturais

sintaxe e semântica mais complexas

reuso possível, porém não explícito

Linguagens de Programação – p. 21/55

Page 22: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Linguagens Imperativas

Exemplos

Algol, Pascal, C, Modula e ADA

Aplicações

programação científica

programação de sistemas

Linguagens de Programação – p. 22/55

Page 23: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Linguagens Imperativas

Linguagens Orientadas a objetos

objetos e classes

atributos, métodos e mensagens

abstração de dados (ocultamento de informação)

ligação dinâmica e polimorfismo

herança

Linguagens de Programação – p. 23/55

Page 24: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Linguagens Orientadas a Objetos

Vantagens

reutilização

produtividade

projeto e programação integrados

afinidade com o mundo real

facilita manutenção/extensão de software

Linguagens de Programação – p. 24/55

Page 25: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Linguagens Orientadas a Objetos

Desvantagens

complexidade conceitual maior

eficiência pode ficar comprometida

implementações mal projetadas/programadas

Linguagens de Programação – p. 25/55

Page 26: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Linguagens Orientadas a Objetos

Exemplos

Simula, Smaltalk (pura)

C++, Java, Delphi (Object Pascal)

Aplicações

programação de grandes sistemas em geral

Linguagens de Programação – p. 26/55

Page 27: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Paradigma Imperativo

Exemplo: Fatorial em Cint fatorial (int n)

{

int i;

for (i = n - 1; i >= 1; i-)

n = n * i;

return n;

}

Linguagens de Programação – p. 27/55

Page 28: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Linguagens Declarativas

Linguagens Lógicas

baseada no cálculo dos predicados (lógica de 1a ordem)

baseada em definições recursivas, não possui estruturas decontrole

não possui tipos de dados, casamentos baseados em unificaçãode variáveis e constantes lógicas

fatos, regras e consultas

processo de inferência para produzir resultados (Prova deteoremas - Método da Resolução)

Exemplo - Prolog e seus dialetos

Linguagens de Programação – p. 28/55

Page 29: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Linguagens Lógicas

Vantagens

facilidades específicas para suas áreas de aplicação

Preocupação em o que fazer, e não em como fazer

Desvantagens

problemas de eficiência, necessidade de controle da recursão

carência de métodos para programação de grandes sistemas

Aplicações

área de IA - sistemas baseados em conhecimento, sistemasespecialistas, proc. de linguagem natural gerenciamento de BD

Linguagens de Programação – p. 29/55

Page 30: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Paradigma Lógico

Exemplo: Fatorial em Prologfatorial(0,1).

fatorial(N,R) :- N1 is N - 1, fatorial(N1, R1), R

is N * R1.

Linguagens de Programação – p. 30/55

Page 31: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Linguagens Declarativas

Linguagens Funcionais

baseado em funções matemáticas

funções primitivas + formas para construção de funçõescomplexas

não possuem variáveis, atribuição e iteração

podem ou não ser puras

presença de alguns recursos imperativos

repetição feita via recursão

execução - avaliação de funções

normalmente interpretadas, embora possam ser compiladas

Linguagens de Programação – p. 31/55

Page 32: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Linguagens Funcionais

Vantagens

sintaxe e semântica mais simples

nível de programação mais elevado

concorrência controlada pelo sistema de execução

Desvantagens

baixa eficiência

comunidade reduzida de usuários

Linguagens de Programação – p. 32/55

Page 33: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Linguagens Funcionais

Exemplos

LISP, Scheme, ML, Haskell

Aplicações

Computação simbólica

Processamento de listas

Aplicações de IA - Sistemas especialistas, Representação deconhecimento

Linguagens de Programação – p. 33/55

Page 34: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Paradigma Funcional

Exemplo: Fatorial em LISP(defun fatorial (n)

(if (<= n 1)

1

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

)

)

Linguagens de Programação – p. 34/55

Page 35: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Linguagens de Programação

O que levar em consideração no desenvolvimento ou na avaliaçãode linguagens de programação?

tipos de dados

estruturas de controle

abstração funcional

programação de grandes sistemas

concorrência

tratamento de exceções

Linguagens de Programação – p. 35/55

Page 36: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Linguagens de Programação

tipos de dados

declaração

vinculação estática ou dinâmica

tipagem forte ou fraca

construção de tipos abstratos

Linguagens de Programação – p. 36/55

Page 37: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Linguagens de Programação

estruturas de controle

seleção

repetição

desvio incondicional

entrada/saída

comandos compostos

Linguagens de Programação – p. 37/55

Page 38: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Linguagens de Programação

abstração funcional

subprogramasdefiniçãochamada

passagem de parâmetrosvalorreferência

suporte à recursão

formas de agrupamentomódulosclassesetc

Linguagens de Programação – p. 38/55

Page 39: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Linguagens de Programação

programação de grandes sistemas

compilação em separado (ou independente)

Linguagens de Programação – p. 39/55

Page 40: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Linguagens de Programação

Concorrência

Nívelinstruçãocomandounidadeprograma

Tarefas e threads

SincronizaçãoCooperação e Competição

Mecanismos de sincronizaçãoMonitoresSemáforosTroca de mensagens

Linguagens de Programação – p. 40/55

Page 41: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Linguagens de Programação

Tratamento de Exceções

Tratar eventos (errôneos ou não) que são detectáveis porsoftware ou hardware

Exemplosleitura de discooverflow de ponto-flutuanteíndice inválido

Linguagens de Programação – p. 41/55

Page 42: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Linguagens de Programação

A linguagem deve auxiliar o programador no projeto, documentaçãoe validação de programas

Principais Critérios:

legibilidade

regibilidade

confiabilidade

Objetivos

tradução eficiente

execução eficiente

portabilidade

Linguagens de Programação – p. 42/55

Page 43: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Legibilidade

facilidade para ler, escrever, entender e documentar programas

até a década de 70 - levava-se em conta a eficiência e a legibilidadede máquina

a partir de 70 - ciclo de vida do software - importância damanutenção

linguagens com um conjunto pequeno de construções básicas

simplicidade na declaração de tipos

linguagens que permitam documentar o texto fonte

Linguagens de Programação – p. 43/55

Page 44: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Legibilidade

compromisso com a expressividade

restrições léxicas (permitir identificar facilmente os elementos doprograma)

clareza sintática (permitir identificar claramente asestruturas/blocos do programa)

concisão semântica (permitir identificar facilmente o significadodas construções)

Linguagens de Programação – p. 44/55

Page 45: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Regibilidade

Linguagens de programação auxiliam no projeto de programasfornecendo mecanismos que facilitam a expressão da metodologiaadotada, o que permite que o programador possa se concentrar noentendimento e na solução do problema

Propriedades:

simplicidade

expressividade

ortogonalidade

Precisão na definição (formal se possível!)

Linguagens de Programação – p. 45/55

Page 46: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Simplicidade

A linguagem deve ser fácil de dominar

suas características devem ser facilmente aprendidas elembradas

o resultado de qualquer combinação dessas características deveser previsível e facilmente entendido

A simplicidade é prejudicada se

a linguagem oferecer várias maneiras diferentes para aespecificação de um mesmo conceito

a linguagem permite que diferentes conceitos sejam expressoscom a mesma notação

exemplo: a sobrecarga de operadores, multiplicidade derecursos para uma mesma operação

Linguagens de Programação – p. 46/55

Page 47: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Expressividade

Medida de naturalidade com que uma estratégia de resolução doproblema pode ser transformada em uma estrutura de programa

estruturas de controle, tipos de dados e abstração funcional

Linguagens de Programação – p. 47/55

Page 48: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Ortogonalidade

permitir que qualquer composição seja feita usando as primitivasbásicas

exemplo de falta de ortogonalidade: permitir que funções retornemsomente um subconjunto específico de tipos primitivos

Compromisso entre ortogonalidade e simplicidade

Linguagens de Programação – p. 48/55

Page 49: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Precisão na Definição

Definições sintáticas e semânticas precisas (definições formais)

Linguagens de Programação – p. 49/55

Page 50: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Confiabilidade

o programa faz o que foi programado, reagindo bem a qualquerinstância do problema

características boas: tratamento de exceções, tipagem forte,modularidade

características ruins: goto, variáveis globais

Linguagens com definições sintáticas e semânticas rigorosas sãomais confiáveis

Linguagens de Programação – p. 50/55

Page 51: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Especificação de Linguagens

A especificação dos aspectos léxicos, sintáticos e semânticos podeser

Formal

Informal

Mista

Linguagens de Programação – p. 51/55

Page 52: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Especificação de Linguagens

Aspectos Mecanismos Formais

Léxicos Gramáticas Regulares, Autômatos finitosExpressões Regulares

Sintáticos Gramáticas Livres de ContextoAutômatos de pilha

Semântico Gramáticas de AtributosAções Semânticas

Semântica Denotacional

Linguagens de Programação – p. 52/55

Page 53: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Especificação de Linguagens

Especificação Mista

GLC + Ações Semânticas ⇒ Tradução Dirigida pela Sintaxe ⇒

Geração de Código

Linguagens de Programação – p. 53/55

Page 54: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Especificação de Linguagens

Limite entre aspectos léxicos e sintáticos

Tomados em separados pois:os aspectos léxicos são mais simplesaumenta a legibilidade da Especificação Sintáticamaior eficiência na etapa de análise

Linguagens de Programação – p. 54/55

Page 55: Linguagens de Programação - inf.ufsc.brolinto/ine5622-cap3.pdf · desenvolvimento de software básico (SO, compiladores) recursos de baixo nível e bom desempenho ... de LP Domínios

Especificação de Linguagens

Limite entre aspectos sintáticos e semânticos

Não muito claro

Sintaxe independente de contexto

Sintaxe dependente de contexto

Significado SemânticoNa prática considera-se a sintaxe independente do contexto comaspecto sintático enquanto que as demais são aspectossemânticos.

Linguagens de Programação – p. 55/55