Bir Python geliştiricisi Ruby öğrenirken ne bilmeli? [kapalı]


16

Yaklaşık 18 aydır bir staj ve birkaç yan projeden oluşan bir Python programcısıyım ve kendimi bu dilde oldukça rahat görüyorum.

Bununla birlikte, programlama alanında Ruby'ye çok dikkat ediliyor gibi görünüyor, ancak artık Python'da çok fazla değil.

Peki Ruby öğrenirken, Ruby'de sadece kötü uygulamalar olan Pythonic şeyler olacak mı? Neye dikkat etmeliyim ve nelerden kaçınırım?


4
Python öğrenmeliysem her zaman Ruby programcısı olarak gördüm çünkü herkesin konuştuğu şeyler: P
Earlz

Vızıltıya rağmen Python'un Ruby'den iki kat daha fazla kullanıldığı görülüyor (en azından TIOBE'ye göre -> tiobe.com/index.php/content/paperinfo/tpci/index.html ).
Daniel Scocco

10
"Python programcısı" ya da "Ruby programcısı" olmak yerine harika bir programcı olmaya çalışmalısınız. Ardından, istediğiniz dili kullanabilir ve doğru zaman geldiğinde yeni dillere geçebilirsiniz.
BlackJack

Yanıtlar:


31

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 syssonra 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 returndeyimi 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.


11
“Ve bu çok kötü, çünkü metaprogramlama bir yolculuk” ... Ve tıpkı bir yolculuk gibi, bir gece için harika olacak, ama sonunda sabah uyanıyorsun ve ne yaptığını unuttun. Sanırım metaprogramlama Ruby'de fazla vurgulanıyor ve Ruby'den Python'a tercih ediyorum. Ruby'nin sözdizimi sorunlarına yönelik çözümlerinin çoğu "meta programlama ile bunu başarabilirsiniz"
Earlz

23
Ne? result = "world" if output=="hello" else "there"tamamen geçerli Python (ve üç karakter daha kısa).
Tim Pietzcker

3
@ Zaman Tamam beni düzelttiğiniz için teşekkürler. Ama aynı şeyi if / elsif / elsif / else deyimiyle yapabilir misiniz - yani Python'da / elif / elif / else? İf veya else deyiminin içinde birden çok ifade olsa bile aynı şeyi yapabilir misiniz?
dan

1
Bekle, Python'un üçlü bir operatörü yok mu?
PP.

3
"Python'un yaratıcısı Matz, Lisp geçmişinden geldi." bekleyin ... AFAIK Matz Ruby yaratıcısı ...
Eimantas

6

Değişir.

Benim için python'u yakuttan yakalamak çok daha kolay, artı her iki dilin de farklı bir amacı var.

Python, daha çok düşük seviyeli süslü şeylerle klasik bir dildir, örneğin C'ye kıyasla temiz ve kolay tutar. Python'un benim için çok daha yüksek seviyeli özelliklere sahip olan Ruby hırsı yok.

Ruby'yi öğrenmenize zarar vermez, yeni şeyler keşfedersiniz, ancak Python'un C'nin başarısını sağlayan basit programlama paradigmalarına daha fazla verimlilik artırıcı ile daha yakın olduğunu unutmayın. Ruby genel olarak kavramları programlama konusunda daha ileri gitmek isteyen insanlar için daha fazla: Şema ve tüm bu "üstün" diller.


3

Kısa cevap: Evet ve evet.

Yeni bir dil öğrenmek neredeyse her zaman yararlıdır ve Rails hala çok popüler olduğu için özellikle Ruby için geçerlidir. Ve evet, Python'u iyi tanımak Ruby'yi almayı kolaylaştıracak. İsimlendirmede bazı sözdizimsel farklılıkları ve farklı kuralları vardır, ancak çok fazla ortak zemin vardır.

Bu büyük bir zaman yatırımı değildir ve araç kutunuzda daha fazla araca sahip olmak her zaman faydalıdır, bu yüzden devam edin!

(Python'u yaklaşık 10 yıldır kullandım ve geçen yıl Ruby'yi aldım. Şu anda RoR projesinde tam zamanlı çalışıyor)


2

Her şeyin bir nişi var. Örneğin, Python (django) GoogleApp Engine'de birinci sınıf bir vatandaş iken, birçok biyoinformatik projenin dili veya seçimidir. Python'un piyasa değeri çok fazla (sadece Python ile çok şey yaptığım için istenmeyen iş beklentileri elde ediyorum), ama Ruby de farklı alanlarda. Burada birçok kez duyduğunuzdan şüphesiz, bu her zaman daha fazla dil öğrenmenize yardımcı olacaktır, bu yüzden evet, Ruby'yi öğrenin. Karmaşık mı olacak? COBOL öğrenmekten çok daha az karmaşık olacaktır, çünkü mevcut diller ve çerçeveler birbirine benzer. Bir örnek Ruby'nin değerli taşları ve python'un pipidir .

Dillerin bir araç ve bir amaç olarak her araç olduğunu unutmayın. Ne kadar çok araç bilirseniz, ağaç evi daha hızlı, daha kolay ve daha doğru bir şekilde inşa edebilirsiniz.


Aynı satırlar boyunca cevap vermek istedim, umarım düzenlemeye
aldırmazsınız

2

Ruby'yi öğrenmeli miyim? Evet.

Yeni bir dil öğrenmek her zaman değerlidir (özellikle tanıdıklarınız için farklı bir programlama paradigması uygularsa) ve bazen başka dillerde programlama yaparken bile sizi daha yetkin hale getirebilir. Mesela Lisp'ten bildiğim fonksiyonel programların çoğunu aldım ve Python ve Ruby'ye ihtiyacım olduğunda uyguluyorum.

Zor olacak mı? Python öğrendiyseniz Ruby'yi de kesinlikle öğrenebilirsiniz.

Şimdi bir iş arıyorsanız, teknoloji hakkında meraklı olduğunuzu ve kendi kendinize bir şeyler öğrenebileceğinizi gösterir.

C2.com'da Ruby ve Python arasında iyi bir karşılaştırma var .

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.