Neler yeni

Yazılım Forum

Tüm özelliklerimize erişmek için şimdi bize katılın. Kayıt olduktan ve giriş yaptıktan sonra konu oluşturabilecek, mevcut konulara yanıt gönderebilecek, itibar kazanabilecek, özel mesajlaşmaya erişebilecek ve çok daha fazlasını yapabileceksiniz! Bu hizmetlerimiz ise tamamen ücretsiz ve kurallara uyulduğu sürece sınırsızdır, o zaman ne bekliyorsunuz? Hadi, sizde aramıza katılın!

Ruby Programlama Diline Kapsamlı Bir Giriş: Temeller ve İlk Adımlar

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:

  • 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:


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!
 
shape1
shape2
shape3
shape4
shape5
shape6
Üst

Bu web sitenin performansı Hazal Host tarafından sağlanmaktadır.

YazilimForum.com.tr internet sitesi, 5651 sayılı Kanun’un 2. maddesinin 1. fıkrasının (m) bendi ve aynı Kanun’un 5. maddesi kapsamında Yer Sağlayıcı konumundadır. Sitede yer alan içerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır.

YazilimForum.com.tr, kullanıcılar tarafından paylaşılan içeriklerin doğruluğunu, güncelliğini veya hukuka uygunluğunu garanti etmez ve içeriklerin kontrolü veya araştırılması ile yükümlü değildir. Kullanıcılar, paylaştıkları içeriklerden tamamen kendileri sorumludur.

Hukuka aykırı içerikleri fark ettiğinizde lütfen bize bildirin: lydexcoding@gmail.com

Sitemiz, kullanıcıların paylaştığı içerik ve bilgileri 6698 sayılı KVKK kapsamında işlemektedir. Kullanıcılar, kişisel verileriyle ilgili haklarını KVKK Politikası sayfasından inceleyebilir.

Sitede yer alan reklamlar veya üçüncü taraf bağlantılar için YazilimForum.com.tr herhangi bir sorumluluk kabul etmez.

Sitemizi kullanarak Forum Kuralları’nı kabul etmiş sayılırsınız.

DMCA.com Protection Status Copyrighted.com Registered & Protected