You are on page 1of 25

Captulo III - Linguagens de Programao

Porque Estudar Ling. de Programao? Quais so as formas de classificar Linguagens? Quais so os Conceitos Fundamentais de Linguagens de Programao? Como Avaliar/Projetar Ling. de Programao? Caractersticas Critrios Como Especificar Ling. de Programao? Como Implementar Ling. de Programao?

III.1 Motivos para Estudar Ling. de Prog.


Aumentar a capacidade de expressar idias
Maior conhecimento facilita a expresso

Conhecer melhor para Escolher melhor


O maior conhecimento leva ao uso mais eficaz dos recursos e facilidades Possibilita escolhas mais adequadas Permite a evoluo da rea

Facilitar o aprendizado de novas linguagens


Evoluo contnua exige atualizao constante Maior conhecimento, facilita/acelera o aprendizado

Entender melhor a implementao


Permite entender o porqu das coisas Permite o uso mais eficiente e racional dos recursos

Poder projetar novas linguagens


O entendimento do que existe, permite avaliar e propor novas solues Uso dos modelos de especificao e tcnicas de compilao na soluo de problemas convencionais.

Contribuir para o avano da computao


Pq algumas linguagens se sobressaem? Pq Linguagens boas podem demorar para serem reconhecidas/aceitas? Se quem usa conhece, o tempo para aceitao de boas linguagens ser reduzido.
2

III.2 Classificaes de Linguagens Quanto a Gerao (evoluo)


1 Gerao
o Linguagens de Mquina

2 Gerao
o Linguagens Simblicas (Assembly)

3 Gerao
o Linguagens orientadas ao usurio Projetadas para profissionais de Informtica o procedimentais (procedurais ou imperativas) instrues: E/S, aritmticas e lgicas, de controle ex.: Fortran, Algol, Pascal, C, Ada o declarativas Funcionais teoria das funes recursivas (Lisp) Lgicas lgica de predicados (Prolog)

4 Gerao
o Linguagens orientadas a aplicao Projetadas para usurios finais integradas com BD uso de formulrios, menus, grficos, etc o Visam simplificar o desenvolvimento e reduzir o custo de manuteno o Ex.: lotus, excel, sql, L. grficas e de simulao

5 Gerao
o Facilidades para representao do conhecimento o Usadas na rea de Inteligncia Artificial

Quanto ao domnio de aplicao


Cientficas
o Estruturas de dados simples, pouca E/S, alta utilizao de CPU o Fortran, Algol e suas derivadas

Comerciais
o Facilidades para representao/manipulao de dados alfanumricos o Facilidade para gerao de relatrios o Cobol, Planilhas eletrnicas e sistemas de BD

Programao de sistemas
o desenvolvimento de software bsico o recursos de baixo nvel e bom desempenho o PL/I, Algol e C

Linguagens para propsitos especiais


o Linguagens de Scripting: Javascript, perl, php o Linguagens para IA: Lisp, Prolog o Linguagens de simulao : GPSS o Linguagens Tempo Real : RTCC, RTJava o ...

Quanto a Implementao
Compilao
o gerao de cdigo de baixo nvel o vantagem eficincia na execuo o ex. tpicos: Fortran, cobol, C, Ada, Pascal

Interpretao
o simulao de uma mquina em software o vantagem rapidez no desenvolvimento o desvantagem maior tempo de execuo o exemplos tpicos : Basic, APL, PHP, Linguagens de controle, Linguagens de consulta

Implementao Hbrida
o compilao para um cdigo intermedirio O Cdigo Int. pode ou no ser transparente o Interpretao do cdigo intermedirio o rene vantagens e desvantagens dos anteriores o exemplos : Java, algumas verses de Pascal

Quanto ao Paradigma de Programao Classificao usual


L. Imperativas (Procedurais, Estruturadas) Linguagens Baseadas/Orientadas a Objetos Linguagens Lgicas Linguagens Funcionais

Classificao de Peter Wegner


Imperativas (como fazer!)
Estruturadas (blocos) Baseadas/Orientadas a Objetos Distribudas

Declarativas (o que fazer!)


Funcionais (funes recursivas) Lgicas (clculo proposicional) Relacionais (lgebra relacional)

Principais aspectos dos diversos Paradigmas


Imperativo (Procedural, Estruturado) Caractersticas bsicas
baseadas na arquitetura de von Neumann blocos, procedures (funes) e recurso geralmente so fortemente tipadas implementao baseada em pilha estruturas de controle convencionais natureza top-down

Vantagens
Facilita a organizao de programas e sistemas Permite ocultar informao Eficincia Algumas tambm possuem facilidades para programao de grandes sistemas (Mdula e ADA)

Desvantagens
ger. de grandes sistemas pode ser trabalhoso abstraes menos naturais sintaxe e semntica mais complexas reuso possvel, porm no explcito

Exemplos
Algol, Pascal, C, Modula e ADA

Aplicaes
programao cientfica programao de sistemas
8

Baseado/Orientado a Objetos Caractersticas bsicas


o objetos e classes o atributos, mtodos e mensagens o abstrao de dados (ocultamento de informao) o ligao dinmica e polimorfismo o herana

Vantagens
o reutilizao o produtividade o projeto e programao integrados o afinidade com o mundo real o facilita manuteno/extenso de software

Desvantagens
o complexidade conceitual maior o eficincia pode ficar comprometida o implementaes mal projetadas / programadas

Exemplos
o o o o Simula, Smaltalk (pura) C++, Java, Delphi (Object Pascal) Dialetos de praticamente todas as linguagens Outros paradigmas: Lgicas e Funcionais

Aplicaes
o programao de grandes sistemas em geral

Lgico
Caractersticas bsicas
o linguagem declarativa o baseada no clculo dos predicados o fatos : pai (Joo, Carlos); me (Maria,Carlos) o regras: irmos (x,y) :- me (M,x), me(M,y), pai (P,x), pai(P,y) o metas (consultas) : irmos (Carlos, Ana) o processo de inferncia para produzir resultados

Exemplos
o PROLOG e seus dialetos

Vantagens
o facilidades especficas para suas reas de aplicao o Preocupao em o que fazer, e no como fazer!

Desvantagens
o problemas de eficincia o carncia de mtodos para programao de grandes sistemas

Aplicaes
o rea de IA sistemas de conhecimento, sistemas especialistas, proc. de linguagem natural o gerenciamento de BD o prova de teoremas

10

Funcional
Caractersticas bsicas
o baseado em funes matemticas o funes primitivas + formas para construo de funes complexas o no possuem variveis, atribuio e iterao o podem ou no ser puras ! presena de alguns recursos imperativos o repetio feita via recurso o execuo ! avaliao de funes o normalmente interpretadas, embora possam ser compiladas

Vantagens
o sintaxe e semntica mais simples o nvel de programao mais elevado o concorrncia controlada pelo sist. de execuo

Desvantagens
o baixa eficincia o comunidade reduzida de usurios

Exemplos
o LISP,Scheme, ML, Haskell

Aplicaes
o Computao simblica o Processamento de listas o Aplicaes de IA

! Sistemas especialistas ! Representao de conhecimento ! Processamento de linguagem natural

11

III.3 - Conceitos Fundamentais de Linguagens de Programao


Constantes e variveis Declaraes explcitas X implcitas Vinculao esttica X dinmica Tipos e Estruturas de Dados
o Tipos primitivos o Tipo string (cadeia de caracteres) o Ordinais definidos pelo usurio Enumerao, subrange o Tipos estruturados Array, registro, unio, conjunto o Ponteiros

Tipagem forte
o Todos os erros de tipo so detectados Tempo de compilao ou de execuo

Verificao de tipos: esttica X dinmica Escopo (regras de visibilidade) Abstrao de Dados (tipo de dados abstratos)
o Encapsulamento envolvendo dados e operaes o Usados como tipos em declaraes

12

Expresses e Atribuio
o Aritmticas, relacionais e lgicas (booleanas) o Operandos e operadores o Associatividade o Sobrecarga de operadores o Compatibilidade e converso de tipo

Estruturas de Controle
o Comandos compostos o Seleo : if, case/switch o Repetio : while, repeat, for o Desvios incondicionais o Entrada / Sada

13

Abstrao Funcional subprogramas (funes e procedimentos)


princpios bsicos definio (interface), corpo e chamada parmetros (formais x reais) nmero, ordem e tipo mecanismos de passagem valor, referncia, nome procedimentos podem ser parmetros? alocao esttica x dinmica variveis locais X variveis globais sobrecarga, genericidade recurso, co-rotinas e interfaces

formas de agrupamento
units, packages, classes/objetos, mdulos

Programao de grandes sistemas


compilao em separado (ou independente)

14

Concorrncia
Diferentes nveis
Instruo, comando, unidade, programa

Questo de linguagem : comando e unidade Fsica X lgica Tarefas e threads Sincronizao


Cooperao e Competio

Mecanismos de sincronizao
Monitores Semforos Troca de mensagens

15

Excees
Evento (errneo ou no) detectvel por software ou hardware que exige processamento especial
Leitura de disco overflow de ponto-flutuante ndice invlido

Exemplos

tratada na mesma ou em outra unidade Vantagens


Legibilidade Confiabilidade Custo e tamanho de programas (propagao)

Diferentes linguagens diferentes formas de implementao


PL/I On <condio> ADA exception when <condio> => <ao> C++ - try throw - catch Java - try throw catch - finally

16

III.4 Critrios/Caractersticas a serem observados no projeto/avaliao de Linguagens de Programao


A LP deve ser adequada s aplicaes alvo
possuir recursos necessrios e suficientes o programador deve ter domnio da Linguagem

Correo e confiabilidade
caractersticas negativas

goto, variveis globais, sinnimos (par. por referncia, ponteiros)

caractersticas positivas

tipagem forte, excees, pr e ps-condies

Eficincia
compilao e execuo

Portabilidade Extensibilidade Boa definio (formal se possvel!!!) Legibilidade (usabilidade)


fcil de ler, escrever e entender programas simplicidade e clareza sinttica clareza e conciso semntica

Uniformidade / ortogonalidade Manutenibilidade (facilidade de manuteno)

17

Provabilidade
o programa representa a inteno programador? o PO equivalente ao PF? a mquina executa o PO corretamente? do

Custo Funo de vrias caractersticas


facilidade para desenvolvimento de programas compilao / execuo manuteno confiabilidade

Ambiente de programao Facilidades para edio / testes / depurao Suporte operacional bibliotecas nativas Facilidades para compilao em separado Interface grfica

18

Critrios e caractersticas importantes no projeto e avaliao de linguagens de programao


(Sebesta 2004)
Critrios Legibili- Capacidade Confiabilidade de escrita dade X X X X X X X X X X X X X X X X X X X

Caractersticas Simplicidade/ortogonalidade Estruturas de controle Tipos de dados e estruturas Boa definio sinttica Suporte para abstrao Expressividade Verificao de tipos Manipulao de excees Aliasing restrito

19

Influncias no Projeto de Linguagens


Arquitetura do computador
(Von Neumann variveis/memria)

Metodologias de Programao
projeto top-down decomposio funcional orientao a objetos herana, ligao dinmica programao orientada a processos concorrncia

Linguagens predecessoras
O que valea a pena ser preservado?

Trade-offs (compromissos) no projeto de L. P.


critrios/caractersticas conflitantes conciliao desses critrios / caractersticas
tarefa do projetista

confiabilidade X custo de execuo expressividade X legibilidade flexibilidade X segurana ortogonalidade X simplicidade

20

III.5 Como especificar Linguagens de Programao


Especificao (Formal, Informal ou Mista) dos aspectos:

Lxicos, Sintticos e Semnticos


Diferentes graus e modelos de Formalizao

Aspectos
Lxicos Sintticos Semnticos / traduo

Mecanismos Formais
GR, AF e ER GLC, Autmatos de Pilha Gramticas de Atributos Semntica Denotacional Semntica de Aes

Aspectos Semnticos e de traduo Uso de Esquemas Mistos GLC + AES SEMNTICAS Traduo Dirigida pela Sintaxe

Gerao de Cdigo

21

Limite entre Especificao Lxica e Sinttica O que Lxico? O que Sinttico? Porque especificar separadamente?
Aspectos lxicos so mais simples Aumento da legibilidade da Esp. Sinttica Maior eficincia na Anlise

Limite entre Esp. Sinttica e Semntica


O que Sinttico? O que Semntico?
Diviso no muito clara: 1. Sintaxe independente de contexto 2. Sintaxe dependente de contexto 3. Significado Semntico Na prtica: 1. considerado sinttico 2. e 3. so considerados semnticos Determinados aspectos podem ser considerados tanto sintticos quanto semnticos :
Constantes usadas na definio de intervalos Uso restrito de tipos em determinados contextos Dimenses de um array

22

III.6 Implementao de Linguagens de Programao


"Formas de Implementao
" Traduo (compilao, pr-processamento, etc...) " Interpretao " Implementaes hbridas (compilao + interpretao)

"Ferramentas usadas na implementao de Compiladores


Alm de ambientes/softwares convencionais, so usadas ferramentas especficas, tais como: " Editores de Gramticas e Autmatos " Grficos e Textuais " Geradores de Analisadores Lxicos " LEX, GALEX, GALS e Gal " Geradores de Analisadores Sintticos " YACC, LADE, SYNTAX, GAS e GALS
" Avaliadores

de

atributos,

Otimizadores

geradores de cdigo

23

" Compiler - Compilers

Especificao da LING. FONTE

Procedimentos de TRADUO

Especificao da LING. OBJETO

COMPILER COMPILERS

COMPILADOR DA LINGUAGEM FONTE

Aspecto comum : Ferramentas baseadas (parcial ou totalmente) em mecanismos formais,

24

Trabalho sobre Linguagens de Programao


1 Ler as anotaes de aula deste Captulo III 2 Complementar o estudo dos tpicos aqui apresentados, lendo o captulo sobre avaliao de LP dos seguintes livros da bibliografia (cpia no xerox do ctc):
1. WATT, D., Programming Language Design Concepts, John Wiley and

Sons, Ltd, 2004. 2. SEBESTA, R.W., Conceitos de Linguagens de Programao, ed. Bookman, 6. edio, 2005. 3. APPLEBY, D., Programming Languages Paradigm and Practice. Ed McGraw-Hill, Inc., 1991. 4. www

3 Escolher uma Linguagem de programao, descrev-la e fazer uma avaliao da mesma, levando em conta os critrios e as caractersticas tipicamente utilizados na avaliao de linguagens (incluindo, obrigatoriamente, os apresentados na seo 4 deste captulo). Ateno: A avaliao elaborada dever ser bem fundamentada e ilustrada com exemplos que representem as caractersticas que contribuem positiva ou negativamente para que os diferentes critrios sejam bem/mal avaliados.

Observaes:
1 Entregar relatrio (impresso) contendo: introduo, descrio da LP escolhida; Avaliao elaborada; concluso e bibliografia. 2 A descrio da linguagem escolhida dever ser sinttica (priorizando aspectos gerais em detrimento de detalhes sintticos) e dever abordar, entre outros, os seguintes aspectos: 2.1 Breve histrico da Linguagem; 2.2 Classificao (seo 2); 2.3 Conceitos fundamentais (seo 3) 4 - O Trabalho dever ser feito em duplas e o Relatrio dever ser entregue at 07 de outubro de 2013.

25

You might also like