Ruby, Japon bilgisayar bilimcisi Yukihiro “Matz” Matsumoto tarafından 1990'ların ortalarında geliştirilen dinamik, açık kaynaklı bir programlama dilidir. Matz, Ruby'yi geliştirirken "geliştirici mutluluğu" (developer happiness) felsefesini merkeze almıştır. Bu felsefe, kod yazma sürecini keyifli, anlaşılır ve verimli hale getirmeyi hedefler. Ruby, zarif sözdizimi ve nesne yönelimli yapısıyla bilinir. Popüler web çerçevesi Ruby on Rails sayesinde web geliştirme dünyasında geniş bir yer edinmiş olsa da, masaüstü uygulamaları, veri analizi, otomasyon betikleri ve daha birçok alanda da kullanılmaktadır.
Neden Ruby Öğrenmelisiniz?
Ruby öğrenmek için pek çok iyi neden vardır:
Ruby Kurulumu
Ruby'yi bilgisayarınıza kurmanın birkaç farklı yolu vardır. En yaygın ve önerilen yöntemler, bir Ruby versiyon yöneticisi kullanmaktır. Bu yöneticiler, farklı Ruby projeleriniz için farklı Ruby sürümlerini kolayca yönetmenizi sağlar. Popüler olanlar arasında RVM (Ruby Version Manager) ve rbenv bulunur.
RVM ile Kurulum (Önerilen):
Bu komutlar, RVM'yi kuracak ve ardından en güncel Ruby sürümünü yükleyip varsayılan olarak ayarlayacaktır. Kurulum sonrası terminalinizi yeniden başlatmanız veya `source` komutuyla RVM'nin ortam değişkenlerini güncellemeniz gerekebilir.
Temel Sözdizimi ve Veri Türleri
Ruby'nin sözdizimi oldukça sezgiseldir. İşte bazı temel kavramlar:
Yorumlar: Kodda açıklama yapmak için `#` karakterini kullanırız.
Değişkenler: Ruby'de değişkenleri tanımlamak için `var_adi = deger` şeklinde basit bir atama yapılır. Değişkenlerin türlerini belirtmenize gerek yoktur; Ruby bunu otomatik olarak anlar.
Ruby'de dört tür değişken vardır:
Veri Türleri:
Kontrol Yapıları
Program akışını kontrol etmek için koşullu ifadeler ve döngüler kullanılır.
Koşullu İfadeler:
Döngüler:
Metotlar
Metotlar, belirli bir görevi yerine getiren yeniden kullanılabilir kod bloklarıdır. `def` anahtar kelimesiyle tanımlanırlar.
Sınıflar ve Nesneler
Ruby tamamen nesne yönelimlidir. Her şey bir nesnedir. Sınıflar, nesnelerin blueprint'leridir. Nesneler ise sınıfların örnekleridir.
Bloklar, Proclar ve Lambdalar
Ruby'nin en güçlü ve ayırt edici özelliklerinden bazıları bloklar, proclar ve lambdalardır. Bunlar, kod parçacıklarını bir metoda parametre olarak geçirmenize olanak tanır.
Bloklar: Metot çağrısı ile birlikte gelen kod parçacıklarıdır. `{}` veya `do...end` ile tanımlanır.
Proclar (Proc): Blokları bir nesneye dönüştürmenizi sağlar, böylece onları değişkenlere atayabilir veya başka metotlara parametre olarak geçirebilirsiniz.
Lambdalar (Lambda): Proclar'a benzerler ancak daha sıkı argüman kontrolüne sahiptirler ve farklı bir `return` davranışları vardır. Genellikle daha geleneksel fonksiyonlar gibi davranırlar.
RubyGems: Kütüphane Yönetimi
RubyGems, Ruby programları için paketleme ve dağıtım standardıdır. RubyGems.org, açık kaynaklı Ruby kütüphanelerinin (gems) merkezi deposudur. Yeni bir kütüphaneyi kurmak oldukça basittir:
Örneğin, HTTP istekleri yapmak için `httparty` gem'ini kurmak isteyebilirsiniz:
Kurulumdan sonra projenizde `require 'kütüphane_adi'` ile kullanabilirsiniz.
Sonuç ve Sonraki Adımlar
Bu kapsamlı giriş, Ruby programlama dilinin temellerini, sözdizimini, kontrol yapılarını, metotları, sınıfları ve hatta bloklar gibi daha ileri düzey kavramları kapsamaktadır. Ruby'nin sade, okunaklı ve geliştirici dostu yapısı, onu hem yeni başlayanlar hem de deneyimli programcılar için çekici bir dil haline getirmektedir. Web geliştirme dünyasında Ruby on Rails'in gücünü keşfetmek veya genel amaçlı betikler yazmak için Ruby harika bir seçimdir.
Ruby ile yolculuğunuza devam etmek için aşağıdaki kaynakları inceleyebilirsiniz:
Pratik yaparak ve küçük projeler geliştirerek Ruby bilginizi pekiştirin. Unutmayın, en iyi öğrenme şekli kod yazmaktır. Başarılar dileriz!
Neden Ruby Öğrenmelisiniz?
Ruby öğrenmek için pek çok iyi neden vardır:
- Okunabilirlik ve Sadiklik: Ruby kodu, doğal dile oldukça yakın bir yapıya sahiptir. Bu, özellikle yeni başlayanlar için öğrenme eğrisini düşürür ve mevcut kodları anlamayı kolaylaştırır.
- Geliştirici Dostu Felsefe: Ruby, geliştiricinin verimliliğini ve mutluluğunu ön planda tutar. Daha az kodla daha fazlasını yapmanızı sağlar.
- Geniş Topluluk ve Ekosistem: Ruby'nin aktif ve destekleyici bir topluluğu vardır. Ayrıca, RubyGems adı verilen zengin bir kütüphane ekosistemi, ihtiyacınız olan hemen hemen her işlevsellik için hazır çözümler sunar.
- Ruby on Rails: Web geliştirme ile ilgileniyorsanız, Ruby on Rails sayesinde hızlıca güçlü ve ölçeklenebilir web uygulamaları geliştirebilirsiniz. Bu çerçeve, "Convention Over Configuration" (Yapılandırma Üzerine Anlaşma) prensibiyle çalışır ve geliştirme sürecini büyük ölçüde hızlandırır.
- Esneklik: Ruby çok yönlü bir dildir ve birçok farklı programlama paradigmasını destekler. Nesne yönelimli, fonksiyonel ve imperatif programlama stillerini rahatlıkla kullanabilirsiniz.
Ruby Kurulumu
Ruby'yi bilgisayarınıza kurmanın birkaç farklı yolu vardır. En yaygın ve önerilen yöntemler, bir Ruby versiyon yöneticisi kullanmaktır. Bu yöneticiler, farklı Ruby projeleriniz için farklı Ruby sürümlerini kolayca yönetmenizi sağlar. Popüler olanlar arasında RVM (Ruby Version Manager) ve rbenv bulunur.
RVM ile Kurulum (Önerilen):
Kod:
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB
\curl -sSL https://get.rvm.io | bash -s stable --ruby
source ~/.rvm/scripts/rvm
rvm install ruby --latest
rvm use ruby --latest --default
Bu komutlar, RVM'yi kuracak ve ardından en güncel Ruby sürümünü yükleyip varsayılan olarak ayarlayacaktır. Kurulum sonrası terminalinizi yeniden başlatmanız veya `source` komutuyla RVM'nin ortam değişkenlerini güncellemeniz gerekebilir.
Temel Sözdizimi ve Veri Türleri
Ruby'nin sözdizimi oldukça sezgiseldir. İşte bazı temel kavramlar:
Yorumlar: Kodda açıklama yapmak için `#` karakterini kullanırız.
Kod:
# Bu tek satırlık bir yorumdur.
=begin
Bu çok satırlı bir yorumdur.
=end
Değişkenler: Ruby'de değişkenleri tanımlamak için `var_adi = deger` şeklinde basit bir atama yapılır. Değişkenlerin türlerini belirtmenize gerek yoktur; Ruby bunu otomatik olarak anlar.
Kod:
isim = "Ali"
yas = 30
PI = 3.14159 # Sabitler büyük harfle başlar
Ruby'de dört tür değişken vardır:
- Yerel Değişkenler: Küçük harf veya alt çizgi ile başlar (`isim`, `_gecici`). Yalnızca tanımlandıkları metod veya blok içinde erişilebilirler.
- Örnek Değişkenleri: `@` ile başlar (`@oyuncu_adi`). Bir nesnenin belirli bir örneğine aittirler.
- Sınıf Değişkenleri: `@@` ile başlar (`@@toplam_nesne_sayisi`). Bir sınıfın tüm örnekleri tarafından paylaşılır.
- Global Değişkenler: `$` ile başlar (`$DEBUG`). Programın herhangi bir yerinden erişilebilirler ve genellikle tavsiye edilmezler.
Veri Türleri:
- Sayılar: Tam sayılar (`Integer`) ve ondalıklı sayılar (`Float`).
Kod:puts 10 # Integer puts 3.14 # Float
- Dizeler (String): Metin verilerini temsil ederler. Tek veya çift tırnak (`''` veya `""`) ile tanımlanabilirler.
Kod:ad = "Ayşe" soyad = 'Yılmaz' mesaj = "Merhaba #{ad} #{soyad}!" puts mesaj # Çıktı: Merhaba Ayşe Yılmaz!
- Diziler (Array): Sıralı nesne koleksiyonlarıdır.
Kod:sayilar = [1, 2, 3, 4, 5] isimler = ["Ali", "Veli", "Can"] puts sayilar[0] # Çıktı: 1 puts isimler.length # Çıktı: 3
- Hash'ler (Hash): Anahtar-değer çiftlerinden oluşan koleksiyonlardır. Diğer dillerdeki sözlük (dictionary) veya harita (map) yapılarına benzerler.
Kod:kisi = { "ad" => "Deniz", "yas" => 25, "meslek" => "Mühendis" } puts kisi["ad"] # Çıktı: Deniz # Daha modern ve sembol anahtarlı kullanım: urun = { ad: "Laptop", fiyat: 1200, stok: true } puts urun[:fiyat] # Çıktı: 1200
- Boolean: `true` veya `false` değerleri. Koşullu ifadelerde kullanılır.
Kod:aktif = true tamamlandi = false
- Nil: Değer olmadığını temsil eden özel bir nesnedir. Diğer dillerdeki `null` veya `None`'a benzer.
Kod:bos_deger = nil
- Semboller (Symbol): Benzersiz kimlikleri olan sabit, değişmez nesnelerdir. Hafıza açısından String'lerden daha verimlidirler ve Hash anahtarları olarak sıkça kullanılırlar.
Kod::isim # Bir sembol
Kontrol Yapıları
Program akışını kontrol etmek için koşullu ifadeler ve döngüler kullanılır.
Koşullu İfadeler:
Kod:
yas = 18
if yas >= 18
puts "Reşitsiniz."
elsif yas >= 13
puts "Gençsiniz."
else
puts "Çocuksunuz."
end
# unless (if not ile aynı)
kontrol = false
unless kontrol
puts "Kontrol false."
end
# case ifadesi
derece = 'B'
case derece
when 'A'
puts "Çok iyi!"
when 'B'
puts "İyi."
when 'C'
puts "Geçer."
else
puts "Geçersiz derece."
end
Döngüler:
Kod:
# while döngüsü
i = 0
while i < 5
puts "Sayı: #{i}"
i += 1
end
# until döngüsü (while not ile aynı)
j = 0
until j == 5
puts "Sayı (until): #{j}"
j += 1
end
# for döngüsü (genellikle .each tercih edilir)
for sayi in [1, 2, 3]
puts "For döngüsü: #{sayi}"
end
# each metodu (en yaygın)
sayilar = [10, 20, 30]
sayilar.each do |s|
puts "Each döngüsü: #{s}"
end
# range ile each
(1..5).each { |k| puts "Range each: #{k}" }
Metotlar
Metotlar, belirli bir görevi yerine getiren yeniden kullanılabilir kod bloklarıdır. `def` anahtar kelimesiyle tanımlanırlar.
Kod:
def selam_ver(isim)
puts "Merhaba, #{isim}!"
end
selam_ver("Dünya") # Çıktı: Merhaba, Dünya!
def topla(a, b)
return a + b # return isteğe bağlıdır, son ifade değeri döner
end
sonuc = topla(5, 3)
puts "Toplam: #{sonuc}" # Çıktı: Toplam: 8
Sınıflar ve Nesneler
Ruby tamamen nesne yönelimlidir. Her şey bir nesnedir. Sınıflar, nesnelerin blueprint'leridir. Nesneler ise sınıfların örnekleridir.
Kod:
class Ogrenci
def initialize(ad, numara)
@ad = ad # Örnek değişkeni
@numara = numara # Örnek değişkeni
end
def ogrenci_bilgisi
"Öğrenci Adı: #{@ad}, Numarası: #{@numara}"
end
# Okuma metodu (getter)
def ad
@ad
end
# Yazma metodu (setter)
def ad=(yeni_ad)
@ad = yeni_ad
end
# attr_accessor ile otomatik getter/setter
attr_accessor :sınıf # sınıf için @sınıf değişkeni oluşur
end
# Nesne oluşturma
ogrenci1 = Ogrenci.new("Mert", 101)
puts ogrenci1.ogrenci_bilgisi # Çıktı: Öğrenci Adı: Mert, Numarası: 101
puts ogrenci1.ad # Getter kullanimi
ogrenci1.ad = "Kerem" # Setter kullanimi
puts ogrenci1.ad
ogrenci1.sınıf = "10A"
puts ogrenci1.sınıf
Bloklar, Proclar ve Lambdalar
Ruby'nin en güçlü ve ayırt edici özelliklerinden bazıları bloklar, proclar ve lambdalardır. Bunlar, kod parçacıklarını bir metoda parametre olarak geçirmenize olanak tanır.
Bloklar: Metot çağrısı ile birlikte gelen kod parçacıklarıdır. `{}` veya `do...end` ile tanımlanır.
Kod:
# Bir bloğu .each metoduyla kullanmak
[1, 2, 3].each do |sayi|
puts "Blok içinde: #{sayi}"
end
# Kendi metodumuza blok geçirmek
def tekrarlayici
yield # Bloğu çalıştır
yield
end
tekrarlayici { puts "Merhaba blok!" }
Proclar (Proc): Blokları bir nesneye dönüştürmenizi sağlar, böylece onları değişkenlere atayabilir veya başka metotlara parametre olarak geçirebilirsiniz.
Kod:
my_proc = Proc.new { |isim| puts "Merhaba, #{isim}! (Proc)" }
my_proc.call("Dünya")
Lambdalar (Lambda): Proclar'a benzerler ancak daha sıkı argüman kontrolüne sahiptirler ve farklı bir `return` davranışları vardır. Genellikle daha geleneksel fonksiyonlar gibi davranırlar.
Kod:
my_lambda = lambda { |isim| puts "Merhaba, #{isim}! (Lambda)" }
my_lambda.call("Evren")
# lambda { puts "Hata verir, argüman bekliyor" }.call # Hata
RubyGems: Kütüphane Yönetimi
RubyGems, Ruby programları için paketleme ve dağıtım standardıdır. RubyGems.org, açık kaynaklı Ruby kütüphanelerinin (gems) merkezi deposudur. Yeni bir kütüphaneyi kurmak oldukça basittir:
Kod:
gem install kütüphane_adi
Örneğin, HTTP istekleri yapmak için `httparty` gem'ini kurmak isteyebilirsiniz:
Kod:
gem install httparty
Kurulumdan sonra projenizde `require 'kütüphane_adi'` ile kullanabilirsiniz.
Sonuç ve Sonraki Adımlar
Bu kapsamlı giriş, Ruby programlama dilinin temellerini, sözdizimini, kontrol yapılarını, metotları, sınıfları ve hatta bloklar gibi daha ileri düzey kavramları kapsamaktadır. Ruby'nin sade, okunaklı ve geliştirici dostu yapısı, onu hem yeni başlayanlar hem de deneyimli programcılar için çekici bir dil haline getirmektedir. Web geliştirme dünyasında Ruby on Rails'in gücünü keşfetmek veya genel amaçlı betikler yazmak için Ruby harika bir seçimdir.
"Ruby, geliştiricilerin doğal düşünme biçimini ve işleri kolayca halletmelerini sağlar."
- Yukihiro "Matz" Matsumoto
Ruby ile yolculuğunuza devam etmek için aşağıdaki kaynakları inceleyebilirsiniz:
- Ruby Resmi Web Sitesi
- Ruby on Rails Kılavuzları
- Codecademy Ruby Dersleri (Temel seviye için)
- Programming Ruby (The Pickaxe Book) (Daha ileri seviye için)
Pratik yaparak ve küçük projeler geliştirerek Ruby bilginizi pekiştirin. Unutmayın, en iyi öğrenme şekli kod yazmaktır. Başarılar dileriz!