Kamis, 24 Maret 2011

Kemiripan dan perbedaan Ruby dengan C++

Kemiripan Ruby dengan C++

Sama seperti di C++, di Ruby,...
  • Anda punya banyak operator-operator yang sama (bahkan ::). Operator << juga sering digunakan untuk append elemen ke list. Tetapi perlu dicatat: di Ruby Anda tidak akan pernah menggunakan ->, di Ruby selalu menggunakan ..
  • Ada public, private dan protected. Namun perlu diperhatikan bahwa arti semantiknya mirip, namun tidak sepenuhnya sama dengan penggunaan C++.
  • Sintaks inheritance (penurunan kelas) sama satu karakter juga, tetapi menggunakan < bukan :.
  • Anda bisa menaruh kode Anda dalam “module”, mirip kalau di C++ Anda menggunakan namespace.
  • Ada juga Exception yang kurang lebih sama tetapi berbeda keyword.

Perbedaan-perbedaan Ruby dengan C++

Tidak seperti C++, di Ruby,...
  • Tidak ada reference secara eksplisit. Jadi setiap variabel di Ruby sudah otomatis dereference obyek tersebut. Apabila di C++ ada perbedaan antara orang.nama dengan orang->nama, di Ruby hanya ada orang.nama. Sintaks &orang juga tidak diperlukan di Ruby.
  • Obyek strongly tetapi dynamically typed. Jadi runtime-lah yang menentukan at runtime (disaat runtime) bahwa suatu pemanggilan metode berjalan atau tidak.
  • Konstruktor dinamakan initialize ketimbang nama kelas.
  • Semua metode selalu virtual.
  • Nama variabel (static) kelas selalu diawali dengan @</tt> (seperti <tt>@total_widget).
  • Anda tidak bisa langsung mengakses variabel member, semua akses ke variabel member public (kalau di Ruby dikenal sebagai atribut) dipanggil lewat metode.
  • Pakai self, bukan this.
  • Beberapa metode diakhiri dengan ’?’ atau ’!’. Sebetulnya tanda tanya dan tanda seru tersebut juga merupakan bagian dari nama metode.
  • Tidak ada multiple inheritance. Tetapi Ruby punya “mixin” (jadi Anda bisa “inherit” / menurunkan semua metode instan dari module).
  • Ada pengaturan penamaan (mis. nama kelas selalu diawali dengan huruf kapital, nama variabel lokal diawali dengan huruf kecil).
  • Buka dan tutup kurung untuk pemanggilan metode boleh dipakai boleh juga tidak (opsional).
  • Anda bisa membuka lagi kelas kapan saja dan menambahkan metode-metode ke kelas tersebut.
  • Tidak perlu C++ template (karena Anda bisa assign obyek apa saja ke suatu variabel, dan type akan diketahui ketika runtime). Juga tidak ada casting.
  • Iterasi dilakukan dengan sedikit berbeda. Di Ruby, Anda tidak menggunakan obyek iterator terpisah (seperti vector<T>::const_iterator iter) tetapi obyek Anda cukup melakukan mixin module Enumerator dan memanggil metode seperti obyek_saya.each.
  • Hanya ada dua container type, yaitu Array dan Hash.
  • Tidak ada konversi tipe dan typecasting. Dengan Ruby, Anda akan mengetahui kenapa hal tersebut tidak diperlukan.
  • Mendukung multithreading, tetapi di Ruby 1.8 masih “green thread” (diimplementasikan hanya dengan interpreter) yang didukung.
  • Library unit testing sudah standar bawaan di Ruby.


Tidak ada komentar:

Posting Komentar