Rails Ruby'de neden yazıldı? [kapalı]


9

PHP ve Ruby biliyorum.

Symfony adı verilen bir PHP Rails klonu (seçim dışında değil) kullanarak (ki görünüşe göre en iyi PHP çerçevesi), bunun bir Rails klonu olduğunu fark ettim. Bence Symfony aptal ve (SensioLabs akıllı bir iş) çünkü Rails zaten var.

Para kazanan açık kaynaklı projelerin yanı sıra, Rails zaten var olduğunda insanların neden PHP'de Rails klonları yaptığını anlamıyorum. Neden Rails kullanmıyorsunuz? Elbette DHH, Rails'i Ruby ile bir nedenden dolayı kodladı.

Symfony kullanarak, bir şeyin doğru hissetmediğini fark ettim ama ne olduğunu bilmiyorum. Rails'i bir saçmalık Sitepoint e-kitabı aracılığıyla öğrendim ve unuttum, şimdi PragProg e-kitabı aracılığıyla öğreniyorum ve bu e-kitabı seviyorum. Rails'ı tam olarak bilmiyorum, ama nasıl çalıştığını anladım (Symfony sayesinde). 2 Rails uygulaması yapabilmem için tüm e-kitabı bitirmeyi çok isterim. Rails, bitiremediğim Sitepoint e-kitabını kullanarak Symfony'den daha eğlenceli olduğunu ve Ruby'nin güzel sözdizimi ile ilgisi olmadığını hatırlıyorum.

  1. Rails neden Ruby'de kodlanmış?
  2. PHP Rails klonları hakkında, doğru hissettirmeyen nedir?
  3. Rails ne yapıyor, Rails klonları yapmıyor?

4
Ruby, Rails'in gizli sosudur.
Chiron

4
Meh, Ruby on RailsPHP'de uygulanması denilen bir şey göremiyorum .
alternatif

2
Hafıza hizmet ederse, DHH'nin Ruby'yi seçtiğini açıkladığı bir podcast duydum. Bu Geliştiricinin Yaşamının bu bölümü olduğunu düşünüyorum .
Adam Lear

2
@Chris G - Buna inanması inanılmaz zor. Temel diller arasındaki uçurum muazzamdır - Ruby, programlama dili aracılığıyla akıllıca ve kapsamlı bir şekilde düşünülmüştür, PHP, oyunun sonlarında hacklenmiş bir grup Ruby özelliği ile diğer hack'lerde yığılmış bir hack'tir. PHP'nin barındırılması kolaydır ve daha iyi performans gösterir, ancak bunlar DHH'nin öncelikleri olsaydı, muhtemelen Ruby'yi geri seçmezdi. PHP hiçbir zaman gerçekten bir programlama dili olarak tasarlanmamıştır ve dil teorisi / CS'yi önemseyen insanlar, sonuç olarak buna meraklı değildir.
glenatron

2
@Glenatron Hiçbiri akıllı PHP kullanıcısının ORM gibi önemli "Rails" özelliklerini kullanarak güzel, etkileyici, modern web uygulamaları yazmasını engellemez. Kapakların sadece son zamanlarda PHP'ye eklendiği fikri kimsenin bunları kullanmasını engellemeyecek!
Chris G.7

Yanıtlar:


26

1.) Rails neden Ruby'de kodlanmıştır?

Raylar aslında DHH'nin Ruby'de yazılan Basecamp'taki çalışmalarından çıkarıldı . Zamanla, Rails çekirdek geliştiricileri Rails'e daha fazla özellik çıkarmaya ve geliştirmeye devam etti ve sonunda tam teşekküllü bir çerçeve haline geldi.

Ruby yıllar içinde güç ve ifade gücü içinde büyüdüğünden, çerçeveye iyi uymaya devam etti, bu yüzden de yazıldığı dil olmaya devam etti. (Artı, "Raylarda C #" veya "Raylarda Java" değil O kadar güzel bir itiraz yok.)

2.) PHP Rails klonları hakkında, doğru hissetmeyen nedir?

Bu gerçekten objektif olarak cevaplanamaz, ancak muhtemelen # 1 yüzünden. Rails'in davranışı ve içselleri Ruby'de bulunan birçok özellikten yararlanır ve başka yerlerde tam olarak çoğaltılması zor olur. Örneğin, PHP'nin Rails'e büyük ölçüde bağlı olduğu metasınıfları yoktur.

Para kazanan açık kaynaklı projelerin yanı sıra, Rails zaten var olduğunda insanların neden PHP'de Rails klonları yaptığını anlamıyorum. Neden Rails kullanmıyorsunuz? Elbette DHH, Rails'i Ruby ile bir nedenden dolayı kodladı.

Çünkü herkesin yeni bir dil öğrenebilmesi için yeni bir dil öğrenecek zamanı, bütçesi veya eğilimi yoktur.

Benzer şekilde, Brainfuck'un çok popüler bir web çerçevesine sahip olduğu ortaya çıktıysa , bu, uygulamalarını Brainfuck'ta yazmamış olan müşterilerinizi terk etmeniz gerektiği anlamına mı geliyor? Bir iş yürütmenin yolu bu değil.

PHP ve Ruby biliyorum.

"Hem PHP'yi hem de Ruby'yi biliyorum" gibi ifadeler, her ikisinin derinliğini, zenginliğini ve kendine özgü özelliklerini henüz tam olarak takdir edemeyeceğinizi gösteriyor.



Basecamp'taki ilk denemenin PHP'de denendiğini ve DHH'nin memnuniyeti için çalışmadığını düşünüyorum. Böylece Rails Ruby'de kodlanmıştı.
Bryan M.

3
+1 - yeni bir dil öğrenmek için bir zaman var - herhangi bir öneme sahip bir proje, bunlardan biri değil.
JeffO

PHP kutunun dışında metasınıf yok, haklısın. Bununla birlikte, PHP 5.3'ten beri metasınıf işlevselliğini uygulamak mümkündür.
Chris G.7

6

1. Rails neden Ruby'de kodlanmıştır?

Bir zamanlar yakutta programlama kararı vardı. Bu tasarım kararı bugüne kadar sürüyor.

2. PHP Rails klonları hakkında, doğru hissettirmeyen nedir?

Bunun gibi bir wesbite üzerinde söylemek zor bir duygu. Sizinle daha samimi ve duygularınız hakkında daha fazla bilgi sahibi olan bir kişiye sormak veya hatta onları paylaşmak isteyebilirsiniz.

3. Rails ne yapıyor, Rails klonları yapmıyor?

Tam bir Rails klonu, tanım başına Rails'in yaptığı her şeyi yapar. Yani bu büyük olasılıkla bir klonun tam olarak nasıl yapıldığına bağlı olacaktır. Farklı bölümler farklı davranışlara neden olacaktır. Örneğin, başka bir dile çeviri için, diğer dilde Rails on Ruby'nin kullandığı dil özellikleri olmayabilir, bu da büyük olasılıkla tasarımda ve sonra davranışta farklılıklara neden olacaktır.


6

Rails neden Ruby'de kodlanmış?

Ruby çok fazla bir meta programlamaya izin verir ve izin veren sözdizimi, yöntem çağrılarına hiç benzemeyen güzel API'ler oluşturmanıza izin verir.

Örneğin, Rail'in Nesne İlişkisel Eşleyicisi olan ActiveRecord bunların her ikisini de iyi yapar. İlk olarak, veritabanındaki alan adlarına karşılık gelen yöntemleri oluşturmak için Ruby'nin meta programlama yeteneğini kullanır .

İkinci olarak, ActiveRecord nesnelerle ilişkilendirmeler bildirmenize izin verir: bir Personkudret has_many :books. Bu has_many bir deklarasyona benziyor, ama aslında bir yöntem çağrısı. (Ruby bunu şöyle okur has_many(:books).

Ruby'nin ayrıca deneyimli programcının yaşamını kolaylaştırmak gibi bir hedefi vardır.

Ruby bunları kolaylaştırır, bu yüzden insanlar bunları yapar. Diğer diller bunları daha da zorlaştırır, ya da bunun gibi sihirli şeyler açıkça kültürün bir parçası değildir. Python mega çerçevesi olan Django'nun çok daha az meta büyüsü vardır, çünkü Python'da bu kadar kolay değildir ve Python bir dil olarak "açık, örtükten daha iyidir" e doğru eğilir. (PHP kültürü veya o taraftaki web çerçeveleri hakkında fazla bilgim yok.)

Bence DHH'nin Ruby'ye aşık olmasının nedenlerinden bazıları bunlar ve Rails'te bu dil özelliklerini güçle kullanıyor.


Rails'te bazı iskele yapmak için konsolu kullanmak çok iyi, ancak Symfony'de bu tür özellikler var. Beni Ruby'nin dilinin meta programlama için nasıl bir şey sunduğuna dair kanıt bulabileceğimi gösterebilir misin? Sınıflar yeterli olmamalı mı?
desbest

1
Pragmatik Programcılar'ın bir kitabı var: Ruby'deki Metaprogramming - Ruby'deki Metaprogramming'e giriş olmasının yanı sıra, Rails'te metaprogramlama hakkında konuşarak yaklaşık 50 sayfa harcıyor. Ben sadece sınıflar yeterli olduğunu düşünmüyorum: örneğin, bazen metaprogramlama yöntem zinciri aracılığıyla olur ("Bu işlevi çağırdığınızda, yerine benim işlev çağırma - orijinal çağırabilir veya olmayabilir"). Bu Ruby'deki bir metaprogramlama modelidir (Rayları temizler ve kullanımını kolaylaştırır)
RyanWilcox

Rails'te ustalaştıktan sonra bunu okumak zorundayım. Her şey kafa karıştırıcı geliyor.
desbest

Sadece PHP'nin ORM çözümlerine de sahip olduğunu belirtmek isterim. Ruby'ye özgü bir şey değil.
Chris G.7

1
ActiveRecord'un phpActiveRecord adlı bir PHP uygulaması vardır. Tüm bunları kullanır. Ancak, DHH Rails'i inşa ettiğinde, PHP bunu yapabilmenin çok uzun bir yoluydu.
Jamon Holmgren

2

Neden ray kullanmıyorsunuz?

Her ikisinin de kullanıcısı olarak bir bakış açısı sunacağım. Ruby / Rails hobi programı ve sadece iş yerinde PHP kullanın. (Not: Ruby / Rails'i hobici bir ortam olarak görmüyorum, işte böyle kullanmayı tercih ediyorum.)

Birçok kişi popülaritesi bantlı ve onun 'farklı' nedeniyle Ruby / Rails web sitesi geliştirme kutsal kâse gibi davranın. Birçok yönden PHP'yi eski bir şey olarak reddetmek kesinlikle yeterli değildir.

Symfony, Rails gibi hissetmez çünkü PHP, rayların sağladığı sözdizimsel şekerden bazılarına sahip değildir. PHP bu konuda gelişiyor ve 5.3'ün kapanışları eklenmesi kaçımızın kod yazmamızda fark yarattı.

Beni yanlış anlamayın, Ruby ve Rails'i seviyorum. Ancak, karmaşık veya pahalı web sitesi barındırma veya performans veya 'kanayan kenar' olma konusunda endişelenmek istemediğinizde, PHP bugün hala son derece önemlidir ve çerçeveleri de çok iyidir.

  • Redbean, PHP ile mükemmel ORM işlevselliği sunar. Doktrin, Idiorm / Paris ve Propel de öyle.
  • Symfony2 ve CakePHP, Rails ruhuna benzer şekilde şişirilmiş bir web geliştirme çerçevesi sunar.
  • CodeIgniter şişirmeden tam bir çerçeve çözümü sunar.
  • Slim, sinatra benzeri bir çerçeve sunar.

PHP rayları klonlarının 'doğru hissetmediği' hakkındaki yanlış yönlendirmelerin yanlış olduğunu düşünüyorum, çünkü onlar klonlar değiller ve Rails ile aynı olmayacaklar. Bir PHP çözümünün basitliğini ve aşinalığını öğrenmeyi öğrenin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.