Professional Documents
Culture Documents
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?
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
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
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
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
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
11
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
formas de agrupamento
units, packages, classes/objetos, mdulos
14
Concorrncia
Diferentes nveis
Instruo, comando, unidade, programa
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
16
Correo e confiabilidade
caractersticas negativas
caractersticas positivas
Eficincia
compilao e execuo
17
Provabilidade
o programa representa a inteno programador? o PO equivalente ao PF? a mquina executa o PO corretamente? do
Ambiente de programao Facilidades para edio / testes / depurao Suporte operacional bibliotecas nativas Facilidades para compilao em separado Interface grfica
18
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
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?
20
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
22
de
atributos,
Otimizadores
geradores de cdigo
23
Procedimentos de TRADUO
COMPILER COMPILERS
24
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