Movatterモバイル変換


[0]ホーム

URL:


Pergi ke kandungan
WikipediaEnsiklopedia Bebas
Cari

Ruby

Daripada Wikipedia, ensiklopedia bebas.
Ruby
Paradigmaberbilang paradigma (kefungsian, imperatif, logik, berorientasi objek (berasaskan kelas))
Muncul pada1995
Direka olehYukihiro Matsumoto
PembangunYukihiro Matsumoto (antara lain)
Lepasan stabil1.9.0 (25 Disember2007)
Disiplin penjenisandinamik ("itik")
Pelaksanaan utamaRuby,JRuby
DipengaruhiSmalltalk,Perl,LISP,Scheme,Python,CLU,Eiffel,Dylan
MempengaruhiGroovy
OSSilang pelantar
LesenLesen Ruby danGPL
Laman webwww.ruby-lang.org

Ruby ialah dicipta sebuahbahasa pengaturcaraanberorientasi objek. Ia menggabungkan sintaks yang diilhamkan dariPerl dengan ciri-ciri orientasi objek yang menyerupaiSmalltalk, dan juga berkongsi beberapa ciri denganPython,Lisp,Dylan danCLU. Ruby merupakan sebuahbahasa tertafsir laluan tunggal. Pelaksanaan utamanya ialahperisian bebas yang diagihkan di bawah sebuah pelesenansumber terbuka.

Sejarah

[sunting |sunting sumber]

Bahasa ini dicipta olehYukihiro Matsumoto (digelar sebagai "Matz"), yang mula membina Ruby pada 24 Februari1993, dan kemudiannya menerbitkannya kepada orang awam pada tahun1995. Beliau memberi nama "Ruby" sempenahari jadi seorang rakan. Setakat September2006, versi stabil yang terakhir ialah 1.8.5. Ruby 1.9 (dengan beberapa perubahan besar) pula sedang dalam pembinaan.

Falsafah

[sunting |sunting sumber]

Tanggapan utama Matz menganai reka bentuk Ruby ialah untuk menjadikan para pengaturcara gembira dengan mengurangkan bebanan kerja yang perlu mereka hadapi, iaitu dengan menuruti prinsip-prinsip reka bentuk antara muka pengguna yang baik. Beliau menegaskan bahawa reka bentuk sistem perlu menekankan kepentingan manusia, bukannya komputer:

Bisanya orang, terutamanya jurutera komputer, memfokuskan mesin. Mereka fikir, "Dengan melakukan ini, mesin ini akan berjalan lebih pantas. Dengan melakukan ini, mesin ini akan berjalan dengan lebih berkesan. Dengan melakukan ini, mesin ini akan menjadi itu dan ini." Mereka memfokuskan mesin. Tetapi sebenarnya kita perlu memfokuskan manusia itu sendiri, tentang bagaimana manusia mengambil berat dengan melakukan pengaturcaraan atau mengendalikan aplikasi mesin. Kitalah ketua. Mereka [mesin] adalah hamba.

Ruby dikatakan mengikutprinsip sedikit kejutan(prinsiple of least surprise), iaitu bahasa tersebut menuruti tanggapan si pengaturcara. Pepatah tersebut tidak berasal dari Matz dan, umumnya, Ruby lebih mengikut paradigma yang diistilahkan sebagai "Matz's Least Surprise", walaupun ramai pengaturcara menganggap bahawa ia juga mendekati model mental mereka.

Semantik

[sunting |sunting sumber]

Ruby ialah berorientasi objek: setiap satu data merupakan objek, sampaikan kelas dan jenis yang ditakrifkan bahasa lain sebagai primitif (seperti integer, boole, dan "nil"). Setiap fungsi ialah kaedah. Pemboleh ubah sentiasa merujuk kepada objek, tetapi pemboleh ubah itu sendiri bukannya objek. Ruby menyokongpewarisan denganhantaran dinamik (dynamic dispatch),campuran (mixin) dankaedah unsur tunggal (singleton method). Walaupun Ruby tidak menyokongpewarisan berbilang (multiple inheritance), kelas (class) boleh mengimport modul sebagai campuran.

Ruby telah disifatkan sebagai sebuahbahasa pengaturcaraan berbilang paradigma: ia membenarkan pengaturcaraan bertatacara (mentakrifkan fungsi atau pembolehubah di luar kelas membuatkan mereka sebahagian daripada akar, objek 'self'), dengan perorientasian objek (semua benda ialah objek) ataupengaturcaraan kefungsian (ia mempunyaifungsi awanama,penutupan, danpelanjaran (continuation); semua kenyataan ada nilainya, dan fungsi memulangkan penilaian yang terakhir). Ia menyokongkaji diri,pantulan danmetapengaturcaraan, di sampingbebenang berasaskan pentafsir[1]. Ruby menampilkanpenjenisan dinamik serta menyokongpolimorfisme parameter.

MenurutFAQ Ruby,[2] "Jika anda sukakanPerl, anda akan sukakan Ruby dan rasa tidak asing dengan sintaksnya. Jika anda sukakanSmalltalk, anda akan tidak akan rasa janggal dengan semantiknya. Jika anda sukakanPython, anda mungkin atau mungkin tidak akan tidak selesa dengan perbezaan yang amat besar dari segi rekaan antara Python dan Ruby/Perl."

Ciri-ciri

[sunting |sunting sumber]
  • berorientasi objek
  • empat peringkat lingkungan pemboleh ubah: global, kelas, ciptaan(instance), dan tempatan.
  • tanganan pengecualian(exception handling)
  • pelelar(iterator) dan tutupan(closure) (dengan memindahkan blok kod)
  • ungkapan nalar(regular expression) yang menyerupai Perl pada peringkat teras
  • pembeban pengoperasi(operator overloading)
  • kutipan sampah(garbage collection) automatik
  • mudah alih
  • pemuatan dinamik terhadap perpustakaan DLL pada hampir semua platform
  • introspeksi,pantulan(reflection), danpengaturcaraan meta(meta-programming)
  • pustaka piawai(standard library) yang agak luas
  • menyokong suntikan tanggungan(dependency injection)
  • penyelanjaran(continuation) dan penjana(generator)

Interaksi

[sunting |sunting sumber]

Agihan rasmi Ruby juga memasukkan "irb", sebuahpentafsirbaris perintah (command-line) saling tindak yang boleh digunakan untuk menguji kod secara serta-merta. Demikian adalah salah satu contoh bagi sebuah sesi bersama atur cara saling tindak ini:

$ irbirb(main):001:0> puts "Hello, Dunia"Hello, Dunia=> nilirb(main):002:0> 1+2=> 3

Kritikan

[sunting |sunting sumber]

Antara kritikan paling utama dalam Ruby ialah tiada sokongan untukUnicode, walau bagaimanapun ia memiliki sedikit sokongan untukUTF-8.

Sintaks

[sunting |sunting sumber]

Sintaks bagi Ruby adalah hampir sama dengan Perl dan Python. Takrifan kelas dan kaedah adalah menggunakan isyarat kata kunci. Berbeza dengan Perl, pemboleh ubah tidak semestinya didahulukan dengan sigil. (sigil boleh digunakan untuk mengubah semantik lingkupan pemboleh ubah tersebut) Perbezaan yang paling ketara dengan C dan Perl ialah kata kunci biasanya digunakan untuk mentakrifkan bok kod logikal, tanpa menggunakan braket. Pemisah baris adalah signifikan dan dianggap sebagai pengakhir penyataan (noktah bertindih boleh juga digunakan sebagai alternatif). Berbeza dengan Python, engsot tidak signifikan.

Sila lihat contoh-contoh kod yang membayangkan sintaks Ruby di bahagianContoh rencana ini.

Contoh

[sunting |sunting sumber]

Beberapa kod asas bagi Ruby:

# Semua dalam Ruby, termasuk harafiah, adalah objek-199.abs# 199"ruby sangat menarik".length# 19"Ali".index("i")# 2"Selamat pagi".split(//).uniq.sort.join# "Saegilmpt"

Kelas

[sunting |sunting sumber]

Kod dibawah ini mentakrifkan sebuah kelas dinamakan Person. Sebagai tambahan untuk pengawalan, konstruktor lazim untuk mencipta objek baru, ia mempunyai dua kaedah: satu untuk menggantikan operator pembeza <=> (supayaArray#sort boleh menyusun mengikut umur) dan satu lagi untuk menggantikan kaedahto_s (supayaKernel#puts boleh memformat outputnya). Di sini, "attr_reader" adalah satu contoh bagipengaturcaraan meta dalam Ruby: "attr" mentakrifkan kaedahgeter (getter) danpenentu (setter) untukpemboleh ubah ciptaan (instance variable); "attr_reader": hanya kaedah geter. Juga, penyataan terakhir yang dinilai dalam sebuah kaedah ialah nilai yang dikembalikan, oleh itu penggunaan 'return' yang eksplisit boleh diabaikan.

classOrangdefinitialize(nama,umur)@nama,@umur=nama,umurenddef<=>(orang)@umur<=>orang.umurenddefto_s"#{@nama} (#{@umur})"endattr_reader:nama,:umurendgroup=[Orang.new("Ali",20),Orang.new("Abu",63),Orang.new("Ahmad",16)]putsgroup.sort.reverse

Paparan yang muncul daripada yang di atas adalah tiga nama dalam susunan umur menurun:

Abu (63)Ali (20)Ahmad (16)

Rujukan

[sunting |sunting sumber]
  1. ^Green threads
  2. ^Ruby FAQ

Pautan luar

[sunting |sunting sumber]
Diambil daripada "https://ms.wikipedia.org/w/index.php?title=Ruby&oldid=4476506"
Kategori:

[8]ページ先頭

©2009-2025 Movatter.jp