Ruby the Smalltalk way

Posted by Daniel Lopes on 14/08/2008

Olá pessoal, esta semana encontrei uma série de artigos bem interessantes(um pouco antigos),onde irei traduzir aqui o primeiro deles para que sirva de estimulo para mais gente estudar outras linguagens. O foco dos artigos é mostrar semelhanças e diferenças de sintaxe entre Ruby e Smalltalk, apesar deste tipo de comparação ser um tanto infeliz na maioria das vezes, é uma boa forma de começarmos entendendo a sintaxe d Smalltalk e conhecendo um pouco desta linguagem.

Os outros artigos da série podem ser encontrado aqui:
- Part One: Fundamentals
- Part Two: A Question of Style
- Part Three: The World According To Objects

Não é de hoje que quero começar a estudar Smalltalk e várias outras como Lisp, Earlang, Python e etc… mas Smalltalk está no topo da lista, principalmente por causa do framework Seaside criado pelo genial Avi Bryant.

Se você nunca ouviu falar de Smalltalk e trabalha com linguagens que usam o paradigma de orientação objeto, então você deve se envergonhar e ir direto para este link para saber ao menos o que é está linguagem e qual a sua importância.

Outro link legal é : http://www.whysmalltalk.com/

Agora vamos par ao Artigo (o original pode ser encontrado aqui:

Nesta série, eu planejo examinar Smalltalk e Ruby em paralelo e então tentar ver @) quão similhar eles realmente são (ou não) and b) é ou não possível programar em Ruby no estilo Smalltalk. Neste artigo introdutório, eu irei esboçar alguns temas e idéias que irei considerar mais afundo mais adiante e darei todos os links que você irá precisar para baixar software e documentação para que você possa seguir junto comigo…

Como eu mencionei em um post recente, a idéia desta série veio após ler vários comentários em livros, artigos e blog que dizem que Ruby está fortemente relacionado ao Ruby. E ainda, enquanto Smalltalk foi claramente um influência do Ruby, a experiência de programar nestas duas linguagens é, em meu ponto de vista, muito diferente.

Por que é que deve ser?

Preocupações com o ambiente

Nesta situação, Ruby e Smalltalk são linguagens similares. As duas possuem uma abordagem rigorosa de Orientação a Objetos e ainda suas sintaxes são semelhantes a Algol/Pascal do que C/Java.

Então talvez a diferença principal é o ambiente de programação? Em Smalltalk, a linguangem e o ambiente estão tão estreitamente vinculados que a própria IDE (sua janelas e gráfico) podem ser manipuladas em Smalltalk. Ruby, na contra-mão, pressupõe nenhum ambiente e, mesmo quando é utilizado uma IDE dedicada, a linguagem Ruby, por assim dizer, não possui nenhum conhecimento inicial sobre este ambiente de trabalho.

Em Smalltalk a IDE e a linguagem são fortemente acopladas. O lado positivo, isso torna possível para a linguagem manipular seu próprio ambiente e o ambiente oferece suporte não paralelo para a linguagem. Programar em Smalltalk é mais que apenas editar código em um editor. É o processo de buscar a hierarquia da classe e modificar as classes direito dentro de um painel multiplo de navegação por hierarquia. Existem ferramentas para inspecionar objetos, encontrar métodos e localizar implementadores e assim por diante. Implementações de Smalltalk (como o Dolphin Smalltalk, mostrado aqui) são construídas da base até o suporte ao desenvolvimento na linguagem, assim é díficil entender quando acaba a IDE e começa a linguagem.

Ruby, ao contrário, nunca foi construído com uma IDE em mente. Muito programadores Ruby escrevem código em editores de texto plano e executam o resultado via prompt de comando. Como resultado, a experiência de desenvolvimento está muito longe do Smalltalk. Mesmo que você utlize uma IDE, como Ruby in Steel, a junção entre linguagem e ambiente não será a mesma que em Smalltalk. O lado positivo, isso significa que programas Ruby são mais facilmente portáveis (eles não são soldados e herméticamente fechados em seu mundo de programação) e eles permitem que você escolha seu próprio estilo de desenvolvimento ( você não é obrigado á trabalhar com um navegador de classes e pular de branch em branch para alterar uma hierarquia de classe existente.

Fundamentos do Smalltalk

Nesta série, eu estarei analisando o número de recursos no estilo Smalltalk de programação. Por exempli, irei considerar porque, em C, Pascal e outras linguagens mainstrean, é tão normal chamar funções enquanto, em Smalltalk, você envia mensagens. Esse envio de mensagens é apenas uma outra forma de dizar “chamada de método”? ou á uma distinção significante entre esse dois paradigmas?

Outra coisa que eu quero considerar é a hierarquia de classes do Ruby e do Smalltalk. Ruby, em comum a outras linguagens OO como C#, possui uma hierarquia de classes superficial, isto é, existem poucos galhos na arvore genealógica da maioria das classes. Isso é bom, ruim ou não tem uma consequência real?

Mas em última instância, a questão importante que desejo focar é: dada as diferenças no estilo de código em Smalltalk e Ruby, é possível escrever programas em Ruby no estilo Smalltalk. E se é possível, isto é desejável?

Smalltalk guia de curso

Nesta série, eu não irei exigir nenhum conhecimento prévio em Smalltalk. Afim de dar aos iniciantes em Smalltalk alguma base para leitura, e ainda mais prover uma estrutura para a série em si. Eu irei constantemente referenciar um pequeno tutorial que foi escrito para um produto comercial em Smalltalk, Smalltalk/V. Você pode encarar isso como um material teórico desta série. O tutorial Smalltalk/V prove uma introdução fácil as idéias fundamentais do Smalltalk, o link para download está no fim deste artigo.

E agora?

Na próxima parte deste artigo, iremos começar um hand-on e exemplos de código em Ruby e Smalltalk. Se você quiser fazer algum trabalho de caso preparatório, você pode estudar o capítulo do tutorial Smalltalk/V.

Se você é iniciante em Ruby, você precisa priemiro ter certeza que o Ruby está instalado. Você pode ainda usar o editor que desejar para ruby. Se você usa o Visual Studio (DANIEL DIZ: por que usar Visual Studio para RUBY????), você pode baixar uma cópia do SapphireSteel Ruby IDE, Ruby In Steel. Você pode optar por qual licença desejar.(DANIEL DIZ: o site onde o artigo foi escrito é o site do SapphireSteel Ruby IDE).

Para uma simples introdução ao Ruby, baixe uma cópia free do eBook, O pequeno Livro de Ruby, completo com todos os fontes e exemplos disponíveis para download na mesma página. (DANIEL DIZ: Você também pode seguir as referência do post anterior escrito aqui onde a comunidade Rails brasileira ajudou a levantar os principais recursos para começar com Ruby no Brasil)Se você planeja seguir com os código em Smalltalk também, você pode baixar uma versão free do Dolphin. Se você é iniciante em Smalltalk pode ler meu tutorial para iniciantes no Dolphin Smalltalk que ajudará você a se familiarizar com o básico do Smalltalk e ambiente.

A maioria do código Smalltalk desta séria também funcionará com outras versões do Smalltalk como o Squeak( se você for usar Squeak pode ler meu tutorial antes) ou Cincom Visual Works. De qualquer forma, eu só testei os códigos no Dolphin Smalltalk, então não posso garantir que vai funcionar perfeitamente em outras implementações.

Links Uteis

Livros

  • “The Smalltalk/V Tutorial”

Esse livro é trazido por Stéphane Ducasse’s :: Free Online Books , e você pode querer visitar a página dele para baixar outro livros uteis sobre Smalltalk. Em particular, dois outros livros que eu quero citar sãO: Smalltalk An Introduction to Application Development using VisualWorks por Trevor Hopkins e Bernard Horan, e Smalltalk by Example: the Developer’s Guide por Alex Sharp.

Tutoriais online para iniciantem em Smalltalk(online)

Ruby In Steel

The SapphireSteel Software Ruby (and Rails) IDE for Visual Studio

Smalltalk Implementations

blog comments powered by Disqus