Eu fiz Python em 2003-5, quando era consultor do Plone / Zope. Então, em 2006, comecei a pegar Ruby. Eu nunca olhei para trás. Acho que pessoas diferentes se sentem mais à vontade com diferentes linguagens e culturas de programação, mas para mim, Ruby se sente muito melhor que Python.
Pessoalmente, acho que, comparado ao Ruby, o Python é o cavalo de batalha confiável que também é um pouco sério e sem graça. Ruby é muito mais divertido. É uma linguagem mais bonita e pode ser feita para fazer muitas coisas divertidas e divertidas que continuam impressionando seus praticantes. Ouvi pessoas de Python atacarem Ruby por serem perigosas demais, dizendo que é muito fácil reabrir classes e fazer coisas loucas e irresponsáveis como essa. Mas isso é parte do que faz Ruby parecer um romance de comédia de aventura e ação para mim. O Python, por outro lado, é mais parecido com os móveis da Ikea: é agradável, confortável e confiável - mas nunca irá surpreendê-lo e tirar o fôlego.
As duas melhores coisas sobre Ruby, na minha perspectiva, são as duas que a distinguem nitidamente do Python. Primeiro, Ruby é muito influenciado por Perl. Python parece se orgulhar de ser o anti-Perl. Mas o material que Ruby pegou emprestado do Perl é de grande valor prático. Tome expressões regulares, por exemplo. No Ruby, você pode escrever expressões regulares naturalmente, por exemplo if mystring =~ /^\s+hello word!/ ...
. No Python, nem tanto, porque o Python é tão anal em fazer tudo seguir uma sintaxe uniformemente previsível. Em Ruby, você pode obter STDIN imediatamente com input = STDIN.read
. No Python, você precisa import sys
e depois
sys.stdin.read()
. Esses são apenas dois exemplos em que o esforço do Python para se distanciar do Perl e ser tão previsivelmente regular é superado pela disposição de Ruby de fazer o que parece certo em cada caso.
A outra coisa que distingue Ruby de Python é que Ruby está muito mais próximo do Lisp, enquanto o Python é praticamente uma linguagem de programação imperativa. Eu acho que isso é uma grande vantagem a favor de Ruby.
Existem muitos recursos semelhantes ao Lisp do Ruby que tornam possível fazer mais com menos código no Ruby do que no Python. Por exemplo, todas as instruções e estruturas de controle no Ruby retornam um valor: você pode se safar no Ruby sem nunca usar a return
instrução. As if
instruções pares são avaliadas para um valor, para que você possa escrever coisas como esta
result = if output == 'hello'
[some code here]
"world"
else
[some other code here]
"there"
end
Em Python, você teria que escrever
if output == "hello":
[some code here]
result = "world"
else:
[some other code here]
result = "there"
Python faz você digitar result =
duas vezes. Isso não é muito SECO (não se repita). Existem muitos casos como este em que Ruby será mais SECO que Python por causa de suas qualidades semelhantes a Lisp. Matz, o criador de Ruby, veio de uma experiência em Lisp.
Algumas pessoas dizem que Ruby também chuta a bunda do Python na metaprogramação (também conhecida como programação dinâmica). As pessoas do Python respondem dizendo que a metaprogramação é muito perigosa ou dizendo que, teoricamente, você pode realizar todas as coisas de metaprogramação que Ruby pode fazer no Python, de maneira diferente. Mas uma coisa em que todos concordam é que a metaprogramação é muito menos comum no Python do que no Ruby. E isso é muito ruim, porque a metaprogramação é uma viagem.
Eu acho que provavelmente é verdade que no final do dia, Ruby e Python podem fazer o trabalho. Comparado com C e Java, Ruby e Python são praticamente a mesma coisa. Eles são idiomas expressivos, produtivos e de alto nível.
Então, tudo se resume à sua personalidade.
Você gosta que as coisas sejam previsíveis, regulares e seguras? Você gosta do estilo imperativo de programação? Deseja trabalhar algum dia para o Google? Você acha que Perl é uma desova caótica do inferno? Fique com o Python.
Você tem grande prazer em encontrar a maneira absolutamente mais concisa de obter algum resultado de programação? Você fica entediado com regularidade e uniformidade? Você gosta de ter a liberdade de escrever código em um estilo próprio e com muito espaço para criar seus próprios truques? Você sente mais uma afinidade por Lisp do que por C? Você sente grande admiração pela contribuição de época de Perl para a programação de software, mas deseja apenas que seja um pouco menos enigmática e feia? Você pensa em código como as outras pessoas pensam em poesia? Tente Ruby.