Ruby programlama dili, Japon bilgisayar bilimcisi Yukihiro "Matz" Matsumoto tarafından geliştirilmiş bir programlama dilidir. Basitlik ve verimlilik dengesi üzerine inşa edilmiş olan tamamen nesne yönelimli bir dildir. Perl, Pyhon, SmallTalk, Ada gibi pek çok programlama dilinden esinlenmiş olan Ruby, aynı zamanda Rust, Swift, Clojure, Crystal gibi birçok programlama diline de esin kaynağı olmuştur. 1993 yılında geliştirilmeye başlanmış ve 1995 yılının sonlarında ilk versiyonu olan Ruby 0.95 yerel bir Japon haber grubunda duyurularak kullanıma sunulmuştur. 2000 yılına kadar Japonya sınırlarının dışında pek ses getirememiş olsa da; bu yılda İngilizce olarak ilk kitabın piyasaya çıkması, haber grupları ve e-posta listeleri kurulması gibi etkenlerin de yardımıyla dünya çapında ilgi uyandırmaya başlamıştır. Ruby dilinin asıl manada dünya çapında kullanılmaya başlanması ise Ruby on Rails isimli web çerçevesi ile birlikte olmuştur. Bu ünitenin yazımı sırasında Ruby'nin kullanılabilir durumda olan en son kararlı hali 2.3.1 sürümüdür. Ruby dilinin üzerine inşa edildiği temel prensipler nelerdir? Ruby dilinin geliştirilmesi aşamasında pek çok programlama dilinden esinlenilmiştir. Ruby, gerek bu dillerin bazılarının doğasında var olan, gerekse Matz tarafından adapte edilmiş olan pek çok felsefi temel üzerine inşa edilmiştir. Bunları birkaç madde ile şöyle özetleyebiliriz: İnsan Faktörü Prensibi: Matz'in diğer dillerle ilgili en çok yakındığı nokta: bu dilleri kullanan programcıların, özellikle bilgisayar mühendislerinin, program yazarken işlevsellik yerine makinenin daha hızlı ve verimli çalışmasına odaklanmalarıydı. Bunu yaparken insan faktörü sürekli göz ardı ediliyordu. Halbuki bizler, bilgisayar programlarının büyük bir bölümünü insanlarla etkileşim halinde olması için tasarlamaktayız. Bu nedenle programlama dilleri makineden çok insan faktörü düşünülerek tasarlanmalıdır. Matz bunu şu ifadeyle açıkça dile getirmektedir: "Onlar köle, bizler efendiyiz." Asgari Sürpriz Prensibi: Bilgisayar bilimleri haricinde başka alanlarda da uygulaması bulunan bu prensip gereği bir işlemin sonucu tahmin edilebilir, açık ve tutarlı olmalıdır. Matz bu durumu birkaç cümlede şöyle ifade etmektedir: "İnsanlar program yazarken programlama dili ile savaşmak yerine kendilerini ifade etmek isterler. Bu nedenle programlama dilleri, programcılara doğal görünmelidir. Ben, Ruby'i tasarlarken sürprizleri en aza indirgemeye çalıştım ve bundaki amacım program yazarken harcanan eforu en aza indirgemekti.". Özgürlük ve Rahatlık Prensibi: Yazılım geliştiricilerin geçmişte farklı programlama dillerini kullanmış olmaları, farklı metodolojileri benimsemeleri ve hatta farklı kültürlerden gelmeleri gayet olağan bir durumdur. Tüm bunlardan dolayı her programcının kendine has sorun çözme yöntemlerinin olması da kaçınılmazdır. Bu durumu göz önünde bulunduran Ruby, programcıların kendilerini özgür ve rahat hissetmeleri adına çoğu zaman alternatif yollar sunar. Maksimum Eğlence Prensibi: Program yazmanın genelde zor ve sıkıcı bir iş olduğu söylenir. Halbuki hepimizin diğer hayat amaçlarının yanı sıra eğlenmeye de ihtiyacının olduğunu söyleyebiliriz. Ruby programcının sıkıcı işlemler ile uğraşmak yerine sadece o anda yapılması gereken asıl işe odaklanabilmesine imkan tanır. Diğer dillerde satırlarca ifade ile yaptığınız bir işlemi Ruby ile bir veya iki satırda halledebilirsiniz. Ruby dilinin temel özellikleri nelerdir? - Tamamen nesne yönelimli bir dildir: Ruby, tamamen nesne yönelimli bir dil olarak tasarlanmıştır. Ruby içerisinde her şey bir nesnedir ve kendisine ait özellikleri ve metotları bulunmaktadır. Programcının fazladan bir şeyler yapmasına gerek duyulmadan "sarmalama" ilkesinin gereği olarak nesnelere ait özelliklerin ve metotların dış ortamdan gizlenmesine imkan tanır. - Çok sayıda programlama paradigmasını destekler: Ruby nesne yönelimli özelliklerinin yanında fonksiyonel, zorunlu ve yansıtıcı programlama paradigmalarını da destekleyen bir yapıya sahiptir. - Yorumlanan bir dildir: Yorumlanan programlama dillerinde yazılmış olan bir kodun çalıştırılması bilgisayarda yer alan yorumlayıcı adında bir yazılım sayesinde gerçekleştirilir. Bu yazılım derlenen dillerin aksine kodumuzun tamamını tek seferde makine diline dönüştürmek yerine; bu dönüştürme işlemini satır satır gerçekleştirmektedir. Yine derlenen dillerde kodumuzda yapacağımız en ufak bir değişiklik bütün program kodunun tekrar derlenmesi anlamına gelmektedir ki bu da geliştirme sürecini oldukça yavaşlatmaktadır. Yorumlanan dillerde ise bu durumun aksine yapılan değişiklik herhangi bir zaman kaybına yol açmaz. - Platform bağımsız bir dildir: Yorumlanan dillerin en büyük artılarından birisi de makine kodunun çalışma zamanında oluşturulması sayesinde herhangi bir platforma bağlı kalma zorunluluğunun ortadan kalkmasıdır. Yani Ruby hemen hemen tüm platformlarda sorunsuz çalışabilmektedir. - Dinamik ve güçlü tiplemeli bir dildir: Ruby çalışma zamanında değişkenlerin tipini kendi başına belirleyebilmektedir. Böylece herhangi bir tip tanımlamasına ihtiyaç duyulmamaktadır. Ayrıca programın çalışması sırasında bir değişkene atanan değer veya bir metodun geriye döndürdüğü değer gibi tipler de değiştirilebilir.