Saya baru saja selesai membaca bab Ruby dari buku 7 Bahasa dalam 7 Minggu . Selain dari beberapa gula sintaksis di sana-sini saya tidak bisa benar-benar melihat sesuatu yang tidak dapat dilakukan dengan C # dengan sintaksis yang sama. Saya mengerti bahwa kedua bahasa secara inheren berbeda, tetapi pertanyaan saya berkaitan dengan penggunaannya daripada desain.
Pertanyaan yang relevan membuat saya yakin Ruby menawarkan sedikit lebih banyak daripada C #:
- Mengapa programmer c # tidak tertarik pada ruby seperti halnya programmer java?
- Apakah blok kode Ruby sama dengan ekspresi lambda C #?
Saya hampir tidak bekerja dengan Ruby dan pemahaman saya tentang bahasa masih sangat terbatas, jadi mungkin seseorang yang bereksperimen dengan keduanya. NET 4.0 dan Ruby dapat menjawab dengan contoh konkret.
Tugas mana yang membutuhkan lebih sedikit kerja dengan Ruby daripada C # 4.0?
Ps: Pertanyaan ini ditutup pada StackOverflow karena terlalu subyektif dan argumentatif, meskipun memang menarik perhatian. Saya berharap itu akan digabungkan ke sini, tetapi saya hanya perlu memposting ulang.
sumber
Jawaban:
Ruby memiliki literal untuk Ekspresi Reguler dan sekelompok pintasan sintaksis yang berguna untuk pembuatan / interpolasi string. Jadi, ketika tugas Anda terutama terkait dengan mencampur bit dan string yang cocok, Ruby mungkin membutuhkan lebih sedikit pekerjaan yang signifikan (tetapi di luar skrip pembantu pendek saya harus mengakui bahwa saya menemukan ini menjadi situasi yang sangat langka).
Yang lebih relevan adalah fasilitas meta-programming Ruby. yaitu
#eval
,#define_method
dan teman-teman, yang dikombinasikan denganopen classes
,#include
dan#extend
memungkinkan Anda membuat banyak kode boilerplate saat runtime - Anda dapat berargumen, bahwa pembuat kode / penyihir memberi Anda beberapa manfaat yang sama, tetapi Anda harus hidup dengan - mungkin jumlah yang sangat besar - kode pelat ketel yang dihasilkan, dibandingkan dengan jumlah kode pemrograman meta yang relatif kecil yang harus Anda baca dan pahami.Kasus penggunaan umum untuk ini adalah, harus berinteraksi dengan semacam penyedia data dinamis di luar aplikasi Anda. Rails ActiveRecord adalah contoh yang bagus untuk itu.
Di masa depan ini mungkin sangat bermanfaat untuk mengembangkan GUI, karena Anda dapat menghasilkan metode yang menangani peristiwa dari elemen antarmuka pengguna dengan membuat metode selama runtime berdasarkan ID elemen UI, jenis, nilai input dll. (Seperti Objective-C pada steroid, mungkin kita akan melihat beberapa kekuatan ini ketika MacRuby jatuh tempo).
Garis antara penggunaan yang baik dan penyalahgunaan yang mengerikan dari fitur ini meskipun sangat sangat tipis, dan cenderung - dari pengalaman saya - menjadi penyebab utama sakit kepala di proyek-proyek besar Ruby (on Rails). Jadi berhati-hatilah saat Anda memutuskan untuk melepaskan Djinn dari botolnya :)
sumber