Ruby, basitliği ve verimliliği ile tanınan dinamik, nesne yönelimli bir programlama dilidir. Geliştiriciler için sezgisel ve keyifli olacak şekilde tasarlanan Ruby, insan tarafından okunabilir sözdizimini vurgulayarak, yeni başlayanlar için erişilebilir ve deneyimli programcılar için verimli hale gelmektedir. Genel amaçlı bir dil olan Ruby, özellikle Ruby on Rails çerçevesi ile web geliştirmede yaygın olarak kullanılmakta olup, web uygulamaları alanında önemli bir etki yaratmıştır.
Ruby, 1990'ların ortalarında Japonya'da Yukihiro Matsumoto tarafından yaratılmıştır. Matsumoto, Perl, Smalltalk, Eiffel, Ada ve Lisp gibi en sevdiği programlama dillerinin en iyi yönlerini birleştiren bir dil geliştirmeyi hedeflemiştir. İlk halka açık sürüm olan Ruby 0.95, 1995 yılında yayımlanmış, ancak 1996'daki 1.0 sürümü ile geniş bir dikkat çekmiştir.
2000'ler, özellikle David Heinemeier Hansson tarafından 2004 yılında yayımlanan Ruby on Rails ile Ruby için önemli bir dönüm noktası olmuştur. Rails, geliştiricilerin web uygulamalarını daha hızlı ve verimli bir şekilde oluşturmasına olanak tanıyan, konvansiyonu yapılandırma üzerine vurgulayan bir web uygulama çerçevesidir. Sonuç olarak, Ruby'nin popülaritesi fırlamış ve startup'lar ile web geliştiricileri için tercih edilen dil haline gelmiştir.
Bugün, Ruby canlı bir topluluğa ve zengin bir kütüphane ve çerçeve ekosistemine sahiptir. Diğer diller web geliştirme alanında baskın olabilirken, Ruby özellikle hızlı uygulama geliştirme ve prototipleme için hala geçerliliğini korumaktadır. Dil, en son kararlı sürümü olan 3.1.2 ile evrimini sürdürmekte olup, geliştirici deneyimini optimize etmeye yönelik performans iyileştirmeleri ve yeni özellikler içermektedir.
Ruby, saf bir nesne yönelimli dildir; bu, Ruby'deki her şeyin bir nesne olduğu anlamına gelir, temel veri türleri olan tam sayılar ve dizeler de dahil.
class Dog
def bark
"Woof!"
end
end
dog = Dog.new
puts dog.bark # Çıktı: Woof!
Ruby, dinamik tip kullanır; bu, değişkenlerin açık bir tip beyanı olmadan herhangi bir veri türünü tutmasına olanak tanır.
x = 10
x = "Merhaba" # Tip beyanı gerekmez
Ruby, işlevsel programlama stilleri için ve koleksiyonları kolayca yönetmek için gerekli olan bloklar ve iteratörleri destekler.
[1, 2, 3].each do |number|
puts number
end
Ruby, modüllerin sınıflara dahil edilmesine olanak tanır, bu da kodun yeniden kullanılmasını ve mixin'leri sağlar.
module Swimmable
def swim
"Yüzebilirim!"
end
end
class Fish
include Swimmable
end
Ruby, begin
, rescue
ve ensure
anahtar kelimelerini kullanarak sağlam bir istisna yönetim mekanizması sunar.
begin
1 / 0
rescue ZeroDivisionError
puts "Sıfıra bölünemez."
end
Ruby'nin sözdizimi, okunması ve yazılması keyifli olacak şekilde tasarlanmıştır ve genellikle doğal dile benzer.
if x > 10
puts "On'dan büyük"
else
puts "On veya daha az"
end
Ruby, ördek tipi kullanarak, bir nesnenin bir metoda yanıt verip vermediğine odaklanarak daha fazla esneklik sağlar, sınıfına değil.
def quack(animal)
animal.quack if animal.respond_to?(:quack)
end
Ruby'deki fonksiyonlar birinci sınıf vatandaşlardır; bu, onların değişkenlere atanabilmesi veya argüman olarak geçirilebilmesi anlamına gelir.
def greet
"Merhaba"
end
hello = method(:greet)
puts hello.call # Çıktı: Merhaba
Ruby, yöntemlerin varsayılan parametreler almasına olanak tanır, bu da yöntem çağrılarını basitleştirir.
def greet(name = "Dünya")
"Merhaba, #{name}!"
end
puts greet # Çıktı: Merhaba, Dünya!
puts greet("Ruby") # Çıktı: Merhaba, Ruby!
Ruby, koşullu ifadeler için özlü bir üçlü operatör içerir.
status = (x > 10) ? "Büyük" : "Küçük"
puts status
Ruby esasen yorumlanan bir dildir; bu, kodun satır satır yürütüldüğü anlamına gelir. En yaygın kullanılan yorumlayıcı CRuby (MRI) iken, JRuby (Java Platformu üzerinde Ruby) ve Rubinius gibi diğer uygulamalar da mevcuttur.
Ruby için bazı popüler Entegre Geliştirme Ortamları (IDE'ler) şunlardır:
Ruby, gem bağımlılıklarını yönetmek için Bundler kullanır ve tipik bir proje yapısı, tüm bağımlılıkların belirtildiği bir Gemfile
içerebilir. Bir Ruby projesi oluşturmak için şu adımları izleyin:
bundle init
komutunu çalıştırarak bir Gemfile
oluşturun.bundle install
komutunu çalıştırın.app.rb
veya benzeri ana Ruby dosyasında kodlamaya başlayın.Ruby, özellikle Ruby on Rails çerçevesi ile veritabanı destekli web uygulamaları oluşturmak için web geliştirmede en çok kullanılmaktadır. Diğer dikkat çekici uygulamalar şunlardır:
Ruby, birkaç programlama dili ile benzerlikler ve farklılıklar paylaşmaktadır:
C# ve Java: Bu diller gibi Ruby de nesne yönelimli bir dildir, ancak Ruby, ördek tipi ve daha basit sözdizimi nedeniyle daha dinamik ve esnektir.
Python: Hem Ruby hem de Python okunabilirlik ve basitliğe vurgu yapar. Ancak, Ruby'nin sözdizimi genellikle daha şık olarak kabul edilirken, Python'un gücü geniş kütüphaneleri ve topluluk desteğindedir.
JavaScript: Ruby'nin nesne yönelimli yaklaşımı, JavaScript'in prototip tabanlı modeli ile tezat oluşturur. Ruby, özellikle Ruby on Rails ile web geliştirmeye yönelik daha fazla yerleşik özellik sunar.
C++ ve Rust: Her iki dil de performans ve sistem düzeyinde programlamaya öncelik verirken, Ruby kullanım kolaylığı ve hızlı geliştirme üzerine odaklanmakta, bu süreçte bazı performans kayıpları yaşamaktadır.
PHP: Hem Ruby hem de PHP web geliştirme için popüler olsa da, Ruby, özellikle Rails ile, PHP'nin daha prosedürel tarzına kıyasla daha yapılandırılmış ve şık bir yaklaşım sunmaktadır.
Ruby kodunu başka bir dile çevirmek isteyen geliştiriciler için, her iki dilin paradigmalarını anlamak önemlidir. Ruby'nin nesne yönelimli, dinamik ve ifade edici sözdizimi, C++ veya Java gibi statik olarak tiplenmiş dillerde her zaman doğrudan eşdeğerleri olmayabilir. Geliştiriciler, sözdiziminin 1:1 çevirisini denemek yerine, temel mantığı ve işlevselliği tanımlamaya odaklanmalıdır.
Ruby için özel olarak doğrudan kaynak-kaynağa çeviri araçları sınırlı olabilirken, Ruby betiklerini C veya LLVM tabanlı hedeflere dönüştürmek için "R2C" gibi bazı araçlar ve kütüphaneler, daha verimli kod üretmeye yardımcı olabilir. Ayrıca, Ruby'yi JavaScript'e dönüştürmek gibi daha geniş senaryolar için transpiler kullanmak (örneğin, Opal) belirli bağlamlarda da faydalı olabilir.