Idealisme Pencipta Ruby
Ruby merupakan bahasa yang seimbang. Pencipta
Ruby, Yukihiro
“Matz” Matsumoto, menggabungkan bagian-bagian dari bahasa-bahasa
favorit beliau (Perl, Smalltalk, Eiffel, Ada dan Lisp) untuk membentuk bahasa
baru yang seimbang antara pemrograman fungsional dengan pemrograman imperatif.
Matz sering menyebutkan bahwa beliau sedang
“mencoba membuat Ruby natural, bukan sederhana,” dengan cara membuatnya mirip
dengan kehidupan nyata.
Berprinsip pada hal ini, Matz menambahkan:
Penampilan Ruby dari luar sederhana, tetapi sangat rumit di
bagian dalam, seperti badan manusia kita ini1.
Tentang Perkembangan Ruby
Sejak Ruby pertama kali dirilis ke publik pada
tahun 1995, banyak programmer profesional dari seluruh dunia serius ikut
mengembangkan Ruby. Pada tahun 2006, Ruby diterima oleh banyak orang. Dengan
komunitas pengguna Ruby yang aktif di banyak kota-kota di seluruh dunia dan
konferensi-konferensi beserta pertemuan Ruby terkait.
Ruby-Talk, milis utama untuk diskusi Ruby (dalam
bahasa Inggris) telah mencapai kisaran 200 email setiap hari.
TIOBE index, yang menghitung perkembangan
bahasa-bahasa pemrograman, menempatkan Ruby pada peringkat ke 10 diantara
bahasa-bahasa pemrograman di seluruh dunia. Melihat pada perkembangan ini,
mereka memperkirakan, “Kesempatan Ruby memasuki peringkat atas 10 besar adalah
dalam waktu setengah tahun.” Kebanyakan dari perkembangan Ruby beratribut pada
terkenalnya software yang ditulis dengan Ruby, terutama framework web Ruby on Rails.
Ruby juga sepenuhnya
bebas. Tidak hanya gratis, tetapi juga bebas untuk menggunakan,
memodifikasi dan mendistribusikan Ruby.
Melihat Semua sebagai Obyek
Pertama kali, Matz melihat bahasa-bahasa lain
untuk mencari sintaks yang ideal. Terkenang pencariannya, Matz berkata, “Saya
mau bahasa scripting yang lebih hebat daripada Perl dan lebih berorientasi
obyek daripada Python2.”
Di Ruby, semua adalah obyek. Setiap informasi
dan kode bisa diberi property dan action. Pemrograman berorientasi obyek
memanggil property dengan nama variabel instan dan action,
yang disebut sebagai metode. Pendekatan murni berorientasi obyek
terutama terlihat pada demonstrasi sedikit kode yang diberikan pada number.
5.times { print
"Kami *cinta* Ruby -- Ruby sungguh
aduhai!" }
Di banyak bahasa-bahasa lain, number dan tipe
primitif bukan obyek. Ruby mengikuti pengaruh bahasa Smalltalk dengan
memberikan metode dan variabel instan pada semua tipe. Ini memudahkan
menggunakan Ruby, karena peraturan-peraturan mengenai obyek semua berlaku pada
Ruby.
Ruby Fleksibel
Ruby dianggap sebagai bahasa yang fleksibel,
karena bagian-bagian dari Ruby bisa diubah-ubah dengan bebas. Bagian-bagian
yang esensi di Ruby bisa dihapus maupun didefinisikan ulang. Bagian-bagian yang
sudah ada bisa ditambahkan. Ruby mencoba untuk tidak membatasi programmer.
Misalnya, penambahan
dilakukan dengan operator plus (+).
Tetapi, jika Anda ingin menggunakan kata plus yang
lebih mudah dibaca, maka Anda dapat menambahkan metode tersebut pada kelas
builtin Numeric.
class Numeric
def plus(x)
self.+(x)
end
end
y =
5.plus
6
# y sekarang adalah 11
Demi kemudahan, operator-operator Ruby adalah
juga metode. Anda juga bisa mendefinisikan ulang operator.
Blok, Fitur yang sungguh Ekspresif
Blok Ruby juga dianggap sebagai sumber
kekuatan Ruby yang sangat fleksibel. Programmer dapat menyertakan closure pada
setiap metode, menjelaskan bagaimana metode yang bersangkutan seharusnya
berperilaku. Closure disebut blok dan telah menjadi satu
diantara banyak fitur-fitur Ruby yang paling populer pada banyak pendatang baru
Ruby dari bahasa-bahasa imperatif lain seperti PHP atau Visual Basic.
Blok terinspirasi dari bahasa-bahasa
fungsional. Matz berkata, “Saya ingin menghormati kultur Lisp di closure Ruby3.”
search_engines =
%w[Google Yahoo
MSN].map do |engine|
"http://www."
+ engine.downcase
+ ".com"
end
Pada kode diatas, blok
dijelaskan dalam bentuk do ... end.
Metode mapmemberlakukan blok agar menerima
array kata-kata (Google, Yahoo dan MSN). Banyak metode-metode lain di Ruby
dibiarkan mempunyai hole yang dibuka untuk programmer agar menulis blok mereka
sendiri untuk mengisi dengan lebih lengkap apa saja yang seharusnya sebuah
metode lakukan.
Ruby dan Mixin
Tidak seperti banyak bahasa-bahasa
berorientasi obyek lain, Ruby hanya menyediakan single inheritance dengan
sengaja. Tetapi Ruby mengetahui konsep module (disebut sebagai Categories
di Objective-C). Module merupakan kumpulan dari metode-metode.
Kelas dapat me-mixin
(menggabungkan) sebuah module dan menerima semua metode-metode (dari module
yang bersangkutan) dengan bebas. Contoh, setiap kelas yang mengimplementasikan
metode each bisa mixin module Enumerable, yang menambahkan banyak
metode-metode yang menggunakan each untuk
melakukan perulangan.
class MyArray
include Enumerable
end
Secara umum, Rubyist menganggap ini
sebagai cara yang lebih jelas ketimbang multiple inheritance, yang rumit dan
bahkan terlalu membatasi.
Tampilan Ruby secara Visual
Ruby jarang menggunakan tanda baca dan
biasanya cenderung menggunakan keyword berbahasa Inggris, biasanya beberapa
tanda baca digunakan untuk memperjelas kode Ruby
Ruby tidak perlu deklarasi variabel. Ruby
menggunakan aturan penamaan yang mudah untuk menyatakan scope suatu variabel.
§ var adalah variabel lokal.
§ @var adalah variabel instan.
§ $var adalah variabel global.
Sigil-sigil tersebut bertujuan untuk
memudahkan dan memperjelas ketika dibaca bagi programmer untuk mengidentifikasi
fungsi dari setiap variabel. Sigil juga bisa menjadi hal yang tidak perlu bila
harus digunakan pada setiap member instan self.
Langkah Selanjutnya
Ruby kaya fitur, antara lain sebagai berikut:
§ Ruby memiliki fitur-fitur yang menangani
exception, seperti Java atau Python, untuk mempermudah menangani error.
§ Ruby menyediakan mark-and-sweep garbage
collector untuk semua obyek Ruby. Tidak perlu me-maintain reference count pada
library extension. Seperti yang Matz katakan, “Ini lebih baik untuk kesehatan
Anda.”
§ Menulis extension C di Ruby lebih mudah
daripada di Perl ataupun di Python, dengan API yang elegan untuk memanggil Ruby
dari C. Ini termasuk memanggil Ruby embedded di software, untuk digunakan
sebagai bahasa scripting. Interface SWIG juga tersedia.
§ Ruby bisa load library extension secara
dinamis jika Sistem Operasi mengijinkan.
§ Ruby menyediakan fitur OS threading yang
independent. Maka, untuk semua platform dimana Ruby berjalan, Anda juga punya
multithreading, terlepas dari apakah Sistem Operasi mendukung multithreading
atau tidak, bahkan pada MS-DOS sekalipun!
§ Ruby sangat portable: Ruby kebanyakan
dikembangkan di GNU/Linux, tetapi juga berjalan di banyak tipe UNIX, Mac OS X,
Windows, DOS, BeOS, OS/2, dan lain-lain.
Implementasi Lain dari Ruby
Ruby, sebagai sebuah bahasa, memiliki beberapa
implementasi yang berbeda. Halaman ini telah mendiskusikan referensi
implementasi, di dalam komunitas sering disebut sebagai MRI (“Matz’s
Ruby Interpreter”) atau CRuby (karena ditulis dalam bahasa C),
tetapi ada juga bahasa lainnya. Mereka sangat bermanfaat pada situasi tertentu,
menyediakan integrasi dengan bahasa atau lingkungan lainnya, atau memiliki
fitur khusus yang tidak dimiliki oleh MRI.
Berikut ini daftarnya:
§ JRuby adalah Ruby yang berjalan di atas
JVM (Java Virtual Machine), memanfaatkan optimisasi JIT compiler-nya
JVM, garbage collector,concurrent thread, tool
ecosystem, dan kumpulan pustaka yang luas.
§ Rubinius adalah ‘Ruby written in Ruby’.
Dibuat di atas LLVM, Rubinius memakai sebuah virtual machine yang
bagus yang bahasa lainnya sedang dibuat di atasnya, juga.
§ MacRuby adalah Ruby yang sangat
terintegrasi erat dengan pustaka Apple Cocoa untuk Mac OS X, memperbolehkan
Anda untuk memprogram aplikasi desktop dengan mudah.
§ mruby adalah sebuah implementasi lightweight dari
bahasa Ruby yang dapat dihubungkan dan ditanamkan dengan sebuah aplikasi.
§ IronRuby adalah sebuah implementasi
“tightly integrated with the .NET Framework”.
§ MagLev adalah “a fast, stable, Ruby
implementation with integrated object persistence and distributed shared
cache”.
Sumber :
Semoga Bermanfaat.
0 komentar:
Posting Komentar