Perl'den Ruby'ye

Perl çok iyidir. Perl’ün dökümantasyonu çok iyidir. Perl’ün topluluğu … çok iyidir. Ancak bu dil biraz kalabalık ve karmaşıktır. Bu yüzden az zaman harcayan, daha belirli çizgileri olan ve başından beri eşsiz OO özellikleri olan bir dilin hasretini çeken Perl’cüler için Ruby uygun olabilir.

Benzerlikler

Perl’de olduğu gibi Ruby’de de,…

  • CPAN benzeri bir paket yönetim sistemi vardır (RubyGems)
  • Regex’ler içine gömülüdür. Bon appétit!
  • Birçok sık kullanılan özellik içinde gömülüdür.
  • Parantezler çoğunlukla isteğe bağlıdır
  • String’ler aynı şekilde çalışır.
  • Perl gibi string ve regex belirleme yapıları vardır. (%q{bu} (tek-tırnak), veya %Q{bu} (çift-tırnaklı), ve %w{bu tek-tırnaklı kelime listesi} gibi. İsterseniz %Q|bunu| %Q(veya) %Q^diğer bir^ sınırlayıcıyı da kullanabilirsiniz).
  • Çift tırnak içinde değişken değerlerine "bu #{şekilde}" erişebilirsiniz. (Ayrıca bu #{} içine Ruby kodu da koyabilirsiniz.
  • Shell komutu program içinden `backtick’ler` (ters tek tırnaklar) ile çağrılır (tarih = `date` gibi).
  • Gömülü döküman aracı vardır (Ruby’ninki RDoc olarak adlandırılmıştır).

Farklar

Ruby’de Perl’den farklı olarak,…

  • Perl’deki gibi içeriğe bağlı kurallar yoktur.
  • Bir değişken gösterdiği nesne ile aynı şey değildir. Sadece nesneye referans verir.
  • $ ve @ karakterleri bazen değişken isminin ilk harfi olarak kullanılabilir. Ama bunlar tipi değil bakış açısını belirtir. (global değişkenler $ ile başlar, nesne oluşum değişkenleri @ ile başlar ve nesne özellikleri @@ ile başlar).
  • Array değerleri parantezler yerine köşeli parantezler içinde gösterilir.
  • Listelerden oluşan bir liste ürettiğinizde büyük bir liste oluşmaz. Array’lerden oluşan bir array elde edersiniz.
  • sub yerine def kullanılır.
  • Her satırın sonunda noktalı virgül gerekmez. Tüm çevrimler, sınıf tanımları, fonksiyon tanımları, case blokları vs. hep end deyimi ile biter.
  • Nesne tipleri kararlıdır. Nesnelerin tipini dönüştürmek için foo.to_i, foo.to_s gibi elle yapmalısınız.
  • eq, ne, lt, gt, ge, veya le yoktur.
  • “Diamond” operatörü (<>) yoktur. Genellikle bunun yerine IO.fonksiyon kullanılır.
  • “fat comma” (=>) sadece hash içinde kullanılır.
  • undef yoktur. Ruby’de nil vardır. nil de diğer herşey gibi bir nesnedir. Tanımsız değişken ile aynı şey değildir. Boolean sorgulanırsa false olarak değer görür.
  • Doğruluğu sorgulandığında sadece false ve nil olumsuz değer dönerler diğer herşey olumlu (true) değer döner ( 0, 0.0, ve "0" dahil herşey!)
  • PerlMonks gibi biryer yoktur. Ancak ruby-talk mailing list ihtiyaclarınızı karşılar.