Ruby adalah bahasa pemrogaman scripting yang berorientasi objek.Tujuan dari ruby adalah
menggabungkan kelebihan dari semua bahasa pemrogaman scripting yang ada di dunia.Ruby
ditulis dengan bahasa C dengan kemampuan dasar seperti Perl dan Phyton.
Ruby pertama kali dibuat oleh seorang programmer Jepang bernama Yukihiro
Matsumoto.Penulisan Ruby dimulai pada February 1993 dan pada Desember 1994 dirilis versi
alpha dari ruby.Pada awal perkembangan Ruby, Yukihiro meulis Ruby sendiri sampai pada
tahun 1996 terbentuk komunitas Ruby yang banyak mengkotribusikan 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 ini.
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.
Ruby juga sepenuhnya bebas.Tidak hanya gratis, tetapi juga bebas untuk menggunakan,
memodifikasi dan mendistribusikan Ruby.
c
c
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 Python3.´
Di Ruby, semua adalah obyek. Setiap informasi dan kode bisa diberi property dan action.
Pemrograman berorientasi obyek memanggil property dengan nama= dan action,
yang disebut sebagai
. Pendekatan murni berorientasi obyek terutama terlihat pada
demonstrasi sedikit kode yang diberikan pada number.
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 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 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
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 Ruby4.´
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 map memberlakukan 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.
Tidak seperti banyak bahasa-bahasa berorientasi obyek lain, Ruby hanya menyediakan single
inheritance
. 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.
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.
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.
v
c
Y Ruby memiliki fitur-fitur yang menangani exception, seperti Java atau Python, untuk
mempermudah menangani error.
Y 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.´
Y 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.
Y Ruby bisa load library extension secara dinamis jika Sistem Operasi mengijinkan.
Y 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!
Dua fitur Ruby yang mungkin belum biasa Anda lihat sebelumnya adalah ³blok´ dan
iterator.Daripada melakukan perulangan dengan indeks (seperti C, C++ ataupun Java sebelum
versi 1.5), atau melakukan perulangan lewat (seperti for (Ua) {...} di Perl ataupun for i
in aList: ... di Python). Anda akan
melihat kode yang mirip seperti ini di
Ruby:
daftar_orang.each do |orang_ini|
# Kita berada dalam blok
# Kita sedang berurusan dengan orang_ini
# orang_ini disebut parameter blok
puts orang_ini.nama
end
Untuk info lebih lanjut tentang each (dan teman-temannya seperti collect, find, inject, sort,
dan lain-lain.), lihat ri Enumerable (kemudian ri Enumerable#Ä ).
c
$
Tidak ada perbedaan antara ekspresi dan pernyataan.Semua punya = (nilai), bahkan jika
= tersebut adalah
(maksudnya, nil juga tetap punya = ). Ini karena:
x = 10
y = 11
z = if x < y
true
else
false
end
z # => true
c (
c
Banyak Rubyist pemula berjuang keras memahami apa itu Symbol dan untuk apa Symbol itu
ada.
Symbol dapat dijelaskan sebagai identitas. Symbol merupakan sebuah hal tentang ini,
bukan ini. Buka irb dan perhatikan perbedaan berikut ini:
Metode object_id mengembalikan identitas dari sebuah Object. Jika ada dua obyek memiliki
object_id yang sama, maka mereka sebenarnya adalah obyek yang sama (menunjuk ke Object
yang sama di memori).
Seperti yang dapat Anda lihat, sekali Anda pernah menggunakan Symbol, setiap Symbol dengan
karakter yang sama menunjuk ke Object yang sama di
. Untuk setiap dua Symbol yang
merepresentasikan karakter yang sama, maka object_id cocok.
Sekarang perhatikan String (³joko´).object_id tidak cocok. Artinya dua obyek tersebut
menunjuk ke dua obyek yang berbeda di memori, meskipun isi kedua obyek String tersebut
sama persis. Kapanpun Anda menggunakan String baru, Ruby selalu mengalokasikan memory
untuk string baru tersebut.
Jika Anda ragu-ragu apakah menggunakan Symbol atau String, pertimbangkanlah apa saja yang
lebih penting: identitas obyek (contoh: key Hash), atau isi (seperti contoh di atas, ³joko´).
c
³Semua adalah obyek´ bukan sekedar hiperbola. Bahkan kelas (ilass) dan integer juga obyek,
dan Anda dapat melakukan hal yang sama seperti perlakuan Anda terhadap obyek-obyek lain:
]
Konstanta bisa diubah. Jika Anda mengubah konstanta yang sudah diinisialisasi, maka akan
menyebabkan ° , tetapi tidak sampai menghentikan program Anda. Jadi maksudnya Anda
tidak mendefinisikan ulang konstanta.
Ruby memiliki pengaturan penamaan.Jika sebuah diawali dengan huruf kapital, maka
tersebut merupakan konstanta.Jika diawali dengan tanda dolar ($), maka
tersebut adalah variabel global.Jika identifier diawali dengan tanda U, maka identifier
tersebut adalah = .Jika identifier diawali dengan UU, maka identifier tersebut
adalah variabel kelas.
Tetapi, nama-nama metode boleh diawali dengan huruf kapital. Ini bisa membingungkan, seperti
ditunjukkan pada contoh berikut:
Konstanta = 10
def Konstanta
11
end
Ini dikarenakan Ruby otomatis mengubah parameter yang diberikan tersebut menjadi bentuk
hash. (meskipun pemanggilannya tanpa menggunakan kurung kurawal yang merupakan sintaks
hash)
$
&
'
# di Python
if 0:
print "0 is true"
else:
print "0 is false"
# di Ruby
if 0
puts "0 is true"
else
puts "0 is false"
end
Print ³0 is true´.
class KelasSaya
pri=ate
def metode; true; end
def metode_lain; false; end
end
Anda mungkin berharap metode_lain adalah public.Tetapi tidak demikian._
class KelasSaya
# Sekarang metode adalah public
def metode; true; end
pri=ate
Di Java, public berarti metode bisa diakses oleh siapa saja. protected berarti kelas,
dari kelas-kelas turunan, dan dari kelas-kelas package yang sama dapat
mengakses, tetapi tidak untuk yang lain, dan pri=ate berarti tidak ada yang dapat mengakses
metode kecuali kelas.
Di Ruby, public secara natural adalah public. pri=ate berarti metode hanya bisa diakses
ketika metode bisa dipanggil tanpa obyek penerima yang eksplisit. Hanya yang boleh
menjadi receiver pemanggilan metode private.
protected perlu diperhatikan lebih lanjut. Metode protected bisa dipanggil dari kelas ataupun
kelas turunan, tetapi juga dengan lain sebagai penerima.
l irb
irb(main):001:0> class Test
irb(main):002:1> # metode berikut secara default adalah public
irb(main):003:1* def func
irb(main):004:2> 99
irb(main):005:2> end
irb(main):006:1>
irb(main):007:1* def ==(other)
irb(main):008:2> func == other.func
irb(main):009:2> end
irb(main):010:1> end
=> nil
irb(main):011:0>
irb(main):012:0* t1 = Test.new
=> #<Test:0x34ab50>
irb(main):013:0> t2 = Test.new
=> #<Test:0x342784>
irb(main):014:0> t1 == t2
=> true
irb(main):015:0> # sekarang atur `func` menjadi protected,
irb(main):016:0* # masih jalan karena protected bisa reference ke lain
irb(main):017:0* class Test
irb(main):018:1> protected :func
irb(main):019:1> end
=> Test
irb(main):020:0> t1 == t2
=> true
irb(main):021:0> # sekarang atur `func` menjadi pri=ate
irb(main):022:0* class Test
irb(main):023:1> pri=ate :func
irb(main):024:1> end
=> Test
irb(main):025:0> t1 == t2
NoMethodError: pri=ate method `func' called for #<Test:0x342784>
from (irb):8:in `=='
from (irb):25
from :0
irb(main):026:0>
Kelas Ruby bersifat terbuka.Anda bisa membuka ilass, lalu menambahkan ke dalam ilass,
dan menggantinya kapan saja.Bahkan kelas yang termasuk class inti, seperti kelas Fixnum atau
bahkan kelas Object, induk dari semua obyek di Ruby.Ruby on Rails mendefinisikan banyak
metode yang berhubungan dengan waktu ke dalam kelas Fixnum. Perhatikan kode berikut:
class Fixnum
def hours
self * 3600 # total detik dalam satu jam adalah 3600
end
alias hour hours
end
Di Ruby, metode boleh diakhiri dengan tanda tanya ataupun tanda seru. Pengaturan nama adalah,
metode-metode yang menjawab pertanyaan (seperti Array#empty? mengembalikan nilai
jika obyek penerima yaitu Array ternyata kosong) diakhiri dengan tanda tanya. Kemudian,
metode-metode yang berpotensi untuk ³membahayakan´ (seperti metode yang mengganti
atau argumen, exit! dan lain sebagainya) maka pengaturannya diakhiri dengan tanda seru.
Tetapi, semua metode yang mengganti argument tidak diakhiri dengan tanda
seru.Array#replace mengganti isi array dengan isi array lain. Karena tidak masuk akal kalau
ada metode sedemikian rupa mengganti self.
c
Metode merupakan metode-metode yang basisnya per obyek. hanya tersedia
pada obyek yang Anda definisikan, jadi metode tersebut tidak tersedia pada obyek-obyek yang
lain dari kelas yang sama.
class Mobil
def inspect
"Mobil murah"
end
end
porsche = Mobil.new
porsche.inspect # => Mobil murah
def porsche.inspect
"Mobil mahal"
end
(
Ruby tidak menyerah kalau Ruby tidak mendapatkan metode yang bisa menanggapi
tertentu. Ruby akan memanggil metode method_missing dengan nama metode yang Ruby tidak
ditemukan beserta daftar parameternya. Secara , method_missing membangkitkan
NameError, tetapi Anda bisa mendefinisikan ulang Exception tersebut supaya lebih
sesuai dengan aplikasi yang Anda buat, dan banyak yang melakukan hal yang sama.
Contoh:
__ :a, :b, 10
Kode diatas hanya print detil tentang pemanggilan (call), tetapi Anda bisa dengan bebas
menangani message dengan cara ini.
%
(
# Penambahan ini
1 ü 2
# adalah sama dengan penambahan ini ...
1.ü(2)
# juga sebetulnya sama dengan penambahan ini :
1.send "ü", 2
((#
c
Blok () banyak digunakan oleh Ruby standar. Untuk memanggil blok, Anda bisa
menggunakan yield, atau membuat sebuah obyek Proc dengan menambahkan argumen khusus
pada list argument, seperti contoh berikut:
Anda juga dapat membuat blok diluar pemanggilan metode dengan memanggil Proc.new
dengan blok atau pemanggilan metode lambda.
c c
Kebanyakan operator di Ruby hanyalah .Maksudnya adalah
penyingkatan penulisan kode.Dalam hal operator-operator itu, mereka sebenarnya hanyalah
pemanggilan metode saja, tentunya dengan peraturan tertentu supaya jenjang tetap
dituruti. Contohnya, Anda bisa meng-= metode + milik kelas Fixnum:
class Fixnum
# Sebenarnya Anda bisa melakukan ini,
# tetapi tolong jangan lakukan ini
def ü( other )
self - other
end
end
Tetapi operator-operator dibawah ini bukan syntactic sugar. Operator-operator dibawah ini
bukan metode dan tidak dapat didefinisikan ulang:
Tambahan, +=, *= dan lain sebagainya hanyalah singkatan untuk =ar = =ar ü =ar_lain, =ar
= =ar * =ar_lain, dan seterusnya tidak dapat didefinisikan ulang.
Y Y
Y Y
Y
Y
1.
(
. Ini apa artinya? Jika ada sepuluh programmer, maka akan ada dua
belas opini tentang apa itu Pemrograman Berorientasi Objek. Saya tinggalkan semua itu pada
kebijakan Anda. Dalam hal ini, Ruby menawarkan enkapsulasi data dan metode pada objek-
objek dan penurunan dari satu kelas ke kelas lain; Ruby juga ada objek polimorfisme. Tidak
seperti C++, Perl 5, dan bahasa-bahasa pemrograman lain, Ruby didesain berorientasi objek dari
awal.
3.
(
. Bagi orang-orang yang sudah terbiasa dengan
bahasa-bahasa statik seperti C++ dan Java, konsep dinamis ini merupakan hal yang
signifikan.Artinya metode-metode dan variabel-variabel dapat ditambahkan dan didefinisikan
ulang pada saat runtime.Ruby menghapus segala kesulitan atas kewajiban fitur-fitur seperti
kompilasi kondisi C () ), Ruby juga memungkinkan pembuatan API otomatis. Ini
menjadikan program-program lebih ³mengerti´²Ruby memungkinkan program mengetahui
informasi tipe saat runtime, mampu mendeteksi metode yang terlewat (tambahan penerjemah,
metode yang tidak didefinisikan sebelumnya ataupun terlewati), dan sebagainya. Dengan
perilaku ini Ruby erat kaitannya dengan Lisp dan Smalltalk.
4.
. Bahasan mengenai bahasa interpreted ini memang
masalah kompleks dan layak dikomentari. Bahasa interpreted sering diperdebatkan karena
memiliki masalah negatif tentang performance. Saya menjawab argumen negatif tersebut dengan
observasi sebagai berikut:
, dan yang paling penting: Proses Pengembangan yang sangat
cepat merupakan hal menguntungkan, ini dipicu oleh bahasa Ruby yang alami interpreted.
, sebetulnya seberapa lambatkah yang dinamakan terlalu lambat?Apakah Anda sudah
melakukan benchmark sebelum Anda berkata kalau Ruby itu lambat. , Walau beberapa
orang akan mengkritik saya, saya tetap akan mengatakan ini: prosesor-prosesor komputer setiap
tahun berkembang semakin cepat.
, jika Anda benar-benar membutuhkan kecepatan,
Anda dapat menulis sebagian kode program Anda dalam bahasa C.
, terakhir dan ini
merupakan hal yang diperdebatkan, karena tidak ada bahasa yang yang secara permanen
interpreted. Tidak ada aturan di dunia ini yang mengatakan bahwa Ruby compiler tidak dapat
ditulis.
5.
. Kemampuan UNIX akan dan atau melakukan operasi cari-
dan-ganti dengan ' sudah dikenal sejak bertahun-tahun. Perl banyak membantu perubahan
tersebut, begitu pula dengan Ruby.Banyak orang yang mengetahui kehebatan teknik string
tingkat mahir dan manipulasi teks.Untuk yang ragu-ragu silakan pergi dan baca buku Jeffrey
Friedl yang berjudul Mastering Regular Expressions. Jadi seharusnya tidak akan ada lagi yang
ragu-ragu.
6.
. Ruby bisa dijalankan di Linux dan varian-varian
UNIX lainnya, di Windows, BeOS, dan bahkan di MS-DOS.Kalau tidak salah ingat, bahkan
Ruby juga tersedia untuk platform Amiga.
7. (
. Apakah ini baik?Diluar dunia tulis-menulis,
ya. Isaac Newton pernah berkata, ³Jika saya sudah melihat yang lain melakukan hal yang lebih
jauh, itu karena saya berdiri di atas pundak para raksasa.´ Jelas Ruby berdiri di atas pundak
raksasa.Ruby meminjam fitur-fitur dari Smalltalk, CLU, Lisp, C, C++, Perl, Kornshell, dan lain-
lain. Hal yang prinsip, yang saya lihat di saat kerja adalah:
, Jangan menjadi penemu
akan hal-hal yang sudah ada (jangan reinvent the wheel). , Jangan perbaiki hal-hal yang
tidak rusak. , terakhir dan ini yang spesial, gunakan keahlian-keahlian yang sudah ada pada
orang-orang.Anda sudah mengerti operasi file dan pipe di UNIX?Bagus, Anda bisa
menggunakan keahlian tersebut.Anda telah menghabiskan waktu Anda selama 2 tahun
mempelajari semua hal tentang
?Jangan khawatir, Anda bisa menggunakan
.Anda
mengerti Regexp di Perl?Bagus, berarti sebetulnya Anda hampir sudah belajar Ruby.
8.
'. Apakah poin 8 ini berlawanan dengan poin ke 7
diatas?Sebagian, ya.Setiap koin mempunyai dua sisi. Beberapa fitur Ruby benar-benar inovatif,
seperti konsep mix-in yang sangat berguna. Mungkin beberapa fitur tersebut dipinjam dari
bahasa-bahasa masa depan (
: Seorang pembaca telah menunjukkan kepada saya bahwa
LISP punya mix-in paling tidak sejak tahun 1979. Bukan berarti saya tidak peduli akan argumen
saya, tapi saya akan menemukan contoh yang lebih baik dan membuat Anda yakin bahwa Ruby
dikembangkan dengan inovatif.)
9.
(v
c
* +!v ' v
,.
Penggunaan terminologi o= ini memang diperdebatkan, karena
terminologi tersebut tidak digunakan secara luas sehingga menjadi bahan perdebatan daripada
konsep Pemrograman Berorientasi Objek sendiri.Ketika saya mengatakan ini, yang saya maksud
adalah Ruby mampu menangani struktur data kompleks dan operasi kompleks dengan sedikit
perintah, sesuai dengan Filosofi Usaha yang minimal (untuk mendapatkan hasil maksimal).
10.
-
. Routines seperti dan adalah
mimpi buruk. Anda bahkan tidak perlu memanggil Destructor.Cukup sudah saya katakan ini.
13.
. Dengan Ruby, Anda dapat menulis aplikasi multi threaded dengan
API sederhana. Ya, bahkan di lingkungan MS-DOS.
15.
. Kurva belajar Ruby itu landai, sekali Anda sudah terbiasa dengan Ruby,
maka Anda akan mulai dapat menebak bagaimana suatu hal bekerja dengan Ruby« dan tebakan
Anda sering benar. Ruby dirancang untuk mengikuti Prinsip Sedikit Kaget (Principle of Least
Astonishment).
18.
. Anda bisa menulis library eksternal dengan Ruby ataupun dengan C.
Tambahan, bahkan Anda dapat memodifikasi kelas-kelas dan objek-objek yang sudah ada pada
Ruby secara on the fly.
19.
. Anda dapat memasukkan komentar dalam
kode-kode Ruby Anda yang mana tool dokumentasi Ruby dapat mengekstrak dan memanipulasi
komentar Anda.(Para penggemar literate programming bahkan berpikir bahwa hal ini merupakan
prinsip dasar yang harus ada).
21. ' %. Kita diperbolehkan menggunakan identifier yang disebut
³reserved word´ sepanjang parser tidak menganggapnya ambigu. Ini benar-benar seperti
menghirup udara segar.
22.
. Dari sekian banyak hal, iterator memungkinkan kita untuk mem pass
blok kode ke dalam objek Anda sehingga blok tersebut dipanggil pada setiap item di objek array,
list, tree atau apa saja. Ini merupakan teknik dahsyat yang sangat baik untuk diexplorasi seluk-
beluknya.
23.
!
. Ruby meminjam konsep Perl yang menawarkan tingkat
kontrol (tingkat paranoid?) dengan variabel /c_.Terutama berguna untuk program-program
CGI yang ingin orang-orang lakukan untuk mengcrack server web.
24.
. Seperti Java, dan (dengan sedikit mengangguk-nganggukkan
kepala) juga dengan C++, Ruby tidak punya konsep pointer, tidak ada indirection, tidak ada
pointer aritmetik, dan tidak ada pusing kepala dengan sintaks pointer dan debug pointer. Tentu,
ini juga berarti menjadi penyebab pemrograman sistem menjadi lebih sulit, seperti mengakses
register status kontrol untuk suatu device, tapi itu tetap bisa saja dijalankan dengan library C.
(Seperti juga para programmer C turun derajat ke assembly jika diperlukan, begitu pula para
programmer Ruby bisa saja turun ke C kalau memang diharuskan!)
27.
. Ruby mendukung thread, socket, limited object persistence,
program CGI, server-side executables, file DB, dan banyak lagi. Ada juga dukungan untuk Tk,
dan dukungan-dukungan lain untuk GUI.
28.
. Di dunia yang sempurna, kita tidak akan perlu debugger. Tapi dunia
ini tidak sempurna.
29.
. Ruby dapat digunakan seperti menggunakan
Kornshell. (Saya dipaksa untuk melaporkan bahwa Ruby tidak begitu bagus digunakan untuk
shell, walaupun begitu, saya berpendapat shell yang berbasis Ruby itu akan bagus)
30.
. Tidak ada keyword yang boros seperti
,
setelah ,
setelah % seperti di Pascal. Variabel-variabel tidak perlu dideklarasikan, sebab variabel
memang tidak punya tipe. Tipe return tidak perlu ditentukan di metode. Keyword return tidak
perlu ditulis, metode akan return untuk ekspresi yang dievaluasi terakhir. Dengan kata lain, Ruby
tidak cryptic seperti C ataupun Perl.
31.
. Anda dapat dengan mudah mengatakan hal-hal seperti 1
32.
. Jika Anda ingin meng iterate array dengan
mengatakan
, Anda bisa. Jika Anda ingin mengatakan 21 daripada 12 , Anda
juga bisa. Kebanyakan operator di Ruby sebetulnya merupakan metode yang singkat, nama-
namanya intuitif dan sintaksnya nyaman.
33.
'
. Kalau tidak salah, aslinya dulu pernah di SNOBOL,
tapi akhirnya dipopulerkan oleh C++.Ruby bisa saja disalahgunakan dan keliru, tapi Ruby
memang indah memiliki fitur ini. Ruby mendefinisikan versi penugasan suatu operator secara
otomatis; kalau Anda mendefinisikan +, Anda juga dapat bonus berupa +=
35.
. Di zaman dahulu kala, kita menggunakan ini di
BASIC dan FORTRAN.Tetapi kemudian kita belajar Pascal dan C, dan belajar betapa operator
ini seperti setan.(Kita diberitahu bahwa kita tidak mengetahui bagaimana suatu evaluasi
diselesaikan, apakah menggunakan logaritma?Iterasi?Seberapa efisien?)tetapi kemudian, apakah
kita betul-betul peduli? Jika iya, kita bisa saja menulis ulang sendiri. Tapi jika tidak, Ruby sudah
punya operator tua yang bagus ·· yang bisa Anda cinta sama seperti Anda mencintai anak Anda.
Silakan dinikmati.
]
Sama dengan Python, di Ruby«