• Nenhum resultado encontrado

Modelos e Paradigmas de Programação

N/A
N/A
Protected

Academic year: 2021

Share "Modelos e Paradigmas de Programação"

Copied!
13
0
0

Texto

(1)

Universidade Federal do Amazonas Instituto de Computação

IEC481 – Projeto de Programas

Modelos e Paradigmas de

Programação

Professor: Horácio Fernandes

Slides baseados em materiais preparados pelo Prof. João Bastos e pela Profa. Rosiane Freitas.

(2)

Linguagens de Programação

Cite algumas Linguagens de Programação

 C, C++, Java, Perl, Python, Bash, Prolog, Pascal, Basic, Fortran, PHP,

go, Erlang, Lua, Clipper, COBOL, ASM, Lisp, Haskell, Modula-2, Oberon, Java, C#, PL/1, Ada, Smalltalk, Símula, Algol, Eiffel, Scheme,CLOS, Maude, Glass, Holo,...

Mas porque tantas linguagens?

 Propósitos diferentes

 Avanços tecnológicos

 Interesses comerciais

Cultura e background científico

(3)

Paradigmas de Programação

O que é um Paradigma de Programação

 Modelo, padrão ou estilo de programação suportado por linguagens que

agrupam certas características comuns.

 A classificação de linguagens em paradigmas é uma consequência de

decisões de projeto que tem impacto na forma segundo a qual uma aplicação real é modelada do ponto de vista computacional.

(4)

Paradigmas de Programação

Modelos de Linguagens de Programação

 Linguagens Imperativas

programação orientada a procedimentos (C, Pascal)programação orientadas a objetos (C++, Java)

 Linguagens concorrentes

programação paralela (VHDL, SystemC)programação distribuída (C)

 Linguagens funcionais

programação funcional (Haskell)  Linguagens baseadas em lógicas

 programação em lógica (Prolog)  Linguagens baseadas em aspectos

(5)

Linguagens de Programação

E o que é uma “Linguagem de Programação”?

Do ponto de vista Sintático, uma linguagem de programação é uma

notação utilizada pelo programador para especificar ações a serem

executadas por um computador.

Do ponto de vista Semântico, uma linguagem de programação

compreende um conjunto de conceitos que um programador usa para resolver problemas de programação.

Variáveis, funções, estruturas, etc

(6)

Linguagens de Programação

Critérios de Avaliação de uma Linguagem de Programação:

 Legibilidade  Simplicidade  Expressividade  Ortogonalidade  Confiabilidade  Portabilidade

(7)

Critério: Legibilidade

Facilidade de ler e escrever programas

Legibilidade facilita:

 desenvolvimento e depuração de programas  manutenção de programas

 desempenho de equipes de programação

Fatores que melhoram a legibilidade:

 abstração de dados  comandos de controle

 modularização de programas  documentação

 convenções léxicas, sintaxe e semântica

 exemplo em Java: nomes de classes iniciam por letra

(8)

Critério: Legibilidade

Exemplo:

O que faz o seguinte código válido em C?

 Fonte: Ofuscated Code - http://en.wikipedia.org/wiki/Obfuscated_code

#include <stdio.h> main(t,_,a)

char *a;

{return!0<t?t<3?main(-79,-13,a+main(-87,1-_,

main(-86, 0, a+1 )+a)):1,t<_?main(t+1, _, a ):3,main ( -94, -27+t, a

)&&t == 2 ?_<13 ?main ( 2, _+1, "%s %d %d\n" ):9:16:t<0?t<-72?main(_, t,"@n'+,#'/*{}w+/w#cdnr/+,{}r/*de}+,/*{*+,/w{%+,/w#q#n+,/#{l,+,/n{n+\ ,/+#n+,/#;#q#n+,/+k#;*+,/'r :'d*'3,}{w+K w'K:'+}e#';dq#'l q#'+d'K#!/\ +k#;q#'r}eKK#}w'r}eKK{nl]'/#;#q#n'){)#}w'){){nl]'/+#n';d}rw' i;# ){n\ l]!/n{n#'; r{#w'r nc{nl]'/#{l,+'K {rw' iK{;[{nl]'/w#q#\ n'wk nw' iwk{KK{nl]!/w{%'l##w#' i; :{nl]'/*{q#'ld;r'}{nlwb!/*de}'c \ ;;{nl'-{}rw]'/+,}##'*}#nc,',#nw]'/+kd'+e}+;\ #'rdq#w! nr'/ ') }+}{rl#'{n' ')# }'+}##(!!/")

:t<-50?_==*a ?putchar(a[31]):main(-65,_,a+1):main((*a == '/')+t,_,a\ +1 ):0<t?main ( 2, 2 , "%s"):*a=='/'||main(0,main(-61,*a, "!ek;dc \ i@bK'(q)-[w]*%n+r3#l,{}:\nuwloca-O;m .vpbks,fxntdCeghiry"),a+1);}

(9)

Critério: Simplicidade

A representação de cada conceito deve ser simples de

aprender e dominar

 Simplicidade sintática exige que a representação seja feita de modo

preciso, sem ambigüidades

 contra-exemplo: A++; A=A+1; A+=1; ++A.

 Simplicidade semântica exige que a representação possua um

significado independente de contexto

 contra-exemplo: private: B b; class B: private A

(10)

Critério: Expressividade

Capacidade de representação da linguagem

 Exemplo: tipos de dados em Pascal

Expressividade x Simplicidade

 Linguagem muito expressiva: falta simplicidade?  Muito simples: falta expressividade?

Linguagens mais modernas

 Incorporam apenas um conjunto básico de representações de tipos de

dados e comandos

 Aumentam o poder de expressividade com bibliotecas de componentes

(11)

Critério: Ortogonalidade

Possibilidade de combinar entre si, sem restrições, os

componentes básicos da LP

 Exemplo: permitir combinações de estruturas de dados e ações sobre

eles, como arrays de registros.

 Contra exemplos:

 C: não permitir que um array seja usado como parâmetro de

um procedimento (deve-se usar ponteiro)

 PHP: Não permite acessar um vetor que retornou como

resultado de uma função:

 echo array('a','b','c')[$key]; // Erro!

(12)

Critério: Portabilidade

Multiplataforma

 Capacidade de um software executar em diferentes plataformas sem a

necessidade de maiores adaptações

 Sem exigências especiais de hardware/software

 Exemplo: aplicação compatível com sistemas Unix e Windows

Longevidade

 Ciclo de vida útil do software e o do hardware não precisam ser

síncronos; ou seja, é possível usar o mesmo software após uma mudança de hardware

(13)

Critério: Confiabilidade

Mecanismos que facilitem a produção de programas

que atendam às sua especificações

Tipagem forte: o processador da linguagem deve

 assegurar que a utilização dos diferentes tipos de dados seja compatível

com a sua definição

 evitar que operações perigosas, tal como aritmética de ponteiros, seja

permitida

Tratamento de exceções: sistemas de tratamento de

exceções permitem construir programas que

 possuam definições de como proceder em caso de comportamento não

usual

 possibilitem tanto o diagnóstico quanto o tratamento de erros em tempo

Referências

Documentos relacionados

ABSTRACT: The toxicological effects of crude ethanolic extracts (CEE) of the seed and bark of Persea americana have been analyzed on larvae and pupae of

As cadeias laterais variam em certo nível entre as diferentes formas de clorofila encontradas em diferentes organismos, mas todas possuem uma cadeia fitol (um terpeno ) ligada

Lernaea cyprinacea of Steindachnerina insculpta from Taquari River, municipality of Taquarituba, São Paulo State, Brazil.. Note the hemorrhagic area around the insertion point of

◦ Os filtros FIR implementados através de estruturas não recursivas têm menor propagação de erros. ◦ Ruído de quantificação inerente a

Os candidatos reclassificados deverão cumprir os mesmos procedimentos estabelecidos nos subitens 5.1.1, 5.1.1.1, e 5.1.2 deste Edital, no período de 15 e 16 de junho de 2021,

Anne Teresa De Keersmaeker e Jean-Guihen Queyras (o violoncelista que vai acompanhar ao vivo os bailarinos, tocando as suites de seguida, em tours de force de mais de duas

Desta maneira, observando a figura 2A e 2C para os genótipos 6 e 8, nota-se que os valores de captura da energia luminosa (TRo/RC) são maiores que o de absorção (ABS/RC) e

Contribuições/Originalidade: A identificação dos atributos que conferem qualidade ao projeto habitacional e das diretrizes de projeto que visam alcançá-los, são de fundamental