اگرچه این دو زبان برنامهنویسی اشتراکات زیادی با یکدیگر دارند، اما رویکردهای متفاوتی برای حل مسائل مختلف داشته و دو دنیای مجزا از یکدیگرند! نیاز به توضیح نیست که زبانهای Python و Ruby جزو محبوبترین زبانهای برنامهنویسی جهت توسعهٔ API ،Web Application و Web Service هستند و این در حالی است که از بسیاری جهات نیز شبیه به یکدیگر هستند (از لحاظ سینتکسی بسیار شباهت دارند؛ همچنین هر دو جزو زبانهای برنامهنویسی سطح بالا هستند که امکان برنامهنویسی شییٔگرا را به دولوپرها داده به علاوه اینکه از یکسری لایبرری استاندارد و همچنین پشتیبانی مداوم نیز برخورداند.) در عین حال، Python و Ruby یکسری تفاوتهای ساختاری نیز دارند به طوری که هر یک از آنها بر اساس فلسفهٔ ساختشان، روشها و استراتژیهای متفاوتی را برای حل مسائل مختلف در اختیار دولوپرها قرار میدهند که این به سابقهٔ این زبانها برمیگردد. اینکه کدامیک از آنها برای توسعهٔ وب مناسب میباشد، سؤالی است که باید با در نظر گرفتن نقاط ضعف و قوت هر یک از این زبانها پاسخ داده شود که در ادامه سعی میکنیم نگاهی اجمالی به ابعداد مختلف این دو زبان داشته باشیم.
پیش از این اشاره کردیم که فلسفهٔ ساخت این دو زبان در نحوهٔ بهکارگیری آنها تأثیرگذار است. در همین راستا، پیش از شروع نقد و بررسی آنها، توصیه میکنیم به مقالهٔ انتخاب یک زبان برنامهنویسی، فرهنگ سازمانی کسبوکار شما را دستخوش تغییر میسازد! مراجعه نمایید که در آن به بررسی این موضوع پرداختهایم که انتخاب یک زبان برنامهنویسی چگونه و به چه شکل میتواند Mindset (طرز تفکر) دولوپرهایش را دستخوش تغییر سازد!
نگاهی کلی به هر دو زبان
پایتون در یک فضای علمی و بر پایهٔ نمونهسازی طراحی شده است. از سوی دیگر، زبان برنامهنویسی روبی به جهت استفاده در توسعهٔ وب طراحی شده است و فریمورک محبوب Ruby on Rails که بر روی زبان برنامهنویسی روبی توسعه داده شده این زبان را به یکی از محبوبترین زبانها جهت پیادهسازی وب اپلیکیشنهای پیچیده تبدیل کرده است.
نگاهی کلی به زبان پایتون
این زبان برنامهنویسی رویکرد برنامهنویسی صریح را در طراحی خود لحاظ کرده است؛ به عبارت دیگر، هدف اصلی این است که همهچیز برای برنامهنویس واضح و آشکار باشد به طوری که در بیشتر مواقع صرفاً یک راه به عنوان بهترین راه برای انجام هر مسئله و تَسکی وجود دارد. در پاسخ به این سؤال که چه دلیل یا دلایلی منجر به اتخاذ چنین رویکردی شده است، بایستی گفت که فلسفهٔ اصلی شکلگیری پایتون شامل سه اصل کلیدی است که به ترتیب عبارتاند از:
1. صریح بهتر از ضمنی است.
2. ساده بهتر از پیچیده است.
3. پیچیده بهتر از بُغرنج است.
این اصول موجب شده تا این زبان برنامهنویسی به راحتی قابل خواندن و یادگیری باشد. همچنین برای کسانی که میخواهند تازه وارد عرصهٔ برنامهنویسی و کدنویسی شوند، میتواند یکی از بهترین گزینهها باشد (دورههای برنامهنویسی مقدماتی، جایی است که در حال حاضر پایتون در آن حضور چشمگیری دارد.)
این زبان بسیار ساده است و از طرفی نیز ساختار کدها کاملاً صریح و روشن است تا جایی که به راحتی میتوان گفت که هر چیز در این زبان از کجا آمده است و این موضوع به یافتن مشکلات کد و دیباگ کردن نرمافزار کمک شایانی میکند. علاوه بر این، ساختار سلسله مراتبی در کدنویسی Python کاملاً مشهود است و با استفاده از فضای خالی در اول خطوط، قسمتهای مختلف کد از هم قابلتشخیص هستند (برعکس بسیاری از زبانهای برنامهنویسی دیگر مانند Ruby که از کروشه و یا کلمات کلیدی خاص برای این کار استفاده میکنند.) به عنوان نمونه کد نوشته شده با زبان پایتون داریم:
x = 2
if x == 2:
print("x equals two!")
else:
print("x does not equal to two.")
به عنوان مثال، در زبان برنامهنویسی C جهت پیادهسازی شرط از کروشه استفاده میشود اما در زبان برنامهنویسی Python فقط کافی است از فضای خالی (Indentation) استفاده نمایید؛ به عبارت دیگر، تورفتگیهای کد نشاندهندهٔ بخشهای مختلف خواهند بود. همانطور که گفته شد، پایتون زبانی واضح است و همینجا میتوان گفت که رعایت اِسپِیسها و همچنین استفاده از تورفتگیها از چنین فلسفهای گرفته شده است (جهت شروع یادگیری این زبان، میتوانید به دورهٔ آموزش رایگان پایتون در سکان آکادمی مراجعه نمایید.)
نگاهی کلی به زبان روبی
در مقابل Python، زبان برنامهنویسی Ruby بر زبان انسان تأکید دارد! در واقع، سینتکس این زبان برنامهنویسی شباهت زیادی به زبان محاورهای داشته و مثلاً همچون زبان انگلیسی، از خوانایی بالایی برخوردار است و همین مسئله مورد استقبال و علاقهٔ بسیاری از برنامهنویسان (مبتدی و پیشرفته) قرار گرفته است. لازم به ذکر است که این زبان متودولوژیهای زیادی برای انجام هر کاری ارائه میدهد که این مسئله دست دولوپرها در توسعهٔ الگوریتمهای مختلف را کاملاً باز میگذارد؛ همچنین کیوردهای زیادی در آن وجود دارد که ممکن است باعث سردرگمی کاربران آن شود! به عنوان نمونه کد نوشته شده با زبان روبی داریم:
x = 2
if x == 2
puts "x equals two!"
else
puts "x does not equal to two."
end
برخلاف پایتون، در زبان برنامهنویسی روبی کدنویسی به اصطلاح بلوکی است. همچنین این زبان برنامهنویسی به معنای واقعی کلمه بر پایهٔ مفهوم شییٔگرایی (OOP) بنا شده است. به عبارت دیگر، در این زبان همهچیز به عنوان یک آبجکت در نظر گرفته میشود و هر یک از کلاسها و ماژولها نیز به عنوان یک آبجکت (شییٔ) معرفی شدهاند (حتی متغیرهای گلوبال نیز آبجکتی از نوع ObjectSpace هستند.)
قابلیت شییٔگرا محض در این زبان برنامهنویسی آن را قدرتمند و متمایز کرده است. در کنار این موضوع، روبی از ویژگیهای دیگری چون انواع دادههای قابلهَش و غیرقابلهَش، فِرگمِنتِیشن و همچنین استرینگهای تغییرپذیر پشتیبانی میکند.
طرفداران Ruby از این زبان برنامهنویسی به جهت ظرافت آن بسیار استقبال میکنند اما در عین حال، امکانات و انعطافپذیری جادویی آن میتواند موجب سخت شدن بررسی مشکلات احتمالی کدها و رفع آنها شود (در عین حال، شرکتهای هاستینگ محدودی در ایران وجود دارند که هاست اشتراکی آنها این زبان را ساپورت کند و برای پیادهسازی پروژهای با این زبان، میبایست یک VPS تهیه نمود.)
از دیدگاه انجمنها: ثبات در مقابل نوآوری
اگرچه امکانات و فلسفهٔ وجودی زبانهای برنامهنویسی به منزلهٔ مُحرک اولیهای برای دولوپرها در انتخاب زبانشان است، اما کامیونیتیها و انجمنهای پشتیبانی این زبانهای برنامهنویسی نیز میتواند یکی از مهمترین محرکها باشد که خوشبختانه هر دو زبان برنامهنویسی Python و Ruby از این مُهم برخوردارند.
در حال حاضر، انجمنهای پشتیبانی و انجمنهای تخصصی پایتون شامل کاربران بسیار زیاد لینوکسکار و همچنین جامعهٔ بزرگ دانشگاهیان بوده و در بسیاری از موارد مورد استفاده در ریاضیات و علوم مختلفی مثل هوش مصنوعی قرار میگیرد. این انجمنها از ثبات خوبی برخوردار هستند و به صورت روزافزون بر تعداد کاربران آنها اضافه میشود.
انجمنهای روبی نیز با تمرکز بر روی توسعهٔ وب در حال فعالیت هستند. این امر موجب شده که نوآوری و سرعت بیشتری نسبت به انجمنهای پایتون در این انجمنها به چشم بخورد (البته تمام این نوآوریها هنوز نتوانسته انجمنهای روبی را به حدی که انجمنهای پایتون مورد استفاده و استقبال قرار گرفتهاند تبدیل کند!)
نتیجهگیری نهایی
برای توسعهٔ وبسایت، زبان روبی فریمورک Ruby on Rails و پایتون فریمورک Django (تلفظ کنید جَنگو) را در اختیار دولوپرها قرار میدهد که هر دو از فریمورکهای قوی به شمار میآیند؛ بنابراین در حوزهٔ توسعهٔ وب هر دو زبان کار شما را به بهترین شکل ممکن راه خواهند انداخت و تصمیم شما کاملاً به تجربه، فلسفه و دید شما به برنامهنویسی برمیگردد.
اگر متمرکز بر روی ساخت برنامههای کاربردی تحت وب هستید، روبی در این زمینه محبوب و انعطافپذیر است و اگر هم علاقهمند به ساخت برنامههای تحت وب هستید، اما در عین حال دوست دارید یک زبان برنامهنویسی عمومیتر را نیز فرا گیرید، زبان برنامهنویسی پایتون پیشنهاد میشود. در پایان هم توصیه میکنیم به پادکستهای زیر در رادیو فولاستک مراجعه نمایید که میهمانان این دو اپیزود جزو برنامهنویسان باتجربهٔ پایتون و به خصوص روبی هستند:
- سمیر رحمانی: برنامهنویس ارشد و فعال جامعهٔ اپنسورس
- بهنام خانبیگی: از علاقمندان به دنیای فناوری، اپنسورس و گنو/لینوکس
حال نوبت به نظرات شما میرسد. آیا با نقاط ضعف و قوت اشاره شده در این نقد و بررسی موافق هستید؟ همچنین فکر میکنید این دو زبان قدرتمند چه تفاوتهای ساختاری دیگری با یکدیگر دارند؟ نظرات، دیدگاهها و تجربیات خود را با سایر کاربران سکان آکادمی به اشتراک بگذارید.