کدام زبان برنامه‌نویسی؟

ruby in a jar
نویسنده:
پدرام بهروزی

من حالا بیشتر از سه سال است که فقط با PHP کار کرده‌ام. از frameworkها، CMSها و eCommerceهای زیادی استفاده کرده‌ام و تا الان زندگی راحتی داشته‌ام (به جز آن روزهای سیاهی که با بیتریکس کار می‌کردم البته). حالا دارم Ruby را یاد می‌گیرم. به این خاطر که در شرکت چند پروژه‌ی روبی داریم و من باید خودم را به آنها برسانم. خب انگیزه‌ی خیلی بدی نیست. اما راستش خیلی هم قوی نیست. مگر PHP چه اشکالی دارد؟

حالا سه هفته از شروع یاد گرفتن روبی گذشته و من با خودم فکر می‌کنم: «خدایا! چرا زودتر با روبی آشنا نشده بودم؟»

با مسرت تمام یک روز کامل کلیدواژه‌های گوگل من اینها بودند: «Ruby vs PHP»، «چرا روبی از PHP بهتر است؟»، «اگر روبی نبود چه اتفاقی برای دنیا می‌افتاد؟»، «چرا روبی را از دبستان به بچه‌ها یاد نمی‌دهند؟»

خب دلیلش این است که روبی دو تا مزیت بزرگ دارد: اول اینکه ژاپنی است و دوم اینکه Ruby سنگ تولد متولدین جولای است و بله. من هم متولد جولای هستم.

The glowing ruby shall adorn,

Those who in July are born;

شروع کردم به یاد گرفتن روبی. rubymonk.com و ruby.learncodethehardway.org منابعم بودند. روی یک پروژه‌ی دستگرمی هم کار کردم. یک وبلاگ ساده. در این حد که بتوان یک پست را ایجاد، تغییر و حذف کرد. به طرز معجزه‌آسایی همه چیز خیلی راحت انجام شد و من خیلی خوشحال بودم. حتی تا مرز نوشتن یک فریم‌ورک جدید پیش رفتم. بنابراین طبیعتاً تصمیم گرفتم راجع به برتری‌های روبی نسبت به PHP بنویسم. که چه مزیت‌هایی دارد و چه امکاناتی در اختیار برنامه‌نویس قرار می‌دهد. اما وقتی جستجو می‌کردم تقریباً ناامید شدم. هرکسی عقیده‌ی خودش را داشت. هر زبانی را که جستجو کنید یک عده دارند راجع به این حرف می‌زنند که چرا آن زبان بهترین زبان دنیا است. روبی، پایتون، PHP، حتی زبان‌هایی مثل Haskell.

Yukihiro Matsomuto یا Matz، طراح زبان روبی در مصاحبه‌ای می‌گوید می‌شود به زبان‌های برنامه‌نویسی از دو منظر نگاه کرد. یکی اینکه چه کاری می‌شود با آن زبان انجام داد و دیگری اینکه استفاده از آن زبان چه حسی به ما می‌دهد. می‌گوید طبق نظریه‌ی کامل بودن تورینگ هر کاری که یک ماشین کامل تورینگ بتواند انجام دهد، ماشین کامل تورینگ دیگر هم می‌تواند انجام دهد، اما با هزینه‌ای دیگر. مثلاً با اسمبلر می‌توانید هرکاری بکنید اما دیگر هیچکس نمی‌خواهد با اسمبلر برنامه بنویسد. چون هزینه‌اش خیلی زیاد است.

پس با روبی یا پایتون یا PHP و یا هر زبان برنامه‌نویسی دیگر، هر کاری که فکرش را بکنید می‌توانید انجام دهید و این سوال که کدام زبان از بقیه بهتر است کمی نامربوط است. سوال درست‌تر این است: برای انجام دادن کار X کدام زبان مناسب‌تر است؟ مثلاً برای نوشتن برنامه‌ی دسکتاپ ویندوز، احتمالاً، مناسب‌ترین گزینه سی‌شارپ است. برای نوشتن یک اپلیکیشن اندروید، مناسب‌ترین زبان جاوا است.

اما من نمی‌خواهم بگویم روبی برای چه کاری مناسب‌تر از بقیه‌ی زبان‌هاست. می‌خواهم از دیدگاه دومی که متز مطرح کرد به روبی نگاه کنم. اینکه روبی چه حسی به آدم منتقل می‌کند.

جواب این است: روبی به طرز فکر آدم بیشتر شبیه است.

این را دیوید هاینمیر هانسون (dhh) سازنده‌ی Ruby on Rails می‌گوید و من هم همین را می‌خواستم بگویم اما نمی‌دانستم چطور باید در یک جمله خلاصه‌اش کنم. البته این جمله یک گزاره‌ی علمی نیست. منظور از «آدم» در اینجا بدون شک یک برنامه‌نویس است. معمارها، نویسنده‌ها، چشم‌پزشک‌ها، کفاش‌ها و هزار نوع آدم دیگر، طور دیگری فکر می‌کنند و روبی (و هر زبان برنامه‌نویسی دیگر) برای آنها مفهومی ندارد. پس جمله را اصلاح می‌کنم: روبی به طرز فکر یک برنامه‌نویس بیشتر شبیه است.

تقریباً بقیه هم همین را می‌گویند. می‌گویند وقتی یک متد که با روبی پیاده‌سازی شده را می‌خوانند انگار دارند فکر می‌کنند. انگار دارند شبه‌کد برنامه را روی کاغذ می‌نویسند. به نظر من، یعنی برای من، این بهترین چیز است. باعث می‌شود زبان من و زبان کامپیوترم به هم شبیه‌تر باشند.

گفتم تقریباً بقیه هم همین را می‌گویند و مهم است که توضیح دهم چرا تقریباً. چون هیچ چیزی در دنیا برای همه ایده‌آل نیست. این را متز توی همان مصاحبه هم می‌گوید. یک برنامه‌نویس از یک زبان انتظاراتی دارد و برنامه‌نویس دیگر انتظاراتی دیگر. من دوست دارم برنامه‌ام را اینطوری بنویسم:

puts “Hello wordl!”

اما هیچ بعید نیست کسی دوست داشته باشد همین برنامه را با INTERCAL اینطوری بنویسد:

DO ,۱ <- #۱۳
PLEASE DO ,۱ SUB #۱ <- #۲۳۸
DO ,۱ SUB #۲ <- #۱۰۸
DO ,۱ SUB #۳ <- #۱۱۲
DO ,۱ SUB #۴ <- #۰
DO ,۱ SUB #۵ <- #۶۴
DO ,۱ SUB #۶ <- #۱۹۴
DO ,۱ SUB #۷ <- #۴۸
PLEASE DO ,۱ SUB #۸ <- #۲۲
DO ,۱ SUB #۹ <- #۲۴۸
DO ,۱ SUB #۱۰ <- #۱۶۸
DO ,۱ SUB #۱۱ <- #۲۴
DO ,۱ SUB #۱۲ <- #۱۶
DO ,۱ SUB #۱۳ <- #۱۶۲
PLEASE READ OUT ,۱
PLEASE GIVE UP

بنابراین اگر می‌خواهید یک زبان برنامه‌نویسی انتخاب کنید دو تا سوال از خودتان بپرسید: اول اینکه می‌خواهید چه کار کنید؟ این سوال مهمی است. اگر عاشق برنامه‌نویسی اندروید هستید بهتر است جاوا بخوانید. نمی‌گویم «لازم» است جاوا بخوانید چون با هر زبان دیگری هم می‌توانید اپلیکیشن اندروید بنویسید. می‌گویم «بهتر» است چون هزینه‌ی کمتری می‌پردازید.

سوال دوم اینکه با چه زبانی راحت‌تر هستید. کدام زبان به شما حس بهتری می‌دهد. حتی اگر نظر من را بخواهید می‌گویم سوال دوم از اولی هم مهم‌تر است. چون خدا را چه دیدید؟ شاید آنقدر عاشق اسمبلر شدید که دلتان خواست یک اپلیکیشن اندروید هم با آن بنویسید.

پی‌نوشت: موارد خاص همیشه وجود دارد. گاهی واقعاً مجبور می‌شوید با یک زبان خاص کار کنید. گاهی هم مجبور می‌شوید یک زبان برنامه‌نویسی جدید طراحی کنید. این بحث‌اش فرق می‌کند.

درباره نویسنده : پدرام بهروزی

ac6e2a5660f311cc8dcc74177450db85
از سال ۸۵ برنامه‌نویسی را با نوشتن یک بازی ساده با ++C شروع کرد. به زبان PHP مسلط است و با سیستم‌های مدیریت محتوای زیادی مثل دروپال، وردپرس، بیتریکس و مجنتو آشنایی دارد. درحال حاضر در سارینا با Magento، Laravel و Ruby on Rails کار می‌کند. عاشق سرک کشیدن در تکنولوژی‌های جدید، خواندن کتاب و موسیقی راک است.

هم‌رسانی در:

۲۲ دیدگاه

  1. eae83d49e0b2bb50b6a65536223708d5
    هادی کلانتری ۹ تیر در ۱۱:۵۳ - پاسخ

    از اینکه تجربیاتت رو به اشتراک گذاشتی سپاس‌گزارم. علاقه‌مند شدم به شخصه
    مخصوصا وقتی فهمیدم ‌ژاپنی ه و Boss Matsomuto طراحش بوده

  2. 5f561b4c6fff4f8e227386d7e7526ec3
    علی چلمقانی ۱۰ تیر در ۱۳:۱۵ - پاسخ

    منم خوندم متنت رو :) مثل همیشه جذاااااب :)
    موفق باشی

  3. a79599585da0676eeb28a13b1dcadc76
    نوید کوهی ۱۱ تیر در ۰۷:۲۰ - پاسخ

    “او شش سال پیش برنامه نویسی را با نوشتن یک بازی ساده ی C++ شروع کرد ” اسنیک !! یادش بخیر، بعد اون گیم همه گیرداده بودند اسنیک بنویسن و البته با استفاده از روش ابداعی نمایش آرائه ی دوبعدی به عنوان صفحه ی نمایش که مخترعش من بودم :))))) . جدا یادش بخیر . موفق باشی و مشتاق دیدار .

  4. aacfa0f67d4b1dd16c6610e38b1c737a
    Steve Jobs ۱۱ تیر در ۱۷:۵۲ - پاسخ

    بسیار عالی، جذاب و تو فکر فرو برنده بود

  5. 83bfa30cd5505677bb468b9b10267768
    asdasd ۱۱ تیر در ۲۱:۰۹ - پاسخ

    چه چیزا :D
    فقط php عزیزم

  6. fab225c185e94010a8c2a0874156d317
    مجید ۱۲ تیر در ۱۰:۴۴ - پاسخ

    خیلى ممنون. نوشته جالب و مفیدى بود.
    به نظر من هر زبان برنامه نویسى به آدم یا همون برنامه نویس یه دید جدید میده واسه حل کردن مساله که میشه به زبونهاى قبلى تعمیمش داد.

  7. bb948f53a083e94583578fdab24a394f
    مرثا بنی اسدی ۱۵ تیر در ۰۹:۲۱ - پاسخ

    مرسی به خاطر معرفی منابع و راهنمایی

  8. c640dd96db5b4711243e7e10c9264db3
    مهران رسولیان ۱۷ تیر در ۲۱:۳۲ - پاسخ

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

  9. 479e5bb9bc05451ed831f514364b6564
    پیمان گلدسته ۳۰ تیر در ۱۸:۱۱ - پاسخ

    جالب بود ، واقعاً از این سوال جایگزین و صحیح خوشم اومد.
    آفرین.

  10. 1dbae67987b0f8555448aca81c0dee44
    ناصر ۱۳ مرداد در ۱۴:۰۹ - پاسخ

    جای مار، فیل و … توی اون قوطی ها خالیه!
    درسته که گر تو منطق دانی، زبان آموزی سهل است. ولی این تجربه‌ست که توی این حرفه حالیت میکنه مثل بقیه عناصر عالم، گل بی‌خار خداست و اونیم که پی کمال باید خودش با کمالات باشه. همونطور که گفتی زبان‌ها صرفاً ابزارن، حالا حال خوش وقتی که این ابزار به دستت بشینه، هر چند باز هم در آخر هر کدوم هزینه های خودشون دارن و باز هم میرسیم سر همون جای اول :)

  11. 5310f5cffc96fc21eb41a874eb2f7100
    شاهین اردانه کلانتر ۸ شهریور در ۱۳:۰۰ - پاسخ

    این میتونه یه تجربه لذت بخش برای آینده باشه — شاید شما شاید هم من

  12. 35f69b96cbd6628ce2f1d0802b7da68a
    علی عسگری ۹ شهریور در ۲۲:۳۲ - پاسخ

    ببخشید یعنی مثلا با روبی و php هم میشه برای آندروید و ios برنامه نوشت؟
    یه سوال دیگه. درگاه های پرداخت رو با ruby هم میشه به سایت ها متصل کرد؟

    • ec1637655c00f5d94e5362b0e37a6ccd
      پدرام بهروزی ۱۰ شهریور در ۰۴:۴۱ - پاسخ

      بله. امکانش هست. برای روبی یه فریم‌ورک خوب هست به اسم Ruboto. برای php چیزی سراغ ندارم اما احتمالن اگر سرچ کنی پیدا می‌کنی.
      درگاه‌های پرداخت رو هم به راحتی میشه با روبی نوشت.

  13. 350a4148f3c94c56a0927dd0526aee9c
    علیرضا مرادی ۲۵ دی در ۱۵:۵۶ - پاسخ

    دوست عزیزم با تشکر بابت اشتراک گذاری شدیدا به این برنامه علاقمند هستم دنبال مکانی هستم که نوع برنامه نویسی رو درست آموزش دهد اگر جایی ر ا می شناسید لطفا اطلاع رسانی کنید متشکرم

  14. bc2238721bfb43c706faba60f887b906
    بهرنگ ۲۱ مهر در ۱۸:۰۷ - پاسخ

    خیلی خوب بود

  15. d3a80cdd03de1d7c6bfa5d76b579f794
    nima ۱۱ آذر در ۰۰:۴۵ - پاسخ

    درود . شما تدریس خصوصی روبی هم انجام میدهید؟!
    منتظر پاسخ شما هستم.
    سپاس

  16. ce0d4580393659b3afeb6ac40b304d06
    morteza ۲ فروردین در ۰۳:۱۶ - پاسخ

    روبی واقعا سینتاکس زیبایی داره و به هیچ وجه شکی نیست داخلش اما با اومدن گزینه های جدید تر و قوی تر باید بگم که الان ریلز واقعا یک وصله ناجوره تو وب و روبی بیشتر توسط امنیت کارا استفاده میشه ،سرعت ror چنگی به دل نمیزنه و مشکل scale همچنان باقیه اما منم مثل شما واقعا عاشق سینتاکسش شدم و نمیشه دست کشید و دارم یاد میگیریم، حتما به nodejs و فریم ورکهاش هم سر بزنید پشیمون نمیشین

    • ec1637655c00f5d94e5362b0e37a6ccd
      پدرام بهروزی ۲ فروردین در ۰۷:۴۲ - پاسخ

      موافقم باهات مرتضی. هر روز تکنولوژی، فریم‌ورک و آپدیت‌های جدیدی رو میشن که کاراتر و بهینه‌ترن.
      ممنون از nodejs. حتما میرم سراغش.

  17. dec56e275e5ffb4e23f9ba4f5ad9c6e7
    A1 ۱۲ فروردین در ۲۳:۰۲ - پاسخ

    اول از همه اگر دو سوم اول جولای باشی خیلی خوبی؟ تیر! مث من.

    بسیار سوال خوبی پرسیدی منم تو یکی از مباحث وبلاگم دقیقا همین رو به مخاطبم گفتم.
    خوشحال از این که روشنگر های توسعه دهنده روز به روز به تعدادشون افزوده میشه.
    http://4xmen.ir/%D9%85%D9%82%D8%A7%DB%8C%D8%B3%D9%87-c-%D8%A8%D8%A7-delphi-%D8%A8%D8%B1%D8%AA%D8%B1%DB%8C-%D9%87%D8%A7-%D9%85%D8%B2%D8%A7%DB%8C%D8%A7-%D9%88-%D9%85%D8%B9%D8%A7%DB%8C%D8%A8/#more-1192

ارسال دیدگاه