O que um desenvolvedor de Python deve saber enquanto aprende Ruby? [fechadas]

16

Sou programador de Python há cerca de 18 meses, consistindo em um estágio e em alguns projetos paralelos, e me considero bastante confortável na linguagem.

No entanto, parece haver muita atenção no Ruby no campo de programação, mas não no Python.

Então, ao aprender Ruby, haverá coisas pitônicas que são apenas más práticas em Ruby? O que devo prestar atenção e o que devo evitar?

CJ
fonte
4
Eu sempre considerei um programador Ruby se eu deveria aprender Python, porque é tudo o que todos falam: P
Earlz
Apesar do burburinho, parece que o Python ainda é usado duas vezes mais que o Ruby (de acordo com o TIOBE pelo menos -> tiobe.com/index.php/content/paperinfo/tpci/index.html ).
precisa
10
Em vez de ser um "programador Python" ou "programador Ruby", você deve tentar ser um ótimo programador. Em seguida, você pode usar o idioma que quiser e passar para os novos quando for a hora certa.
precisa

Respostas:

31

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 syse 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 returninstrução. As ifinstruçõ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.

dan
fonte
11
"E isso é muito ruim, porque a metaprogramação é uma viagem" ... E assim como uma viagem, será ótimo por uma noite, mas eventualmente você acorda de manhã e esquece o que fez. Eu acho que a metaprogramação é super enfatizada no Ruby, e eu prefiro o Ruby ao Python. A maioria das soluções de Ruby para problemas de sintaxe é "você pode obter em torno de que, com programação meta"
Earlz
23
O que? result = "world" if output=="hello" else "there"é perfeitamente válido em Python (e três caracteres mais curtos).
21411 Tim Timzzcker
3
@ Tim OK, obrigado por me corrigir. Mas você pode fazer o mesmo com uma instrução if / elsif / elsif / else - ou seja, if / elif / elif / else em Python? Você pode fazer a mesma coisa mesmo se houver várias instruções dentro da cláusula if or else?
dan
1
Espere, Python não tem um operador ternário?
PP.
3
"Matz, o criador do Python, veio de um background do Lisp." aguarde ... AFAIK Matz é o criador do Ruby ...
Eimantas
6

Depende.

Para mim, o python é de longe mais fácil de entender do que o ruby, e as duas linguagens têm um propósito diferente.

Python é mais uma linguagem clássica, com muitas coisas sofisticadas de baixo nível, mantendo-a limpa e fácil em comparação com C, por exemplo. Python não tem a ambição de Ruby, que para mim tem muito mais recursos de alto nível.

Não vai doer você aprender Ruby, você descobrirá coisas novas, mas esteja ciente de que o Python está mais próximo de paradigmas simples de programação que fizeram o sucesso do C, com muitos impulsionadores de produtividade. Ruby é mais para pessoas que querem ir além nos conceitos de programação em geral: Scheme e todas essas linguagens "superiores".

jokoon
fonte
3

Resposta curta: Sim e sim.

Aprender um novo idioma é quase sempre útil, e vale especialmente para Ruby, pois o Rails ainda é muito popular. E sim, conhecer bem o Python facilitará a coleta do Ruby. Eles têm algumas diferenças sintáticas e convenções diferentes em nomes, mas também há muito em comum.

Não é um investimento demorado, e é sempre benéfico ter mais ferramentas na sua caixa de ferramentas, então vá em frente!

(Eu usei o Python por cerca de 10 anos e peguei o Ruby no ano passado. Atualmente trabalhando em período integral no projeto RoR)

shang
fonte
2

Tudo tem um nicho. Por exemplo, Python (django) é um cidadão de primeira classe no GoogleApp Engine, enquanto é o idioma ou a opção para muitos projetos de bioinformática. O Python tem muito valor de mercado (recebo várias perspectivas de trabalho não solicitadas simplesmente porque fiz muito com o Python), mas o Ruby também - em diferentes áreas. Como você sem dúvida já ouviu falar aqui muitas vezes, sempre ajudará você a aprender mais idiomas, então sim, aprenda Ruby. Será que vai ser complicado? Será muito menos complicado do que aprender COBOL, pois os idiomas e as estruturas disponíveis são semelhantes entre si. Um exemplo é o de Ruby gemas e o pip de python .

Lembre-se de que linguagens são ferramentas e todas as ferramentas como um objetivo. Quanto mais ferramentas você souber, mais rápido, mais fácil e mais corretamente você poderá construir a casa da árvore.

Arcege
fonte
Eu queria responder ao longo das mesmas linhas, espero que você não se importa de edição ...
Dimitrios Mistriotis
2

Devo aprender rubi? Sim.

Aprender um novo idioma sempre vale a pena (especialmente se ele impõe um paradigma de programação diferente daquele que você conhece) e, às vezes, pode torná-lo mais proficiente, mesmo quando programa em outros idiomas. Por exemplo, peguei a maior parte da programação funcional que conheço no Lisp e a aplico quando preciso no Python e Ruby.

Vai ser difícil? Se você aprendeu Python, certamente também pode aprender Ruby.

Também é útil se agora você está procurando um emprego, isso mostra que você está curioso sobre tecnologia e que pode aprender coisas sozinho.

Há uma boa comparação entre Ruby e Python no c2.com .

Trasplazio Garzuglio
fonte