Python vs Ruby e Rails vs Django

Python vs Ruby e Rails vs Django

Neste post eu estou coletando opiniões sobre prós e contras do uso de Django duas popular da web estruturas do Python e Ruby on Rails em desenvolvimento web. Tentei incluir todos os fatores que são importantes para escolher entre dois quadros.

Python vs Rubi

Geral
Ambas as linguagens são boas, moderno, bem desenhado, flexível, bom para a sua produtividade.
Filosofia
- Python realmente acredita que a leitura do código é a coisa mais importante. Portanto, há um verdadeiro modo de escrever código.
Python gosta de coisas para ser estruturada, consistente e simples
- Ruby acredita em dar programador a flexibilidade, liberdade e poder. Ele fornece a melhor maneira de escrever código de forma concisa e compacta.
Mais para a expressividade do código e código de escrita que é inteligente.
- Tanto Ruby e Rails tem mais "magia" envolvida. Isso torna o desenvolvimento muito rápido quando você entender a magia, mas frustrante quando você não faz.
- Django é mais fácil de aprender e tem menos "mágica".
Pessoas Python, como bibliotecas, para ser transparente e óbvio como eles funcionam, enquanto as pessoas de Ruby tendem a fornecer interfaces limpas e bonitas com "magia" por trás das cenas.
Convenção sobre configuração
- A peça central da filosofia Rails é chamado de convenção sobre configuração (CoC). Rails oferece mais inadimplência.
- Django por outro lado permite a você especificar detalhes mais de configuração mesmo.
Aplicação
- Python é mais maduro, natureza, propósito geral, mais nicho vs Ruby (Rails) uso.
- Ruby + Rails tem uma ligeira vantagem sobre Python + Django para desenvolvimento web, e tem mais mindshare.
- Python é mais forte para coisas como a manipulação de dados, análise, administração de sistemas, programação científica, etc
Comunidade
- Há duas grandes comunidades atrás de ambos os quadros, que trazem você plugins, extensões e assim por diante.
Algumas pessoas acreditam que o Python tem uma comunidade mais desenvolvida. Python comunidade desenvolveu toneladas de bibliotecas adequadas para análise de dados, aprendizado de máquina, processamento de linguagem natural, bibliotecas científicas.
Mas o número de gemas e extenstions do Rails está crescendo rapidamente.
É mais uma escolha que você fez entre suas filosofias do que os seus (semelhantes) características definidas.

Django vs Rails (com ActiveAdmin ou RailsAdmin)

Ruby on Rails e Python (Django) são dois quadros principais.
Ambos são grandes frameworks MVC no topo de uma grande linguagem.
Geral
Django é mais declarativa você terá uma compreensão mais clara do que está realmente acontecendo.
Rails prefere convenção sobre configuração.
Primeira aplicação
Comparado com Rails, Django cria uma estrutura de projeto muito mais simples.

Rails características

Convenção sobre configuração (CoC)
COC em Rails basicamente significa que um projeto Rails tem um layout pré-definido. Todos os componentes (modelos, visualizações, controladores, layouts, CSS, JavaScript, etc) têm lugares padrão onde você deve soltá-los ea aplicação pega-los sem qualquer esforço adicional de sua parte.
SECO
Outra peça central no Rails é o "Não Repeat Yourself" princípio (SECO).
MVC
Rails é um clássico Model-View-Controller framework web completa pilha.
O que o separa da maioria dos frameworks MVC todo é a ênfase em REST.
Modelo contém a lógica do aplicativo de negócios, Controller invoca a funcionalidade da camada de modelo e alimenta os dados resultantes para Ver, que exibem os dados de uma forma legível para o usuário.
ORM
A camada de modelo é a casa de seus objetos de domínio ea lógica de negócios em torno deles.
Objetos de domínio (entidades aka) são mapeados para tabelas de banco de dados (pelo menos em RDBMS).
Diferentemente da maioria dos objetos mapeadores relacionais do Rails ActiveRecord (o ORM padrão; poderia ser substituído por outra coisa se quiser) não exige que você declarar explicitamente a estrutura dos objetos, mas extrai automaticamente a partir de suas definições de tabela DB. Uma classe simples, modelando um usuário do aplicativo pode ser assim:
- Finders - Rails gera automaticamente para nós "descobridores" que podemos usar para fazer consultas sobre objetos em Ruby puro.
- DSL para expressar relações entre as classes de vários modelos (belongs_to, has_many, etc)
Pontos de vista e modelos HTML
Nos Trilhos camada de visão se baseia em modelos de HTML com código Ruby embutido neles (html.erb).
Há um monte de comunidade contribuiu alternativas, no entanto, com HAML sendo o mais proeminente.
Rails permite que você use SASS como um substituto para CSS tradicional.
Rails oferece as seguintes ferramentas para serem usadas em vistas a seguir sua filosofia (seca e CoC): templats parciais, layout, ajudantes.
Ajax e Rails
Rails apresenta integração com JavaScript e AJAX. jQuery é a biblioteca JavaScript padrão.
Fazendo e tratamento de solicitações de AJAX no Rails é geralmente muito fácil.
Teste
Rails fortemente promove testar o seu código. Todos os geradores de Rails iria gerar stubs de teste, que você vai fazer o bem a preencher
Rails suporta todos os principais frameworks de teste Ruby - Test :: Unit, RSpec, Cucumber.
Características:
- Suporte luminárias,
- Suporte de banco de dados de teste,
- A capacidade de executar unidade e teste funcional separadamente.
Rails realmente presta muita atenção a ter testes.
Desenvolvimento
As opções de implementação mais comuns para Rails são atualmente Apache HTTPD ou Nginx e Phusion Passenger (mod_rails).

Django características

MVC
Django chama sua separação de domínios MTV (modelo-modelo-view) em vez do tradicional MVC. Ele usa modelos em vez de vistas Rail.
Enquanto Django é um framework controlador MVC, bem como, é construído em torno de uma mentalidade diferente.
Django é a estrutura totalmente configurável e minimalista que capacita os desenvolvedores de adequá-lo às suas necessidades.
Um projeto Django é composto de aplicativos autónomas e reutilizáveis. Apps, por outro lado são compostos de modelos, pontos de vista e modelos.
ORM
Django ORM padrão é algo reminiscente de frameworks como Hibernate. As classes de entidade declarar explicitamente os todos os atributos. Então você tem que escrever mais código do que você faz no Rails.
Como em Rails temos útil "localizadores" que pode ser usado para consultar os objetos do modelo em puro python (em vez de usar sql).
Ver (camada de modelo)
Enquanto ERB é basicamente HTML com Ruby embutido nele, o Django apresenta uma linguagem de templates personalizado com a sua biblioteca própria marca (extensível). Isso geralmente significa que os modelos do Django tendem a ser um pouco mais limpo do que modelos de Rails, já que você não tem permissão para abusar muito.
Por outro lado você pode fazer praticamente qualquer coisa pela incorporação de código diretamente em um molde, assim como de costume - cada decisão de projeto tem seus prós e contras.
Django suporta bibliotecas alternativas de modelagem, de modo que você está coberto no caso de você não gostar do um padrão.
Geração de forma
Django possui uma poderosa forma de geração / manipulação de instalações que se integram perfeitamente com a camada de templates. Por exemplo - é muito fácil de gerar uma forma de correspondência da estrutura de um objeto de modelo de domínio com validação de propriedade automática.
Rails também tem jóias para ajudar gerando formas ( jóia Formtastic ) e do lado do cliente validações.
Javascript e Ajax
Ao contrário do Rails, Django não integra quaisquer bibliotecas JavaScript. Você tem que escolher um quadro JavaScript você mesmo (que um processo trivial).
O suporte AJAX em Django é básica e extremamente poderoso ao mesmo tempo - request.is_ajax (). O que isto significa é que você pode verificar se um pedido foi regular ou um pedido de AJAX e responder adequadamente.
Teste
- Ambientes
Esta é uma característica que vem fora da caixa em Rails e não em Django. Django é explícito, e você pode fazer o seu sistema ambiente.
Desenvolvimento
Python é uma tecnologia bastante madura e oferece muitas opções de implantação - Apache, Nginx e Google App Engine.
A também a possibilidade de implantar aplicativos Django em Java ou. Infra-estrutura de rede usando Jython ou IronPython.

Área administrativa

Django vem com autenticação e administração extensível construído dentro Isso torna mais fácil para construir páginas padrão de administração para gerenciar seus dados.
Ele torna o desenvolvimento de CMSs simples realmente fácil.
É uma das vantagens do Django - a interface automática admin você consegue de graça fora-de-the-box.
Rails doesn'thave um suporte embutido de admin. Mas você tem a opção de usar vários extenstions disponíveis (gemas). Atualmente, os dois mais Populars administrador frameworks de UI ''' são RailsAdmin e ActiveAdmin .
Leia mais sobre a comparação de RailsAdmin com ActiveAdmin:
- http://batsov.com/articles/2011/11/20/admin-interfaces-for-rails-apps-railsadmin-vs-activeadmin/
- http://stackoverflow.com/questions/6542075/rails-admin-vs-activeadmin
Referências:
- Discussão sobre stackoverflow: http://stackoverflow.com/questions/91846/rails-or-django-or-something-else
- http://batsov.com/articles/2011/06/19/django-vs-rails/
- TRILHOS VS DJANGO
- O que eu deveria aprender: Django ou Rails? (Discussão sobre Quora)
- Você acredita em mágica? , escrito em 2009

Comentários

  1. Your blog is in a convincing manner, thanks for sharing such an information with lots of your effort and time
    ruby on rails training
    ruby on rails training

    ResponderExcluir

Postar um comentário

Postagens mais visitadas deste blog

Rails CanCan

Meus insights mais valiosos sobre criptomoedas para 2018 e além

Como pegar a senha do Whatsapp de um Android ou Iphone