کدام زبان برنامهنویسی؟
من حالا بیشتر از سه سال است که فقط با 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
بنابراین اگر میخواهید یک زبان برنامهنویسی انتخاب کنید دو تا سوال از خودتان بپرسید: اول اینکه میخواهید چه کار کنید؟ این سوال مهمی است. اگر عاشق برنامهنویسی اندروید هستید بهتر است جاوا بخوانید. نمیگویم «لازم» است جاوا بخوانید چون با هر زبان دیگری هم میتوانید اپلیکیشن اندروید بنویسید. میگویم «بهتر» است چون هزینهی کمتری میپردازید.
سوال دوم اینکه با چه زبانی راحتتر هستید. کدام زبان به شما حس بهتری میدهد. حتی اگر نظر من را بخواهید میگویم سوال دوم از اولی هم مهمتر است. چون خدا را چه دیدید؟ شاید آنقدر عاشق اسمبلر شدید که دلتان خواست یک اپلیکیشن اندروید هم با آن بنویسید.
پینوشت: موارد خاص همیشه وجود دارد. گاهی واقعاً مجبور میشوید با یک زبان خاص کار کنید. گاهی هم مجبور میشوید یک زبان برنامهنویسی جدید طراحی کنید. این بحثاش فرق میکند.
از اینکه تجربیاتت رو به اشتراک گذاشتی سپاسگزارم. علاقهمند شدم به شخصه
مخصوصا وقتی فهمیدم ژاپنی ه و Boss Matsomuto طراحش بوده
منم خوندم متنت رو :) مثل همیشه جذاااااب :)
موفق باشی
متشکر :)
“او شش سال پیش برنامه نویسی را با نوشتن یک بازی ساده ی C++ شروع کرد ” اسنیک !! یادش بخیر، بعد اون گیم همه گیرداده بودند اسنیک بنویسن و البته با استفاده از روش ابداعی نمایش آرائه ی دوبعدی به عنوان صفحه ی نمایش که مخترعش من بودم :))))) . جدا یادش بخیر . موفق باشی و مشتاق دیدار .
آره یادمه :))
مرسی و همچنین
بسیار عالی، جذاب و تو فکر فرو برنده بود
چه چیزا :D
فقط php عزیزم
خیلى ممنون. نوشته جالب و مفیدى بود.
به نظر من هر زبان برنامه نویسى به آدم یا همون برنامه نویس یه دید جدید میده واسه حل کردن مساله که میشه به زبونهاى قبلى تعمیمش داد.
مرسی به خاطر معرفی منابع و راهنمایی
درسته . ولی جاوا فقط به آندروید ختم نمیشه
مثلا من الان هی این چیز تو ذهنمه که من وقتی جاوا رو تا یکی دو سال دیگه هم خوب کار بکنم، اونوقت بتونم برای ربات ها و حتی ماشین هم برنامه نویسی انجام بدم و احساس میکنم که علاقه ی شدیدی به این کار دارم.
البته برای جاوا برنامه های زیادی در نظر دارم.
جالب بود ، واقعاً از این سوال جایگزین و صحیح خوشم اومد.
آفرین.
جای مار، فیل و … توی اون قوطی ها خالیه!
درسته که گر تو منطق دانی، زبان آموزی سهل است. ولی این تجربهست که توی این حرفه حالیت میکنه مثل بقیه عناصر عالم، گل بیخار خداست و اونیم که پی کمال باید خودش با کمالات باشه. همونطور که گفتی زبانها صرفاً ابزارن، حالا حال خوش وقتی که این ابزار به دستت بشینه، هر چند باز هم در آخر هر کدوم هزینه های خودشون دارن و باز هم میرسیم سر همون جای اول :)
این میتونه یه تجربه لذت بخش برای آینده باشه — شاید شما شاید هم من
ببخشید یعنی مثلا با روبی و php هم میشه برای آندروید و ios برنامه نوشت؟
یه سوال دیگه. درگاه های پرداخت رو با ruby هم میشه به سایت ها متصل کرد؟
بله. امکانش هست. برای روبی یه فریمورک خوب هست به اسم Ruboto. برای php چیزی سراغ ندارم اما احتمالن اگر سرچ کنی پیدا میکنی.
درگاههای پرداخت رو هم به راحتی میشه با روبی نوشت.
دوست عزیزم با تشکر بابت اشتراک گذاری شدیدا به این برنامه علاقمند هستم دنبال مکانی هستم که نوع برنامه نویسی رو درست آموزش دهد اگر جایی ر ا می شناسید لطفا اطلاع رسانی کنید متشکرم
خیلی خوب بود
درود . شما تدریس خصوصی روبی هم انجام میدهید؟!
منتظر پاسخ شما هستم.
سپاس
سلام. نخیر دوست عزیز.
ولی یکی از بهترین منابع واسه یاد گرفتن روبی این وبسایته. امیدوارم به دردتون بخوره:
https://learnrubythehardway.org/
روبی واقعا سینتاکس زیبایی داره و به هیچ وجه شکی نیست داخلش اما با اومدن گزینه های جدید تر و قوی تر باید بگم که الان ریلز واقعا یک وصله ناجوره تو وب و روبی بیشتر توسط امنیت کارا استفاده میشه ،سرعت ror چنگی به دل نمیزنه و مشکل scale همچنان باقیه اما منم مثل شما واقعا عاشق سینتاکسش شدم و نمیشه دست کشید و دارم یاد میگیریم، حتما به nodejs و فریم ورکهاش هم سر بزنید پشیمون نمیشین
موافقم باهات مرتضی. هر روز تکنولوژی، فریمورک و آپدیتهای جدیدی رو میشن که کاراتر و بهینهترن.
ممنون از nodejs. حتما میرم سراغش.
اول از همه اگر دو سوم اول جولای باشی خیلی خوبی؟ تیر! مث من.
بسیار سوال خوبی پرسیدی منم تو یکی از مباحث وبلاگم دقیقا همین رو به مخاطبم گفتم.
خوشحال از این که روشنگر های توسعه دهنده روز به روز به تعدادشون افزوده میشه.
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