Por que o Rails foi escrito em Ruby? [fechadas]

9

Eu sei PHP e Ruby.

Usando um clone do PHP Rails (não fora de opção), chamado Symfony, (que aparentemente é o melhor framework PHP), percebo que é um clone do Rails. Eu acho que o Symfony é estúpido e isso (SensioLabs é um negócio inteligente) porque o Rails já existe.

Além de os projetos de código aberto ganharem dinheiro, não entendo por que as pessoas estão criando clones do Rails em PHP, quando o Rails já existe. Por que não usar Rails? Certamente o DHH codificou o Rails com Ruby por um motivo.

Usando o Symfony, percebo que algo não parece certo, mas não sei o que é. Eu aprendi o Rails através de um ebook ruim do Sitepoint e o esqueci, então agora estou aprendendo através do ebook PragProg e adoro esse ebook. Não conheço totalmente o Rails, mas entendo como ele funciona (graças ao Symfony). Eu adoraria terminar de ler todo o e-book para poder criar 2 aplicativos Rails. Lembro que o Rails foi mais divertido que o Symfony usando o ebook do Sitepoint que eu não consegui terminar, e isso não tinha nada a ver com a bonita sintaxe de Ruby.

  1. Por que o Rails é codificado em Ruby?
  2. O que há nos clones do PHP Rails, que não parecem adequados?
  3. O que o Rails está fazendo, que os clones do Rails não estão fazendo?
desanimar
fonte
4
Ruby é o molho secreto do Rails.
Quíron
4
Meh, não consigo ver algo chamado Ruby on Railssendo implementado em PHP.
alternativa
2
Se a memória serve, ouvi um podcast uma vez onde DHH descreveu que ele escolheu Ruby. Eu acho que foi esse episódio da vida deste desenvolvedor.
Adam Lear
2
@ Chris G - Acho isso incrivelmente difícil de acreditar. O fosso entre as linguagens subjacentes é enorme - o Ruby é uma linguagem de programação inteligente e abrangente, através da linguagem de programação, o PHP é um hack empilhado em outros hacks com vários recursos do Ruby hackeados no final do jogo. O PHP é fácil de hospedar e tem um desempenho melhor, mas se essas fossem as prioridades do DHH, ele provavelmente não teria escolhido Ruby de volta quando o fez. O PHP nunca foi realmente projetado para ser uma linguagem de programação e as pessoas que se preocupam com a teoria da linguagem / CS tendem a não gostar dele como resultado.
glenatron
2
@Glenatron Nada disso impede qualquer usuário inteligente de PHP de escrever aplicativos Web bonitos, expressivos e modernos, utilizando os principais recursos "Rails", como o ORM. A idéia de que os fechamentos foram adicionados recentemente ao PHP não impedirá ninguém de usá-los!
Chris G.

Respostas:

26

1.) Por que o Rails é codificado em Ruby?

O Rails foi originalmente extraído do trabalho do DHH no Basecamp, que foi escrito em Ruby. Com o tempo, os principais desenvolvedores do Rails continuaram a extrair e desenvolver mais recursos no Rails e, eventualmente, se tornaram uma estrutura completa.

Como o Ruby cresceu em força e expressividade ao longo dos anos, ele continuou sendo um bom ajuste para a estrutura, também continuando sendo a linguagem na qual está escrita. (Além disso, "C # on Rails" ou "Java on Rails" não tem essa aliteração legal.)

2.) O que há nos clones do PHP Rails, que não parecem adequados?

Isso realmente não pode ser respondido objetivamente, mas provavelmente é por causa do nº 1. O comportamento e as características internas do Rails aproveitam muitos recursos existentes no Ruby e seriam difíceis de replicar precisamente em outros lugares. Por exemplo, o PHP não possui metaclasses, das quais o Rails depende bastante.

Além de os projetos de código aberto ganharem dinheiro, não entendo por que as pessoas estão criando clones do Rails em PHP, quando o Rails já existe. Por que não usar Rails? Certamente o DHH codificou o Rails com Ruby por um motivo.

Porque nem todo mundo tem tempo, orçamento ou disposição para aprender um novo idioma, apenas para que eles possam aprender uma nova estrutura.

Por analogia, se o Brainfuck tivesse uma estrutura da web muito popular, isso significa que você deveria abandonar seus clientes que não escreveram seus aplicativos no Brainfuck? Isso não é maneira de administrar um negócio.

Eu sei PHP e Ruby.

Declarações como "Eu sei PHP e Ruby" sugerem que você ainda não pode apreciar completamente a profundidade, a riqueza e as idiossincrasias de qualquer uma delas.

John Feminella
fonte
(Reproduzido de stackoverflow.com/questions/6972992/... para a posteridade.)
John Feminella
Acredito que uma tentativa inicial no Basecamp foi tentada em PHP e não estava dando certo para a satisfação do DHH. Portanto, o Rails foi codificado em Ruby.
Bryan M.
3
+1 - há um tempo para aprender um novo idioma - um projeto imediato de qualquer importância não é um dos.
Jeffo
O PHP não possui metaclasses prontas, você está correto. No entanto, desde o PHP 5.3, é possível implementar a funcionalidade de metaclasse.
Chris G.
6

1. Por que o Rails é codificado em Ruby?

Houve uma vez a decisão de programá-lo em rubi. Essa decisão de design dura até hoje.

2. O que há nos clones do PHP Rails, que não parecem certos?

É um sentimento que você tem, difícil de dizer sobre uma mordida como essa. Você pode perguntar a uma pessoa que é mais íntima e sabe mais sobre seus sentimentos ou até mesmo os compartilha.

3. O que o Rails está fazendo, que os clones do Rails não estão fazendo?

Um clone exato do Rails faz por definição tudo o que o Rails faz. Portanto, isso provavelmente dependerá de como exatamente um clone foi feito. As diferentes partes resultarão em comportamentos diferentes. Por exemplo, para uma tradução para outro idioma, o outro idioma pode não ter recursos de idioma que o Rails on Ruby esteja usando, o que provavelmente resultará em diferenças no design e no comportamento.

hakre
fonte
6

Por que o Rails é codificado em Ruby?

O Ruby permite muita metaprogramação, e sua sintaxe permissiva permite criar APIs agradáveis ​​que nem parecem chamadas de método.

Por exemplo, o ActiveRecord, o Mapeador Relacional de Objetos do Rail, executa bem essas duas coisas. Primeiro, ele usa a capacidade de metaprogramação do Ruby para criar métodos dinâmicos correspondentes aos nomes dos campos no banco de dados.

Em segundo lugar, o ActiveRecord permite declarar associações a objetos: um Personpoder has_many :books. Esse has_many parece uma declaração, mas na verdade é uma chamada de método. (Ruby lê isso como has_many(:books).

Ruby também tem como objetivo facilitar a vida de programadores experientes.

Ruby facilita essas coisas, então as pessoas fazem. Outras línguas tornam isso mais difícil, ou coisas mágicas como essa explicitamente não fazem parte da cultura. O Django, o mega-framework do Python, tem muito menos meta-mágica, porque não é tão fácil no Python, e o Python como uma linguagem se inclina para "explícito é melhor do que implícito". (Eu não sei muito sobre a cultura PHP ou as estruturas da Web nesse lado.)

Eu acho que essas são algumas das razões pelas quais DHH se apaixonou por Ruby, e ele usa esses recursos de linguagem com força no Rails.

RyanWilcox
fonte
Está tudo muito bem em usar o console para executar alguns andaimes no Rails, mas esses recursos existem no Symfony. Você pode me indicar onde posso encontrar evidências de como a linguagem do Ruby atende à metaprogramação? As aulas não deveriam ser suficientes?
desbest 7/08
11
Os programadores pragmáticos têm um livro: Metaprogramming in Ruby, que - além de ser uma introdução à Metaprogramming in Ruby - também gasta cerca de 50 páginas falando sobre metaprogramação no Rails. Eu não acho que simplesmente classes são suficientes: por exemplo, às vezes a metaprogramação acontece por meio da cadeia de métodos ("quando você chama essa função, em vez disso, chame a minha versão da função - que pode ou não chamar o original"). Este é um padrão metaprogramação em Ruby (que Rails-se limpo e torna mais fácil de usar)
RyanWilcox
Vou ter que ler isso depois de dominar o Rails. Tudo parece confuso.
desbest 7/08
Gostaria apenas de mencionar que o PHP também tem soluções ORM. Não é algo que é exclusivo para Ruby.
Chris G.
11
Existe uma implementação PHP do ActiveRecord chamada phpActiveRecord. Ele usa todas essas coisas. No entanto, quando o DHH construiu o Rails, o PHP estava longe de ser capaz de fazer isso.
Jamon Holmgren 24/03
2

Por que não usar trilhos?

Vou oferecer uma perspectiva como usuário de ambos. Programador de hobby em Ruby / Rails e uso PHP exclusivamente no trabalho. (Nota: Eu não descarto o Ruby / Rails como um ambiente amador, é assim que escolho usá-lo.)

Muitas pessoas tratam o Ruby / Rails como o santo graal do desenvolvimento de sites por causa da popularidade e por ser "diferente". De muitas maneiras, certamente não é suficiente descartar o PHP como algo antigo.

O Symfony não se parece com o Rails porque o PHP carece de parte do açúcar sintático que o Rails fornece. O PHP está melhorando nesse aspecto e a adição de fechamentos do 5.3 fez a diferença em quantos de nós escrevemos código.

Não me interpretem mal, eu amo Ruby e Rails. Mas quando você não deseja lidar com hospedagem de sites complexos ou caros, ou se preocupar com desempenho ou ser "inovador", o PHP ainda é extremamente relevante hoje e suas estruturas também são muito boas.

  • Redbean oferece excelente funcionalidade ORM com PHP. O mesmo acontece com Doutrina, Idiorm / Paris e Propel.
  • Symfony2 e CakePHP oferecem uma estrutura de desenvolvimento web inchada, semelhante ao Rails.
  • O CodeIgniter oferece uma solução de estrutura completa sem o inchaço.
  • Slim oferece uma estrutura semelhante a sinatra.

Sua insinuação de que os clones do PHP Rails não 'parecem certos' é equivocada, eu acho, porque eles não são clones e não serão os mesmos do Rails. Aprenda a aproveitar a simplicidade e a familiaridade de uma solução PHP.

Chris G.
fonte