Tiga Puluh Tujuh Alasan Mengapa Saya Cinta Ruby

Posted: February 5, 2007 in RUBY
Tags: , ,

Sumber Tulisan Asli Berbahasa Inggris oleh Hal Fulton: http://rubyhacker.com/ruby37.html. Tulisan berikut ini merupakan terjemahan dalam Bahasa Indonesia oleh Arie Kusuma Atmaja.

Disini saya tidak akan membuang-buang waktu dengan menceritakan sejarah bahasa Ruby. Bila Anda belum pernah mendengar tentang apa itu Ruby, silakan baca sendiri websitenya di http://www.ruby-lang.org, dan newsgroup di comp.lang.ruby. Bila sudah sudah mengetahui Ruby, Saya menghadirkan alasan-alasan mengapa saya mencintai bahasa pemrograman yang relatif baru ini untuk Anda. Anda dapat mengunjungi situs utama saya di http://www.rubyhacker.com jika Anda belum pernah kesana.

1. Ruby Berorientasi Objek. 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.

2. Ruby murni merupakan Bahasa Pemrograman Berorientasi Objek. Mengapa saya jadi berlebihan? Tidak juga. Yang saya maksud dengan mengatakan bahwa Ruby merupakan Bahasa Pemrograman Berorientasi Objek adalah semua di Ruby dianggap sebagai objek, termasuk tipe data primitif seperti string dan integer. Sehingga kelas-kelas wrapper seperti Java tidak diperlukan. Tambahan, bahkan konstanta pun diperlakukan sebagai objek, sehingga, misalkan, metode yang dibangkitkan lewat konstanta numerik itu merupakan receiver.

3. Ruby merupakan Bahasa yang dinamis. 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 (#ifdef), 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. Ruby merupakan bahasa interpreted. 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: Pertama, dan yang paling penting: Proses Pengembangan yang sangat cepat merupakan hal menguntungkan, ini dipicu oleh bahasa Ruby yang alami interpreted. Kedua, sebetulnya seberapa lambatkah yang dinamakan terlalu lambat? Apakah Anda sudah melakukan benchmark sebelum Anda berkata kalau Ruby itu lambat. Ketiga, Walau beberapa orang akan mengkritik saya, saya tetap akan mengatakan ini: prosesor-prosesor komputer setiap tahun berkembang semakin cepat. Keempat, jika Anda benar-benar membutuhkan kecepatan, Anda dapat menulis sebagian kode program Anda dalam bahasa C. Kelima, 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. Ruby mengerti Regexp. Kemampuan UNIX akan grep dan sed atau melakukan operasi cari-dan-ganti dengan vi 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 banyak platform. 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. Basis Ruby bersumber dari banyak sumber. 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: Pertama, Jangan menjadi penemu akan hal-hal yang sudah ada (jangan reinvent the wheel). Kedua, Jangan perbaiki hal-hal yang tidak rusak. Ketiga, 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 printf? Jangan khawatir, Anda bisa menggunakan printf. Anda mengerti Regexp di Perl? Bagus, berarti sebetulnya Anda hampir sudah belajar Ruby.

8. Ruby dikembangkan dengan inovatif. 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 (Catatan: 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. Ruby merupakan Bahasa Laras yang Sangat Tinggi (Very High-Level Language). Penggunaan terminologi Very High-Level Language 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. Ruby memiliki Garbace Collector yang pintar. Routines seperti malloc dan free adalah mimpi buruk. Anda bahkan tidak perlu memanggil Destructor. Cukup sudah saya katakan ini.

11. Ruby merupakan bahasa scripting. Anda jangan keliru dengan berpikir Ruby tidak sehebat bahasa scripting. Ruby bukan mainan. Ruby merupakan bahasa yang dikembangkan secara total yang dibuat mudah untuk melakukan operasi-operasi biasa di scripting seperti menjalan program-program eksternal, memeriksa sumber daya (resource) sistem, menggunakan pipe, menangkap output, dan lain sebagainya.

12. Ruby adaptif terhadap banyak hal. Ruby dapat melakukan hal-hal seperti yang dilakukan Kornshell dan dapat melakukan berbagai tugas seperti yang dilakukan program C. Anda dapat menulis sepuluh baris program Ruby untuk melakukan penugasan/task, atau membuat wrapper untuk program-program legacy? Ruby bisa. Anda ingin menulis program server web, program CGI atau program catur? Lagi-lagi Ruby bisa melakukan itu semua.

13. Ruby bisa multi thread. Dengan Ruby, Anda dapat menulis aplikasi multi threaded dengan API sederhana. Ya, bahkan di lingkungan MS-DOS.

14. Kode-kode penyusun Ruby dibuka / Ruby itu open-source. Anda ingin melihat kode-kode penyusun Ruby? Silakan saja. Ingin merekomendasikan patch?. Ya silakan. Anda ingin bergabung dengan komunitas pengguna Ruby (Rubyist) yang pintar-pintar dan saling membantu termasuk pencipta Ruby itu sendiri? Anda bisa mendapatkan itu semua dalam nuansa Ruby. (Tambahan penerjemah: Komunitas Rubyist Internasional dapat Anda temui di http://groups.google.com/group/comp.lang.ruby dan Komunitas Rubyist Indonesia dapat Anda temui di http://groups.yahoo.com/groups/id-ruby)

15. Ruby itu intuitif. 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).

16. Ruby memiliki mekanisme exception. Ruby mengerti exception, seperti Java dan C++. Dengan kata lain, ini berarti output (hasil return coding) tidak akan berantakan, hanya ada lebih sedikit nested if (bila harus ada), lebih sedikit logika sederhana dan penanganan error yang lebih baik.

17. Ruby memiliki kelas Array tingkat mahir. Dalam Ruby, Array itu dinamis, Anda tidak perlu mendeklarasikan seberapa besar Array sewaktu di compile, sebut saja seperti di Pascal. Anda juga tidak perlu mengalokasikan memori buat Array seperti di C, C++ ataupun Java. Array merupakan objek, jadi Anda tidak perlu mengatur-atur/menjaga-jaga ukuran Array, untuk berjalan dari awal hingga akhir secara virtual adalah hal yang mustahil dilakukan seperti ketika Anda dengan C. Anda ingin memproses array berdasarkan indeks? Berdasarkan elemen? memproses array terbalik? mem print array? Semua itu sudah tersedia metode metode Array nya. Anda ingin menggunakan array sebagai set, stack dan queue (antrian) ? Untuk operasi tersebut juga sudah ada disediakan metode-metodenya. Anda ingin menggunakan array sebagai lookup tabel? Eit nanti dulu, Itu sih pertanyaan menjebak, Anda tidak perlu repot-repot melakukan itu dengan array, karena kita punya hash untuk keperluan lookup tabel.

18. Ruby bisa di extend. 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. Ruby mendukung dokumentasi pemrograman. 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).

20. Ruby secara kreatif menggunakan tanda-tanda dan kapitalisasi. Suatu metode yang menghasilkan output Boolean (walau Ruby tidak menyebutnya dengan cara demikian) biasa diakhiri dengan tanda tanya, dan metode yang destruktif atau metode yang dapat mengubah data biasanya diberi nama dengan tanda seru diakhir metode. Sederhana, informatif dan intuitif. Semua konstanta, termasuk nama kelas, diawali dengan huruf kapital. Semua atribut objek dimulai dengan tanda @ (akeong). Penggunaan tanda-tanda dan kapitalisasi ini merupakan konsep tua dari pragmatic programmer tanpa harus membuat mata lelah dan pusing kepala.

21. Tidak ada reserved words. Kita diperbolehkan menggunakan identifier yang disebut “reserved word” sepanjang parser tidak menganggapnya ambigu. Ini benar-benar seperti menghirup udara segar.

22. Ruby punya iterator. 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 memiliki fitur-fitur sekuriti. Ruby meminjam konsep Perl yang menawarkan tingkat kontrol (tingkat paranoid?) dengan variabel $SAFE. Terutama berguna untuk program-program CGI yang ingin orang-orang lakukan untuk mengcrack server web.

24. Ruby tidak punya pointer. 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!)

25. Ruby memperhatikan sampai hal detil. Sinonim dan alias berkaitan erat. Anda tidak bisa mengingat yang mana size yang mana length untuk besar ataupun panjang suatu string atau array? Ya dua-duanya memang bisa jalan. Untuk range, ada begin dan end, ada juga first dan last? Ya terserah Anda mau pakai yang mana. Anda menyebut banyak index dengan indices, tapi saudara kembar Anda menyebutnya indexes? Ya memang indices ataupun indexes dua-duanya bisa dipakai.

26. Ruby memiliki sintaks yang fleksibel. Kurung buka kurung tutup pada pemanggilan metode biasanya bisa dihilangkan, sama juga seperti koma di antara parameter-parameter. Quote gaya Perl juga bisa diberlakukan di array string tanpa perlu tanda quote dan koma. Keyword return bisa dihilangkan.

27. Ruby kaya akan library. 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. Ruby punya debugger. Di dunia yang sempurna, kita tidak akan perlu debugger. Tapi dunia ini tidak sempurna.

29. Ruby bisa digunakan secara interaktif. 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. Ruby itu informatif. Tidak ada keyword yang boros seperti begin, then setelah if, do setelah while 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. Ruby itu ekspresif. Anda dapat dengan mudah mengatakan hal-hal seperti x = if a then b else c end

32. Tersedia sintaks yang memudahkan di Ruby. Jika Anda ingin meng iterate array x dengan mengatakan for a in x, Anda bisa. Jika Anda ingin mengatakan a += b daripada a = a + b, Anda juga bisa. Kebanyakan operator di Ruby sebetulnya merupakan metode yang singkat, nama-namanya intuitif dan sintaksnya nyaman.

33. Ruby punya overloading operator. 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 +=

34. Ruby memiliki aritmetika integer yang presisi. Siapa yang peduli dengan short, int, long? Gunakan saja Bignum. Akui saja, Anda selalu ingin mencari factorial dari 365. Dan sekarang Anda bisa melakukan itu dengan mudah di Ruby.

35. Ruby punya operator eksponensial. 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.

36. Ruby memiliki penanganan string yang hebat. Jika Anda ingin mencari, mengganti, mengatur format, membatasi, interprose ataupun token, semua itu bisa Anda lakukan dengan metode-metode Ruby yang sudah built-in. Kalau tidak ada, Anda tinggal membuatnya dengan mudah sesuai kebutuhan.

37. Ruby memiliki sedikit pengecualian pada aturan-aturan Ruby. Sintaks dan Semantik Ruby lebih konsisten ketimbang kebanyakan bahasa-bahasa lain. Setiap bahasa memiliki keanehan, dan setiap peraturan punya pengecualian, tetapi Ruby memiliki lebih sedikit pengecualian dari peraturan-peraturan daripada yang Anda harapkan.

UPDATE Senin, 6 Juni 2011

Supaya hidup Anda seimbang, saya juga menyarankan Anda membaca link Mengapa Saya Membenci Ruby.

Comments
  1. muftisip says:

    Saya pengin belajar ruby. Tapi ada 1 alasan belum menggunakan ruby: Belum pernah nemu buku (yang kertas) berbahasa indonesia.

    muftisip

    Harap bersabar ya, doakan saja semoga Rubyist Indonesia sehat, tidak selalu sibuk dan kecapekan, sehingga nanti selesai menulis buku Ruby nya.

  2. prayogi says:

    pencerahan… ini saya baca waktu jam 12 malem lho! jd agak juling juga mata saya. btw this article very enlightening.. THx

    prayogi

    You’re welcome and enjoy :-)

  3. Yang dimaksud dengan Principle of Least Astonishment, atau yang diterjemahkan dengan perasaan “sedikit terpaksa” oleh Arie, itu adalah result coding yang hasilnya tidak membuat terkaget-kaget. Misalkan begini:
    Ini diambil dari arsip milis ruby-talk dari inbox thunderbird ArieKeren, kita langsung ambil contohnya si Matz aja langsung yg ngejawab. Untuk versi “Live” nya bisa search sendiri langsung di internet / di milis ruby-talk search aja keyword judul subjek imelnya Class#name=

    email sebelumnya

    Hi,

    In message “Re: Class#name=”
    on Fri, 23 Jun 2006 06:42:09 +0900, Joshua Haberman writes:

    |Is there any reason that Class#name= shouldn’t exist?

    Modules and classes are named by the constant referencing it. If you
    want to name an anonymous module, see the following code:

    mod = Module.new
    NewModule = mod
    p NewModule.name # => “NewModule”

    matz.

    lalu email berikutnya lagi.

    Hi,

    In message “Re: Class#name=”
    on Fri, 23 Jun 2006 18:12:27 +0900, “Robert Dober” writes:

    |irb(main):003:0> A = mod
    |=> A
    |irb(main):004:0> mod.name
    |=> “A”
    |most surprising
    |irb(main):005:0> B = mod
    |=> A
    |irb(main):006:0> mod.name
    |=> “A”
    |even more surprising
    |irb(main):007:0> B.name
    |=> “A”
    |??????
    |irb(main):008:0>
    |
    |Well this kind of shocks me, is there an idea behind this which I am
    |missing?

    The module referenced from A and B are the same object (mod). If same
    module reports different name depends on how it is called, I would
    surprise VERY MUCH. For your note, Ruby does not promise that you
    don’t surprise. It’s just impossible. It tries its best to do
    reasonable job as much as it can.

    matz.

    Semoga contoh diatas bisa jadi klarifikasi atas terjemahan yang termasuk sulit mencari padanan kata nya dalam Bahasa Indonesia. FYI buat Arie yg juga mampu berbicara bahasa asing lain selain Bahasa Inggris tentu tidak terlalu fanatik untuk tidak menerjemahkan sesuatu apapun itu kedalam bahasa lain.

  4. biji says:

    buset rajin koding nih kayanya.. sampe 37 boooooo

    biji

    :-) Halo biji, padahal yang Hal Fulton bilang ke saya (lewat jalur pribadi) dengan rendah hati begini, “Andaikan saya lebih tau tentang Ruby”

  5. alfaroby says:

    wah… jadi penasaran nih….

    alfaroby

    Kalau penasaran bisa langsung tinggal klik coba-coba aja sama irb di browser ….

  6. bee says:

    Ruby adalah salah satu bhs pemrograman yg bagus, itu saya akui. Tapi alasan2 di atas terlalu global, kurang spesifik pada apa2 yg benar2 hanya dimiliki oleh Ruby dan benar2 gak dimiliki oleh bhs pemrograman lain. Kesannya jadi terlalu me-lebih2-kan Ruby (pengkultusan?) yg bisa berdampak negatif, baik pada programmer yg menggunakan Ruby maupun Ruby itu sendiri. :)

    > 1. Ruby Berorientasi Objek. … Tidak seperti C++, Perl 5, dan bahasa-bahasa pemrograman lain, Ruby didesain berorientasi objek dari awal.

    Hari ini, kecuali C, nyaris semua bhs pemrograman mendukung OOP. Namun demikian, suatu bhs yg sejak awal dirancang mendukung OOP gak serta merta lebih baik dari bhs lain yg awalnya gak mendukung OOP (tapi kemudian mendukung OOP). Teknologi itu berkembang, termasuk bhs pemrograman.

    > 2. Ruby murni merupakan Bahasa Pemrograman Berorientasi Objek. … Tambahan, bahkan konstanta pun diperlakukan sebagai objek, sehingga, misalkan, metode yang dibangkitkan lewat konstanta numerik itu merupakan receiver.

    OOP hanya salah satu teknik atau metode pemrograman. Apakah OOP pasti terbaik untuk menyelesaikan segala masalah pemrograman? Anda pasti tau jawabannya adalah tidak. Apapun yg berlebihan pasti gak baik. Dlm beberapa hal, saya lihat Ruby abusing OOP concept. OOP gak pernah berarti SELURUHnya atau SEGALA HAL harus menjadi object. ;)

    > 3. Ruby merupakan Bahasa yang dinamis. … 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.

    Jelas, bukan hanya Ruby yg merupakan bhs dinamis. Kemampuan2 seperti itu dimiliki juga oleh bhs lain, sekedar menyebut contoh, ada RTTI di pascal, ada reflector di C#, dlsb.

    > 4. Ruby merupakan bahasa interpreted. 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: Pertama, dan yang paling penting: Proses Pengembangan yang sangat cepat merupakan hal menguntungkan, ini dipicu oleh bahasa Ruby yang alami interpreted. Kedua, sebetulnya seberapa lambatkah yang dinamakan terlalu lambat? Apakah Anda sudah melakukan benchmark sebelum Anda berkata kalau Ruby itu lambat. Ketiga, Walau beberapa orang akan mengkritik saya, saya tetap akan mengatakan ini: prosesor-prosesor komputer setiap tahun berkembang semakin cepat. Keempat, jika Anda benar-benar membutuhkan kecepatan, Anda dapat menulis sebagian kode program Anda dalam bahasa C. Kelima, 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.

    Disini Anda membuat rancu antara kemampuan Ruby SAAT INI dgn kemungkinan pengembangan Ruby di MASA DEPAN. Jika kita ingin membuat aplikasi yg sifatnya time critical SAAT INI menggunakan Ruby, pasti sulit. Walaupun di masa depan (ntah kapan) hal itu bisa jadi mudah. Jika bhs lain yg compiled SAAT INI, dgn logika yg sama, bukan gak mungkin akan jadi interpreted di MASA DEPAN. Scr gak langsung uraian Anda di atas malah menunjukkan kelemahan2 Ruby. ;)

    > 5. Ruby mengerti Regexp.

    Duh, rasanya nyaris semua bhs pemrograman mendukung regex deh. :P

    > 6. Ruby bisa dijalankan di banyak platform.

    Apa ada bhs yg bener2 hanya tersedia di satu platform? Bahkan VB produk microsoft pun punya “kembaran” di Linux. Compatibility itu isu lain, yg penting bhs dasarnya sama, learning curve-nya tentu gak terlalu sulit.

    > 7. Basis Ruby bersumber dari banyak sumber.

    Saat ini nyaris gak ada teknologi yg bener2 baru. Teknologi sekarang merupakan perbaikan dan pengembangan teknologi sebelumnya.

    > 8. Ruby dikembangkan dengan inovatif.

    Ini penilaian subyektif kalo gak ada dasar/acuan pengukurannya. Apa itu inovatif? ;)

    > 9. Ruby merupakan Bahasa Laras yang Sangat Tinggi (Very High-Level Language).

    Ini juga subyektif. Apa itu “very high language”? Bhs langitan? Apa dasarnya? Verbosity? Structural? Gak jelas.

    > 10. Ruby memiliki Garbace Collector yang pintar.

    Apa yg dimaksud dgn “GC yg pintar”? GC, mau pintar atau tidak, pasti punya kelemahan yg paling mendasar. Dalam beberapa kasus, programmer malah ingin menghindari GC. Gak selamanya GC itu bagus. ;)

    > 15. Ruby itu intuitif. 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).

    Anda mau bikin program (dgn algoritma) atau main tebak2-an? :D Sepakat sama GERO KEROKA, Anda disini terkesan “maksa”. :P

    Dan seterusnya, dan lain sebagainya. Saya bisa membantah tiap point yg Anda klaim sbg kelebihan Ruby (yg membuat Anda mencintainya). Bahkan dgn alasan yg sama dgn yg Anda tulis, saya bisa ganti Ruby dgn bhs lain. Intinya, okelah Anda menyukai Ruby, tapi sebagai programmer seharusnya Anda tetap bisa berpikir secara logis dan obyektif. Pasti Ruby punya banyak kelebihan, tunjukkanlah itu. Tapi Ruby juga pasti punya kelemahan, akuilah itu pula, instead of cari alasan yg terkesan “maksa”. :)

    Pertanyaan saya… dgn bhs apakah compiler Ruby dibuat? ;) Saya pribadi memberikan nilai plus buat bhs pemrograman yg mampu meng-compile compiler-nya. Krn itu bukan hal mudah, baik teknik kompilasinya maupun kemampuan bhs itu mendukung kompilasi bhs-nya sendiri. :)

  7. @bee,

    alasan2 di atas terlalu global, kurang spesifik pada apa2 yg benar2 hanya dimiliki oleh Ruby dan benar2 gak dimiliki oleh bhs pemrograman lain.

    Salam kenal, terima kasih telah bertandang dan berbagi komentar.

  8. irfanade says:

    aduh thank u bgt coz gW lg buat makalah

  9. MAHYUDI says:

    Tolong dong saya pengen belajar ruby on Rails. Bisa bantu nga cariin bukunya yang berbahasa indonesia.
    Tolong beri info nyha yaa ke emailku: didi_uin@yahoo.co.id

  10. arfan says:

    @mahyudi: di ilmukomputer.com ada tuh temen saya (Fajar Muharandy) yang pernah nulis buku ruby dan juga ruby on rails

  11. @mahyudi, baca komentar nomor 1.

    Sependek yang saya tau sampai detik ini masih belum ada buku berbahasa indonesia tentang ruby maupun ruby on rails yang berkualitas.

  12. ruby untuk desktop contohnya ada ndak ya boss?

    @Lukman

    sini

  13. program aplikasi apa saja yang bisa dibuat oleh ruby ?
    bisa berikan contohnya ?

tinggalkan feedback konstruktif atau lebih baik diam

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s