۱۳۸۸ اسفند ۱۷, دوشنبه

زبان برنامه نويسي روبي Ruby

روبی ( Ruby) یک زبان برنامه نویسی انعطافپذیر، پویا و شی‌گرا است. روبی سینتکس پرل و شی گرایی اسمال‌تاک را ترکیب می‌کند و در برخی امکانات با پایتون و لیسپ و Dylan و CLU مشترک است. روبی یک زبان مفسر single-pass است. پیاده سازی اصلی آن یک نرم افزار آزاد منتشر شده تحت یک مجوز متن‌باز(GPL) است.

تاریخچه

این زبان توسط یوکیهیرو ماتز ماتسوموتو ایجاد شد که کار بر روی روبی را در ۲۴ فوریه سال ۱۹۹۴ آغاز کرد و در سال ۱۹۹۵ آنرا بصورت عمومی منتشر کرد. روبی نام جواهر منتسب به ماه جولای است که ماه تأسیس یک کالج است. در اکتبر ۲۰۰۶ آخرین نسخه پایدار ۱٫۸٫۵ است. روبی نسخه ۱٫۹ (با یکسری تغییرات اساسی) نیز در حال توسعه است. در حال حاضر موج بحرانی در جامعه روبی بوجود آمده که دلیل آن وجود چند مشکل در پیاده سازی فعلی روبی است که راه حل مشخصی برای آنها مدنظر نیست. تیم اصلی توسعه روبی تلاشهای خود را بر روی پروژه YARV متمرکز کرده اند، اما پیشرفت آن کند است. در این اثنا چند پیاده سازی رقیب از روبی بوجود آمده اند، بخصوص جی روبی ( JRuby) که یک تلاش برای اتصال روبی به پلتفرم جاوا است و رابینیوس (Rabinius) که یک مفسر است که به‌عنوان یک زیر پروژه توسط ایوان فونیکس (Evan Phoenix) ایجاد شده توجه زیادی را در هفته های اخیر به خود جلب کرده است. با عرضه نسخه ۲٫۰ روبی و YARV در آینده باید دید که چه سرنوشت در انتظار روبی است.

فلسفه
ایده اصلی ماتز در طراحی روبی خوشنود کردن برنامه نویسان با کمتر کردن کارهای تکراری بود که آنها بایستی انجام میدادند، همراه با پیروی از اصول طراحی خوب رابط کاربر. او تاکید داشت که طراحی سیستم‌ها بایستی بر نیازهای انسان‌ها تاکید داشته باشند، نه نیازهای کامپیوتر.

گفته می‌شود روبی از اصل کمتر غافلگیر کردن (POLS) پیروی می‌کند، به این معنی که زبان اصولا قابل پیش بینی رفتار می‌کند و مانند همان چیزی که برنامه نویس انتظارش را دارد. جمله قبل از ماتز سرچشمه نگرفته است، و روبی بیشتر از الگویی پیروی می‌کند که عبارت “اصل عدم غافلگیری ماتز” میتواند آنرا بهتر بیان کند، و برنامه نویسان زیادی آنرا بسیار نزدیک به طرز تفکر خود یافتند.

معنی شناسی

روبی شی گرا است: هر بیت از داده یک شی است، حتی کلاسها و typeها که در بسیاری از زبانها به‌عنوان داده اصلی در نظر گرفته شده اند (مانندboolean، integer و “nil”). هر تابع یک متد ست. مقادیر نامگذاری شده (متغیرها) بهنوان یک ارجاع (reference) به اشیا در نظر گرفته می‌شوند، نه خود اشیا. روبی از ارث بری با مقدار دهی پویا (dynamic dispatch)، میکسین (mixin) و singleton methods (مربوط به و تعریف شده برای یک نمونه شی منحصر بفرد بجای تعریف شدن در داخل کلاس) پشتیبانی می‌کند. با این وجود روبی از ارث بری چندگانه پشتیبانی نمیکند، کلاسها میتوانند ماژولها را به‌عنوان mixinها وارد کنند. برنامه نویسی رویه ای (procedural) پشتیبانی می‌شود ولی هر چیزی که بصورت رویه ای در روبی (که خارج از محدوده یک شی خاص است) انجام شود در واقع در داخل یک نمنه شی بنام main انجام میگیرد. از آنجایی که این کلاس والد تمام کلاسهای دیگر است، تغییرات آن در تمام کلاسها قابل مشاهده است. روبی به‌عنوان یک زبان برنامه نویسی چند الگویی مطرح است: روبی به شما اجازه می‌دهد تا رویه ای برنامه نویسی کنید (تعریف توابع/متغیرها خارج از کلاسها آنها را جزئی از شی ریشه ’self’ قرار می‌دهد)، یا شی گرا (هر چیزی یک شی است) برنامه نویسی کنید، یا تابعی رفتار کنید. روبی از introspection و reflection و meta-programming و همچنین از نخها (threads) پشتیبانی بعمل میاورد. روبی دارای امکان dynamic typing است و از parametric polymorphism پشتیبانی بعمل میاورد. بر طبق لیست سئوالات متداول روبی “اگر شما پرل را دوست دارید، روبی را دوست خواهید داشت و با سینتکس آن خود را در خانه خود حس خواهید کرد. اگر شما اسمال تاک را دوست دارید، روبی را دوست خواهید داشت و با روال روبی خود را در خانه حس خواهید کرد. اگر شما پایتون را دوست دارید، شما ممکن است از اختلافات عظیم موجود مابین فلسفه طراحی روبی و پایتون بهانه گیری کنید و البته ممکن است اینطور نباشد.”

هیچ نظری موجود نیست:

ارسال یک نظر