Smalltalk
Fortemente influenciado pelo Ronaldo e embasbacado pelo Seaside, decidi adicionar Smalltalk a minha sempre-crescente lista de linguagens de programacão à aprender. Como dizem por aí, tá no inferno, abraça o capeta.
Zappeando por aí, encontrei uma página com uma penca de livros free sobre o assunto. Baixei quase todos e elegi Smalltalk by Example e Smalltalk with Style como os meus pontos de partida.
O Smalltalk by Example me atraiu bastante por ser subdividido, como eu posso explicar isso, por exemplos. Incrível. Me pareceu bastante interessante e como eu aprendo mesmo é com exemplos, pareceu uma escolha acertada. São 300 páginas em 34 capítulos, indo desde o básico até meta-programming. Cada capítulo me pareceu, em uma primeira olhada, bastante compreensivo.
O link leva a um diretório com PDFs de cada capítulo individual e do livro inteiro. Eu baixei todos os capítulos em separado, por praticidade.
Já o Smalltalk with Style tem uma abordagem mais direcionada ao estilo de programação. O livro vai introduzindo conceitos em conjunto com guidelines e exemplos de uso dessas guidelines. Nunca havia visto um livro assim e eu confesso que ele me acendeu uma luzinha lá atrás na massa cinzenta, onde ajunta pó.
Para melhor exemplificar o que me falta competência para explicar, transcrevo um trecho:
Guideline 100 - Avoid modifying a collection while iterating over it. Use the proper protocols or make a copy of the collection first.
Example (wrong):
aCollection do: [:element | element = someFilterCriteria ifTrue: [aCollection remove: element]].At first glance, a developer might assume that the above enumeration will remove the desired element from the collection. Unfortunately, a closer examination of the statement’s internal behavior will show that the position of the items in the collection changes after each element is removed and therefore the indexing into the collection is not correct during subsequent iterations. The following statements will perform the filtering properly:
Example (right):
or alternately:aCollection := aCollection reject: [:element | element = someFilterCriteria].aCollection copy do: [:element | element = someFilterCriteria ifTrue: [aCollection remove: element]].
Interessante, não? Mais do que ensinar a linguagem, passar esse tipo de guideline contribui para estabelecer uma linha de raciocínio para desenvolver com a linguagem e, ao mesmo tempo, subsídios para se questionar o estilo de desenvolvimento da mesma. O famoso “por que é assim?”, que é o passo seguinte para o aprendizado de uma linguagem. De qualquer coisa, na verdade.
Ter encontrado esses dois livros me deixou um pouco mais excitado com a possibilidade de aprender Smalltalk.
Na referida página ainda existem vários outros livros para download. Ah, e devo salientar que a o fato dos dois livros que eu peguei serem os dois primeiros da lista é coincidência mesmo.
Eu me dei o trabalho de olhar vários outros listados.
Se alguém mais tiver alguma outra referência, artigo na web, simpatia para aprender mais rápido, recomendacões de livros e etc, favor não se avexar e se pronunciar. Grato.
Feed com os comentários desse post.

Comentário de Ronaldo - 10.02.07 @ 13h34 #
Essa página do Stéphane Ducasse é uma mina de ouro mesmo.
Depois de sua menção, eu a visitei novamente e fiquei impressionado ao encontrar livros famosos como o “Smalltalk-80, The Interactive Programming Environment”, da Adele Goldberg, uma das principais responsáveis por essa implementação do Smalltalk. Esse livro é impossível de ser encontrado atualmente e, como o Ducasse menciona, é um item de colecionador.
O Smalltalk With Style é um dos livros mais famosos também e uma das leituras recomendadas para qualquer linguagem com raízes do Smalltalk.
Boa sorte no aprendizado.
Comentário de Luiz Rocha - 10.02.07 @ 20h42 #
Vou dar uma outra olhada no Smalltalk-80 então. O meu crivo inicial era separar os livros que fossem para um principiante em Smalltalk. Pode ser por isso que eu tenha preferido o Smalltalk by Example a esse.
Já quanto ao Smalltalk With Style, eu achei maravilhosa a abordagem dele. Para quem está partindo do zero, é uma mão na roda.
Comentário de Ronaldo - 10.02.07 @ 20h49 #
Não, não. Continue no Smalltalk by Example.
O da Adele Goldberg, pelo que eu li sobre o mesmo (até agora não sabia que estava disponível) é mais uma curiosidade histórica, detalhando as escolhas e motivações por trás do sistema, detalhes de implementação e coisa assim. Também é um manual do Smalltalk-80, mas não tanto com o objetivo de ensinar a linguagem. É bem interessante, mas não para ensino pelo visto.
Os dois que você escolheu são excelentes. Eu não sabia que o Smalltalk With Style estava disponível e já baixei também. Para mim, toda linguagem de programação tem que ter livros assim (muitas tem, mas não com a mesma vivacidade).
Comentário de Luiz Rocha - 10.02.07 @ 21h24 #
Olha, se vc souber de um livro similar a esse, com o mesmo tipo de abordagem, para Ruby ou LISP, compartilhe a informação.
Não sei dizer em termos gerais, mas eu fiquei muito feliz de encontrar um livro com esse tipo de abordagem e um de exemplos. Para mim, é o mundo ideal para aprendizado.