RUBY BIL 341 PROGRAMLAMA DILLERI Ömer Demir
Tarihçe Yukihiro “matz” Matsumoto tarafından geliştirilmiştir. Yukihiro “matz” Matsumoto 1995 yılında piyasaya çıkmıştır. Programlama dillerinin popülaritesini araştıran TIOBE istatistiklerine göre, Ruby dünya çapında en çok kullanılan 10.cu dil haline gelmiştir. Ruby’nin bu hızlı büyümesinde Ruby on Rails framework’ünün büyük etkisi bulunmaktadır.
Oluşturulma Nedeni Matsumoto, en sevdiği dillerin (Perl, Smalltalk, Eiffel, Ada, ve Lisp) en iyi özelliklerini harmanlayarak fonksiyonel programlama ile imperative programlamaya dayanan yeni bir dil yaratmayı amaçlamıştır. Ruby tıpkı insan vücudu gibi, görünüşte basit, ama içinde çok kompleks bir yapıya sahiptir. ( Matsumoto)
Genel Özellikleri Nesneye Dayalı bir dildir. Herşey nesnedir. Gördüğünüz en ufak bilgi parçası ve kod kendi özelliklerine ve olaylarına sahiptir. Esnek bir dildir. – Ruby’nin operatörleri sözdizimsel olarak esnektir. Yeniden tanımlamalara olanak sağlar. Değişkenler ihtiyaç duyulduklarında dinamik olarak yaratılırlar. Single inheritance’ı destekler. Ruby tüm nesneleri için gerçek bir mark & sweep çöp toplayıcısı sunar.
Genel Özellikleri Hata yakalama mekanizması vardır. Method’lar nesnelerle mesajlaşma amacıyla vardır. Sınıflar bir modülü kendisine dahil ederse, onun tüm metodlarını da almış olur. Açık kaynaklıdır.
Genel Özellikleri Ruby, GNU/Linux üzerinde geliştirilmiş olsa dahi, UNIX’in bir çok çeşidi, Mac OS X, Windows 95/98/Me/NT/2000/XP/Vista/7, DOS, BeOS, OS/2, vb. üzerinde çalışmaktadır.
Uygulama Alanları Simulasyonlarda Nasa, birçok simulasyonu yapmak için Ruby kullanıyor. Motorola, bazı simulasyonlarında Ruby kullanıyor. UCB’de kablosuz telefonları ve trafiğin yükünü kontrol etmek için Ruby kullanıyor Robotbilimde – Siemens, bir servis robotunun kontrolünü sağlamak için Ruby kullandı. Telefonculukta – 3G kablosuz telefonculuk şirketi ~150K’lık C++ koduna karşı ~6K lık Ruby kodunu kullandı. Oyunlarda – Japonya’da ticari bir oyun firması geliştirdiği RPG oyununu 2004’te piyasaya sürdü. Bilimde – Yüksek yoğunluklu yıldız sistemlerinin modellenmesi üzerinde çalışan ACS şirketi de projelerinde Ruby kullanıyor.
Uygulama Alanları Web uygulamaları GUI uygulamaları XML uygulamaları
Döngüler - iteratorler (.each,.collect,.inject vs…) - while - kod blokları ile sağlanır. Hash ( key/value ya da name/value ) Ruby code blocks – Diğer dillerdeki code block’lar gibi degildir – Method çağırmaya benzerler. – Bir method’dan diğer methoda gönderilebilirler. – Iterator’lerin yerine kullanılarak döngü görevini yapabilirler.
Method – def Method_Adi tanımlama End -Örnek : def addall ( first, *rest ) rest.each { |r| first = first + r } first end # of addall. addall( 1, 2, 3, 4, 5, 6, 7 ) >>28
Yazım Değişken Tanımlamaları – var yerel bir değişken olabilir bir örnek değişkendir. – $var bir global değişkendir.
Yazım Yeni nesne oluşturmak için özel bir tanımlama yapmaya gerek duyulmaz. – a = Array.new nil normal bir nesnedir. Hiçbir zaman null pointer hatası alınmaz! a = nil a.nil? # => true a.methods # => list of methods a.abs # => NoMethodError
Yazım Method çağırma şekli nesneye mesaj gönderme şeklindedir. class VCR def messages = [] end def method_missing (method, *args, << [method, args, block] end def messages.each do |method, args, block| obj.send(method, *args, &block) end Bu object kendisine gelen bütün mesajları kaydeder ve sonra da diğer object’lere gönderir
Teknik Özellikler Kullanımı ve kod yazması kolay Anlatımcılığı doğal Esnek Güvenilebilir, hata yakalama mekanizmaları mevcut
Ruby’nin Avantajları C’den Ruby çağıran şık API’si sayesinde Ruby’de C eklentileri yazmak Perl ya da Python’dan daha kolaydır. Bu API zamanda yazılımlara betik dili olarak Ruby’yi gömmek için gereken çağrıları da içerir. Ayrıca SWIG arayüzü de alternatif olarak sunulmaktadır. İşletim sistemi izin verdiği sürece harici dinamik kütüphaneler yükleyebilirsiniz.
Ruby’nin Avantajları Ruby işletim sisteminden bağımsız iş parçacığı özelliği sunar. Yani işletim sisteminin desteklemesine bakmaksızın, MS-DOS üzerinde olsanız bile çoklu iş parçacıkları kullanabilirsiniz! Taşınabilirdir. Hızlı bir şekilde GUI oluşturulabilir. Zengin kütüphanelere sahiptir. Öğrenmesi ve programlaması kolaydır.
Zayıf Yönleri Yeteri kadar dökümantasyon yok. Performans problemi var Test etmek güç Büyük çaplı projelerde kullanılmıyor
Diğer Dillerle Karşılaştırma
Ruby vs Java Çalışma şekli Java: Derle,Yorumla ve Çalıştır Ruby: Yorumla ve Çalıştır. Veri Tipleri Java: Object ve primitive tipler Ruby: Herşey object Method Çağrıları Java: obj.method() üye fonksiyon çağrılır. Ruby: obj.method nesneye mesaj gönderir.
Ruby vs Java Typing Java: Statik Ruby: Dinamik
Kod Örnekleri # The famous Hello World # program is trivial in # Ruby. You don't need: # # * a "main" method # * newline escapes # * semicolons # # Here's the code: puts "Hello World!“ p "Merhaba Dunya!" print "Merhaba Dunya!" $stdout << "Merhaba Dunya!"
Kod örnekleri => 8 if == 8 puts "heyoo!!" end a = [1,3,true,["asd",3.5]].size => 4 o a = 1 b = 5 c = 3 while a 7
Kod Örnekleri sonuc = 0 5.times do |i| sonuc += i end sonuc => 10 arr = [ 1,2,3,4,5,6,7 ] arr.each do |a| p a**2 end
Kod Örnekleri 3.times { print "Ruby‘yi *seviyoruz* -- harika bir dil!" } >> Ruby‘yi *seviyoruz* -- harika bir dil!“ Ruby‘yi *seviyoruz* -- harika bir dil!“ class Numeric def topla(x) self.+(x) end end y = 5.topla 6 >># y'nin değeri 11 oldu.
Kod Örnekleri class Person attr_reader :name, :age def = name, age end def (person) # Comparison operator for person.age end def to_s end group = [ Person.new("Bob", 33), Person.new("Chris", 16), Person.new("Ash", 23) ] puts group.sort.reverse => Bob (33) Ash (23) Chris (16)
Kaynaklar mming_language%29 mming_language% pps/ruby/Wiki%20Pages/Home.aspx