یکی از محاسن ریلز (روبی) وجود کتابخانههایی مثل Active Admin است که کارش ایجاد یک کنترل پنل با کمترین میزان نیاز به کد نویسی میباشد. در واقع صفحات کنترل پنل در هنگام اجرا رندر میشوند. قبلاً هم چنین کاری را با سی شارپ و ASP.NET MVC کرده بودم که البته از نتیجه کار راضی نبودم و پروژه واقعاً شکننده شد. البته طراحی Active Admin بسیار زیباتر و بهتر از طراحی من است.
اما وقتی بخواهیم یک صفحه خاص (Customized) را با استفاده از Active Admin طراحی کنیم باید با مطالعه مستندات یاد بگیریم که چطور میشود این کار را انجام داد. دقت کنید که هیچ راه دیگری جز مطالعه سورس کتابخانه و یا مطالعه مستندات و آزمون و خطای زمان اجرا (Run-time) برای کار با یک کتابخانه در روبی وجود ندارد. در صورتی که در زبانهای استاتیک (مخصوصا اسکالا و پلی فریمورک) حداقل به ما اجازه میدهند از کامپایلر و یا بهتر از آن از IDE استفاده کنیم و بدون مطالعه مستندات از همان ابتدا بدانیم ورودی و خروجی متدها چه هستند یا در بدترین حالت حداقل نام متد چیست! و در نوشتن آن اشتباه نکنیم! در این شرایط به اندازی کافی کار و سر درگمی وجود دارد که اشتباه نوشتن نام یک فیلد یا یک متد هم بخواهد به آن اضافه شود.
به عبارت دیگر در روبی همه چیز قراردادی است و اگر کسی به سرش بزند که در یک کتابخانه کاری را کمی غیر از عرف انجام دهد، ما را به دردسر میاندازد. مگر اینکه به خوبی آن را مستند کرده باشد و البته ما هم به راحتی آن مستندات را پیدا کنیم.
شاید من برنامهنویس خنگی هستم ولی فقط برای ساخت فرم زیر حدود ۳ ساعت وقت صرف کردم؛
فرمی که فقط فیلدهای زیر را دارد؛
- سال (عدد)
- ماه (عدد)
- اطلاعات قبلی حذف شوند؟ (چک باکس)
- فایل (برای آپلود)
فایل CSV را از کاربر دریافت کرده و آن را در بانک اطلاعات وارد (Import) میکند.
با در نظر گرفتن اینکه در زبان روبی تازه کار هستم، اگر این کار را با اسکالا انجام میدادم (با فرض اینکه در اسکالا هم تازهکار بودم) قطعا زمان بسیار کمتری میبرد.
دینامیک بودن یک شمسیر دو لبه است و گاهی اوقات کارهای بسیار جالبی میتوان با آن انجام داد ولی تجربه به من نشان داده که پیادهسازی غلط زبانهای استاتیک تا امروز باعث این حس شده که آنها زبانهای دست و پا گیری هستند. اسکالا دست و پا گیر نیست!
با توجه به اینکه اسکالا به هیچ وجه زبان زیاده گویی (Verbose) نیست و یک برنامهنویس روبی بدون احساس اینکه دست و پایش را بستهاند میتواند با آن کار کند، تا اینجای کار یک امتیاز منفی برای روبی در مقابل اسکالا در نظر میگیرم.
روند ارزیابی ادامه دارد…