تکرار مکررات در روبی؛ چرا؟

ruby

#1

سلام. من تازه شروع کردم که روبی رو یاد بگیرم و از وقتی در مورد کلیدواژه های روبی خوندم، یه سوالی به ذهنم اومده که ترجیح دادم از متخصصای روبی بپرسم؛
بعضی از کلیدواژه ها توی روبی هستن که واقعا کاربرد اونها رو درک نمیکنم، مثلا until که دقیقا مساوی ()! while هست! یا مشابه همین، unless که میشه ()! if خب چرا؟ چه چیزی در مورد این تفاوت عملکرد مهم بوده که سازندگان روبی تصمیم گرفتن این عبارت های (به تعبیر من که قبلا جاواسکریپت کار کردم :smile:) بی‌فایده رو اضافه کنن! حتی next و redo که عملکرد متفاوتی دارن و خیلی شبیه نیستن رو هم میشه راحت به جای هم استفاده کرد! چرا مثلا فقط یه چیزی مثل continue نزاشتن؟
از نگاه یه تازه‌وارد این کلیدواژه ها فقط کد رو سخت تر میکنن، از نظر شما چطور؟


#2

فکر می کنم بیشتر هدف خوانایی کد بوده اما ممکن اشتباه کنم.


#3

در هر زبانی هم syntactic sugar وجود داره و هم alias، بنظر من unless خیلی از if not taht یا if ! () خوانا تره. در ضمن unless اصلا جایگزین اونها نیست چون if negative … یک expression ترکیبی هست، مثل اینه که بگیم و قتی 4 وجود داره چرا ۲ + ۲ هم هست.
پس بیشتر برای خوانا بودن بوده‌ که گاهی باعث گیج شدن هم میشه، مثلا reduce و inject هم در روبی یک کارو انجام میدن که البته inject فقط یک alias هست. بعضی از alias ها هم انگار فقط به این دلیل وجود داره که بروز رسانی روبی برای کد های قدیمی ساده تر باشه.
متوجه اون قسمت که گفتین باید به جای redo و next فقط continue میزاشتن نشدم راستش، چرا باید این کارو میکردن؟

راستش هیچ کدام بنظر واقعا بی فایده نمیاد.


#4

نه منظورم این نبود که بی فایده ان
منظورم اینه که میشد کلیدواژه ها کمتر باشن تا موقع دیدن کد روبی نگیم «اَاَاَاَاَاَاَاَاَ چقدر فیچر دارهههه» :)) مثلا شما گو رو ببینید، کلا تمرکزش روی خوانایی کده، برای همین تعداد کلیدواژه هاش خیلی خیلی کمه!
کلا میگم هر کدوم اینها میتونستن به جای هم استفاده شن نه این که بی فایده باشن
بعدم بحث ۲+۲ و ۴ خیلی با این بحث فرق داره :no_mouth:


#5

طبق تجربه من روبی بیشتر سعی میکنه کد مثل متن کتاب خوانده بشه و به همین دلیل لغات کمک کننده به خوانایی داره
کد روبی در مقابل go بسیار راحت تر خوانده میشه


#6

نههه گفتی بی فایدست، دیگه نمیشه کاریش کرد :grin:
من سعی میکنم گو رو با روبی مقایسه نکنم چون دوتا موجود کاملا متفاوت هستند، اصلا تمرکز گو روی کوچک بودن زبان هست و قصدشون این بوده که تا جایی که میشه زود بشه یادش گرفت، اما موضوع سرعت یادگیری جور دیگه ای در روبی حل شده.
اما خب به هر حال هیچ چیزی بی اشکال نیست :hugs:


#7

روبی هزاران عیب داره ولی پیچیده بودن را نمیشه به روبی نسبت داد


#8

موافقم
کلا روبی زبون خیلی باحالیه (برعکس گو :smile:)
تا قبل روبی فکر میکردم جاوااسکریپت زبونیه که هر نوعی با هر چارچوبی که دلت میخواد میتونی باهاش برنامه بنویسی، حالا روبی انگار خیلی بیشتر این وضعیت توش مشاهده میشه، خیلی خوشم اومده ازش.


#9

نه
پیچیدگی نه
منظورم انجام کاری بود که اصلا لزومی نداره انجام بدی
من حیث المجموع، با حرف شما موافقم، مخصوصا کتابی شدن روبی
جالبی روبی اینه که بنیانگذارش کسی بوده که به طور نیتیو انگلیسی بلد نبوده، برای همین کلیدواژه ها یه جورایی برای غیر انگلیسی زبان ها آشنا ترن


#10

راستش گو هم ضعف های زیادی داره اما خب مدرنتره، من شخصا گزینه های زیاد دیگه ای دارم و گو در لیستم نیست مگر اینکه تصمیم گیری با من نباشه.


#11

من فکر نمیکنم js همچین خاصیتی رو به رحتی روبی داشته باشه، اما اجرای پرادایم های مختلف در روبی کار ساده ایه. در کنار این موضوع پیشنهاد می کنم که از کنوانسیون های جامعه پیروی کنید و ابزاری مثل rubocop میتونه کمک کنه که کد سالمتری بنویسید.