İlk Ruby Programınızı Nasıl Yazarsınız?
Ruby, zarif sözdizimi ve geliştirici verimliliğini ön planda tutan açık kaynaklı, dinamik bir programlama dilidir. Japon bilgisayar bilimcisi Yukihiro “Matz” Matsumoto tarafından 1990’ların ortalarında tasarlanan Ruby, “geliştiricinin en iyi arkadaşı” olma felsefesiyle yola çıkmıştır. Python ve Perl gibi dillerden ilham alarak, güçlü bir nesne yönelimli yapıya sahip, okunabilir ve doğal bir dil yaratma amacı güdülmüştür. Bu makalede, Ruby’nin temellerini atacak, kurulumdan başlayarak ilk Ruby programınızı yazma sürecini adım adım keşfedeceğiz. Eğer programlamaya yeni başlıyor veya farklı bir dilden Ruby’ye geçiş yapıyorsanız, bu rehber size sağlam bir başlangıç noktası sunacaktır.
Ruby’nin popülaritesi, özellikle web geliştirme çerçevesi Ruby on Rails sayesinde büyük ölçüde artmıştır. Ancak Ruby’nin kullanım alanları sadece web ile sınırlı değildir; komut dosyaları, veri analizi, otomasyon ve hatta oyun geliştirme gibi birçok farklı alanda da kendine yer bulur. Bu çok yönlülük, Ruby’yi öğrenmeye değer kılan önemli özelliklerden biridir.
Bu makalede, Ruby’yi bilgisayarınıza nasıl kuracağınızı, temel sözdizimi kurallarını, değişkenleri, veri tiplerini, kontrol akışını ve metotları ele alacağız. Ardından, basit “Merhaba Dünya” programından başlayarak, kullanıcı etkileşimli ve daha karmaşık programlar yazma pratiği yapacağız. Son olarak, yazdığınız programları nasıl çalıştıracağınızı ve olası hatalarla nasıl başa çıkacağınızı öğrenecek, Ruby yolculuğunuzda size rehberlik edecek sonraki adımları tartışacağız.
Ruby’yi Ortamınıza Kurma
Ruby ile programlamaya başlamadan önce, Ruby yorumlayıcısını bilgisayarınıza kurmanız gerekir. Kurulum süreci, kullandığınız işletim sistemine göre değişiklik gösterebilir.
İşletim Sisteminize Göre Kurulum
Ruby kurulumu için birden fazla yöntem bulunmaktadır. En yaygın ve önerilen yöntemleri aşağıda bulabilirsiniz.
Windows
Windows kullanıcıları için en kolay ve önerilen yöntem RubyInstaller kullanmaktır.
1. RubyInstaller İndirme: RubyInstaller web sitesine (rubyinstaller.org) gidin. “With Devkit” sürümünü indirmeniz önerilir. Devkit, Ruby gem’lerinin (paketlerinin) C veya C++ uzantıları gerektirenlerini derlemek için gerekli araçları içerir.
2. Kurulum Sihirbazı: İndirdiğiniz .exe dosyasını çalıştırın. Kurulum sihirbazındaki talimatları takip edin.
* Lisans sözleşmesini kabul edin.
* Kurulum konumunu seçin (varsayılan genellikle iyidir).
* Önemli: “Add Ruby executables to your PATH” (Ruby çalıştırılabilir dosyalarını PATH’inize ekle) seçeneğini işaretlediğinizden emin olun. Bu, komut istemcisinden Ruby komutlarını çalıştırmanıza olanak tanır.
* Kurulum tamamlandıktan sonra, Devkit kurulumu için bir seçenek sunulabilir. Eğer sunulursa, bunu da tamamlayın. Genellikle, komut istemcisinde ridk install komutunu çalıştırmanız istenir. Bu komut, Devkit bileşenlerini kurar.
3. Doğrulama: Komut istemcisini (Command Prompt veya PowerShell) açın ve aşağıdaki komutları çalıştırarak Ruby’nin başarıyla kurulduğunu doğrulayın:
ruby -v
irb
ruby -v size kurulu Ruby sürümünü göstermelidir. irb (Interactive Ruby) ise Ruby’nin etkileşimli konsolunu başlatacaktır. exit yazıp Enter tuşuna basarak irb‘den çıkabilirsiniz.
macOS
macOS sistemlerinde genellikle önceden yüklenmiş bir Ruby sürümü bulunur. Ancak bu sürüm genellikle eski olabilir ve sistem tarafından kullanıldığı için güncellemeleri veya değişiklikleri riskli olabilir. Bu nedenle, Ruby sürüm yöneticileri (rbenv veya RVM) kullanmak şiddetle tavsiye edilir. Bu yöneticiler, farklı Ruby sürümlerini kolayca kurmanıza ve projeleriniz arasında geçiş yapmanıza olanak tanır.
Bu rehberde rbenv kullanımını önereceğiz:
1. Homebrew Kurulumu (Gerekliyse): Eğer Homebrew kurulu değilse, Terminal’i açın ve aşağıdaki komutu çalıştırarak kurun:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
2. rbenv Kurulumu: Homebrew kullanarak rbenv‘i kurun:
brew install rbenv ruby-build
ruby-build, rbenv‘in Ruby sürümlerini derlemesine yardımcı olan bir eklentidir.
3. rbenv’i PATH’e Ekleme: rbenv‘i kabuğunuza (shell) eklemeniz gerekir. Genellikle .zshrc (macOS Catalina ve sonrası) veya .bash_profile dosyanıza aşağıdaki satırları eklemeniz gerekir:
echo 'eval "$(rbenv init -)"' >> ~/.zshrc
# veya
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
Dosyayı kaydettikten sonra Terminal’i yeniden başlatın veya source ~/.zshrc (veya .bash_profile) komutunu çalıştırın.
4. Ruby Kurulumu: rbenv kullanarak istediğiniz Ruby sürümünü kurun (örneğin, en son kararlı sürüm):
rbenv install 3.2.2 # Veya güncel en son sürüm
rbenv global 3.2.2 # Bu sürümü varsayılan olarak ayarla
5. Doğrulama: Terminal’i açın ve aşağıdaki komutları çalıştırarak Ruby’nin başarıyla kurulduğunu doğrulayın:
ruby -v
which ruby
irb
which ruby komutu, rbenv tarafından yönetilen Ruby yolunu göstermelidir (örneğin, /Users/youruser/.rbenv/shims/ruby).
Linux
Linux dağıtımlarında da macOS’e benzer şekilde rbenv veya RVM kullanılması önerilir. Dağıtımınızın paket yöneticisi aracılığıyla Ruby kurmak mümkün olsa da, bu genellikle daha eski bir sürüm sağlar ve sürüm yönetimi esnekliği sunmaz.
rbenv kurulumu için adımlar macOS ile hemen hemen aynıdır:
1. Gerekli Bağımlılıkları Kurma: rbenv ve Ruby derlemesi için bazı bağımlılıklar gerekebilir. Dağıtımınıza göre:
* Debian/Ubuntu:
sudo apt update
sudo apt install git curl libssl-dev libreadline-dev zlib1g-dev autoconf bison build-essential libyaml-dev libffi-dev libgdbm-dev libncurses5-dev
* Fedora/CentOS:
sudo dnf install git curl openssl-devel readline-devel zlib-devel autoconf bison gcc-c++ libyaml-devel libffi-devel gdbm-devel ncurses-devel
2. rbenv Kurulumu: rbenv‘i Git ile klonlayın:
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
3. rbenv’i PATH’e Ekleme: .bashrc veya .zshrc dosyanıza aşağıdaki satırları ekleyin:
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
Dosyayı kaydettikten sonra Terminal’i yeniden başlatın veya source ~/.bashrc (veya .zshrc) komutunu çalıştırın.
4. Ruby Kurulumu: rbenv kullanarak istediğiniz Ruby sürümünü kurun:
rbenv install 3.2.2 # Veya güncel en son sürüm
rbenv global 3.2.2 # Bu sürümü varsayılan olarak ayarla
5. Doğrulama: Terminal’i açın ve aşağıdaki komutları çalıştırarak Ruby’nin başarıyla kurulduğunu doğrulayın:
ruby -v
which ruby
irb
Kod Düzenleyici Seçimi
Ruby kodunuzu yazmak için bir kod düzenleyiciye ihtiyacınız olacak. İyi bir kod düzenleyici, sözdizimi vurgulama, otomatik tamamlama ve hata ayıklama gibi özelliklerle verimliliğinizi artırır.
* Visual Studio Code (VS Code): En popüler ve çok yönlü düzenleyicilerden biridir. Ücretsizdir ve Ruby geliştirme için birçok eklentiye (örn. Ruby, Solargraph) sahiptir. Başlangıç için şiddetle tavsiye edilir.
* Sublime Text: Hızlı ve hafif bir düzenleyicidir. Ruby desteği için paketler mevcuttur.
* Atom: GitHub tarafından geliştirilen ücretsiz ve açık kaynaklı bir düzenleyicidir. Özelleştirilebilir ve Ruby için eklentiler sunar.
* Vim/Emacs: Deneyimli geliştiriciler için güçlü, terminal tabanlı düzenleyicilerdir. Öğrenme eğrisi yüksektir ancak çok verimlidirler.
Yeni başlayanlar için VS Code, kurulumu ve kullanımı kolay olduğu için ideal bir seçimdir.
Ruby’nin Temel Prensipleri ve Söz Dizimi
Ruby, nesne yönelimli bir dil olduğu için, her şeyin bir nesne olduğu felsefesini benimser. Bu bölüm, Ruby’nin temel yapı taşlarını ve sözdizimini tanıtacaktır.
Her Şey Bir Nesnedir
Ruby’de sayılar, dizeler, hatta true ve false bile birer nesnedir. Bu, her değerin metotlara sahip olduğu anlamına gelir.
puts 1.class #=> Integer
puts "hello".class #=> String
puts [1, 2, 3].class #=> Array
puts true.class #=> TrueClass
Bu özellik, Ruby’nin tutarlı ve güçlü nesne yönelimli yapısının temelidir.
Yorum Satırları
Yorum satırları, kodunuzu açıklamak ve daha okunabilir hale getirmek için kullanılır. Ruby’de iki tür yorum satırı vardır:
* Tek satırlık yorum: # işareti ile başlar.
# Bu tek satırlık bir yorumdur.
puts "Merhaba" # Bu da aynı satırda bir yorumdur.
* Çok satırlık yorum: =begin ile başlar ve =end ile biter.
=begin
Bu, birden fazla satıra yayılan
bir yorum bloğudur.
=end
puts "Dünya"
Değişkenler
Değişkenler, değerleri depolamak için kullanılır. Ruby’de farklı türde değişkenler bulunur:
* Yerel Değişkenler: Küçük harfle veya alt çizgiyle başlayan değişkenlerdir (örn. ad, sayi_bir). Metot veya blok içinde tanımlanır ve yalnızca o kapsamda erişilebilirler.
mesaj = "Merhaba Ruby!"
sayi = 10
* Örnek Değişkenleri: @ işaretiyle başlar (örn. @isim). Bir nesnenin belirli bir örneğine aittir ve o nesnenin metotları içinde erişilebilir.
class Kisi
def initialize(isim)
@isim = isim
end
end
* Sınıf Değişkenleri: @@ işaretiyle başlar (örn. @@toplam_sayi). Bir sınıfın tüm örnekleri tarafından paylaşılır.
class Sayac
@@toplam_sayi = 0
def initialize
@@toplam_sayi += 1
end
end
* Global Değişkenler: $ işaretiyle başlar (örn. $global_degisken). Programın herhangi bir yerinden erişilebilirler. Kullanımı genellikle önerilmez, çünkü kodun karmaşıklığını artırır ve hatalara yol açabilir.
$debug_modu = true
* Sabitler: Büyük harfle başlayan değişkenlerdir (örn. PI, MAX_LIMIT). Değeri değiştirilmemesi gereken durumlar için kullanılır. Ruby, sabitlerin değerini değiştirmeye izin verir ancak bir uyarı verir.
PI = 3.14159
Veri Tipleri
Ruby, çeşitli temel veri tiplerini destekler:
* Sayılar (Numbers):
* Tam Sayılar (Integers): 1, 100, -5.
* Ondalık Sayılar (Floats): 3.14, 0.5, -10.2.
* Dizeler (Strings): Metin verilerini temsil eder. Tek (') veya çift (") tırnak içine alınır. Çift tırnaklar, değişken enterpolasyonu ve kaçış dizileri (\n, \t) için kullanılır.
ad = "Ayşe"
mesaj = "Merhaba, #{ad}!" # Değişken enterpolasyonu
puts mesaj #=> Merhaba, Ayşe!
* Diziler (Arrays): Sıralı nesne koleksiyonlarıdır. Köşeli parantez [] ile tanımlanır.
sayilar = [1, 2, 3, 4, 5]
isimler = ["Ali", "Veli", "Ayşe"]
* Hash’ler (Hashes): Anahtar-değer çiftlerinden oluşan sırasız koleksiyonlardır. Küme parantezleri {} ile tanımlanır. Python’daki sözlüklere veya JavaScript’teki nesnelere benzer.
kisi = { "ad" => "Can", "yas" => 30, "sehir" => "İstanbul" }
# Ruby 1.9+'dan itibaren sembol anahtarlar için daha kısa sözdizimi:
kisi2 = { ad: "Deniz", yas: 25 }
* Booleans: true ve false değerleridir. Koşullu ifadelerde kullanılır.
dogru_mu = true
yanlis_mi = false
* Nil: Ruby’de “hiçbir şey” veya “boş” anlamına gelen özel bir nesnedir. null veya None kavramlarına benzer.
deger_yok = nil
* Semboller (Symbols): Değişmez ve benzersiz tanımlayıcılardır. Bellekte yalnızca bir kez oluşturulurlar ve genellikle hash anahtarları olarak veya metot isimleri olarak kullanılırlar. : ile başlarlar.
:ad
:yas
Operatörler
Ruby, çeşitli operatörleri destekler:
Aritmetik Operatörler: + (toplama), - (çıkarma), (çarpma), / (bölme), % (modülüs), (üs alma).
* Karşılaştırma Operatörleri: == (eşit mi), != (eşit değil mi), < (küçük mü), > (büyük mü), <= (küçük eşit mi), >= (büyük eşit mi).
* Mantıksal Operatörler: && (VE), || (VEYA), ! (DEĞİL).
Atama Operatörleri: = (atama), += (ekleyerek ata), -= (çıkararak ata), = (çarparak ata), /= (bölerek ata) vb.
Kontrol Akışı
Programlarınızın belirli koşullara göre farklı yollar izlemesini sağlamak için kontrol akışı yapılarını kullanırsınız.
* if/elsif/else/end: En temel koşullu yapıdır.
yas = 18
if yas >= 18
puts "Yetişkinsiniz."
elsif yas >= 13
puts "Ergensiniz."
else
puts "Çocuksunuz."
end
Ruby'de ayrıca tek satırlık if ve unless ifadeleri de yaygın olarak kullanılır:
puts "Yaşınız uygun." if yas >= 18
puts "Yaşınız uygun değil." unless yas >= 18
* unless/else/end: if'in tersidir, koşul yanlışsa çalışır.
hava_yagmurlu = false
unless hava_yagmurlu
puts "Şemsiyeye gerek yok."
else
puts "Şemsiyenizi alın!"
end
* Ternary Operatör: Tek satırda basit if/else durumları için kısaltılmış bir formdur. koşul ? doğru_ise_değer : yanlış_ise_değer
durum = (yas >= 18) ? "Yetişkin" : "Çocuk"
puts durum
* case/when/else/end: Birden fazla koşulu kontrol etmek için daha temiz bir yol sunar.
gun = "Pazartesi"
case gun
when "Pazartesi"
puts "Hafta başı."
when "Cumartesi", "Pazar"
puts "Hafta sonu!"
else
puts "Hafta içi."
end
Döngüler
Döngüler, belirli bir kod bloğunu birden çok kez çalıştırmak için kullanılır.
* while/end: Belirli bir koşul doğru olduğu sürece çalışır.
sayac = 0
while sayac < 5
puts "Sayac: #{sayac}"
sayac += 1
end
* until/end: Belirli bir koşul yanlış olduğu sürece çalışır (while'ın tersi).
sayac = 0
until sayac >= 5
puts "Sayac: #{sayac}"
sayac += 1
end
* for/in/end: Belirli bir koleksiyonun her öğesi üzerinde döner. Ruby'de genellikle each metodu tercih edilir.
for i in 0..4
puts "Sayı: #{i}"
end
* each Metodu: Koleksiyonlar (diziler, hash'ler) üzerinde gezinmek için en yaygın ve idiomatik Ruby yoludur.
sayilar = [10, 20, 30]
sayilar.each do |sayi|
puts "Sayı: #{sayi}"
end
meyveler = { elma: 1, muz: 2, portakal: 3 }
meyveler.each do |meyve, adet|
puts "#{meyve.capitalize}: #{adet} adet"
end
* loop/break/next: Sonsuz bir döngü oluşturur ve break ile çıkış yapılır, next ile bir sonraki iterasyona geçilir.
i = 0
loop do
puts "Döngüdeyim: #{i}"
i += 1
break if i > 3 # i 3'ten büyük olduğunda döngüyü sonlandır.
end
Metotlar
Metotlar, belirli bir görevi yerine getiren kod bloklarıdır. Kodun tekrarını azaltır ve okunabilirliği artırır.
* Metot Tanımlama: def anahtar kelimesiyle başlar, metot adı ve parantez içinde parametreler (isteğe bağlı) alır ve end ile biter.
def merhaba_de(isim)
puts "Merhaba, #{isim}!"
end
def toplama(sayi1, sayi2)
sayi1 + sayi2 # Ruby'de son ifade otomatik olarak geri döner.
end
def selamlama(isim = "Misafir") # Varsayılan parametre değeri
puts "Hoş geldiniz, #{isim}!"
end
* Metot Çağırma: Metot adını ve gerekli argümanları belirterek çağrılır.
merhaba_de("Alice") #=> Merhaba, Alice!
sonuc = toplama(5, 3)
puts "Toplam: #{sonuc}" #=> Toplam: 8
selamlama #=> Hoş geldiniz, Misafir!
selamlama("Bob") #=> Hoş geldiniz, Bob!
İlk Ruby Programınızı Yazma
Artık Ruby'nin temel yapılarını öğrendiğimize göre, ilk programlarımızı yazmaya başlayabiliriz.
"Merhaba Dünya!"
Her programlama dilinde geleneksel ilk program, ekrana "Merhaba Dünya!" yazdırmaktır.
1. Dosya Oluşturma: Bir metin düzenleyici açın ve yeni bir dosya oluşturun. Bu dosyayı merhaba.rb olarak kaydedin (.rb Ruby dosyaları için standart uzantıdır).
2. Kod Yazma: Dosyanın içine aşağıdaki kodu yazın:
# merhaba.rb
puts "Merhaba Dünya!"
puts metodu, argümanını ekrana yazdırır ve ardından yeni bir satıra geçer. print metodu ise yeni satıra geçmez.
3. Programı Çalıştırma: Terminalinizi veya komut istemcinizi açın. merhaba.rb dosyasını kaydettiğiniz dizine gidin ve aşağıdaki komutu çalıştırın:
ruby merhaba.rb
Çıktı olarak Merhaba Dünya! görmelisiniz. Tebrikler, ilk Ruby programınızı çalıştırdınız!
Kullanıcıdan Girdi Alma
Programların çoğu, kullanıcıdan girdi alarak daha etkileşimli hale gelir. Ruby'de gets metodu kullanıcıdan tek satırlık girdi almak için kullanılır. chomp metodu ise girdinin sonundaki yeni satır karakterini (\n) kaldırır.
1. Dosya Oluşturma: ad_sor.rb adında yeni bir dosya oluşturun.
2. Kod Yazma:
# ad_sor.rb
print "Adınız nedir? " # print metodu imleci aynı satırda bırakır
ad = gets.chomp
puts "Merhaba, #{ad}! Ruby dünyasına hoş geldiniz."
3. Programı Çalıştırma:
ruby ad_sor.rb
Program sizden adınızı isteyecek, girdikten sonra size özel bir selamlama mesajı gösterecektir.
Girdiğiniz metin her zaman bir dize (String) olarak kabul edilir. Eğer sayısal bir girdi bekliyorsanız, onu uygun türe dönüştürmeniz gerekir:
print "Yaşınızı girin: "
yas_string = gets.chomp
yas_integer = yas_string.to_i # String'i tam sayıya dönüştürür
puts "Gelecek yıl #{yas_integer + 1} yaşında olacaksınız."
to_i (to integer) ve to_f (to float) gibi metotlar bu dönüşümler için kullanılır.
Basit Bir Hesap Makinesi
Şimdi öğrendiklerimizi birleştirerek basit bir hesap makinesi programı yazalım.
1. Dosya Oluşturma: hesap_makinesi.rb adında bir dosya oluşturun.
2. Kod Yazma:
# hesap_makinesi.rb
puts "Basit Hesap Makinesi"
puts "-------------------"
print "İlk sayıyı girin: "
sayi1 = gets.chomp.to_f # Ondalıklı sayıları da desteklemek için to_f kullanıyoruz
print "İkinci sayıyı girin: "
sayi2 = gets.chomp.to_f
print "Yapmak istediğiniz işlemi seçin (+, -, *, /): "
islem = gets.chomp
sonuc = 0.0
case islem
when "+"
sonuc = sayi1 + sayi2
when "-"
sonuc = sayi1 - sayi2
when "*"
sonuc = sayi1 * sayi2
when "/"
if sayi2 == 0
puts "Hata: Sıfıra bölme yapılamaz!"
exit # Programı sonlandır
else
sonuc = sayi1 / sayi2
end
else
puts "Geçersiz işlem!"
exit # Programı sonlandır
end
puts "Sonuç: #{sonuc}"
3. Programı Çalıştırma:
ruby hesap_makinesi.rb
Program, iki sayı ve bir işlem isteyecek, ardından sonucu ekrana yazdıracaktır. Sıfıra bölme gibi hatalı durumları da ele aldık.
Daha Fazla Etkileşim: Bir Tahmin Oyunu
Biraz daha karmaşık, döngüleri ve koşullu ifadeleri bir arada kullanan bir tahmin oyunu yazalım.
1. Dosya Oluşturma: tahmin_oyunu.rb adında bir dosya oluşturun.
2. Kod Yazma:
# tahmin_oyunu.rb
puts "Sayı Tahmin Oyunu!"
puts "------------------"
puts "1 ile 100 arasında bir sayı tuttum. Bakalım tahmin edebilecek misin?"
gizli_sayi = rand(1..100) # 1 ile 100 arasında rastgele bir sayı üretir
tahmin_sayisi = 0
tahmin = nil
loop do
tahmin_sayisi += 1
print "Tahmininizi girin (#{tahmin_sayisi}. deneme): "
tahmin = gets.chomp.to_i
if tahmin < gizli_sayi
puts "Çok düşük! Daha yüksek bir sayı dene."
elsif tahmin > gizli_sayi
puts "Çok yüksek! Daha düşük bir sayı dene."
else
puts "Tebrikler! #{tahmin_sayisi} denemede doğru bildiniz. Sayı #{gizli_sayi} idi."
break # Döngüyü sonlandır
end
end
puts "Oyun bitti."
3. Programı Çalıştırma:
ruby tahmin_oyunu.rb
Bu program, rand metodunu kullanarak rastgele bir sayı üretir ve kullanıcıdan bu sayıyı tahmin etmesini ister. loop döngüsü, kullanıcı doğru tahmini yapana kadar devam eder ve her denemede ipuçları verir.
Programınızı Çalıştırma ve Hata Ayıklama
Program yazmak kadar, onu çalıştırmak ve olası hataları gidermek de önemlidir.
Komut Satırından Çalıştırma
Ruby programlarınızı çalıştırmak için temel komut ruby [dosya_adı.rb] şeklindedir.
* Aynı Dizin: Eğer terminaliniz, Ruby dosyanızla aynı dizindeyse, doğrudan ruby dosya_adı.rb yazmanız yeterlidir.
* Farklı Dizin: Eğer farklı bir dizindeyseniz, dosyanın tam yolunu belirtmeniz gerekir (örn. ruby /home/kullanici/projelerim/program.rb veya ruby C:\Users\Kullanici\Documents\program.rb).
* Çalıştırılabilir Dosyalar (Shebang): Linux ve macOS'ta, Ruby dosyanızın en başına #!/usr/bin/env ruby gibi bir "shebang" satırı ekleyebilir ve dosyaya çalıştırma izni verebilirsiniz (chmod +x dosya_adı.rb). Bu durumda, dosyayı doğrudan ./dosya_adı.rb komutuyla çalıştırabilirsiniz.
Yaygın Hatalar ve Çözümleri
Programlamaya yeni başlayanlar için hatalar kaçınılmazdır. Önemli olan, hata mesajlarını okumayı ve anlamayı öğrenmektir.
* SyntaxError: Sözdizimi hatası demektir. Bir anahtar kelimeyi yanlış yazmış, parantezi kapatmayı unutmuş veya bir end anahtar kelimesini atlamış olabilirsiniz. Hata mesajı genellikle hatanın oluştuğu dosya adını ve satır numarasını belirtir.
# Hatalı kod: eksik 'end'
if true
puts "Doğru"
# end eksik!
Çıktı: syntax error, unexpected end-of-input, expecting end''NameError
* : Tanımlanmamış bir değişkeni veya metodu çağırmaya çalıştığınızda oluşur. Genellikle bir yazım hatası veya değişkenin tanımlandığı kapsam dışından erişmeye çalışmaktan kaynaklanır.
# Hatalı kod: 'mesaj' yerine 'mesag' yazılmış
mesaj = "Merhaba"
puts mesag
Çıktı: undefined local variable or method 'mesag' for main:Object (NameError)TypeError
* : Yanlış türde bir işlem yapmaya çalıştığınızda oluşur (örn. bir sayıyı bir dizeyle toplamaya çalışmak).
# Hatalı kod: sayı ile dize toplama
sayi = 10
metin = "merhaba"
puts sayi + metin
Çıktı: String can't be coerced into Integer (TypeError)ZeroDivisionError
* : Bir sayıyı sıfıra bölmeye çalıştığınızda oluşur.
puts 10 / 0
Çıktı: divided by 0 (ZeroDivisionError)
Hata mesajlarını okumak, sorunu anlamanın ilk adımıdır. Genellikle hata mesajının son satırında hatanın türü ve bir açıklama bulunur. Üst satırlarda ise hatanın hangi dosyanın hangi satırında meydana geldiği gösterilir (stack trace).
Hata Ayıklama Araçları
* puts Debugging: En basit hata ayıklama yöntemidir. Kodunuzun belirli noktalarında değişkenlerin değerlerini veya programın akışını kontrol etmek için puts ifadeleri ekleyebilirsiniz.
sayi = 5
puts "Sayi değeri: #{sayi}" # Debugging için eklenen satır
sonuc = sayi * 2
puts "Sonuç değeri: #{sonuc}" # Debugging için eklenen satır
* Etkileşimli Debugger'lar: Daha gelişmiş hata ayıklama için pry veya byebug gibi gem'ler (Ruby paketleri) kullanabilirsiniz. Bu araçlar, kodunuzu adım adım çalıştırmanıza, değişkenlerin değerlerini incelemenize ve programın akışını kontrol etmenize olanak tanır.gem install pry
Kurulum için: veya gem install byebugbinding.pry
Kullanım için: Kodunuzun istediğiniz bir yerine veya byebug ekleyin. Program o noktaya geldiğinde etkileşimli bir konsol açılacaktır.
Sonraki Adımlar
Ruby öğrenme yolculuğunuzda ilk adımları attınız. Şimdi bu temellerin üzerine inşa etme zamanı.
* Ruby Belgelerini Keşfedin: Ruby'nin resmi belgeleri (ruby-doc.org), tüm metotları, sınıfları ve modülleri kapsayan kapsamlı bir kaynaktır. Bir metot veya sınıf hakkında bilgi edinmek istediğinizde başvuracağınız ilk yer olmalıdır.
* Online Kaynakları Kullanın: Codecademy, The Odin Project, freeCodeCamp gibi platformlar, interaktif dersler ve projeler aracılığıyla Ruby bilginizi pekiştirmenize yardımcı olabilir.
* Küçük Projeler Geliştirin: Öğrendiklerinizi uygulamak en iyi öğrenme yöntemidir. Basit oyunlar (taş-kağıt-makas), not uygulamaları veya komut satırı araçları gibi küçük projeler geliştirerek pratiğinizi artırın.
* RubyGems'i Araştırın: Ruby ekosistemi, "gem" adı verilen binlerce kütüphane ve araçla doludur. Bu gem'ler, web geliştirme, veri tabanı etkileşimi, test ve daha birçok alanda size yardımcı olabilir. bundler` gibi araçlar, projelerinizdeki gem bağımlılıklarını yönetmenize olanak tanır.
* Ruby on Rails'e Giriş: Eğer web geliştirmeyle ilgileniyorsanız, Ruby on Rails çerçevesi Ruby bilginizi bir üst seviyeye taşıyacaktır. Model-View-Controller (MVC) mimarisi üzerine kurulu bu çerçeve, web uygulamaları geliştirmeyi hızlı ve keyifli hale getirir.
* Topluluklara Katılın: Ruby topluluğu oldukça aktif ve yardımseverdir. Forumlara, Discord sunucularına veya yerel buluşmalara katılarak diğer geliştiricilerle bağlantı kurun, sorular sorun ve deneyimlerinizi paylaşın.
Sonuç
Bu makalede, Ruby'nin kurulumundan başlayarak temel sözdizimi, değişkenler, veri tipleri, kontrol akışı, döngüler ve metotlar gibi temel kavramları öğrendik. İlk "Merhaba Dünya!" programınızı yazdık, kullanıcıdan girdi almayı, basit bir hesap makinesi oluşturmayı ve bir tahmin oyunu geliştirmeyi deneyimledik. Ayrıca, programlarınızı nasıl çalıştıracağınızı ve yaygın hatalarla nasıl başa çıkacağınızı da gördük.
Ruby, geliştirici mutluluğunu ve üretkenliğini ön planda tutan, esnek ve güçlü bir dildir. Nesne yönelimli yapısı ve zarif sözdizimi, kod yazmayı keyifli hale getirir. Bu makale, Ruby yolculuğunuzun sadece başlangıcıdır. Unutmayın, en iyi öğrenme yolu pratik yapmaktır. Kod yazmaya devam edin, yeni şeyler deneyin, hatalar yapmaktan korkmayın ve her hatadan ders çıkarın. Ruby'nin sunduğu geniş imkanları keşfetmeye devam ettikçe, bu dilin ne kadar güçlü ve eğlenceli olduğunu daha iyi anlayacaksınız. İyi kodlamalar!