جستجو در محصولات

گالری پروژه های افتر افکت
گالری پروژه های PSD
جستجو در محصولات


تبلیغ بانک ها در صفحات
ربات ساز تلگرام در صفحات
ایمن نیوز در صفحات
.. سیستم ارسال پیامک ..
روبي؛ زبان برنامه‌نويسي مولد
-(4 Body) 
روبي؛ زبان برنامه‌نويسي مولد
Visitor 317
Category: دنياي فن آوري
هرچند سال يک‌بار يک اتفاق بزرگ در جهان برنامه‌نويسي، مسير برنامه‌نويسي را تغيير مي‌دهد. زبان برنامه‌نويسي روبي، يکي از اين اتفاق‌هاي بزرگ است.
روبي1 يک زبان ديناميک، همه‌منظوره، سطح بالا و شيي‌گرا2 است که دستورالعمل‌هاي آن از پرل3 و ديگر ويژگي‌هاي آن از اسمال‌تاک1 الهام گرفته شده است. روبي همچنين از ساختارگرايي و انعکاس پشتيباني مي‌کند. علاوه بر استفاده از سيستم ديناميک، مديريت حافظه در روبي کاملا خودکار است. بنابراين روبي از بسياري از جهات شبيه پيتون، پرل و ليسپ است.

پيدايش

روبي در اواسط دهه 1990 در ژاپن و توسط يوکي هيرو ماتسوموتو که به متز5 نيز معروف است پا به عرصه وجود گذاشت. ماتسوموتو در مورد نامگذاري روبي مي‌گويد: «روبي که در لغت به‌معناي ياقوت است سنگ ماه تولد يکي از همکاران من است.» روبي سنگ متولدين ماه جولاي است.
ماتسوموتو که خود به زبان‌هاي ليسپ، پرل، اسمال‌تاک و پايتون6 مسلط است، در مورد دليل پيدايش روبي مي‌گويد: «من بهدنبال يک زبان اسکريپت‌نويسي مي‌گشتم که از پرل قدرتمندتر و از پايتون شيي‌گراتر باشد. از آنجا که چنين زباني وجود نداشت، تصميم گرفتم زبان ايده‌آل خود را پديد آورم.» به اين ترتيب روبي عضو جديدي از خانواده پرل و پايتون به‌شمار مي‌رود.

امکانات

روبي داراي کتابخانه‌هاي گسترده‌اي است که به همه نيازهاي برنامه‌نويسان به‌خوبي پاسخ مي‌دهد. روبي همچنين کلاس‌هاي FTP، پشتيباني از CGI، پارسرهاي XML، کتابخانه‌هاي پايگاه‌هاي داده، GTK و Qt و حتي يک کتابخانه BTree برخوردار است. کتابخانه‌هاي روبي قابل اتصال به کتابخانه‌هاي پايتون هستند و اين مساله پايه قويتري را براي برنامه‌نويسي روبي فراهم مي‌کند. روبي توسط اکثر سيستم عامل‌ها از جمله لينوکس، Mac OS X، مايکروسافت ويندوز، ويندوز CE، و يونيکس پشتيباني مي‌شود. اجراي روبي روي يونيکس بهترين کارايي را دارد.
متغيرهاي روبي در پنج سطح جهاني7، محلي، کلاس، بلوک و نمونه8 تعريف مي‌شوند. پشتيباني از مديريت استثناها و عبارات منظم، جمع‌آوري اطلاعات زايد به‌طور خودکار، بازنويسي اپراتورها، قابل‌حمل بودن و برخورداري از کتابخانه‌هاي استاندارد بزرگ از مهم‌ترين ويژگي‌هاي روبي به‌شمار مي‌روند.
نسخه استاندارد روبي با استفاده از C نوشته شده است و طراحي آن به‌گونه‌اي است که تنها در يک مرحله تفسير مي‌شود. اکنون، نسخه‌هاي متعددي از زبان روبي وجود دارد که هريک با ديدگاهي خاص خود، روبي را پياده‌سازي کرده‌اند. مهم‌ترين اين نسخه‌ها عبارتند از: MRI، JRuby و IronRuby. پياده‌سازي موسوم به MRI9 متداول‌ترين نسخه مورد استفاده است و پس از آن JRuby قرار دارد که يک پياده‌سازي مبتني بر جاوا است. هر سه نسخه فوق کد را در زمان نوشته شدن کامپايل مي‌کنند. اين ويژگي از مهم‌ترين توانايي‌هاي اين سه نسخه از روبي است. زيرا برنامه‌نويس به‌سرعت از اشتباه خود آگاه مي‌شود.

اصول بنيادي

روبي از يک اصل ساده که اصل به‌حداقل رسانيدن غافلگيري (POLS) ناميده مي‌شود، پيروي مي‌کند: زبان برنامه‌نويسي بايد به‌نحوي رفتار کند که سردرگمي و غافلگيري برنامه‌نويس را به حداقل برساند. ماتسوموتو مي‌گويد: «روبي به‌منظور افزايش سرعت برنامه‌نويسان در توليد کد و تبديل برنامه‌نويسي به کاري جذاب و سرگرم‌کننده نوشته شده است. طراحي واسط کاربر روبي نيز از همين اصل پيروي مي‌کند.» او همچنين تاکيد مي‌کند که روبي نياز‌هاي انسان را بر نياز‌هاي رايانه مقدم مي‌شمارد.
به‌عقيده ماتسوموتو، مردم و به‌خصوص مهندسان رايانه، بر ماشين‌ها تمرکز مي‌کنند. آنها در هنگام طراحي سيستم‌ها به اين مي‌انديشند که چه کاري سيستم را سريع‌تر و بهره‌وري آن را بيشتر مي‌کند. اما آنچه که ما به آن نياز داريم وجود سيستم‌هايي است که براساس ساده‌تر کردن کار ما با ماشين‌ها يا آسان‌تر کردن برنامه‌نويسي طراحي شده باشند.

سرعت توسعه کد

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

ويژگي‌هاي انحصاري

برخي از ويژگي‌هاي روبي، در زبان‌هاي ديگر وجود ندارند. روبي از ساختار closure پشتيباني مي‌کند. در اين ساختار مسووليت هر بخش از کد بر عهده شيي مناسب قرار مي‌گيرد و کد حاصل کد خواناتري خواهد بود. نوشتن حلقه‌هاي for و while در روبي نادر است. همچنين پياده‌سازي ساختارهايي نظير "each" که احتمال رخداد خطا در آن کمتر است، به‌سادگي امکان‌پذير است.
در پروژه‌هاي پيچيده مساله قابليت نگهداري کد، به يکي از مسايل مورد بحث تبديل مي‌شود. طراحي شيي‌گراي مناسب به برنامه ساختار مناسب داده و کد برنامه را منطقي و واضح مي‌کند. آنچه که مسلم است، اين است که همه زبان‌هاي شيي‌گرا تا حدي از شيي‌گرايي پشتيباني مي‌کنند. به‌عنوان مثال زبان C++ بيشترين پشتيباني را از شيي‌گرايي به‌عمل مي‌آورد در حالي‌که جاوا در اين زمينه اندکي ضعيف‌تر عمل مي‌کند. اما روبي از نظر سادگي در نحوه استفاده و قابل پيش‌بيني بودن از همه زبان‌هاي ديگر پيشي گرفته است.

محدوديت‌ها

مانند همه زبان‌هاي ديگر، به روبي نيز انتقاداتي وارد است. سرعت اجراي کد روبي در مقايسه با بسياري از زبان‌هايي که کد را کامپايل مي‌کنند، پايين است. سرعت روبي با سرعت زبان‌هايي که از مفسر استفاده مي‌کنند و ديگر زبان‌هاي اسکريپت‌نويسي مانند پرل و پايتون قابل مقايسه است. تعريف متغيرها در روبي بسيار ساده است و تنها با تخصيص يک مقدار به متغير مي‌توان يک متغير جديد تعريف کرد. اشتباه‌هاي تايپي مي‌توانند سبب معرفي متغيرهاي تازه شده و منجر به بروز رفتارهاي غيرمنتظره شوند. به‌دليل ديناميک بودن انواع داده در روبي، اگر به متغيري مقداري از نوع داده‌اي ناهماهنگ نسبت داده شود، خطاهاي زمان اجرا رخ خواهند داد.
در برخي از زبان‌ها تبديل انواع به‌طور خودکار انجام مي‌شود، يا اشتباه در مقدار‌دهي توسط مفسر زبان به برنامه‌نويس اعلام مي‌شود اما روبي فاقد مکانيسمي براي رفع اين مشکل است. روبي از رشته‌هاي چندبايتي و نيز از يونيکد پشتيباني نمي‌کند. همچنين در حال حاضر سيستم روبي فاقد يک تعريف معين و استاندارد است.
ماتسوموتو اميدوار است که در آينده‌اي نه‌چندان دور مستندات مربوط به يک تعريف مشخص از روبي تکميل شوند و روبي استاندارد ايزو دريافت کند.

قالب کاري

قالب کاري روبي، روبي‌روي‌ريل10 يا به اختصار ROR ناميده مي‌شود. ROR يک قالب کد باز تحت وب است که در ميان توسعه‌دهندگان کدهاي تحت وب طرفداران زيادي دارد. ROR براي توسعه پروژه‌هاي کوچک و مبتني بر سيستم کلاينت-سرور مناسب است. با استفاده از ROR برنامه‌نويس تنها بايد براي موارد خاصي که در قالب پيش‌بيني نشده است کد بنويسد. به‌عنوان مثال اگر در برنامه کلاسي به‌نام "فروش" وجود داشته باشد، در پايگاه داده‌ها جدولي به همين نام ايجاد مي‌شود. برنامه‌نويس تنها زماني نياز به کدنويسي مجدد دارد که نام جدول به "کالاهاي فروخته شده" تغيير کند. به اين ترتيب استفاده از ROR حجم کد‌نويسي را کاهش مي‌دهد. از ديگر مزاياي ROR مي‌توان به‌وجود کتابخانه‌هاي گسترده جاوا اسکريپت و خروجي به فرم HTML و XML اشاره کرد. ROR در سال 2007 در در سازمان ثبت اختراعات آمريکا موسوم به USPTO به ثبت رسيده است.

پي نوشت :

1. Ruby
2. Object Oriented
3. Perl
4. Smalltalk
5. Matz
6. Python
7. Global
8. Instance
9. Matz’s Ruby Interpreter
10. Ruby on Rails

منبع:جام جم
Add Comments
Name:
Email:
User Comments:
SecurityCode: Captcha ImageChange Image