09.03.09

Dojo 66 – Biblioteca de testes em Smalltalk

Posted in Dojo, SmallTalk at 9:06 am by marivb

  • Data: 02/03/2009
  • Participantes: Mari, Hugo, Yoshi, Fabricio, Thiago, Lucas, Jorge, Rafael, Breno, Ettore, Adolfo, Gianluca
  • Problema: Biblioteca de testes estilo “BDD” em Smalltalk (Squeak)
  • Código: no github

Insatisfeitos com o SUnit, escolhemos brincar de escrever uma biblioteca de testes mais ao estilo RSpec do Ruby, em Smalltalk. Começamos discutindo as possíveis sintaxes, decidindo por algo como:

(1 = 1) should: #beTrue
1 should: #= to: 1

A implementação foi rolando na classe Object mesmo, em uma categoria especial que adicionamos.

Retrospectiva

Do ruim:

  • Problema muito difícil para o conhecimento coletivo do dojo
  • SUnit não tem muitos recursos
  • A linguagem não tem guru de verdade, ficamos um pouco travados
  • Confundimos: testes, linguagem, ambiente – uma bagunça
  • Post-its amarelos pequenininhos
  • Muita conversa no vermelho: tava difícil?
  • Sintaxe Smalltalk: mais de um argumento exige que tenha palavra entre os argumentos
  • True é classe, true é singleton, otherwise não é true
  • Não tem substring (ou não achamos)
  • Faz tempo que não tem post no blog :-( ==> resolvido!

Do bom:

  • Squeak é igual à mãe do Fabs
  • Muita novidade
  • Terminamos com testes passando – malandramente, mas passando
  • Method finder é da hora
  • Save method WITH STYLE :-)
  • nil
  • Reflexão: “perform: #bla with: arg”
  • Smalltalk é legal, apesar de estranho
  • Symbol é String
  • Solução de bem poucas linhas
  • Pessoas novas, bastante gente
  • Dojo continua muito legal (OBAA! XD)

Das discussões que rolaram durante e depois:

  • Por algum motivo o ambiente do Squeak lembrou o Fabricio do projeto Alice – aprendendo a programar em Java, no qual você escreve programas que controlam bonequinhos 3D para aprender a linguagem.
  • Discutimos “Monkey patch“, ou seja, como colocar métodos no Object sem mudar o projeto Kernel do Squeak. Discutimos o conceito, mas não sabemos como fazer isso em Smalltalk, por isso adotamos a solução mais feia, que foi modificar o Kernel mesmo.
  • Colocamos o método “should” no Object… ele deveria existir APENAS quando executando testes. Em produção, uma chamada a “should” deveria idealmente não ser reconhecida.
  • Existe vida além do SUnit! Com um pouco de pesquisa, o Hugo acho o projeto SSpec que parece ser uma biblioteca de testes mais no estilo do que a gente queria. Legal! Como será a solução deles?

Dojo 64 – Interpretador de Smalltalk em Smalltalk

Posted in Dojo, SmallTalk at 8:39 am by marivb

  • Data: 09/02/2009
  • Participantes: Breno, Mari, Jac, Hugo, André, Fernando, Paulo, Ettore, Marcos, Thiago
  • Problema: Interpretador de Smalltalk em Smalltalk (Squeak)
  • Código: ainda não está online

A idéia do problema era interpretar uma sequencia de comandos em Smalltalk fazendo parse do texto e tudo o mais. Começamos com a coisa mais simples – uma atribuição: “minhaVariavel := umValor“. Apesar de a maioria não saber a linguagem direito e de os que sabiam não lembrarem direito, o código foi evoluindo.

Retrospectiva

Do ruim:

  • Avançamos muito pouco, apesar de fazer parte do aprendizado, queríamos ter avançado mais
  • Não usamos controle de versões
  • Falta conhecimento base em Smalltalk para aproveitar mais da sessão
  • A falta de conhecimento também causa lentidão
  • Precisamos muito do mouse pra programar no Squeak
  • “Gurus” Smalltalk estavam enferrujados
  • Confusão com as janelas do Squeak, resolução 800×600 não ajuda, ambiente estranho para a maioria
  • Conversa paralela e dupla falando baixo
  • Nem sempre a lista de “ToDo’s” dá tão certo
  • Estamos na seca se problemas

Do bom:

  • Método String >> findTokens do Squeak é o String.split() do Java
  • String >> withBlanksTrimmed
  • Linguagem nova: Squeak Smalltalk!
  • Aprendemos ou relembramos SUnit
  • Pessoas novas
  • O problema, independente da linguagem, é muito interessante
  • Foi uma sessão mais exploratória do que de costume

Do que discutimos com a pizza:

  • Squeak em produção? Aplicações do Smalltalk?
  • Como funciona o Method Finder? É mágica?
  • Que tal um “breafing” da reunião na semana que antecede o encontro?