Mudanças entre as edições de "Design patterns em linguagens dinâmicas"

De Garoa Hacker Clube
Ir para navegação Ir para pesquisar
Linha 23: Linha 23:
   
 
== Proposta detalhada ==
 
== Proposta detalhada ==
  +
  +
Considerando que linguagens dinâmicas modernas como Python, Ruby e JavaScript emprestam várias características dinâmicas de Lisp mencionadas por Norvig, a idéia é rever um subconjunto dos design patterns originais avaliando sua utilidade e alternativas de implementação em uma ou mais dessas linguagens.
   
 
* Para cada encontro, escolher 2 padrões para estudo e discussão:
 
* Para cada encontro, escolher 2 padrões para estudo e discussão:
 
** um dos 16 da lista do Norvig (acima)
 
** um dos 16 da lista do Norvig (acima)
 
** um dos 7 restantes, que não aparecem nesta lista porque devem ser aplicáveis também em linguagens dinâmicas mesmo na forma descrita no livro ''Design Patterns''.
 
** um dos 7 restantes, que não aparecem nesta lista porque devem ser aplicáveis também em linguagens dinâmicas mesmo na forma descrita no livro ''Design Patterns''.
* Apresentar código exemplo nas linguagens dinâmicas de preferência dos participantes
+
* Apresentar código exemplo nas linguagens dinâmicas de preferência dos participantes
   
 
== Cronograma ==
 
== Cronograma ==

Edição das 20h13min de 10 de março de 2013

Proposta

Grupo de estudos e discussão presencial no Garoa Hacker Clube para rever padrões de projeto e sua aplicabilidade e variações em linguagens dinâmicas (Python, Ruby, JavaScript etc.).

Contexto

O livro Design Patterns de Gamma et. al., documenta 23 padrões de projeto. A maioria dos exemplos de código são em C++ e há alguns em Smalltalk.

Em 1996, Peter Norvig fez uma apresentação Design Patterns in Dynamic Languages

Nesta apresentação o slide 10 tem o seguinte conteúdo:

Design Patterns in Dylan or Lisp

16 of 23 patterns are either invisible or simpler, due to:

  • First-class types (6): Abstract-Factory, Flyweight, Factory-Method, State, Proxy, Chain-Of-Responsibility
  • First-class functions (4): Command, Strategy, Template-Method, Visitor
  • Macros (2): Interpreter, Iterator
  • Method Combination (2): Mediator, Observer
  • Multimethods (1): Builder
  • Modules (1): Facade

Proposta detalhada

Considerando que linguagens dinâmicas modernas como Python, Ruby e JavaScript emprestam várias características dinâmicas de Lisp mencionadas por Norvig, a idéia é rever um subconjunto dos design patterns originais avaliando sua utilidade e alternativas de implementação em uma ou mais dessas linguagens.

  • Para cada encontro, escolher 2 padrões para estudo e discussão:
    • um dos 16 da lista do Norvig (acima)
    • um dos 7 restantes, que não aparecem nesta lista porque devem ser aplicáveis também em linguagens dinâmicas mesmo na forma descrita no livro Design Patterns.
  • Apresentar código exemplo nas linguagens dinâmicas de preferência dos participantes

Cronograma

Reuniões em 2 quartas-feiras por mês (a cada 2 ou 3 semanas)

Datas:

  • 3/04
  • 17/04
  • 8/05
  • 22/05
  • 5/06
  • 19/06

Referências

Participantes