Apakah ada tugas yang membutuhkan kerja lebih sedikit dengan Ruby daripada C # 4.0?

8

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 #:

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.

Steven Jeuris
sumber
1
Apakah kompilasi menjadi salah satunya?
Andrew Grimm
Saya akan tertarik dengan pertanyaan ini, karena saya menganggap C # lebih cepat dan memiliki komunitas yang lebih besar daripada Ruby.
Andrew Grimm

Jawaban:

7

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_methoddan teman-teman, yang dikombinasikan dengan open classes, #includedan #extendmemungkinkan 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 :)

Alexander Battisti
sumber
Jawaban bagus! Manipulasi string yang lebih mudah masuk akal, Ruby on Rails menjadi kerangka kerja web kurasa. Saya harus membandingkan metaprogramming sekali untuk melihat apakah tujuan tertentu dapat dicapai lebih mudah di Ruby daripada di C #. Jika Anda kebetulan memiliki contoh beton yang menarik (tidak terlalu besar) itu akan menyenangkan. ; p
Steven Jeuris
Seperti yang dikatakan, pustaka / kerangka kerja ActiveRecord adalah contoh nyata.
Alexander Battisti