SlideShare une entreprise Scribd logo
1  sur  28
Télécharger pour lire hors ligne
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 Lisp
Addison-Wesley
Conteúdo disponível na WEB
3. E-Books
25
SEIBEL, Peter. Practical Common Lisp
Apress
Conteúdo disponível na WEB
3. E-Books
26
Massachusetts Institute of Technology. Lisp 1.5 Programmer's Manual
Massachusetts 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

Contenu connexe

Similaire à paradigma de linguagens de programação - clos/lisp

De algoritmos à programas de computador
De algoritmos à programas de computadorDe algoritmos à programas de computador
De algoritmos à programas de computadorSérgio Souza Costa
 
Linguagem de Programação Java
Linguagem de Programação JavaLinguagem de Programação Java
Linguagem de Programação Javathomasdacosta
 
Inteligência Artificial
Inteligência ArtificialInteligência Artificial
Inteligência Artificialkennedyaraujo
 
Postgresql + Python = Power!
Postgresql + Python = Power!Postgresql + Python = Power!
Postgresql + Python = Power!Juliano Atanazio
 
Machine learning java ce conference 2012 - fortaleza ce
Machine learning java ce conference 2012 - fortaleza ceMachine learning java ce conference 2012 - fortaleza ce
Machine learning java ce conference 2012 - fortaleza ceLuca Bastos
 
Aula 01.3 - Fundamentos da Construção de Algoritmos e Programas
Aula 01.3 - Fundamentos da Construção de Algoritmos e ProgramasAula 01.3 - Fundamentos da Construção de Algoritmos e Programas
Aula 01.3 - Fundamentos da Construção de Algoritmos e ProgramasMessias Batista
 
Inteligencia Artificial e Aprendizado de Máquina
Inteligencia Artificial e Aprendizado de MáquinaInteligencia Artificial e Aprendizado de Máquina
Inteligencia Artificial e Aprendizado de MáquinaGefferson Figueiredo Marcos
 
Algoritmos, Inteligência Artificial e Políticas Públicas
Algoritmos, Inteligência Artificial e Políticas PúblicasAlgoritmos, Inteligência Artificial e Políticas Públicas
Algoritmos, Inteligência Artificial e Políticas PúblicasNathalia Sautchuk Patricio
 
Unidade 06 introdução a computação - segurança da informação 15-03-03 - 57 ...
Unidade 06   introdução a computação - segurança da informação 15-03-03 - 57 ...Unidade 06   introdução a computação - segurança da informação 15-03-03 - 57 ...
Unidade 06 introdução a computação - segurança da informação 15-03-03 - 57 ...Alex Casañas
 
Unidade 06 introdução a computação - segurança da informação 15-03-03 - 57 ...
Unidade 06   introdução a computação - segurança da informação 15-03-03 - 57 ...Unidade 06   introdução a computação - segurança da informação 15-03-03 - 57 ...
Unidade 06 introdução a computação - segurança da informação 15-03-03 - 57 ...Alex Casañas
 
inteligencia artificial
inteligencia artificialinteligencia artificial
inteligencia artificialJean Carvalho
 
Um estudo sobre inteligência artificial e o funcionamento de um agente
Um estudo sobre inteligência artificial e o funcionamento de um agenteUm estudo sobre inteligência artificial e o funcionamento de um agente
Um estudo sobre inteligência artificial e o funcionamento de um agenteUNIEURO
 
Palestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesPalestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesMarcos Thomaz
 
Apostila introducao-shell
Apostila introducao-shellApostila introducao-shell
Apostila introducao-shellMarcio Pereira
 

Similaire à paradigma de linguagens de programação - clos/lisp (20)

De algoritmos à programas de computador
De algoritmos à programas de computadorDe algoritmos à programas de computador
De algoritmos à programas de computador
 
Linguagem de Programação Java
Linguagem de Programação JavaLinguagem de Programação Java
Linguagem de Programação Java
 
Inteligência Artificial
Inteligência ArtificialInteligência Artificial
Inteligência Artificial
 
SFD - C# para a comunidade
SFD - C# para a comunidadeSFD - C# para a comunidade
SFD - C# para a comunidade
 
Postgresql + Python = Power!
Postgresql + Python = Power!Postgresql + Python = Power!
Postgresql + Python = Power!
 
Inteligência Artificial
Inteligência ArtificialInteligência Artificial
Inteligência Artificial
 
Machine learning java ce conference 2012 - fortaleza ce
Machine learning java ce conference 2012 - fortaleza ceMachine learning java ce conference 2012 - fortaleza ce
Machine learning java ce conference 2012 - fortaleza ce
 
Aula 01.3 - Fundamentos da Construção de Algoritmos e Programas
Aula 01.3 - Fundamentos da Construção de Algoritmos e ProgramasAula 01.3 - Fundamentos da Construção de Algoritmos e Programas
Aula 01.3 - Fundamentos da Construção de Algoritmos e Programas
 
Pentest conisli07
Pentest conisli07Pentest conisli07
Pentest conisli07
 
Inteligencia Artificial e Aprendizado de Máquina
Inteligencia Artificial e Aprendizado de MáquinaInteligencia Artificial e Aprendizado de Máquina
Inteligencia Artificial e Aprendizado de Máquina
 
Algoritmos, Inteligência Artificial e Políticas Públicas
Algoritmos, Inteligência Artificial e Políticas PúblicasAlgoritmos, Inteligência Artificial e Políticas Públicas
Algoritmos, Inteligência Artificial e Políticas Públicas
 
Unidade 06 introdução a computação - segurança da informação 15-03-03 - 57 ...
Unidade 06   introdução a computação - segurança da informação 15-03-03 - 57 ...Unidade 06   introdução a computação - segurança da informação 15-03-03 - 57 ...
Unidade 06 introdução a computação - segurança da informação 15-03-03 - 57 ...
 
Unidade 06 introdução a computação - segurança da informação 15-03-03 - 57 ...
Unidade 06   introdução a computação - segurança da informação 15-03-03 - 57 ...Unidade 06   introdução a computação - segurança da informação 15-03-03 - 57 ...
Unidade 06 introdução a computação - segurança da informação 15-03-03 - 57 ...
 
inteligencia artificial
inteligencia artificialinteligencia artificial
inteligencia artificial
 
Um estudo sobre inteligência artificial e o funcionamento de um agente
Um estudo sobre inteligência artificial e o funcionamento de um agenteUm estudo sobre inteligência artificial e o funcionamento de um agente
Um estudo sobre inteligência artificial e o funcionamento de um agente
 
Palestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesPalestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas Aplicações
 
Ia01 introducao (1)
Ia01   introducao (1)Ia01   introducao (1)
Ia01 introducao (1)
 
Tutorial Shell Script
Tutorial Shell ScriptTutorial Shell Script
Tutorial Shell Script
 
Apostila introducao-shell
Apostila introducao-shellApostila introducao-shell
Apostila introducao-shell
 
Minicurso do Terminal ao Python
Minicurso do Terminal ao PythonMinicurso do Terminal ao Python
Minicurso do Terminal ao Python
 

Plus de Diego Damasceno

Slide minicursocalourosufpa2011
Slide minicursocalourosufpa2011Slide minicursocalourosufpa2011
Slide minicursocalourosufpa2011Diego Damasceno
 
Otimizacao aplicada à bioinformática
Otimizacao aplicada à bioinformáticaOtimizacao aplicada à bioinformática
Otimizacao aplicada à bioinformáticaDiego Damasceno
 
Aplicacao de automatos no funcionamento de elevadores
Aplicacao de automatos no funcionamento de elevadoresAplicacao de automatos no funcionamento de elevadores
Aplicacao de automatos no funcionamento de elevadoresDiego Damasceno
 
Slide minicursocalourosufpa2010
Slide minicursocalourosufpa2010Slide minicursocalourosufpa2010
Slide minicursocalourosufpa2010Diego Damasceno
 
Minicurso de python - CACC UFPA 2010
Minicurso de python - CACC UFPA 2010Minicurso de python - CACC UFPA 2010
Minicurso de python - CACC UFPA 2010Diego Damasceno
 

Plus de Diego Damasceno (6)

Slide minicursocalourosufpa2011
Slide minicursocalourosufpa2011Slide minicursocalourosufpa2011
Slide minicursocalourosufpa2011
 
Otimizacao aplicada à bioinformática
Otimizacao aplicada à bioinformáticaOtimizacao aplicada à bioinformática
Otimizacao aplicada à bioinformática
 
Cadeias de Markov
Cadeias de MarkovCadeias de Markov
Cadeias de Markov
 
Aplicacao de automatos no funcionamento de elevadores
Aplicacao de automatos no funcionamento de elevadoresAplicacao de automatos no funcionamento de elevadores
Aplicacao de automatos no funcionamento de elevadores
 
Slide minicursocalourosufpa2010
Slide minicursocalourosufpa2010Slide minicursocalourosufpa2010
Slide minicursocalourosufpa2010
 
Minicurso de python - CACC UFPA 2010
Minicurso de python - CACC UFPA 2010Minicurso de python - CACC UFPA 2010
Minicurso de python - CACC UFPA 2010
 

paradigma de linguagens de programação - clos/lisp

  • 1. 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. 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. 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. 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. 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. 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. 7 • Crash – Desenvolvido por Naughty Dog 3. Desenvolvimento de Jogos Classes de problemas indicados para o uso
  • 8. 8 Sintaxe e semântica dos comandos principais • CLOS - Common Lisp Object System • Extensão do Lisp • POO - DEFCLASS - MAKE-INSTANCE - DEFMETHOD - SLOTS
  • 9. 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. 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. 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. 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. 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. 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) )
  • 20. 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. 21 Conteúdo disponível na WEB 1. #LISP – irc.freenode.net
  • 22. 22 Conteúdo disponível na WEB 2. http://www.cliki.net/
  • 23. 23 Conteúdo disponível na WEB 3. http://cl-cookbook.sourceforge.net/
  • 24. 24 KEENE, Sonja. Object-Oriented Programming in Common Lisp Addison-Wesley Conteúdo disponível na WEB 3. E-Books
  • 25. 25 SEIBEL, Peter. Practical Common Lisp Apress Conteúdo disponível na WEB 3. E-Books
  • 26. 26 Massachusetts Institute of Technology. Lisp 1.5 Programmer's Manual Massachusetts Institute of Technology Conteúdo disponível na WEB 3. E-Books
  • 27. 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