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

Post on 18-Dec-2014

1.515 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

 

TRANSCRIPT

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

top related