Ruby ou Python? [fechadas]

24

Esta questão é extremamente subjetiva e aberta. Pode até parecer algo que eu deveria pesquisar por mim mesmo e tomar minha própria decisão. Mas eu gostaria de divulgá-lo e obter alguns pensamentos de outras pessoas.

Para encurtar a história - eu me queimei com a corrida de ratos e estou em um período sabático autofinanciado este ano. Muito disso é dar um tempo na rotina corporativa e viajar, mas também quero brincar com novas tecnologias e fazer alguns projetos de autoaprendizagem, para manter a velocidade da programação e bem - eu adoro mexer com programação, quando não há pressão!

Aqui está a coisa: eu sou um programador C / C ++ / Java vitalício. Sou um pouco esnobe, desde que trabalhei com essa família de linguagens por toda a minha carreira em programação. Então, eu gostaria de aprender um idioma que não esteja tão intimamente relacionado a esse grupo. O que estou procurando basicamente é uma linguagem de propósito geral, divertida de aprender, com alguns novos conceitos que são diferentes de C ++ / Java e com uma boa comunidade. Uma consideração secundária é que ele possui boas estruturas de desenvolvimento da web. Uma consideração terciária é que não é totalmente acadêmico (leia-se: existem empregos no mundo real por aí usando-o).

Eu o reduzi para Ruby ou Python. Minha impressão do Ruby é que ele é extremamente orientado para a Web - que a única aplicação real dele é como uma linguagem de script do lado do servidor para fazer coisas na Web (principalmente Ruby on Rails). Eu não tenho muita impressão do Python, exceto que ele parece ter uma base de fãs apaixonada e parece ser uma linguagem bastante versátil.

TL; DR e, da maneira mais sucinta possível: qual seria melhor para um cara de C ++ / Java aprender a obter novas perspectivas de programação? E qual é o objetivo mais aberto e geral e aplicável a um conjunto mais amplo de aplicativos? Estou inclinado a Ruby no momento, mas me preocupo a ponto de parecer que não é mais que uma linguagem da Web do lado do servidor.

Bobby Tables
fonte
"Para Python, não tenho tanta certeza"? Sobre o que? Como isso é relevante?
S.Lott 01/02
Você pode encontrar muito mais sobre Ruby vs Python no StackOverflow. Estou surpreso que o próprio Lennart ainda não tenha comentado. regebro.wordpress.com/2009/07/12/python-vs-ruby stackoverflow.com/questions/1113611/…
Job
@ S.Lott: Desculpe, mas não foi claro. Só queria dizer que ainda não tenho uma impressão muito detalhada do Python. Só que é versátil e tem uma forte base de fãs.
Bobby Tables
9
Perl, é claro.
Bruce Alderman
Isso se encaixa no "Qual tecnologia é melhor?" categoria de perguntas que, de acordo com as perguntas frequentes, são consideradas fora de tópico.
ChrisF

Respostas:

35

Não deixe o fato de o Ruby ter entrado na linguagem comum em grande parte por causa do Rails (a estrutura de aplicativos da web) enganar você. É uma linguagem de programação de uso geral e você pode usá-la para qualquer coisa que possa usar em qualquer outra linguagem.

Brinque com Ruby e veja se você se apaixona por ele. Você quer ou não. É como a música do Grateful Dead; você o ama ou não aguenta.

Ruby vai esticar seu cérebro. Em muitos aspectos, está o mais longe possível de C ++ / Java. Eu venho de um background em C e C # e achei a dinâmica e o poder de metaprogramação de Ruby bastante intoxicantes.

Dito isto, o Python é uma linguagem absolutamente extraordinária, e vai te tirar do sério.

Por que não aprender os dois? Uso os dois regularmente: Ruby para programação com Rails e Python para trabalhar com o Google AppEngine.

Adam Crossland
fonte
2
1 para uma referência inoperante,;)
cschol
11
Obrigado. Vou com Ruby primeiro e ver se me apaixono por ele. :)
Bobby Tables
8
Estou um pouco atrasado para a festa, mas trypython.org e tryruby.org são ótimos sites para experimentar os idiomas.
precisa
17

Eu mal usei Ruby, é certo, mas aqui estão minhas impressões sobre Python:

  • quando eu escrever pseudocódigo a lápis uma função, eu acho que o que eu escrevo praticamente é Python, e às vezes muito pouco reescrita é necessário para torná-lo código real. Você pode até pular o pseudocódigo e expressar seus pensamentos diretamente em Python
  • quando preciso fazer algo que parece uma tarefa comum, o Python tende a ter as funções necessárias (em um nível alto) incorporadas à sua biblioteca padrão. Por exemplo, no início, quando eu queria abrir um arquivo e digitalizá-lo linha por linha, a resposta era tão simples quanto 'para linhas no myFile: dostuff (linhas)'. Acredito que eles chamam a abordagem de 'baterias incluídas', e difere de alguns outros idiomas que usei onde as operações diárias são muito mais complicadas

Essas duas coisas se destacam para mim.

Andrew M
fonte
Eu acho que essas são exatamente as razões pelas quais prefiro Ruby. Ruby é mais OO e tem menos palavras-chave. Por exemplo, em Ruby "[1,3,5] .length ()" e "[1..10] .each () ..." vs Python "len ([1,3,5])" e "para i in range (1,11) "
LennyProgrammers
6
@Lenny - Ruby na verdade tem mais palavras-chave: krijnhoetmer.nl/stuff/ruby/keywords vs. zetcode.com/tutorials/pythontutorial/keywords - para Python 2.6, são 31 palavras-chave para Ruby 38. Além disso, parece que 'mais OO' aqui usado de maneira bastante subjetiva, pois nas duas linguagens "tudo é um objeto" se aplica (e ainda mais literalmente com o Python 3.x, como tudo é subclasse object). Além disso, len(obj)é um atalho para chamar obj.__len__()e for i in rangetambém abstrai os detalhes operacionais dos objetos geradores operacionais. Eu acho / equivalente, mas diferente / é mais preciso.
Wayne Werner
Tenho a sensação de que Lenny significa que você usa menos palavras-chave em sua declaração típica, por exemplo 'para i no intervalo (1,11) tem 3 palavras-chave (para, no intervalo). Claro, às vezes mais palavras são melhores.
Andrew M
5
intervalo não é uma palavra-chave é uma função
Kugel
9

Se você está tendo um ano sabático, sugiro que você gaste uma ou duas semanas aprendendo cada um e depois decida por si mesmo o que você mais gosta. Tenho experiência com ambos e, na minha opinião, ambos são tão capazes que você realmente precisa decidir qual deles prefere.

Jason Webb
fonte
+1, ambos parecem bem fáceis. Clojure, por outro lado ... é muito divertido, mas também é mais difícil.
Job
7

IMO, você deve ir com o Python. A razão é que é mais versátil, você pode usá-lo para quase tudo. O Ruby é, como você notou, mais usado no desenvolvimento web devido a seus frameworks web. Ao contrário do Python, o Ruby não é tão bom para o desenvolvimento de aplicativos de desktops gui, programas numéricos, estatísticos ou de processamento de imagens.

Marcin
fonte
11
Você pode apontar o que torna o Ruby "não tão bom para o desenvolvimento de aplicativos de desktops gui, programas numéricos, estatísticos ou de processamento de imagem"? Quando eu estava programando em Ruby em 2001/2002, estava feliz fazendo todas essas coisas.
LennyProgrammers
7
@ Lenny222. No Ruby, não existem bibliotecas como numpy, scipy, sympy, PIL, matplotlib. Quaisquer que sejam as bibliotecas numéricas, elas estão muito atrasadas em relação ao Python. Da mesma forma com a documentação e bibliotecas para o desenvolvimento de aplicativos GUI.
Marcin
11
Você diz que o Python é mais versátil e depois aponta as bibliotecas para o porquê. Concordo que não é tão fácil fazer algumas coisas no Ruby por falta de uma boa biblioteca, mas isso não significa que o próprio Ruby seja de alguma forma menos versátil.
Twisol 02/02/11
@Twisol, esse é exatamente o Porquê: Python é muito simples (e consistente) é a razão pela qual é tão versátil e por que existem tantas bibliotecas úteis (IMO).
Nadir Sampaoli
6

O Ruby existe há muito mais tempo do que os trilhos, então deixe-me divulgá-lo no mundo que Ruby != web, embora faça isso muito bem. Há uma série de coisas relacionadas a sistemas que ele pode e faz. Parece que toda a estrutura do Rails engoliu o resto do mundo Ruby. E sim, sou fã de Ruby.

Por outro lado, o Python tem muito a oferecer e foi integrado a quase tudo no Linux. Isso me diz que provavelmente é bastante fácil incorporar em programas maiores (em comparação com Ruby, Java etc.). Há uma boa quantidade de infraestrutura do Ubuntu Linux escrita com Python, o que me diz que o Python tem aplicação na programação de sistemas. Ouvi dizer que o seu framework web é muito bom, ainda não brinquei com ele.

Dito isto, Ruby e Python são linguagens igualmente capazes, e você as encontrará facilitar sua vida. Ruby tem muito mais cabeças da web em sua comunidade, mas essa não é a totalidade da comunidade. Eu também o usei em vários projetos de infraestrutura.

Berin Loritsch
fonte
5

Este é um caso especial de " Sequência ideal de aprendizado de idiomas de programação" e perguntas semelhantes . O que você precisa não é "a linguagem perfeita", você precisa de múltiplos paradigmas de linguagem e várias experiências de aprendizado para abrir sua mente.

Sei que você disse que reduziu para Ruby e Python, mas sugiro que comece com Racket (um esquema popular). Ele foi desenvolvido para o aprendizado e ajudará na programação funcional, programação interativa e digitação dinâmica. Não há empregos (literalmente zero), uma comunidade muito pequena e fragmentada e nenhuma estrutura da Web importante, e é exatamente por isso que você não fica preso nela; frite seu cérebro por um tempo e depois siga em frente.

Segundo, você deseja aprender Ruby ou Python para possíveis trabalhos. Eu sugiro que você aprenda os dois. Aprender o segundo desses dois será muito mais fácil do que o primeiro, apesar de suas diferenças. Quanto aos possíveis trabalhos, meu pressentimento é que há mais trabalho do Ruby por causa do Rails, mas eu sei que também há algum trabalho do Zope nessa área. Invista em pelo menos um deles, mas também verifique o outro pelo menos o tempo suficiente para criar algo pequeno.

Honestamente, você provavelmente aprenderá mais com sua primeira semana de trabalho do que nunca; ambos têm grandes ecossistemas com muitas ferramentas, cultura e expressões idiomáticas.

tl; dr: Both e Scheme.

Jesse Millikan
fonte
11
+1 Tudo o que vi foi "a única linguagem perfeita" e "esquema". :)
dietbuddha
1

Eu também vim do fundo Java / C ++ e tenho programado em Python com o framework Django nos últimos 4 meses e é realmente ótimo. Sempre que tenho um problema ou pergunta, posso encontrar explicações sobre as postagens existentes. Não posso garantir o Ruby porque ainda não o usei, mas definitivamente tentarei quando tiver algum tempo.

Pessoalmente, gosto de como você pode fazer coisas muito rapidamente com o Python, pois ele possui muitas funções úteis integradas.

chiurox
fonte
1

Eu votei em Ruby. Eu vim do .Net e C #, tentei primeiro o Python, mas Ruby me encantou =)
Estou escrevendo muitas coisas do sistema nele, e alguns Rails dev. Ele é capaz como Python na programação do sistema e é incrível na web. E parece mais polido para mim ..

Alexey Anufriyev
fonte