Python'u 2003-5 yıllarında Plone / Zope danışmanıyken yaptım. Sonra 2006'da Ruby'yi almaya başladım. Hiç geriye bakmadım. Farklı insanların farklı programlama dilleri ve kültürleriyle daha rahat hissettiklerini düşünüyorum, ama benim için Ruby Python'dan çok daha iyi hissediyor.
Şahsen, Ruby ile karşılaştırıldığında, Python'un biraz kararlı ve yumuşak olduğu güvenilir bir çalışma atı olduğunu düşünüyorum. Ruby çok daha eğlenceli. Bu daha güzel görünen bir dil ve uygulayıcılarını şaşırtmaya devam eden çok eğlenceli ve eğlenceli şeyler yapmak için yapılabilir. Python halkının Ruby'ye çok tehlikeli olduğu için saldırdığını duydum, dersleri yeniden açmak ve bunun gibi vahşi ve sorumsuz şeyler yapmak çok kolay. Ama bu, Ruby'yi bana bir aksiyon macera komedi romantizminde hissettiren şeyin bir parçası. Python, aksine, daha çok IKEA mobilyalarına benziyor: hoş, rahat ve güvenilir - ama sizi asla şaşırtmayacak ve nefesini kesmeyecek.
Ruby ile ilgili en iyi iki şey, benim açımdan, onu Python'dan keskin bir şekilde ayıran iki şey. İlk olarak Ruby, Perl'den çok etkilenir. Python, Perl karşıtı olmaktan gurur duyuyor gibi görünüyor. Ancak Ruby'nin Perl'den ödünç aldığı şeyler büyük pratik değerdedir. Örneğin düzenli ifadeler alın. Ruby'de normal ifadeleri doğal olarak yazabilirsiniz, örn if mystring =~ /^\s+hello word!/ ...
. Python'da, o kadar da değil, çünkü Python, her şeyin tekdüze tahmin edilebilir bir sözdizimini izlemesi konusunda çok anal. Ruby'de hemen STDIN alabilirsiniz input = STDIN.read
. Python'da, import sys
sonra ve sonra
sys.stdin.read()
. Bunlar, Python'un kendisini Perl'den uzaklaştırma ve tahmin edilebilir derecede düzenli olma çabasının Ruby'nin her durumda doğru olanı yapmaya istekli olmasıyla dolu olduğu iki örnektir.
Ruby'yi Python'dan ayıran bir diğer şey, Ruby'nin Lisp'e çok daha yakın olması, Python'un ise neredeyse zorunlu bir programlama dilidir. Bence bu Ruby'nin lehine büyük bir artı.
Ruby'de Python'dan daha az kodla daha fazlasını yapmayı mümkün kılan birçok Lisp benzeri özellik var. Örneğin, Ruby'deki her deyim ve denetim yapısı bir değer döndürür: Ruby'de return
deyimi asla kullanmadan uzaklaşabilirsiniz . if
İfadeler bile bir değere göre değerlendirilir, böylece böyle şeyler yazabilirsiniz
result = if output == 'hello'
[some code here]
"world"
else
[some other code here]
"there"
end
Python'da yazmanız gerekecek
if output == "hello":
[some code here]
result = "world"
else:
[some other code here]
result = "there"
Python result =
iki kez yazmanızı sağlar . Bu çok KURU değil (Kendinizi Tekrarlamayın). Lisp benzeri nitelikleri nedeniyle Ruby'nin Python'dan daha KURU olacağı bir çok örnek var. Ruby'nin yaratıcısı Matz, Lisp geçmişinden geldi.
Bazı insanlar, Ruby'nin de Python'un metaprogramlama (yani dinamik programlama) kıçını tekmelediğini söylüyor. Python insanları ya meta programlamanın çok tehlikeli olduğunu söyleyerek ya da teorik olarak Ruby'nin Python'da yapabileceği tüm meta programlamayı yapabildiğini söyleyerek yanıt verir. Ancak herkesin kabul ettiği bir şey, meta programlamanın Python'da Ruby'den çok daha az yaygın olduğudur. Ve bu çok kötü, çünkü metaprogramlama bir yolculuk.
Sanırım günün sonunda Ruby ve Python'un her ikisinin de işi başarabileceği doğru. C ve Java ile karşılaştırıldığında, Ruby ve Python hemen hemen aynı şeydir. Etkileyici, üretken, üst düzey dillerdir.
Böylece kişiliğinize kaynar.
İşlerin öngörülebilir, düzenli ve güvenli olmasını ister misiniz? Zorunlu programlama tarzını seviyor musunuz? Belki bir gün Google için çalışmak ister misiniz? Perl'in kaotik bir cehennem yumurtası olduğunu düşünüyor musun? Python ile sopa.
Bazı programlama sonuçlarını elde etmenin kesinlikle en özlü yolunu bulmaktan büyük zevk alıyor musunuz? Düzenlilik ve homojenlikten sıkılıyor musunuz? Tümüyle kendi tarzınızda kod yazma özgürlüğüne sahip olmayı ve kendi harika numaralarınızı bulmak için çok fazla alana sahip olmayı sever misiniz? Lisp için C'den daha çok yakınlık hissediyor musunuz? Perl'in yazılım programlamaya çığır açan katkısı için büyük bir hayranlık hissediyor musunuz, ancak sadece biraz daha az şifreli ve çirkin olmasını ister misiniz? Diğer insanların şiir gibi düşüncelerini mi düşünüyorsunuz? Ruby'yi dene.