Poucos desenvolvedores tentariam escrever código Java ou C# sem uma IDE que ofereça code completion, um formatador inteligente ou refactoring automatizado. No mundo das linguagens dinâmicas, o caso nào é tão claro.
Uma razão é sem dúvida a falta de ferramentas que estejam preparads, simplesmente porque construir ferramentas para linguagens é muito mais difícil. Felizmente, programas escritos nessas linguagens tendem a ser mais curtos e menos descritivos do que por exemplo em Java.
Novamente, algumas vezes é muito útil ter um ambiente de desenvolviemnto integrado que cubra todas as tarefas diárias de um desenvolvedor, começando pela integração com uma ferramenta de controle de versão, navegação entre os arquivos do projeto, mas também compilar, debugar e fazer deploy do projeto.
Para esta série, nós entrevistamos as pessoas que trabalham em IDEs para linguagens dinâmicas, para dar uma visão geral sobre o atual estado dessas IDEs.
Nós assumimos que todas as IDEs fazem o básico, como highlighting do código e portanto focamos em funcionalidades mai sofiticadas como refactoring. A habilidade de fazer refactorings automatizados é um bom indicador da maturidade de uma IDE porque isso envolve uma análise detalhada e nada trivial do código e é umas das características que um editor do tipo language-agnostic não pode oferecer sem ajuda de ferramentas de terceiros.
Aptana Ruby
As ferramentas de desenvolvimento em Ruby baseadas no Eclipse estão por ái há vários anos e foram bem utilizadas, particularmente no desenvolviemnto em Rails através das extensões oferecidas pelo RadRails. Tanto o RDT quanto o RadRails foram integrados no Aptana Studio há algum tempo, e o desenvolvedor principal do RDT, Chris Williams, foi contratado pla Aptana.
Não havia muita atividade visível no Ruby Studio da Aptana, então nós conversamos com o Chris para entender o que estava acontecendo:
Nos últimos 6 ou 7 meses eu estive trabalhando em nossa mais nova oferta: Aptana Cloud. Eu tenho feito todo o trabalho na API/servidor que opera entre o Aptana Studio, os provedores de hospedagem tercerizados e as máquinas atuais que hospedam os websites. Como resultado eu não pude dedicar tanto tempo quanto o normal ao suporte Ruby ou ao RadRails. Todo esse tempo eu estive apenas corrigindo bugs e começando a integrar algum suporte a Cloud na ferramenta, quando acho algum tempo. Agora que a Cloud está oficialmente liberada, vou trabalhar no suporte a Rails e então eu conseguirei voltar ao RDT/RadRails mais ou menos full-time.
Chris também disse que está procurando mais pessoas para contratar, "para garantir que nós possamos manter o desenvolvimento andando nos plugins". Desenvolvedores Ruby que querem expandir sua IDE não tem que programar em Java:
Nós temos um plugin que permite a usuários finais escrever código Ruby usando uma pequena parte da API do editor do Eclipse - portanto, as pessoas podem ajudar bastante escrevendo pequenas macros/scripts com esse plugin, se elas souberem apenas Ruby. E se eles forem experts em JRuby, então podem provavelmente escrever suas próprias extensões para integrar com o Ruby e acessar as APIs completas do Eclipse.
A funcionalidade de scripting no Eclipse via JRuby já foi discutido anteriormente na InfoQ.
Aptana agora tem suporte para Ruby, JavaScript, Python e PHP. Qual será a próxima linguagem?
Bem, nós estamos sempre olhando o que a comunidade gostaria em termos de plugins para desenvolvimento web. Se nós virmos suporte suficiente por aí, nós certamente iremos atrás. Somos todos ouvidos: nos diga o que você quer ver.
O próximo passo envolve migrar o Studio para o release atual do Eclipse Ganymede, "adicionar um suporte mais avançado para Cloud, corrigir mais bugs grandes e então por volta do RadRail 1.3.x eu provavelmente serei capaz de respirar e planejar o que virá novamente."
As ferramentas de desenvolvimento Ruby já tem suporte a refactoring há algum tempo, implementando por exemplo vários refactorings para renomear, extrair, mover e tornar métodos inline. Apesar dos refactorings não são a prova de erros e nem corretos em todas as situação, eles funcionam para a maioria dos casos e são um grande avanço em relação a fazer copiar e colar manualmente (repare que o autor deste texto trabalhou na implementação).
As tags Aptana e RadRails do portal em inglês listam mais conteúdo relacionado sobre a IDE Aptana.
DLTK Ruby
O Dynamic Languages ToolKit está numa posição interessante já que eles tentam unir todos os componentes reutilizáveis que uma linguagem dinâmica precisaria dentro do Esclipse em um único framework e tornar mais fácil implementar suporte para uma nova linguagem. O Ruby é uma das linguagens mais antigas do DLTK e junto com TCL pertence ao core do DLTK.
É triste, que não há muita atividade visível no DLTK, então eu falei com o líder do projeto, Andrey Platov:
Falar sobre TCL, nós achamos que DLTK TCL já é uma das melhores IDEs TCL no mundo. Nós estamos polindo a implementação e estamos trabalhando na integração com interpretadores TCL de terceiros. Esse trabalho não é muito visível mesmo.
Como para Ruby (e DLTK em geral): Primeiro, DLTK (incluindo o compenente Ruby) é uma plataforma: nós não temos a intenção de cobrir todas as funcionalidades solicitadas pelo susuários neste começo. Por exemplo, nós nunca planejamos fornecer suporte a Ruby on Rails, etc. O objetivo para a DLTK Ruby é oferecer um alicerce sólido e claro da linguagem Ruby, para que outros possam desenvolver ferramentas completas sobre ela. Um bom exemplo é a IDE Ruby chamada 3rdRail da CodeGear, que foi desenvolvida sobre o DLTK Ruby.
Tudo que foi dito não significa que DLTK seja inútil sozinha. É uma ótima ferramenta para se trabalhar com código Ruby e é usada por muitos entusiastas da linguagem. Portanto nós não forçamos o desenvolvedor a usar o estilo Rails e nem o forçamos ao RSpec por exemplo. Apenas a linguagem pura e a criatividade do desenvolvedor. Por outro lado, uma IDE tão "limpa" oferece uma ótima oportunidade para fornecedores contruírem produtos que suportem os frameworks e tecnologias de sua escolha e eles já tem um suporte de primeira classe da linguagem, grátis.
Voltando à sua questão, nosso trabalho atual é simplesmente fazer o DLTK Ruby "entender" a linguagem melhor e lidar melhor com o código Ruby.
"Apenas teste a funcionalidade de code completion", Andrey sugere. Para o futuro, os planos são de melhorar o suporte à linguagem, para um "melhor entendimento do Ruby, como as funcionalidades de análise de código, refactoring, quick-fx".
Do lado do DLTK, nenhuma linguagem adicional foi planejada por enquanto, mas eles "estão consultando algumas empresas que fazem IDEs para suas linguagens". De acordo com Andrey, "o PHP Development Tools (PDT) 2.0 será liberado sobre o DLTK". Há também IDEs baseadas no DLTK para ANTLR, Lua, D, Perl e Scheme sendo produzidas. Os vários builds e pacotes do DLTK estão disponíveis no site de dowloads do Dynamic Languages ToolKit.
Esta notícia é parte de uma série sobre IDEs para linguagens dinâmicas. As outras partes podem ser encontradas na tag "DynamicLanguageIDEs" na InfoQ. Se você não leu o suficiente sobre IDEs Ruby, você pode querer ver o artigo em inglês sobre suporte ao Ruby do Netbeans: Parte 1, Parte 2.