Ruby dilini mutlaka duymuşsunuzdur. Ben de uzun zamandır kod yazmayan biri olarak syntaxlerle uğraşmadan mümkün olduğunca sade ve anlaşılır bir dil arıyordum. Bu özelliklere sahip olduğunu bildiğim ama bir türlü başlayamadığım bu dile, son zamanlarda yavaş yavaş vakit ayırmaya başladığımı daha önce sizlere belirtmiştim. Blog’taki yazılarımla da bu serüvenime sizleri de ortak etmek istiyorum.
Kendi topluluğunun deyimiyle “Verimlilik ve sadelik üzerine odaklanmış, açık kaynak kodlu dinamik, okumayı ve yazmayı kolaylaştıran, doğal bir sözdizimine sahip bir dil“olarak tanımlanıyor. Dilin temelleri 24 şubat 1993‘te Japon Yukihiro Matsumoto ( Genelde Matz olarak bilinir.) tarafından Perl dilinden daha güçlü ve Phyton dilinden daha nesneye yönelik bir dil geliştirme çabasıyla atılmış ve ilk dağıtımı 1995 yılında yapılmış. Matz; Perl, Phyton, SmalTalk, Eieffel, Ada ve Lisp gibi dillerin iyi özelliklerini bir araya getirirken eksik taraflarını da oldukça minimuma indirgemeye çalışıp yazılımcının sadece yazılımla uğraşmasını, alt yapıyla mümkün olduğunda uğraşmamasını sağlamayı amaçlamış.
Neden Ruby?
Özellikle sadelik ve üretkenlik üzerine odaklanan dili diğer dillerden farklı kılan ise neredeyse her şeyin nesnelerden oluşuyor olması. Yani 3, 3.15, +, true, nil gibi ifadelerinin hepsi birer nesnedir.
Bunun yanına prosedürel ve fonksiyonel yazılım geliştirmeye olanak sağlayarak bir çok programlama felsefesine uygun bir dildir. Bir çok dilde bir dizi tanımlamak istediğinizde bu dizi için bellekte yer ayırmanız gerekirken Ruby dillinde diziler de birer nesne olduğundan dolayı böyle bir ihtiyacınız olmayacaktır.
C# ta bir diziyi aşağıdaki gibi tanımlarken;
string[] dizi = new strng [10];
Ruby’de ise;
dizi = []
şeklinde tanımlanmaktadır.
Bu tanımlara göre C# dilinde eğer dizimizde 11. elemana ihtiyaç duyarsak ve tanımı düzeltmeden erişmeye çalışırsak hata alırken, Ruby’de böyle bir kısıt olmadığı için istersen bu diziye 100 tane de eleman tanımayabiliriz.
Başlıkta da değindiğim gibi oldukça kısa ve öz bir yazıma sahiptir. Bir çok dilde bir kaç satırda yapacağınız bir işi Ruby ile bir satıra bile indirgeyebiliyorsunuz.
Mesela C++ dilinde ekrana bir metin yazdırmak istediğinizde;
#include<iostream> using namespace std; void main(){ cout << "Merhaba" << endl; }
Bu işlemi Java da gerçekleştirmek istediğimizde ise;
public class java { public static void main(String[] args) { System.out.println("Merhaba"); } }
yazmamız gerekirken, Ruby’de ise sadece
puts "Merhaba"
yazmamız yeterli olacaktır.
Bir güzel özelliği de diğer dillerde kodların anlaşılabilmesi için o dil ile uzun süreli bir ilişki gerektirirken Ruby’de ise İngilizce yi çat pat bilmeniz bile yeterli olacaktır. Aşağıdaki örneklerden de bunu oldukça kolayca anlayabileceksiniz.
3.times {print "Blog yazmak ne güzel!"}
Ya da
"Serkan".reverse
komutlarını incelediğimizde ne yapacağını az buçuk anlayabiliyoruz. Kısaca bir işlemi yapmak için o işlemin İngilizce ismi genellikle aradığınız metodun ta kendisi olacaktır.
Dinamik bir dil olduğu için metodlarınızı veya değişkenlerinizi çalışma anında ekleyebilir ya da değiştirebilirsiniz.
En çok kullanılan yazılım dillerinin çoğunun aksine derlemeli değil yorumlamalı bir dildir. Yani yazdığınız kod daha önceden makine diline çevrilip sonra çalıştırılmadan, çalıştırıldığı anda makine diline çevrilerek işlem görmektedir. Bu özellik aslında biraz performans konusunda eksiklik yaratsa da günümüz işlemci teknolojisi ile pek de sorun yaratmamaktadır. Yine de hızın çok önemli olduğu bir proje üzerinde çalışıyorsak bu durumda Ruby kodlarımızda C dilini kullanarak ekleme yapıp daha hızlı çalışmasını sağlayabiliriz.
Ruby açık kaynak kodlu bir dildir.
Perl dilinden miras edindiği bir şeyi yapmak için birden fazla yol vardır felsefesi (TIMTOWTDI: There Is More Than One Way To Do It) ile bize bir çok seçenek sağlar ve bu sayede her programcının kendi tarzını oluşturabilmesine imkan verir.
"Elma".lenght "Elma".size
Kısaca yukarıda saydıklarımız dışında da bir çok özelliğe sahip dili gün geçtikçe daha detaylı irdeliyor olacağım. Eğer yazdığınız dilden sıkıldıysanız, yeni bir şeyler arıyor ve ya aklınızda fikir var fakat yazılım konusunda tecrübeniz yok ama kendiniz yazarak öğrenmek istiyorsanız kesinlikle hiç vakit kaybetmeden başlayabileceğiniz bir dil Ruby.
Sizlerde bu konuda yorumlarınızı eksik etmeyin, Yazılım ile uğraşan arkadaşların bu konuda bir iki çit lafı olacaktır. Çekinmeyin sizi yorum kısmından bu fikirlerinizi paylaşmaya davet ediyorum. :)
Merhaba Serkan Bey,
Daha öncesinde bir çok programlama dilinde kod yazdım. Ruby’e ise python ile ruby arasında kalıp ruby’i tercih ederek başladım. Şu an MongoDB,Mysql,Cassandra veritabanlarından veri çekerek rapor oluşturacak bir program hazırlamaktayım. Sizin yazınızı okudum gerçekten kısa ve öz bir yazı olmuş. Tebrik ederim.
Ruby’de kod yazarken anlamakta zorlandığım bir nokta var oda, ruby gem install mongo komutunu verip mongo gem’ini kurduktan sonra o gem’e ait dökümantasyon ya da örnek bulma zorluğu bu konuda gem bazlı dökümantasyon ya da örnek vb. bulabileceğim bir yer var mı ? İnternet üzerinde mongo gem yazınca evet çok fazla kaynak var ama benim kullandığım gem’e özel bir kaynak var mıdır ?
Teşekkürler.
Selam Aykut,
sanırım en doğrusu bu olabilir.
https://docs.mongodb.com/ecosystem/drivers/ruby/