Python bir diğer çok güzel genel amaçlı bir programlama dilidir.
Pythondan ruby’e geçerken, ruby de pythona göre öğrenmeniz gereken çok az
söz dizimi bulacaksınız.

### Benzerlikler

Pythonda olduğu gibi,rubyde,...

* Etkileşimli komut satırı vardır. (`irb` olarak bilinir).
* dökümanları komut satırında okuyabilirsiniz. (`pydoc` yerine `ri`
  komutuyla).
* Özel satır sonlandırıcıları yoktur. (Her zamanki yeni satır hariç).
* Karakter dizisi kalıpları Python’ın üç tırnaklı karakter dizesi
  gibi birden fazla satır olabilir.
* Köşeli parantezler listeler içindir, ve süslü parantezler sözlükler içindir.
  (Rubyde, “hash” veri tipi içindir).
* Diziler aynı şekilde çalışır. (Eklemek uzun bir dizi yapar, ama onları
  bu şekilde birleştirmek `a3 = [ a1, a2 ]` size dizilerden oluşan bir
  dizi verir).
* Nesneler güçlü ve dinamik tiplenirler.
* Her şey objedir, ve değişkenler sadece objelere referanslardır.
* Anahtar kelimeleri biraz farklı olmasına rağmen, istisnalar aynı
  çalışır.
* Gömülü döküman araçlarına sahipsiniz. (Rubyde rdoc).
* Birinci sınıf fonksiyonlar, anonim fonksiyonlar ve kapamalar ile fonksiyonel
  programlama için iyi bir destek sunar.

### Farklılıklar

Python’ın aksine, Rubyde,...

* Karakter dizeleri değişebilir.
* Sabitler oluşturabilirsiniz. (Değerinin değişmesini istemediğiniz
  değişkenler).
* Bazı zorunlu harf kuralları vardır. (ör. sınıf isimleri büyük harfle
  başlar, değişkenler küçük harfle başlar).
* Tek çeşit liste konteyneri vardır (bir dizi(Array)), ve değişkendir.
* Çift tırnaklı karakter dizeleri kaçış karakterlerine (`\t` gibi) ve
  özel “deyim yer değişimi” söz dizilerine (Ruby ifadelerinin sonuçlarını diğer
  karakter dizelerine `"add " + "strings " + "together"` şeklinde
  uğraşmadan direkt olarak eklemenizi sağlar) izin verir. Tek tırnaklı
  karakter dizeleri Python’ın `r"ham karakter dizeleri"` gibidir.
* “new style” ve “old style” sınıflar yoktur. Sadece tek çeşittir. (Python 3'te
  bu sorun yoktur fakat Python 3, Python 2 ile geriye dönük uyumlu değildir.)
* Özniteliklere asla direkt olarak ulaşamazsınız. Ruby ile, tümü metod
  çağrılarıdır.
* Metod çağrılarında parantez kullanımı genellikle isteğe bağlıdır.
* Erişim izinleri için Python’ın `_kasıtlı_` altçizgi `__geleneği__`
  yerine `public`, `private` ve `protected` ifadeleri vardır.
* Çoklu miras yerine mixinler kullanılır.
* Gömülü sınıflara metod ekleyebilir ya da bu sınıfların metodlarını
  değiştirebilirsiniz. İki dil de sınıfları her zaman açıp değiştirmenize
  izin verir, fakat Python gömülü olanların değiştirilmesini engeller,
  Ruby ise engellemez.
* `True` ve `False` yerine `true` ve `false` vardır (ve `None` yerine
  `nil`).
* Doğruluk test edildiğinde, sadece `false` ve `nil` false bir değer
  döner. Diğer her şey true döner (`0`, `0.0`, `""`, ve `[]` dahil).
* `elif` yerine `elsif` kullanılır.
* `import` yerine `require` kullanılır. Fakat kullanımları aynıdır.
* Satır(lar)daki bir şeylerin (altındaki belgelendirme karakter
  dizileri değil de) *üstündeki* alışıldık biçimdeki yorumlar belgeleri
  oluşturmak için kullanılır.
* Birçok kısayol vardır. Bu, hatırlanacak daha fazla şey anlamına gelse de,
  hızlıca öğrenirsiniz. Bunlar rubyyi eğlenceli ve çok üretken yapmak içindir.
* Daha önceden belirlenmiş bir değişkeni silme yolu yoktur (Python’ın
  `del` ifadesi gibi). Değişkeni `nil` olarak ayarlayabilirsiniz, bu
  değişkenin değerini çöp toplayıcıya gönderir. Ama değişken,
  kapsamı içinde sembol tablosunda kalmaya devam eder.
* `yield` anahtar kelimesi farklı davranır. Python'da bu, yürütmeyi fonksiyon
  başlatımının dışındaki kapsama döndürür. Harici kod fonksiyonu devam
  ettirmekten sorumludur. Ruby'de `yield`, son argüman olarak geçirilen bir
  diğer fonksiyonu yürütür, daha sonra hemen kaldığı yerden devam eder.
