Pergunta

Esta é uma (n) questão histórica, não uma pergunta comparação entre-línguas:

Este artigo de 2005 fala sobre a falta de um quadro único e central para Python. Para Ruby, este quadro é claramente Rails. Por que, historicamente falando, isso aconteceu para Ruby, mas não para Python? (ou aconteceu, e que o quadro é Django?)

Além disso, as perguntas hipotéticas: seria Python ser mais popular, se tivesse um, bom quadro? Será que o Ruby ser menos popular se não tinha estrutura central?

[Por favor discussões Evitar de se Ruby ou Python é melhor, o que é muito aberto para responder.]

Editar: Embora eu pensei que isso é óbvio, eu não estou dizendo que outras estruturas não existem para Ruby, mas sim que o grande em termos de popularidade é Rails. Além disso, devo mencionar que eu não estou dizendo que os quadros para Python não são tão bom (ou melhor do que) Rails. Cada quadro tem seus prós e contras, mas Rails parece, como Ben Blank diz em um dos comentários abaixo, ultrapassaram o Ruby em termos de popularidade. Não há exemplos de que no lado do Python. PORQUE? Essa é a questão.

Foi útil?

Solução

A meu ver, Rails colocar o Ruby no mapa. O simples fato é que, antes de Rails, Ruby era uma linguagem esotérica menor, com muito pouca adoção. Rubi deve seu sucesso à Rails. Como tal, trilhos tem um papel central no ecossistema rubi. Como pontos finos para fora, existem outros frameworks web, mas vai ser muito difícil ultrapassar Rails como o líder.

Python, por outro lado, teve uma curva de adoção muito diferente. Antes Rails, Python foi muito mais usado do que Ruby, e por isso teve um número de concorrentes frameworks web, cada um lentamente construindo suas bases eleitorais. Django tem feito um bom trabalho consolidar apoio, e se tornar o líder no mundo framework web Python, mas nunca será o Framework One True simplesmente por causa da forma como a comunidade desenvolvidos.

Outras dicas

Eu não acho que é certo para caracterizar Rails como 'o' '' quadro único 'central' Ruby.

Entre os quadros de Rubi incluem Merb, Camping e Ramaze.

... que tipo de invalida a questão.

A resposta técnica real é que há três abordagens principais para web-development em Python: um é baseado em CGI, onde o aplicativo é construído apenas como one-off Perl um aplicativo antigo para ser executado através CGI ou FastCGI, por exemplo, Trac ; então há Zope , que é um quadro overengineered bizarro com o seu próprio conceito DB, uma equivocada estranho through-the-web conceito de desenvolvimento de software, etc. (mas Plone ainda é bastante popular); e, em seguida, há Django (e Turbogears , etc.), o qual é guiado pelo mesmo apenas-a-tools- filosofia necessária como Rails (pode-se argumentar que chegou lá primeiro ou quem fez isso melhor). Muitas pessoas provavelmente concordaria que o Rails CakePHP abordagem Django / / é melhor do que as abordagens mais velhos, mas como o mais velho linguagem Python tem muito mais estruturas legadas que ainda estão tentando evoluir e permanecer relevante. Estes quadros vai pendurar porque já existe desenvolvedor buy-in para eles. Por exemplo, em retrospectiva muitas pessoas provavelmente diria que o Zope (especialmente ZODB) foi um erro terrível, mas Zope 3 é muito melhor do Zope 2, e já existem empresas inteiras construídas em torno de tecnologias Zope.

Rails foi um pouco revolucionária em seu "Convenção sobre configuração" extrema abordagem que o diferencia de praticamente qualquer outra coisa e fez-se o "killer app" do Ruby, causando uma série de pessoas a perceber o Ruby em primeiro lugar.

Portanto, a questão é realmente "Por que David Hansson decidir escrever Rails em Ruby em vez de Python?"

Lembre-se que Ruby tinha existido por um longo tempo antes de Rails foi criado. Segundo a Wikipedia, Ruby foi criado em meados da década de 90; Rails não veio ao redor até 2004. Ruby é simplesmente a linguagem que David Hansson escolheu para usar para Rails.

E sim, eu diria que Ruby é a Rails como Python é Django .

Eu concordo com Ned. Aposto que mais de 90% das instalações Ruby são para nenhuma outra finalidade do que correr Rails. Rails domina Ruby - não há nenhuma aplicação única que domina Python, principalmente porque a comunidade Python é um pouco maior do que a comunidade Ruby.

Será que ruby ??ser menos popular sem Rails? absolutamente.

Será que Python ser mais popular com um quadro de verdade? Quer dizer que ao contrário de vários? Talvez quem sabe. Em qualquer caso, a maioria concorda Django é um quadro muito bom.

Por que, historicamente, isso aconteceu para Ruby? Porque DHH escolheu o Ruby depois de fazer sua própria pesquisa.

Para adicionar a resposta sobre Rails ter feito um avanço por causa da 'Convenção sobre configuração' há também uma outra razão e que é que Rails tem vindo a utilizar as habilidades meta-programação do Ruby soberbamente. Uma boa parte da magia do Rails que tem contribuído para a remoção de um monte de dor de desenvolver aplicações web veio através deste uso inteligente de rubi meta-programação.

Eu tenho que concordar que Django é basicamente o "Rails para Python" equivalente. Por que demorou tanto tempo? A resposta simples é muitas opções.

Em Python, há muitos sistemas de solicitação / resposta, rewriters url, ORMs, linguagens de modelagem, etc, que você pode construir uma pilha web em dezenas de configurações diferentes. Na verdade, este é exatamente o que Pilões e TurboGears fazer é fornecer uma pilha confiável, previsível para construir aplicações web MVC.

O Django foi diferente foi que encapsulado tudo. Ao invés de ir a rota componentes, eles construíram um sistema contíguo. Eles construíram seu próprio ORM, seu próprio modelo de linguagem, seu próprio sistema de middleware, etc. Seu raciocínio era que não havia sistema como este não unificado para Python.

Python não é um pônei de um truque só. Portanto, não há nenhuma "estrutura central" única para ele. Muitas pessoas ouvi pela primeira vez de Python como "outra linguagem OO bom" ou através de um dos muitos usos a que tenha sido colocado.

Para ser justo, Ruby não é um pônei de um truque só quer. É que muitas pessoas consideradas Rails como o "killer app" que eles têm de olhar para uma linguagem previamente não-conhecido. Eu suspeito que muitas pessoas nunca ouviu falar de Ruby antes Rails, mas isso é de nenhuma maneira a única coisa que Ruby pode fazer.

Se você seguiu a notícia, você leu que Merb e Rails irão se fundir. Esta é uma IMHO boa jogada. Eu acho que é por causa do objetivo comum que os desenvolvedores têm: Eles querem uma estrutura simples para webdev, que vem com um OR mapeador, roteamento, modelo de linguagem, etc, que se encaixa para a maioria das tarefas ..

Confira este artigo sobre por isso que nunca vai ver Python- on-Rails . O autor dá algumas das razões básicas para que Python nunca teve e nunca terá um quadro central. Devo acrescentar, eu mesmo, que o Java não tem nem um, e pelas mesmas razões.

De acordo com o autor, o Rails é estritamente ligada à sua "implementação", que é Ruby. Rails foi adotado por muitos desenvolvedores e Ruby era apenas parte dela. Rails funciona perfeitamente em Ruby (ou Ruby wanna-bes como Groovy), mas o mais importante, como muitas outras respostas dizer, Rails abriu o caminho para a adoção Ruby.

É por isso que Rails-para-Python não vai trabalho, ou pelo menos o que as pessoas têm vindo a apostar na com Rails não é corrigir. Não é sobre o implementação ou a qualidade da quadro, é sobre o padrão de adoção. Trata-se de colocar o quadro na frente, eo implementação na parte de trás - mesmo se Esta não foi a desenvolvedores Rails intenções (embora talvez eles são inteligente e esta era a sua intenção).

Basicamente, você não pode obter um monte de folk-amando idioma para reunir em torno de um quadro único. No lado do Java, enquanto que Primavera é bem-amado, não é nenhuma Rails em termos de popularidade na comunidade Java. Em uma comunidade madura desenvolvedores têm suas próprias idéias sobre o que metáforas trabalho e não fazer o trabalho em um quadro. Este É por isso que Rails leads para Ruby e não o contrário (tipicamente, na sua maioria, não em todos os casos).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top