class Ruby < Smalltalk
Posted on September 05, 2007
Esta discussão começou neste artigo, continuou nesta resposta e minha contra-resposta está neste comentário. Uma das coisas que mencionei foi a participação de Avi Bryant (o criador do excelente Seaside) na RailsConf 2007, resumido neste artigo de Giles Bowkett.

Avi basicamente disse:
Eu sou do futuro. Eu sei como esta história termina. Todas as pessoas dizendo que não podem implementar Ruby em uma virtual machine rápida estão erradas. Essa machine já existe hoje, é chamada GemStone, e ela poderia certamente ser adaptada para Ruby. Ela roda Smalltalk, e Ruby essencialmente é Smalltalk. Então adaptá-la para rodar Ruby está absolutamente dentro da realidade do possível.
E dentre os comentários há alguns interessantes, incluindo do pessoal da GemStone:
Giles, o pessoal da GemStone não está complementa por fora da mensagem de Avi. Estamos no processo de portar Seaside para GemStone (veja aqui para detalhes) e falamos com Avi naquela sexta, antes da palestra. Ele mencionou que acha que um Ruby VM baseado em GemStone seria uma coisa legal. Ele nos disse que mencionaria GemStone na sua palestra, mas nenhum outro detalhe.
Francamente, não havíamos pensado sobre um Ruby VM em GemStone antes de nosso encontro na sexta, mas a combinação de nossa VM e expertise de persistência OO aplicada a Ruby poderia ser interessante.
E outra:
Eu (Alan) trabalho para a GemStone e fiquei muito contente de ouvir Avi falar. Ambos Smalltalk e Ruby são linguagens amáveis e eu espero que a GemStone seja capaz de aplicar seu conhecimento para a evolução e adoção de Ruby e Rails.
E Giles Bowkett disse mais abaixo:
Eu não sei muito sobre compiladores, interpretadores e VMs, mas Rubinius é definitivamente um projeto promissor. Há uma entrevista com Evan Phoenix, o criador de Rubinius, onde ele fala um pouco sobre as similaridades entre Ruby e Smalltalk também.
E nessa entrevista que ele menciona, Evan Phoenix diz o seguinte:
Rubinius é uma implementação de Ruby escrita do zero. Ela é arquitetada de maneira muito similar à virtual machine do Smalltalk-80 original, mas usa um caminho diferente para várias coisas para tornar as coisas mais fáceis para Ruby. (…) Eu diria que minha maior surpresa é realmente quão perto a semântica interna de Ruby é de Smalltalk. Antes de Rubinius, eu realmente nunca vi ou programei em Smalltalk, apenas ouvi falar. Mas quanto mais eu olho como o interpretador do Smalltalk-80 original foi escrito, mais ele se parece com Ruby. Divergem em muitos pontos também, mas a semântica geral é muito próxima.
A ligação entre Smalltalk e Ruby é muito mais estreita do que se pode pensar. E sobre Smalltalk ser 100% orientada-a-objetos, naturalmente não é bem verdade: assinalamentos em Smalltalk não é envio de mensagens, statements condicionais frequentemente são otimizadas pelo compilador para evitar envio de mensagens.
A discussão de pure OOP é vista em diversos fórums, de diversas linguagens. A conclusão normal: ninguém se importa. Interessa se uma linguagem é 70% OOP e a outra é 90% OOP? Nada. Esqueçam esse nonsense e se preocupem com o que realmente importa.
Smalltalk E Ruby são linguagens OOP o suficiente, produtivas o suficiente, cada uma com características que nos fazem “gostar” de cada uma (algo subjetivo), possibilitam terminar nossos projetos e tem excelentes possibilidades para o futuro, incluindo uma convergência de VMs e compartilhamento de bibliotecas e conhecimento. Tudo ótimo!
blog comments powered by Disqus
Archives
- February 12(2)
- December 11(1)
- November 11(4)
- October 11(6)
- September 11(5)
- August 11(1)
- July 11(5)
- May 11(4)
- April 11(11)
- March 11(4)
- February 11(3)
- January 11(4)
- December 10(9)
- November 10(2)
- October 10(10)
- September 10(4)
- August 10(6)
- July 10(14)
- June 10(16)
- May 10(8)
- April 10(14)
- March 10(9)
- February 10(6)
- January 10(14)
- December 09(10)
- November 09(10)
- October 09(7)
- September 09(19)
- August 09(4)
- July 09(12)
- June 09(7)
- May 09(12)
- April 09(11)
- March 09(9)
- February 09(9)
- January 09(12)
- December 08(14)
- November 08(20)
- October 08(15)
- September 08(18)
- August 08(25)
- July 08(13)
- June 08(21)
- May 08(29)
- April 08(27)
- March 08(12)
- February 08(32)
- January 08(31)
- December 07(27)
- November 07(30)
- October 07(25)
- September 07(28)
- August 07(16)
- July 07(15)
- June 07(16)
- May 07(7)
- April 07(13)
- March 07(8)
- February 07(9)
- January 07(24)
- December 06(17)
- November 06(17)
- October 06(15)
- September 06(38)




