Cuma, Aralık 16, 2005

Neden Ruby ?

Atilla ÖZGÜR'ün X. İnternet konferansında sunduğu " WATIR Web Application Testing in Ruby " başlıklı bildirisinden;
WATIR hakkında en çok sorulan sorulardan biri neden ruby dilinin kullanıldığıdır. Yani neden perl/python/java/c# kullanılmadığıdır. Her dilin kendisine göre güçlü ve zayıf yanları bulunmaktadır.


• WATIR kullanıcısı olarak, programlama bilmeyen veya yeni başlayan kişiler düşünülmüştür. Girişteki zorlukların mümkün olduğunca azaltılması, compiler’a ihtiyaç duyulmaması gerektiğine karar verilmiştir. Betik dillerinin tümü bu ihtiyaca cevap vermektedir. Java ve C# bu aşamada elenmektedir.

• Ruby/python/perl çok popüler üç dinamik programlama dilidir. Bunların arasında Ruby en az popüler olanıdır. Ama kullanım kolaylığı açısından tam bir nesneye yönelimli bir programlama dilidir. Java ve C#’ta olan reflection özelliğine sahiptir. Multiple inheritance özelliği olmamasına rağmen mix-in özelliği bu eksiği çok rahat bir şekilde kapatmaktadır.

• IRB (İnteraktif Ruby Shell) girilen Ruby komutlarının sonuçlarının aynı anda izlenmesine izin veren bir programdır. Sayfaları test eden betiklerin yazılmasını son derece hızlandırmaktadır.

• Ruby’nin bir diğer güzel özelliği run-time kütüphanelerinin dinamik olarak değiştirilmesine izin vermesidir. WATIR kütüphanesinden örnek vermek gerekirse
class String

def matches (x)

return self == x

end

end


Burada run-time string class’ı değiştirilerek “matches” isminde bir mettot eklenmektedir. Bunun güzel yanı, WATIR’i kullanan eklentilerin WATIR kodunda bir değişiklik yapmadan WATIR’in çalışma biçimini değiştirebilmesidir. WET eklentisi Ruby’nin bu özelliğini kullanarak bir çok yeni özelliği WATIR’e eklemiştir.

• Ruby Iteratorları. En basit şekli ile Ruby iteratorları okunması ve yazması kolay programlar sağlamaktadır. Örnek olarak

10.times{ puts “a”} ekrana 10 adet a harfi basmaktadır.


5.upto(10){|i|

puts i

}

5’ten 10 kadar olan sayıları ekrana basar.

WATIR Ruby iteratorlarını DOM nesneleri olarak kullanıcılarına sunmaktadır.

$ie.text_fields.each { |t|

}

Bu kod ekrandaki bütün textfieldları gezmektedir.

Hiç yorum yok: