BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Artigos Ruby in Practice com Jeremy McAnally

Ruby in Practice com Jeremy McAnally

Rob Bazinet e Matthew Bass, ambos da InfoQ, tiveram a oportunidade de conversar com Jeremy McAnally, sobre o livro "Ruby in Practice" no qual foi co autor junto à Assaf Arkin. O livro não foi escrito para iniciantes conhecerem a linguagem mas sim para o Rubyst procurando informações mais detalhadas em tópicos específicos. O editor descreve o livro:

"Como o próprio Ruby, "Ruby in Practice" o tornará mais produtivo. O livro lhe mostra técnicas práticas e estratégias para pequenos projetos e ambientes em larga escala. Uma referência no estilo 'livro de receitas', que lhe dará exemplos concretos de sistemas de integração, de mensagens, desenvolvimento web e bancos de dados, tudo em um formato claro de problema/solução"

A entrevista é acompanhada pelo Capítulo 5: Web Services do livro. Ele cobre arquitetura orientada à serviços (SOA) usando Ruby, criação de web services SOAP e RESTful trabalhando com aplicações legadas. A maioria das informações deste capítulo é de usos comuns de Ruby na atualidade.

InfoQ: Quem é você e qual é seu histórico?

Jeremy McAnally (JM): Meu nome é Jeremy McAnally. Trabalho na entp (entp.com) com Rails e em algum desenvolvimento para iPhone, meu histórico contém uma mistura de coisas, incluindo VB, .NET, PHP e Python. Ultimamente tenho esmiuçado Ruby e Objective-C, mas estou me aventurando em outras linguagens também, como Scala.

InfoQ: O que lhe inspirou/motivou á escrever "Ruby in Practice"? Que necessidade você está tentando suprir?

JM: Participei de conferências e conversei com outros que estavam aprendendo Ruby, encontrei muitas pessoas perguntando uma destas duas perguntas: "Porquê aprender Ruby afinal de contas?" ou "Sei Ruby e agora?" Está é uma grande lacuna de informação na maioria das comunidades de programação, e acho que conseguimos responder ambas as perguntas de modo satisfatório. Se pensa o contrário, por favor nos contate, ficaríamos felizes em discutir mais o assunto.

A última pergunta é especialmente problemática. É muito difícil saber por onde começar, sendo assim, o grande objetivo do livro é lhe oferecer um ponto de partida com exemplos reais. Não queremos ser apenas um simples livro de receitas/como fazer sobre o Ruby; queremos lhe mostrar como utilizar tais técnicas em seus ambientes e contextos através de explicações claras e códigos palpáveis.

InfoQ: Como você distingui o livro de outros guias Ruby?

JM: O fator principal é que nós não lhe damos exemplos artificiais como outros livros (nem todos, certo?). Todos os exemplos importantes no livro foram testados em nosso repositório de código, e cada técnica tem um exemplo de início (para lhe dar uma ideia de como utilizar a biblioteca) e um acompanhamento, um exemplo real que mostra porquê ou quando deveria ser utilizado. A maioria destes exemplos reais vieram de projetos reais ou ao menos, fortemente baseado em código que já havíamos escrito em tais projetos antes.

Outra característica benéfica é que nós temos contribuidores familiarizados com outras áreas. Enquanto Assaf e eu temos muito experiência, achamos que contribuições de especialistas (com Greg Brown que escreveu a biblioteca de relatórios discutido no livro) ou daqueles com boa experiência (como David A. Black) dariam um novo tom e profundidade ao livro que não conseguiríamos de outra maneira. Suas contribuições são enormes e ter suas opiniões tornaram o livro muito melhor.

InfoQ: O livro fala sobre Ruby agindo como uma boa "cola" ou linguagem de integração. O que torna Ruby tão ideal para este uso?

JM: Ruby é uma excelente linguagem de integração por uma grande variedade de motivos. O primeiro é a sua imensa flexibilidade. De sua habilidade de criar elegantes DSLs que podem ser utilizadas para encapsular APIs horrorosas à sua maneira simples de integrar-se ao C (e Java, e C# e todas as outras impressionantes linguagens em máquinas virtuais que suportam Ruby),é a escolha perfeita para juntar diversos componentes em uma linguagem que não dói.

Segundo, existe um excelente toolkit em torno dele. Ferramentas como Rake, curb, Rails dentro outras fazem com que seja simples para o Ruby integrar diversos sistemas diferentes em pequenos scripts ou ainda em softwares maiores. Somado à habilidade de integrar-se diretamente com outras linguagens e você tem uma ferramenta inacreditavelmente poderosa para desenvolvimento rápido que produz, geralmente, 10% do incomodo código que integra coisas.

InfoQ: Este livro é melhor utilizado por consultores/freelancers independentes ou programadores que queira utilizar Ruby em um ambiente de grande empresa?

JM: Acho que ambos grupos podem aprender algo. É, também, um manual de Ruby, mas cobrimos assuntos que serão especialmente úteis para desenvolvedores de "grandes empresas".

InfoQ: Você menciona Ruby como sendo útil para desenvolvedores de "grandes empresas", como você os vê utilizando Ruby?

JM: Claro, Ruby é perfeito para criação de scripts e integração de peças, mas não acho que se limita a isto. Honestamente acho que é possível construir quase qualquer coisa com Ruby. Minha filosofia é construir o que é preciso e então re implementar para o que é "ótimo" (para alguma definição da palavra) a partir da perspectiva de desempenho somente quando é necessário. Por isso, mesmo quando estou construindo sistemas realmente grandes, geralmente começo com Ruby (or a mashup thereof).

Agora, se desempenho é uma necessidade importante, o caminho a seguir nesta situação é escolher uma linguagem de alto desempenho (não Ruby). Mas em geral, Ruby consegue terminar a tarefa.

Infoq: Ambientes empresariais são difíceis de mudar. Como você acha que desenvolvedores podem mudar para Ruby em lugares dominados por Java ou .NET?

JM: Muito pode ser dito sobre o assunto (existem livros que tratam disto especificadamente), mas é o suficiente para mim dizer: mostrem-lhes com código. Apenas comece usando-o onde é possível. Assim, talvez, você tenha perdido de 15 a 20 minutos escrevendo um script Ruby por quê o gerente o rejeitou, mas o fato de você tê-lo feito em 20 minutos irá ser lembrado por ele da próxima vez que precisar de um script realmente muito rápido.

InfoQ: Ruby é capaz de se integrar bem com aplicações, já existentes, Java (J2EE) ou .NET e quais as facilidades estão disponíveis em Ruby ou bibliotecas de terceiros para ajudar nesta tarefa?

JM: Sim. Falamos um pouco disto no livro, mas você pode utilizar IronRuby e JRuby para criar integrações muito boas com sistemas Java ou .NET, respectivamente. Sinceramente não trabalhei muito com IronRuby, mas ouvi coisas muito boas a respeito. Tenho, entretanto, trabalhado com JRuby, e tenho a dizer que é um produto bem sólido. Recomendo-o fortemente se estiver fazendo algo com Java (mesmo que seja fora do escopo da integração com sistemas Java, criar deploying de produtos com ele é super fácil graças à maturidade dos conjuntos de ferramentas Java).

InfoQ: Ruby on Rails é o framework web que realmente fez o Ruby popular, levando-o às massas. Acha que existe espaço para mais um bom framework, criado para ser o próximo Ruby on Rails? Se sim, como acha que este framework parecerá sabendo o que você sabe sobre Rails?

JM: Acho que temos uma boa quantidade de frameworks web por aí para Ruby, mas sempre há espaço para mais. Em especial, gostaria de ver alguma coisa para o paradigma MVC, já que Rails faz um excelente trabalho ao tratar disto (ao menos em larga escala). Sinatra faz um bom trabalho em pouca escala. Mas nós precisamos de uma continuação sólida baseada no framework ou algo assim. Não tenho certeza sobre como pareceria uma "próxima geração", mas estou ansioso para ver o que os hackers super espertos lá fora irão criar.

InfoQ: Que valor você vê em todas as diferentes implementações de Ruby que ouvimos falar; Rubinius, MacRuby, JRuby, Ruby 1.9.1 e IronRuby? Isto é bom ou ruim para Ruby enquanto linguagem?

JM: Acho que cada implementação traz algo de bom (JRuby tem integração Java, 1.9 traz velocidade e características novas, MacRuby tem excelente velocidade e integração Mac, etc). Entretanto, sou cauteloso a respeito de "forks" (como MacRuby adicionando coisas como envio de tipos Obj-C) apenas porque gosto do fato de poder executar código Ruby em qualquer lugar (não apenas em um máquina virtual). Mas acho que estas adições à linguagem fazem bem à saúde.

InfoQ: Onde Ruby estará em 5 anos?

JM: Não tenho certeza. Olhando pra entrevistas e textos anteriores, acho que minhas predições sobre Ruby foram bem acertadas até agora. O ponto interessante é que estamos num tipo de cruzamento para a linguagem. Conquistamos a web. Mas agora estamos a ultrapassando e, graças à ferramentas como Adhearsion, nanite/vertebra, Archaeopteryx, procuramos por outros caminhos para mostrar como Ruby é bom.

A maior ideia para os próximos cinco anos? Veremos Ruby no iPhone através de MacRuby (assim que coloquem garbage collection lá). Será uma grande vitória para o Ruby e iPhone. Escrever aplicações já é estupidamente simples graças ao XCode e à Interface Builder. Jogue isto em uma linguagem como Ruby e poderemos ver um enorme crescimento no desenvolvimento de aplicações.

InfoQ: Obrigado Jeremy por tomar seu tempo para conversar conosco sobre seu livro.

Mais informações obre o livro Ruby in Practice podem ser encontradas em Manning web site onde outros capítulos estão disponíveis para análise. Manning Press foi gentil ao ponto de oferecer 40% de desconto, para os leitores da InfoQ que quiserem o livro de Jeremy, "Ruby in Practice" usando o código "ruby40"(encerra em 19/06/2009).

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT