یکی از دوستان سوالاتی با مضمون php vs C# vs python (و ادامه این بحث) پرسید و من هم جوابش رو دادم. دیدم این سوالا زیاد پرسیده میشه گفتم این جا بذارم که از این به بعد من(یا شما) اگر دیدیم مناسبه به این جا ارجاع بدیم.
پرسش گر: php vs C# vs python
من:
اوایلی که وب تازه راه افتاده بود php یکه تاز میدون بود. زبان قوی و ساده(نسبت به بقیه رقیب هاش در زمان خودش) بود. بنابراین اکثر کسایی که می خواستن back end بزنن می رفتن سراغ php. کلی frame work در زبان php درست شد. مثل word press و joomla و ... . خلاصه خیلی community قوی ای داشت. ولی یه سری مشکلات داشت. سایت های خیلی بزرگ رو بخوای با php بزنی خیلی سخت می شه. چون ساختارش خیلی شی گرا نیست و باید کد رو وسط html بزنی و حالا اگر بخوای یه جایی از کد رو عوض کنی باید چک کنی که آیا جایی مشکلی پیش میاد یا نه(و چون کدها خیلی قالب مشخصی ندارن این کار خیلی راحت نیست) و ... .
بعد از مدتی، طبق معمول مایکروسافت که دید یه جایی نون هست یه framework برای back end نوشت تحت زبان C# به نام ASP.NET. چون زبان C# خیلی منظم تر و تمیز تر از php بود خیلی ها به سمت ASP.NET کشیده شدن. پروژه های بزرگ در C# خیلی تمیز تر بودن و ساختار C# شی گرا بود. خلاصه که مزیت های C# نسبت به php خیلی خوب بود و باعث شد خیلی ها از php به C# مهاجرت کنن.
تا اون زمان شرکت های زیادی(که دیگه بزرگ شده بودن) از اول کارشون رو با php شروع کرده بودن. وقتی یه شرکت بزرگ کارش رو با یه زبان برنامه نویسی شروع کرده، تغییر تمام کدهایی که زده از یک زبان به یه زبان برنامه نویسی دیگه، خیلی کار سخت، پرهزینه و زمان بری هست. علاوه بر اون باید به تمام نیروهای انسانی متخصصش آموزش بده که بتونه به اون زبان مهاجرت کنه. حتی اگر تصمیم بگیره این فرآیند رو تدریجی انجام بده، مشکلی که باهاش مواجه میشه تنظیم یه برنامه خوب برای مهاجرت تدریجی هست.
بنابراین شرکت ها فقط در صورتی مهاجرت می کردن که مطمئن میشدن سود مهاجرت به هزینه هاش می ارزه.
بعد از مدتی، امکان تولید زبان های برنامه نویسی high level تر فراهم شد. زبان هایی که float و int و double و ... براشون فرقی نمی کرد و تو فقط کافی بود بگی این متغیر یه عدد هست و بقیه چیزها رو به همون زبان واگذار می کردی. زبان هایی که سادگی و high level بودنشون کدها رو خیلی کوتاه تر می کرد و زمان develop کردن یه نرم افزار رو بسیار کاهش می داد. این زبان ها کم کم راهشون رو به back end وب سایت ها هم باز کردن. مثلا frame work های Ruby on Rails برای زبان Ruby و Django برای Python اومد. چون این زبان ها در ذات high level بودن، کدهای back end وبسایت ها هم خیلی کوتاه می شد و در نتیجه development وبسایت ها خیلی سریع تر میشد. در فضای کنونی خیلی از شرکت ها نیازهاشون در هفته تغییر می کنه بنابراین تو لازم داری وبسایت رو هر هفته تغییر بدی. حالا اگر تغییر دادن وبسایت برای پاسخ گویی به نیازهای جدید بیشتر از 1 هفته طول بکشه، اون شرکت اصلا نمی تونه با اون زبان کار کنه.
طبق معمول مهاجرت برای شرکت های بزرگ خیلی کار سختی بود و فقط شرکت هایی مهاجرت کردن که مطمئن بودن براشون سود خواهد داشت.
زبان های high level به خاطر ویژگی های خیلی خوبشون، community خیلی بزرگی پیدا کردن. این community ها از دانشمندان هوش مصنوعی تا پزشکان و ... تشکیل شده. بنابراین package های زیادی که در زبان هایی مثل C# و php و ... نیست در این زبان های پیدا میشه. در بین این زبان های high level، زبان python از بقیه community بزرگتری داره و کلی package برای کارهای academic و همین طور کارهای practical در فضای کاری برای اون وجود داره.
این بخشی از ماجرای php vs C# vs python بود. برای اطلاعات بیشتر می تونی search کنی.
البته در search به این خواهی رسید که زبان های C# و (احتمالا) php هم high level هستن. منظور من از high level اصطلاح high level در دنیای کامپیوتر نبود بلکه معنای لغوی high level بود.
پرسش گر: کدوم رو یاد بگیرم بهتره؟
من: الان شرکت های خیلی زیادی در ایران هستن که با php و ASP.NET کار می کنن ولی این شرکت ها همون شرکت هایی هستن که گفتم. اگر بخوای تو این شرکت ها استخدام بشی باید همون زبان و frame work ای که اون ها می گن رو بخونی(مگر این که قبول کنن یه گروه برای خودت توی اون شرکت داشته باشی و با زبان برنامه نویسی مورد نظر خودتون کار کنین) ولی اگر بخوای یه کاری برای خودت انجام بدی شدیدا ptyhon و django رو پیشنهاد می کنم. اگر یه کم search کنی میبینی google(و بسیاری از شرکت های بزرگ دیگه) هر جایی که امکانش بوده از python استفاده کرده(بعضی اوقات امکانش نیست. مثلا python از نظر سرعت اجرا 5 الی 6 برابر کند تر از C هست. حالا تو اگر بخوای یه کار حساس از نظر زمانی رو انجام بدی قطعا python گزینه مناسبی نیست.(هر چند کتابخونه هایی برای زبان python نوشته شدن که در نهایت چیزی که تو می خوای رو با یه سری برنامه به زبان C انجام میدن و خروجی رو بهت میدن) )
پرسش گر: برای یادگیری python و django چی کار کنم؟
من: برای یادگیری python می تونی از سایت tutoriaspoint استفاده کنی(آموزش پایتون در سایت tutorialspoint). این سایت آموزش های خیلی مختصر و مفیدی برای کلی موضوع داره. آموزش python اش به اندازه کافی خوبه. برای یادگیری django هم پیشنهاد می کنم به documentation خود django مراجعه کنی. واقعا documentation اش خوبه. یه بخش از سایت Django هست که خیلی مختصر و مفید یه نحوه develop و deploy یه سایت کوچیک رو مرحله به مرحله توضیح داده.(لینک این آموزش مرحله به مرحله). پیشنهاد می کنم از این جا شروع کنی.
پرسش گر: چه IDE ای رو پیشنهاد می کنی:
من:pycharm. می تونی از این لینک دانلودش کنی. این که چرا pycharm خوبه و ... رو دیگه امشب حوصله ندارم توضیح بدم. شاید وقتی دیگر.
پرسش گر: دستت درد نکنه
من: خواهش می کنم