sejarah bahasa pemograman Ruby
Ruby pertama kali dibuat oleh seorang programmer Jepang bernama Yukihiro
Matsumoto. Pada tahun 1993 Yukihiro ingin membuat sebuah bahasa
pemrograman scripting yang memiliki kemampuan orientasi obyek. Pada saat
itu pemrograman berorientasi obyek sedang berkembang tetapi belum ada
bahasa pemrograman scripting yang mendukung pemrograman obyek.
Penulisan Ruby dimulai pada Februari 1993 dan pada Desember 1994 dirilis versi alpha dari Ruby. Pada awal perkembangan Ruby, Yukihiro menulis Ruby sendiri sampai pada tahun 1996 sudah terbentuk komunitas Ruby yang banyak mengkontribusikan perkembangan Ruby.
Saat ini Ruby telah berkembang tidak hanya di Jepang, tetapi diseluruh dunia. Bulan Agustus tahun 2006, Macintosh telah melakukan kerja sama dengan mengintegrasikan Ruby on Rails pada Mac OS X v10.5 Leopard yang diluncurkan bulan Oktober 2007.
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 ini.”
Penulisan Ruby dimulai pada Februari 1993 dan pada Desember 1994 dirilis versi alpha dari Ruby. Pada awal perkembangan Ruby, Yukihiro menulis Ruby sendiri sampai pada tahun 1996 sudah terbentuk komunitas Ruby yang banyak mengkontribusikan perkembangan Ruby.
Saat ini Ruby telah berkembang tidak hanya di Jepang, tetapi diseluruh dunia. Bulan Agustus tahun 2006, Macintosh telah melakukan kerja sama dengan mengintegrasikan Ruby on Rails pada Mac OS X v10.5 Leopard yang diluncurkan bulan Oktober 2007.
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 ini.”
Kelebihan Ruby
1. Sintaks sederhana.
2. Memiliki exception handling yang baik.
3. Bahasa Pemrograman Berorientasi Objek.
4. Mengusung konsep single inheritance.
5. Open source, siapa saja dapat menggunakannya dengan cuma-cuma dan dapat ikut berpartisipasi mengembangkannya.
6. Memiliki garbage collector yang secara otomatis akan menghapus informasi tak terpakai dari memori.
Sistem operasi yang didukung
1. Linux
2. Microsoft Windows 95/98/XP/NT/2000/2003/Vista
3. MacOS X v10.5 Leopard
4. BeOS
5. OS/2
6. Unix
7. Amiga
8. MorphOS
9. Acorn RISC OS
10. Syllable
11. Symbian OS
Variabel : Karena Ruby bersifat dynamic-typing, Anda tidak perlu mendeklarasikan tipe dan variabelyang ingin Anda gunakan seperti pada bahasa C. Anda cukup memasukkan nilai ke variabelyang ingin Anda pakai. Aturan penamaan variabel sama dengan aturan penamaan variabel pada umumnya, yakni tidak boleh dimulai dengan angka dan tidak memakai keyword penting dari bahasa tersebut.
Tipe data :
• Angka --> Ruby dapat menangani angka baik yang bertipe integer maupun float.
• String--> Tipe data String di Ruby sama dengan tipe data String pada bahasa pemrograman lain umumnya. Untuk membuat tipe data String, anda dapat menggunakan kutip satu ‘ ataupun kutip dua “ . Adapun perbedaan di antara keduanya, yakni di mana objek String yang dibuat dengan kutip dua “ akan mengerti karakter khusus seperti ‘\n’,’\r’,’\b’ ,dsb. ; sedangkan karakter dengan objek String yang dibuat dengan kutip satu ‘ tidak bisa menerjemahkan karakter khusus di atas.
• Array --> Tipe data Array di Ruby sama dengan tipe data list di Python. Untuk membuat suatu objek Array baru, Anda dapat menggunakan literal Array [] ataupun konstruktor Array.new. Isi array dapat berupa objek apapun baik angka, string, maupun objek lain termasuk objek array itu sendiri.
• Hash --> Tipe data hash di Ruby sama dengan tipe data dictionary di Python. Untuk membuat objek
• Range --> Objek range di Ruby merupakan suatu barisan di mana terdapat nilai awal dan nilai akhir dari barisan tersebut
Operator
• Operator aritmatika : tambah (+), pengurangan (-), pengalian (*), dan pembagian (/)
• Operator perbandingan : mengembalikan nilai True dan False (==), tes untuk ketidaksama denganan, kurang dari (<), lebih dari (>)
• Ruby juga mendukung assignment operator, yaitu +=, -=, *=, dan /=. Assignment operator tidak memerlukan operand kedua.
Aturan Penamaan Variabel pada Ruby
- Sifat case-sensitive pada Ruby direfleksikan dalam aturan penamaannya, kebanyakan diperkuat oleh interpreter.
- Nama variabel lokal dimulai dengan huruf kecil. Underscore digunakan untuk memisahkan kata. Camel case sebaiknya tidak digunakan dalam penamaan variabel.
contoh_var # merupakan nama variabel lokaL |
- Nama variabel global harus diawali dengan tanda dollar ($) dan kemudian diikuti oleh aturan yang sama dengan nama variabel lokal.
$contoh_var # merupakan nama variabel global |
- Variabel instance adalah sesuatu yang disebut properties dalam Visual FoxPro. Nama variabel instance diawali dengan tanda ampersand (@) dan kemudian diikuti dengan aturan yang sama seperti nama variabel lokal.
@contoh_var # merupakan nama variabel instance |
- Variabel class diawali dengan tanda ampersand ganda (@@) dan kemudian diikuti dengan aturan yang sama seperti pada nama variabel lokal.
@@contoh_var #merupakan nama variabel class |
- Nama untuk nilai konstanta ditulis dengan huruf besar secara keseluruhan.
PI # merupakan nilai konstanta |
- Nama class dan nama modul diawali dengan huruf besar. camelCase digunakan untuk menyatukan kata (pengganti underscore)
ContohNamaClass #merupakan nama class |
- Nama method diikuti dengan aturan yang sama dengan nama variabel lokal. Terdapat dua syarat khusus pada penamaan method. Method yang mengembalikan nilai Boolean (true atau false) akan diikuti dengan tanda tanya, ketika method yang dapat mengubah objek yang dipanggil, maka nama method tersebut diikuti dengan tanda seru yang mengindikasikan “digunakan”
save # merupakan nama method do_something # merupakan nama method nil ? # mengindikasikan bahwa method mengembalikan nilai Boolean register! # Mengindikasikan method yang mengubah objek yang dipanggil
Sebagai bahasa scripting yang berbasis interpreter, Ruby menawarkan
modus interaktif, yakni Interactive Ruby yang disingkat dengan irb.
Untuk masuk ke modus interaktif Ruby, Anda cukup mengetikkan irb pada
command prompt shell Anda, untuk keluar Anda cukup menekan tombol Ctrl-D
atau ketikkan exit. Anda dapat menambahkan opsi—simpleprompt pada irb
agar bentuk prompt-nya berubah menjadi >>.Di samping itu, tentunya program Ruby juga dapat disimpan dalam file berextension ‘.rb’. Sama halnya seperti Python, modus interaktif Ruby juga dapat digunakan sebagai kalkulator untuk perhitungan sederhana. Kemampuan menghitung Ruby tidak kalah jika dibandingkan dengan Python. Konon, Ruby memiliki kecepatan eksekusi program yang lebih cepat dibandingkan dengan Python. $ irb —simple-prompt >> 2 + 3 - 1 => 4 >> 3 * 2 / 2 => 3 >> 4 % 3 ** 2 => 4 >> 5.0/2.0 => 2.5 Untuk tipe data angka yang dapat ditangani oleh Ruby, akan dibahas lebih detail pada bagian bawah. Sekarang kita akan mengenal lebih jauh tentang Ruby, terutama sintaks–sintaks dasarnya. 1. Aturan penamaan variabel Karena Ruby bersifat dynamic-typing, Anda tidak perlu mendeklarasikan tipe dan variabel yang ingin Anda gunakan seperti pada bahasa C. Anda cukup memasukkan nilai ke variabel yang ingin Anda pakai. Aturan penamaan variabel sama dengan aturan penamaan variabel pada umumnya, yakni tidak boleh dimulai dengan angka dan tidak memakai keyword penting dari bahasa tersebut. Berikut contoh deklarasi variabel: Contoh valid: x = 888 ini_variabel_string = “halo” Contoh tidak valid: 8x = 888 while = “halo” # while adalah reserved keyword 2. Konstanta Konstanta tidak lain adalah sebuah variabel yang isinya tetap (tidak berubah). Konstanta di Ruby dideklarasikan dengan huruf kapital pada huruf pertama. Suatu konstanta tetap dapat diubah nilainya. Pemberian status konstanta pada suatu variabel hanya akan memberikan suatu peringatan apabila kita mengubah isi konstanta tersebut. >> Pi = 3.14 => 3.14 >> Pi = 3.1428 (irb):2: warning: already initialized constant Pi => 3.1428 >> Pi => 3.1428 3. Input Output Untuk meminta input-an dari user, kita menggunakan perintah gets. Sedangkan untuk output ke layar monitor, kita dapat menggunakan puts, print maupun printf. >> puts “Halo, pa kabar ?” Halo, pa kabar? => nil >> print “Halo, pa kabar ?” Halo, pa kabar ?=> nil >> nama = gets Eric => “Eric\n” >> printf “Nama saya %s”, nama printf “Nama saya %s”, nama Nama saya Eric => nil Adapun perbedaan antara puts , print dan printf yakni di mana puts akan menambahkan karakter newline(‘\n’) pada akhir string dan parameternya harus string, sedangkan print hanya mencetak string tanpa menambahkan karakter newline, printf sama dengan print; bedanya printf mengenal formatting seperti %s untuk string,%f untuk float, %d untuk integer, dan seterusnya. Perintah printf ini sama dengan perintah printf di bahasa C. 4. Struktur program Program Ruby umumnya juga memakai indentasi seperti bahasa Python. Akan tetapi indentasi tidak mutlak harus dilakukan, karena Ruby menggunakan keyword end untuk menandakan akhir dari suatu bagian program. 5. Lain-lain Mungkin pada beberapa contoh di atas, Anda sering melihat tulisan nil. Nil berarti suatu objek di Ruby sama dengan NULL di bahasa C. Nil berarti hasil eksekusi perintah tersebut tidak mengembalikan objek apapun alias nil (tidak memiliki return value). Misalkan perintah puts hanya mencetak string ke layar dan tidak mengembalikan objek apapun untuk disimpan alias nil. Akan tetapi lainnya halnya dengan a = “halo” akan mengembalikan objek String “halo” yang akan disimpan dalam variabel a. Untuk komentar pada program Ruby, Anda dapat menggunakan tanda # . Untuk lebih dari satu statement pada satu baris , Anda dapat menggunakan pemisah ‘;’. Sedangkan untuk statement yang lebih dari satu baris, Anda dapat menggunakan tanda ‘\’. >> a = 1#Variabel a berisi 1 => 1 >> print “Halo “; puts “ apa kabar ?” Halo apa kabar ? => nil >> b = 1 + 3 + 5 \ ?> + 7 + 9 => 25 Seperti umumnya untuk contoh pertama program, kita akan membuat program “Hello World !”. Berikut contohnya: #hello.rb #!/usr/bin/env ruby puts “Hello World !” Program di atas akan mencetak tulisan “Hello World !” pada console Anda. Untuk menjalankan hello.rb, Anda cukup mengetikkan ruby hello.rb ataupun dapat mengubah file permission menjadi executable dengan perintah chmod +x hello.rb dan menjalankannya. $ cat > hello.rb $ ruby hello.rb Hello World ! $ chmod +x hello.rb $ ./hello.rb Hello World ! Sebelum melangkah lebih lanjut, kita perlu mengetahui perbedaan objek dengan kelas. Objek adalah suatu unit data. Sedangkan kelas adalah jenis dari objek tersebut. Misalnya ada dua angka 5 dan 8 keduanya adalah objek yang berbeda, akan tetapi mereka tergolong kelas yang sama Integer, tepatnya kelas FixNum. Di samping itu, Anda juga perlu mengerti tentang metode suatu kelas. Metode adalah suatu hal yang dapat dilakukan pada suatu objek. Untuk mengetahui tipe/kelas dari suatu objek, kita dapat menggunakan metode class ; sedangkan apabila kita ingin mengetahui metode-metode apa saja yang berlaku umum untuk objek tersebut, Anda dapat metode methods. >> a = 1 => 1 >> a.class => Fixnum >> a.methods => [“to_a”, “%”, “instance_eval”, “<<“, “prec_i”, “coerce”, “&”, “type”, “>>”, “ceil”, “protected_methods”, “div”, “extend”, ...] Setelah berkenalan dengan dasar-dasar interpreter Ruby, kini saatnya untuk membahas beberapa tipe data dasar yang disediakan Ruby yang tentunya merupakan instansi dari kelas–kelas mengingat Ruby adalah bahasa berorientasi objek yang murni. Di samping itu, kita juga akan membahas beberapa metode yang umum dari kelas– kelas tersebut. 1. Angka Ruby dapat menangani angka baik yang bertipe integer maupun float. Untuk tipe data Integer di Ruby, kelas Integer dibagi dalam dua kelas yakni FixNum dan BigNum. Angka dengan batas -230 sampai 230–1 tergolong dalam kelas FixNum; apabila suatu angka telah melampaui batas tersebut, maka akan digolongkan dalam kelas BigNum. Karena Ruby bersifat dynamic–typing, Anda tidak perlu melakukan konversi dari FixNum ke BigNum karena konversi akan dilakukan secara otomatis. Sedangkan untuk angka yang bertipe float, Ruby akan menganggap objek angka tersebut merupakan instansi dari kelas Float. Seperti bahasa pemrograman umumnya, pada Ruby Anda dapat menggunakan prefiks (awalan) untuk menandakan arti angka tersebut, misalya untuk menyatakan bilangan negatif, 0 untuk bilangan oktal , 0b untuk bilangan biner dan 0x untuk bilangan heksadesimal serta e untuk bilangan eksponensial. Untuk mempermudah penulisan suatu angka dengan nilai yang sangat besar, Anda dapat membubuhkan karakter _ pada penulisan angka (karakter _ tidak akan disimpan, hanya untuk membantu saja). >> a = 2 => 2 >> a.class => FixNum >> a = a ** 31 => 2147483648 >> a.class => BigNum >> 188_888_000_000 => 188888000000 >> 0x6AF => 1711 >> 1.89e+18 => 1.89e+18 >> b = 1.4 => 1.4 >> b.class => Float 2. String Tipe data String di Ruby sama dengan tipe data String pada bahasa pemrograman lain umumnya. Untuk membuat tipe data String, anda dapat menggunakan kutip satu ‘ ataupun kutip dua “ . Adapun perbedaan di antara keduanya, yakni di mana objek String yang dibuat dengan kutip dua “ akan mengerti karakter khusus seperti ‘\n’,’\r’,’\b’ ,dsb. ; sedangkan karakter dengan objek String yang dibuat dengan kutip satu ‘ tidak bisa menerjemahkan karakter khusus di atas. Perhatikanlah contoh berikut: >> a = “Hello\n” => “Hello\n” >> print a Hello => nil >> b = ‘Hello\n’ => “Hello\\n” >> print b Hello\n=> nil Kelas String kaya akan metode-metode yang powerful. Anda dapat mencoba beberapa di antaranya seperti berikut ini. length—untuk mengetahui panjang suatu string. capitalize—untuk mengubah huruf pertama pada awal kalimat menjadi huruf kapital. downcase—mengubah string menjadi huruf kecil. upcase—mengubah string menjadi huruf besar. swapcase—mengubah objek string dengan huruf kecil diubah menjadi huruf kapital dan sebaliknya. strip—membuang karakter whitespace di awal dan akhir string. reverse—membalikkan string. include ? str—mengembalikan true jika substring str terdapat dalam string dan false jika tidak ada. chop—membuang karakter terakhir dari string. Salah satu hal yang unik dari Ruby adalah Anda dapat menambahkan tanda ‘!’ di akhir metode untuk menandakan metodenya bersifat destruktif di mana hasil metode tersebut berdampak langsung pada objeknya. >> “Hello”.length => 5 >> “hello”.capitalize => “Hello” >> “HELlo”.downcase => “hello” >> “HeLLo”.upcase => “HELLO” >> “hElLo”.swapcase => “HeLlO” >> “hello”.reverse => “olleh” >> “ hello “.strip => “hello” >> “helloo”.chop => “hello” >> “hello”.include? “h” => true >> a = “ Hello “ => “ Hello “ >> a.strip => “Hello” >> a => “ Hello “ >> a.strip! => “Hello” >> a => “Hello” 3. Array Tipe data Array di Ruby hampir sama dengan tipe data array pada bahasa pemrograman lain umumnya. Tipe data Array di Ruby sama dengan tipe data list di Python. Untuk membuat suatu objek Array baru, Anda dapat menggunakan literal Array [] ataupun konstruktor Array.new. Isi array dapat berupa objek apapun baik angka, string, maupun objek lain termasuk objek array itu sendiri. Untuk mengakses elemen objek Array ini, kita menggunakan indeks di mana indeks awal dimulai dari 0 sampai panjang array – 1. Anda juga dapat menggunakan indeks negatif di mana indeks -1 berarti elemen terakhir , -2 berarti elemen kedua terakhir, dan seterusnya. Apabila kita mencoba mengakses elemen Array pada indeks yang di luar jangkauan, pernyataan tersebut tidak akan menyebabkan error seperti IndexError : list index out of range di Python, Ruby akan mengembalikan objek nil. Untuk mengubah isi array ataupun menambahkan data pada objek Array dengan indeks tertentu, kita bisa menggunakan statement biasa seperti array[indeks] = nilai baru. Apabila kita ingin membuat objek Array yang berisi string, akan repot sekali untuk menambahkan tanda kutip pada setiap elemen Array. Hal tersebut dapat diatasi dengan menggunakan prefiks %w. Untuk jelasnya, simak contoh berikut: >> a = [] => [] >> a = [1,2,”m”,[3,4,5]] => [1, 2, “m”, [3, 4, 5]] >> a[0] => 1 >> a[3] => [3, 4, 5] >> a[3][1] => 4 >> a[-1] => [3, 4, 5] >> a[6] => nil >> a[1] = 88 => 88 >> a => [1, 88, “m”, [3, 4, 5]] >> c = %w(Anto, Eric, Isabel) => [“Anto,”, “Eric,”, “Isabel”] Metode-metode pada kelas Array : length—untuk mengetahui ukuran array. push(nilai_baru)—untuk menambah data pada array. Data terbaru akan ditempatkan paling akhir. pop—mengembalikan data pada indeks terakhir array dan menghapus data pada indeks terakhir. reverse—membalik isi data array. sort—mengurut isi array secara ascending. >> a = [“a”,”b”,”c”] => [“a”, “b”, “c”] >> a.length => 3 >> a.push(“d”) => [“a”, “b”, “c”, “d”] >> a.pop => “d” >> a => [“a”, “b”, “c”] >> a.reverse => [“c”, “b”, “a”] >> a.sort => [“a”, “b”, “c”] 4. Hash Tipe data hash di Ruby sama dengan tipe data dictionary di Python. Untuk membuat objek hash yang baru, Anda dapat menggunakan literal hash {} ataupun konstruktor Hash.new. Lain halnya dengan array, untuk mengakses elemen objek Hash kita tidak menggunakan indeks seperti array. Kita dapat mendefinisikan kunci(key) yang unik untuk setiap elemen. Sama halnya seperti array, apabila kita mengakses elemen dengan key yang tidak tercantum di hash, maka akan mengembalikan nilai nil. >> alamat = { ?> “Amat” => “Kemanggisan Raya 50”, ?> “Budi” => “Sudirman 80”, ?> “Eric” => “Sandang 9A”, ?> “Melissa” => “Pandu 77” ?> } => {“Eric”=>”Sandang 9A”, “Budi”=>”Sudirman 80", “Amat”=>”Kemanggisan Raya 50", “Melissa”=>”Pandu 77"} >> alamat[“Eric”] => “Sandang 9A” >> alamat[“Dani”] => nil 5. Range Objek range di Ruby merupakan suatu barisan di mana terdapat nilai awal dan nilai akhir dari barisan tersebut. Objek Range ini sama dengan perintah range() di Python. Untuk membuat suatu objek Range, kita dapat menggunakan operator range ‘..’ dan ‘...’. Format ‘..’ akan menciptakan objek Range yang ikut menyertakan elemen terakhirnya, sedangkan format ‘...’ akan menghilangkan elemen terakhirnya. Range di Ruby tidak dianggap sebagai objek Array melainkan dianggap sebagai suatu objek Range sendiri. Untuk menjadikannya objek Array, Anda dapat menggunakan metode to_a . Untuk lebih jelasnya, perhatikanlah contoh berikut. >> a = (1..5) => 1..5 >> a.class => Range >> (1..5).to_a => [1, 2, 3, 4, 5] >> (1...5).to_a => [1, 2, 3, 4] Konversi tipe data Walaupun Ruby bersifat dynamic-typing, konversi tipe data ada kalanya perlu dilakukan untuk keperluan tertentu, misalnya kita hendak mengkonversi inputan user menjadi angka untuk dihitung ataupun mengkonversi angka menjadi string untuk dicetak. Untuk mempermudah pembacaan , kita akan memakai notasi Kelas#metode mengingat metode bisa sama namun efeknya berbeda untuk tiap kelas. Misalnya metode + apabila diaplikasikan pada angka dan string hasilnya pasti akan berbeda
|
0 komentar:
Posting Komentar