paradigma de linguagens de programação - clos/lisp
-
Upload
diego-damasceno -
Category
Technology
-
view
1.515 -
download
0
description
Transcript of paradigma de linguagens de programação - clos/lisp
1
A Linguagem CLOS e seus Paradigmas
Universidade Federal do ParáInstituto de Ciências Exatas e Naturais
Curso de Bacharelado em Ciência da Computação
Integrantes:
• Carlos Diego Nascimento Damasceno
• Teófilo Augusto Bordalo de Souza Vieira
2
Antes de começar...
“Pascal is for building pyramids—imposing, breathtaking, static structures built by armies pushing
heavy blocks into place. Lisp is for building organisms. . . .”
Alan Perlis
“If you think a programming problem is ’impossible’, get a second opinion from a Common
Lisp programmer!”
Kent M Pitman
3
Histórico da Linguagem
• Década de 1980
• Common Lisp: The Language (CLtL)
• Metas do Common Lisp
- Portabilidade;
- Coerência;
- Compatibilidade;
- Eficiência.
• Revisão e Ampliação do Common Lisp (8 de dezembro de 1994 - American National Standards Institute)
4
Classes de problemas indicados para o uso
1. Inteligência Artificial (IA)
“A inteligência é o que você usa quando não sabe o que fazer.”Jean Piaget
Sabe-se, de forma genérica, que um sistema inteligente é aquele que apresenta capacidade mental para: • raciocinar;
• resolver problemas;
• armazenar conhecimento;
5
“O ato de forçar definições para as coisas que nós não entendemos geralmente causa mais danos do que benefícios. As coisas com as quais lidamos na vida
prática são frequentemente muito complicadas para permitirem uma representação clara baseada em
expressões compactas. Em todo caso, não podemos nos privar de buscar uma definição para as coisas, no
sentido de entender o que elas são.
Marvin Minsky, The Society of Mind, 1985• Definição formal:
Inteligência Artificial (IA) é a área de pesquisa dedicada a buscar métodos ou dispositivos computacionais que possuam ou simulem a capacidade humana de resolver problemas, pensar ou, de forma ampla, ser inteligente.
1. Inteligência Artificial (IA)
Classes de problemas indicados para o uso
6
De algum modo a criptografia contribui para resolver os problemas de:
• confidencialidade;
• integridade;
• privacidade;
• autenticação.
• Definição formal: Criptografia é o estudo dos princípios e técnicas pelas quais a informação pode ser transformada da sua forma original para outra ilegível, de forma que possa ser conhecida apenas por seu destinatário. As técnicas mais conhecidas envolvem o conceito de chaves, as chamadas "chaves criptográficas“ (conjunto de bits baseados em um algoritmo).
2. Criptografia
Classes de problemas indicados para o uso
7
• Crash – Desenvolvido por Naughty Dog
3. Desenvolvimento de Jogos
Classes de problemas indicados para o uso
8
Sintaxe e semântica dos comandos principais
• CLOS - Common Lisp Object System
• Extensão do Lisp
• POO
- DEFCLASS
- MAKE-INSTANCE
- DEFMETHOD
- SLOTS
9
Definição de uma classe
(defclass nome_da_classe* (nome_da_superclasse*)(descrição_dos_slots*)opções_da_classe*
)
nome_da_classe* -> nome referente a classe descrição_dos_slots* -> (nome_do_slot opções_do_slot*)
:initform :accessor:initarg:allocation :class:allocation :instance
opções_da_classe* -> Outras opções que podem ser passadas para a classe
10
(defclass pessoa ()((nome :accessor pessoa-name
:initform nil :initarg :nome)
(idade :accessor pessoa-idade :initform nil :initarg :idade)
(total-equipe :accessor quant-p:initform 0:initarg :tot-equipe:allocation :class)))
Definição de uma classe
11
Herança
(defclass webdesigner (pessoa)((linguagem :accessor program-lang
:initform nil:initarg :prog-lang)
(total-wd :accessor quant-wd:initform 0:initarg :tot-wd:allocation :class))
)
12
Estrutura de um make-instance
(make-instance nome_da_classe* {valores dos initarg}*)
nome_da_classe* → Nome da classe que se deseja criar{valores dos initarg}* → Argumentos de incialização
13
1) A instância é criada com base nos :initarg's;2) Os initargs passados para o make-instance são validados;3) Alocam-se os espaços para a instância e criam-se instâncias livres;4) Inicializam-se os slots que tenham :initform;5) Inicializam-se os slots que foram passados :initarg's.
Exemplo: (make-instance 'pessoa :nome 'fulano :idade 99) (make-instance 'webdesigner :nome 'fulanow :idade 98 :prog-lang 'html)
Processo de Instanciação
14
Combinação de método
(defmethod cria-pessoa ((p pessoa)) (print " Nome:")
(setf (slot-value p 'nome) (read-line))
(print " Idade:")(setf (slot-value p 'idade) (read-line))
)
(defmethod cria-pessoa :around ((p pessoa))(print "-------------------------")(call-next-method)
)
(defmethod cria-pessoa :before ((p pessoa))(write-sentence p)
)
15
Interpretadores e IDE’s
1. Cusp
16
Interpretadores e IDE’s
2. LispStudio
17
Interpretadores e IDE’s
3. GNU CLISP
18
Exemplo de Referência
19
Exemplo Original
20
Análise Crítica sobre a linguagem
• Linguagem pode ser usada para várias finalidades
• Legibilidade de expressões s-expression
• Conhecer LISP
• Paradigma OO & Funcional
• Material disponível em Inglês
21
Conteúdo disponível na WEB
1. #LISP – irc.freenode.net
22
Conteúdo disponível na WEB
2. http://www.cliki.net/
23
Conteúdo disponível na WEB
3. http://cl-cookbook.sourceforge.net/
24
KEENE, Sonja. Object-Oriented Programming in Common LispAddison-Wesley
Conteúdo disponível na WEB
3. E-Books
25
SEIBEL, Peter. Practical Common LispApress
Conteúdo disponível na WEB
3. E-Books
26
Massachusetts Institute of Technology. Lisp 1.5 Programmer's ManualMassachusetts Institute of Technology
Conteúdo disponível na WEB
3. E-Books
27
TOURETZKY, David S. Common LISP : A Gentle Introduction to Symbolic Computation
The Benjamin/Cummings Publishing Company, inc.
Conteúdo disponível na WEB
3. E-Books
28
OBRIGADO!
Fim