Rubynin niçin bu kadar popüler olduğunu mu merak ediyorsunuz? Rubyseverler, Rubyyi güzel, sanatsal, becerikli ve pratik bir dil olarak tanımlarlar. Peki Ruby size neler vaad ediyor?
Rubynin Yaratıcısının İdealleri
Ruby dengenin dilidir. Rubynin yaratıcısı Yukihiro Matz Matsumoto en sevdiği dillerin (Perl, Smalltalk, Eiffel, Ada, ve Lisp) en iyi özelliklerini harmanlayarak fonksiyonel programlama ile imperativ programlamaya dayanan yeni bir dil yaratmayı amaçlamıştır.
Matz, her zaman Rubyyi basit değil, doğal yapmaya çalıştığını vurgulamıştır, tıpkı yaşam gibi
Buradan yola çıkarak Matz aşağıdakileri ekler:
Ruby tıpkı insan vücudu gibi, görünüşte basit, ama içinde çok kompleks bir yapıya sahiptir1.
Rubynin Büyüme Hızı
Ruby 1995te halka duyurulduğundan beri, dünya çapında programcıların dikkatini çekmeye başlamıştır. 2006 Rubynin altın yılı olmuştur. Dünyanın en büyük şehirlerinde aktif kullanıcı grupları ve Ruby ile ilgili konferanslar gerçekleştirilmiştir.
Graph courtesy of Gmane.
Ruby-Talk, en çok kullanılan Ruby e-posta listesi günde ortalama 200 mesaj trafiğine sahiptir.
Programlama dillerinin popülaritesini araştıran TIOBE istatistiklerine göre, Ruby dünya çapında en çok kullanılan 10.cu dil haline gelmiştir. Rubynin bu hızlı büyümesinde Ruby on Rails frameworkünün hatırı sayılır etkisi bulunmaktadır.
Ruby aynı zamanda tamamen özgür bir dildir. Ruby size yalnızca sorumluluk anlamında bir özgürlük değil, aynı zamanda kullanma, kopyalama, düzenleme ve dağıtma özgürlüğü de sunar.
Herşey Bir Nesnedir
Matz yeni bir dil yaratmadan önce ideal sözdizimini bulmak için diğer programlama dillerini incelemiş ve araştırmasının sonunda Perlden daha güçlü ama Pytondan daha nesneye yönelik bir betik dili2 istediğini söylemiştir.
Rubyde herşey bir nesnedir. Gördüğünüz en ufak bilgi parçası ve kod kendi özelliklerine ve olaylarına sahiptir. Özellikleri isimle çağırma örnek değişkenler ,olaylar da metotlar olarak isimlendirilir. Rubynin yüzde yüz saf nesneye yönelik bir dil olduğunun en iyi ispatı bir kod parçası ile bir sayıya olay vererek yapılır:
5.times { print Rubyti seviyoruz harika bir dil! }
Çoğu dilde sayılar ve diğer ilkel tipler nesne değildir. Ruby tüm tiplerine metotlar ve örnek değişkenler verme geleneğini Smalltalktan miras almıştır.
Ruby Esnektir
Ruby kullanıcılara istediği kısımları değiştirebilme imkanı sunduğu için esnek bir dildir. İsteğe bağlı olarak Rubynin esaslı kısımları bile kaldırılabilir, yeniden tanımlanabilir ya da yeni kısımlar eklenebilir. Ruby programıcıyı kısıtlamamayı amaçlamaktadır.
Örneğin toplama işleminin artı (+) operatörü ile yapıldığını biliyoruz. Ama eğer okunabilirlik amacıyla topla gibi bir kelime kullanmak istiyorsanız Rubynin gömülü Numeric sınıfına yeni bir metod ekleyebilirsiniz.
class Numeric
def topla(x)
self.+(x)
end
end
y = 5.topla 6
ynin değeri 11 oldu.
Rubynin operatörleri sözdizimsel olarak esnektir, yeniden tanımlamanıza olanak sağlar.
Bloklar, Tam Anlamıyla Etkileyici Bir Özellik
Rubynin esnek bir dil olarak anılmasının en önemli sebeplerinden biri de bloklardır.Bir kapamayı (closure) herhangi bir metoda ataçlayabilir ve metodun nasıl tepki vereceğini belirleyebilirsiniz. Kapamalar, bloklar olarak anlandırırlırlar ve PHP ya da Visual Basic gibi imperativ dillerden Rubyye geçenler arasında en popüler özelliğe dönüşmüştür.
Bloklar fonksiyonel dillerden esinlenilerek Rubyye getirilmiştir. Matz Ruby kapamalarında, Lisp kültürüne saygı göstermek istedim3. demiştir.
search_engines =
%w[Google Yahoo MSN].map do |engine|
http://www. + engine.downcase + .com
end
Yukarıdaki kodda bir blok do end yapıları içerisinde tanımlanıyor. map metodu bloğa bir kelime listesi ile çalıştığını bildiriyor. Rubyde bunun gibi bir çok metod programcıya kendi bloklarını yazıp, metodu istediği gibi şekillendirmesine izin vermektedir.
Ruby ve Mixinler
Pek çok nesneye yönelik dilin aksine, Ruby özellikle yalnızca tekil mirası destekler. Çünkü Ruby modül konseptini (Nesnesel-Cde Kategoriler) kullanır ve modüller metodların bir koleksiyonundan ibarettir.
Sınıflar bir modülü kendisine dahil ederse, onun tüm metodlarını da almış olur. Örneğin each metodunu gerçekleştiren her sınıf Enumerable modülünü de kendisine dahil edebilir, böylece döngülerde each ile beraber kullanabileceği bir dizi metoda sahip olur.
class MyArray
include Enumerable
end
Genelde Rubyciler bu yolu bazen çok karmaşıklaşan ve kısıtlayıcı olan çoklu mirastan daha temiz ve sağlam bir yöntem olarak görürler.
Rubynin Görselliği
Her ne kadar Ruby sınırlı sayıda noktalama işareti ve İngilizce anahtar kelimeler kullansa da, bazı noktalama işaretleri Rubyyi dekore etmek için kullanılır. Rubyde değişken tanımlamaları yoktur. Değişkenlerin faaliyet alanlarını belirlemek için basit noktalama işaretleri kullanılır.
var yerel bir değişken olabilir
@var bir örnek değişkendir.
$var bir global değişkendir.
Bu işaretlendirmeler sayesinde programcı her değişkenin rolünü kolayca görebilmektedir. Aynı zamanda her örnek değişken için self. kullanma külfetini ortadan kaldırmıştır.
Temel İşlevlerin Ötesinde
Ruby çok çeşitli özelliklere sahiptir, aşağıda bir kaçından bahsedilmiştir:
Ruby Java ya da Python gibi istisna yakalama mekanizmalarına sahiptir, hatalarla başetmek kolaylaşır.
Ruby tüm nesneleri için gerçek bir mark & sweep çöp toplayıcısı sunar. Eklenti kütüphanelerinde referans sayaçlarına gerek yok, Matzın dediği gibi: Bu sizin sağlığınız için iyidir.
Cden Ruby çağıran şık APIsi sayesinde Rubyde C eklentileri yazmak Perl ya da Pythondan daha kolaydır. Bu API aynı zamanda yazılımlara betik dili olarak Rubyyi gömmek için gereken çağrıları da içerir. Ayrıca SWIG arayüzü de alternatif olarak sunulmaktadır.
İşletim sistemi izin verdiği sürece harici dinamik kütüphaneler yükleyebilirsiniz.
Ruby işletim sisteminden bağımsız iş parçacığı özelliği sunar.Yani işletim sisteminin desteklemesine bakmaksızın, MS-DOS üzerinde olsanız bile çoklu iş parçacıkları kullanabilirsiniz!
Ruby yüksek taşınabilirliğe sahiptir. GNU/Linux üzerinde geliştirilmiş olsa dahi, UNIXin bir çok çeşidi, Mac OS X, Windows 95/98/Me/NT/2000/XP, DOS, BeOS, OS/2, vb. üzerinde çalışmaktadır.
Rubynin Yaratıcısının İdealleri
Ruby dengenin dilidir. Rubynin yaratıcısı Yukihiro Matz Matsumoto en sevdiği dillerin (Perl, Smalltalk, Eiffel, Ada, ve Lisp) en iyi özelliklerini harmanlayarak fonksiyonel programlama ile imperativ programlamaya dayanan yeni bir dil yaratmayı amaçlamıştır.
Matz, her zaman Rubyyi basit değil, doğal yapmaya çalıştığını vurgulamıştır, tıpkı yaşam gibi
Buradan yola çıkarak Matz aşağıdakileri ekler:
Ruby tıpkı insan vücudu gibi, görünüşte basit, ama içinde çok kompleks bir yapıya sahiptir1.
Rubynin Büyüme Hızı
Ruby 1995te halka duyurulduğundan beri, dünya çapında programcıların dikkatini çekmeye başlamıştır. 2006 Rubynin altın yılı olmuştur. Dünyanın en büyük şehirlerinde aktif kullanıcı grupları ve Ruby ile ilgili konferanslar gerçekleştirilmiştir.
Graph courtesy of Gmane.
Ruby-Talk, en çok kullanılan Ruby e-posta listesi günde ortalama 200 mesaj trafiğine sahiptir.
Programlama dillerinin popülaritesini araştıran TIOBE istatistiklerine göre, Ruby dünya çapında en çok kullanılan 10.cu dil haline gelmiştir. Rubynin bu hızlı büyümesinde Ruby on Rails frameworkünün hatırı sayılır etkisi bulunmaktadır.
Ruby aynı zamanda tamamen özgür bir dildir. Ruby size yalnızca sorumluluk anlamında bir özgürlük değil, aynı zamanda kullanma, kopyalama, düzenleme ve dağıtma özgürlüğü de sunar.
Herşey Bir Nesnedir
Matz yeni bir dil yaratmadan önce ideal sözdizimini bulmak için diğer programlama dillerini incelemiş ve araştırmasının sonunda Perlden daha güçlü ama Pytondan daha nesneye yönelik bir betik dili2 istediğini söylemiştir.
Rubyde herşey bir nesnedir. Gördüğünüz en ufak bilgi parçası ve kod kendi özelliklerine ve olaylarına sahiptir. Özellikleri isimle çağırma örnek değişkenler ,olaylar da metotlar olarak isimlendirilir. Rubynin yüzde yüz saf nesneye yönelik bir dil olduğunun en iyi ispatı bir kod parçası ile bir sayıya olay vererek yapılır:
5.times { print Rubyti seviyoruz harika bir dil! }
Çoğu dilde sayılar ve diğer ilkel tipler nesne değildir. Ruby tüm tiplerine metotlar ve örnek değişkenler verme geleneğini Smalltalktan miras almıştır.
Ruby Esnektir
Ruby kullanıcılara istediği kısımları değiştirebilme imkanı sunduğu için esnek bir dildir. İsteğe bağlı olarak Rubynin esaslı kısımları bile kaldırılabilir, yeniden tanımlanabilir ya da yeni kısımlar eklenebilir. Ruby programıcıyı kısıtlamamayı amaçlamaktadır.
Örneğin toplama işleminin artı (+) operatörü ile yapıldığını biliyoruz. Ama eğer okunabilirlik amacıyla topla gibi bir kelime kullanmak istiyorsanız Rubynin gömülü Numeric sınıfına yeni bir metod ekleyebilirsiniz.
class Numeric
def topla(x)
self.+(x)
end
end
y = 5.topla 6
ynin değeri 11 oldu.
Rubynin operatörleri sözdizimsel olarak esnektir, yeniden tanımlamanıza olanak sağlar.
Bloklar, Tam Anlamıyla Etkileyici Bir Özellik
Rubynin esnek bir dil olarak anılmasının en önemli sebeplerinden biri de bloklardır.Bir kapamayı (closure) herhangi bir metoda ataçlayabilir ve metodun nasıl tepki vereceğini belirleyebilirsiniz. Kapamalar, bloklar olarak anlandırırlırlar ve PHP ya da Visual Basic gibi imperativ dillerden Rubyye geçenler arasında en popüler özelliğe dönüşmüştür.
Bloklar fonksiyonel dillerden esinlenilerek Rubyye getirilmiştir. Matz Ruby kapamalarında, Lisp kültürüne saygı göstermek istedim3. demiştir.
search_engines =
%w[Google Yahoo MSN].map do |engine|
http://www. + engine.downcase + .com
end
Yukarıdaki kodda bir blok do end yapıları içerisinde tanımlanıyor. map metodu bloğa bir kelime listesi ile çalıştığını bildiriyor. Rubyde bunun gibi bir çok metod programcıya kendi bloklarını yazıp, metodu istediği gibi şekillendirmesine izin vermektedir.
Ruby ve Mixinler
Pek çok nesneye yönelik dilin aksine, Ruby özellikle yalnızca tekil mirası destekler. Çünkü Ruby modül konseptini (Nesnesel-Cde Kategoriler) kullanır ve modüller metodların bir koleksiyonundan ibarettir.
Sınıflar bir modülü kendisine dahil ederse, onun tüm metodlarını da almış olur. Örneğin each metodunu gerçekleştiren her sınıf Enumerable modülünü de kendisine dahil edebilir, böylece döngülerde each ile beraber kullanabileceği bir dizi metoda sahip olur.
class MyArray
include Enumerable
end
Genelde Rubyciler bu yolu bazen çok karmaşıklaşan ve kısıtlayıcı olan çoklu mirastan daha temiz ve sağlam bir yöntem olarak görürler.
Rubynin Görselliği
Her ne kadar Ruby sınırlı sayıda noktalama işareti ve İngilizce anahtar kelimeler kullansa da, bazı noktalama işaretleri Rubyyi dekore etmek için kullanılır. Rubyde değişken tanımlamaları yoktur. Değişkenlerin faaliyet alanlarını belirlemek için basit noktalama işaretleri kullanılır.
Bu işaretlendirmeler sayesinde programcı her değişkenin rolünü kolayca görebilmektedir. Aynı zamanda her örnek değişken için self. kullanma külfetini ortadan kaldırmıştır.
Temel İşlevlerin Ötesinde
Ruby çok çeşitli özelliklere sahiptir, aşağıda bir kaçından bahsedilmiştir:
