Perché Rails è stato scritto in Ruby? [chiuso]

9

Conosco PHP e Ruby.

Usando un clone di Rails di PHP (non fuori dalla scelta), chiamato Symfony, (che è apparentemente il miglior framework PHP), noto che si tratta di un clone di Rails. Penso che Symfony sia stupido e che (SensioLabs sia un business intelligente) perché Rails esiste già.

A parte i progetti open source che guadagnano denaro, non capisco perché le persone stiano creando cloni di Rails in PHP, quando Rails esiste già. Perché non usare Rails? Sicuramente DHH ha codificato Rails con Ruby per un motivo.

Usando Symfony, noto che qualcosa non sembra giusto ma non so cosa sia. Ho imparato Rails attraverso un ebook di Sitepoint di merda e l'ho dimenticato, quindi ora lo sto imparando attraverso l'ebook PragProg e adoro quell'ebook. Non conosco appieno Rails, ma capisco come funziona (grazie a Symfony). Mi piacerebbe finire di ottenere attraverso l'intero ebook in modo da poter fare app 2 Rails. Ricordo che Rails era più divertente di Symfony usando l'ebook di Sitepoint che non riuscivo a finire, e che non aveva nulla a che fare con la bella sintassi di Ruby.

  1. Perché Rails è codificato in Ruby?
  2. Di cosa parlano i cloni di Rails di PHP, che non sembrano corretti?
  3. Che cosa sta facendo Rails, che i cloni di Rails non stanno facendo?
posta desbest 07.08.2011 - 15:22
fonte

4 risposte

26

1.) Why is Rails coded in Ruby?

Rails è stato originariamente estratto dal lavoro DHH su Basecamp, che è stato scritto in Ruby. Nel corso del tempo, gli sviluppatori principali di Rails hanno continuato a estrarre e sviluppare più funzionalità in Rails, e alla fine è diventato un framework completo.

Da quando Ruby è cresciuto in potenza ed espressività nel corso degli anni, ha continuato ad essere una buona idea per il framework, quindi è anche rimasto il linguaggio in cui è scritto. (Inoltre, "C # on Rails" o "Java on Rails "non ha quella bella allitterazione.)

2.) What is it about PHP Rails clones, that don't feel right?

Questo non può essere risposto in modo obiettivo, ma probabilmente è a causa del # 1. Il comportamento e i componenti interni di Rails sfruttano molte funzionalità esistenti in Ruby e sarebbero difficili da replicare con precisione altrove. Ad esempio, PHP non ha metaclassi, su cui Rails dipende molto.

Apart from open-source projects gaining money, I don't understand why people are making Rails clones in PHP, when Rails already exists. Why not use Rails? Surely DHH coded Rails with Ruby for a reason.

Perché non tutti hanno il tempo, il budget o l'inclinazione per imparare una nuova lingua solo per poter apprendere un nuovo framework.

Per analogia, se si è scoperto che Brainfuck ha avuto un framework web popolare, vuol dire che dovresti abbandonare i tuoi clienti che non hanno scritto le loro applicazioni in Brainfuck? Non è un modo per gestire un'impresa.

I know PHP and Ruby.

Affermazioni come "Conosco PHP e Ruby" suggeriscono che potresti non apprezzare ancora pienamente la profondità, la ricchezza e le idiosincrasie di entrambi.

    
risposta data 07.08.2011 - 15:30
fonte
6

1. Why is Rails coded in Ruby?

C'era una volta la decisione di programmarlo in ruby. Questa decisione di progettazione dura fino ad oggi.

2. What is it about PHP Rails clones, that don't feel right?

È una sensazione che hai, difficile da dire su un wesbite come questo. Potresti chiedere a una persona che è più intima con te e sa di più sui tuoi sentimenti o addirittura condividerli.

3. What is it that Rails is doing, that Rails clones aren't doing?

Un esatto clone di Rails fa per definizione tutto ciò che fa Rails. Quindi molto probabilmente dipenderà da come è stato fatto esattamente un clone. Le diverse parti avranno un comportamento diverso. Ad esempio, per una traduzione in un'altra lingua, l'altra lingua potrebbe non avere le funzionalità linguistiche utilizzate da Rails su Ruby, il che probabilmente causerà differenze nella progettazione e quindi nel comportamento.

    
risposta data 07.08.2011 - 15:30
fonte
6

Why is Rails coded in Ruby?

Ruby consente a un lotto una meta-programmazione e la sua sintassi permissiva ti consente di creare API carine che non sembrano affatto chiamate di metodi.

Ad esempio, ActiveRecord, l'Object Relational Mapper di Rail, fa bene entrambe le cose. Innanzitutto, utilizza la capacità di meta-programmazione di Ruby di creare immediatamente i metodi corrispondenti ai nomi dei campi nel database.

In secondo luogo, ActiveRecord ti consente di dichiarare le associazioni agli oggetti: un Person potrebbe has_many :books . Questo has_many sembra una dichiarazione, ma in realtà è una chiamata al metodo. (Ruby legge questo come has_many(:books) .

Ruby ha anche l'obiettivo di semplificare la vita del programmatore esperto

Ruby rende queste cose facili, così le persone le fanno. Altre lingue rendono queste cose più dure, o magiche come questa, non fanno esplicitamente parte della cultura. Django, il mega-framework Python, ha molto meno meta-magia perché non è così semplice in Python, e Python come linguaggio tende a "esplicitare è meglio che implicito". (Non so molto sulla cultura PHP o sui framework web su quel lato.)

Penso che questi siano alcuni dei motivi per cui DHH si è innamorato di Ruby, e usa queste caratteristiche linguistiche con potenza in Rails.

    
risposta data 07.08.2011 - 17:27
fonte
2

Perché non usare i binari?

Offro una prospettiva come utente di entrambi. Ho un programma per hobby in Ruby / Rails e uso PHP esclusivamente al lavoro. (Nota: non escludo Ruby / Rails come ambiente hobbista, questo è solo il modo in cui scelgo di usarlo.)

Molte persone trattano Ruby / Rails come il santo graal dello sviluppo di un sito web a causa della popolarità del carrozzone e perché è "diverso". In molti modi è certamente, ma non abbastanza, da liquidare PHP come qualcosa di antico.

Symfony non si sente come Rails perché a PHP manca uno zucchero sintattico fornito da rails. PHP sta migliorando in questo senso e l'aggiunta di chiusure 5.3 ha fatto la differenza in quanti di noi scrivono codice.

Non fraintendermi, amo Ruby e amo Rails. Ma quando non vuoi occuparti di hosting di siti complessi o costosi o ti preoccupi delle prestazioni o sei "sanguinante", PHP è ancora estremamente attuale oggi e le sue strutture sono anche molto buone.

  • Redbean offre ottime funzionalità ORM con PHP. Così fa Doctrine, Idiorm / Paris e Propel.
  • Symfony2 e CakePHP offrono una struttura di sviluppo web gonfiabile simile nello spirito a Rails.
  • CodeIgniter offre una soluzione framework completa senza il bloat.
  • Slim offre una struttura sinatra.

La tua insinuazione secondo cui i cloni di PHP non fanno "sentirsi bene" è sbagliata, penso, perché non sono cloni e non saranno uguali a Rails. Impara a crogiolarti nella semplicità e nella familiarità di una soluzione PHP.

    
risposta data 07.10.2011 - 14:21
fonte

Leggi altre domande sui tag