تصور کنید بعد از ده سال برنامهنویسی در داتنت بنا به دلایلی تصمیم میگیرید از داتنت مهاجرت کرده و زبان برنامهنویسی جدیدی را انتخاب کنید. با توجه به پارامترهایی که در ادامه توضیح داده خواهند شد کدام زبانها مناسبتر هستند؟
قبل از شروع باید توضیح بدهیم که چرا میخواهیم از ویندوز و داتنت کوچ کنیم و به جای دیگری برویم. هم ویندوز و هم داتنت خیلی خوب و کارا هستند اما مشکل اینجاست که برای یک شرکت نوپا یا startup یا برای یک تیم یا پروژه کوچک زیادی بزرگ هستند. یعنی overhead زیادی دارند. به عنوان مثال نصب و config و backup/restore ابزار TFS خیلی سنگینتر از git است. کلاً زبانهایی مثل C# و Java درست مثل MS SQL و Oracle بیشتر مناسب کارهای سازمانی و Enterprise هستند تا کارهای کوچک و متوسط. در عوض دنیای Open Source سازگاری بیشتری با دنیای کارآفرینی و شرکتهای نوپا و دانش بنیان دارند.
به همان علتی که داتنت و C# مناسب تیمهای کوچک و شرکتهای نوپا و کارآفرین نیستند، ویندوز هم برای آنها مناسب نیست و گریزی نیست جز مهاجرت به لینوکس. لینوکس در حالی که کارایی، پایداری و رواج کمتری دارد در عوض کم و بیش رایگان تمام میشود و با اکو سیستم Open Source که به حال شرکتهای کوچک و کارآفرین خوشایندتر است سازگاری بیشتر دارد. در این مورد را بخوانید. در این نوشته به جز موارد بالا به مشکل اخلاقی و امنیتی استفاده از ویندوزها و ابزارهای ویندوزی کرک و قفل شکسته و غیر قانونی هم اشاره شده است.
پارامترهای زیادی وجود دارند که باید در انتخاب زبان برنامهنویسی جدید با توجه به شرایط توضیح داده شده به آنها اهمیت داده شود. همانطور که پیشتر عنوان شد مهم است که برنامهنویسی در محیط لینوکس انجام میشود. پس زبان برنامه نویسی، فریمورکها و ابزارهای آن باید سازگاری خوبی با لینوکس داشته باشند. اکو سیستم آن باید سازگاری خوبی با Open Source و دنیای سورس باز داشته باشد. یکی از دلایل علاقه به Open Source وجود communityهای گستردهتر کد بازها و دیگری رایگان بودن عمده ابزارهای Open Source است. نمیخواهیم درگیر Java و C# شویم، چون قرار نیست Application های سازمانی بنویسیم.حتی المقدور از ابزارهای کوچک و ساده استفاده خواهیم کرد. مثلاً به جای MS SQL یا Oracle از MySQL و PostgeSQL استفاده میکنیم.
در دسترس بودن برنامهنویسهای زبان انتخابی و فناوریهای مربوطه اهمیت زیادی دارد ولی اولویت شماره یک نیست. کیفیت زبان برنامهنویسی و ابزارها و فناوریهای آن مهمتر است.جدید بودن هم مهم است. مثلاً پرل را بیشتر به خاطر قدیمی بودن آن کنار می گذاریم. از زبان انتخابی بیشتر برای توسعه تحت وب استفاده میشود. پس احتمال انتخاب C/C++ خیلی کم است. البته امکان نوشتن برنامه در محیطهای غیر وب هم یک مزیت به شمار میآید.
قبول داریم که هر زبان برنامهنویسی و ابزاری مخصوص یک موقعیت و مشکل ویژه است. اما به هر حال منابع ما نیز محدود است و نمیتوانیم به طور همزمان از چند زبان برنامهنویسی استفاده کنیم. پس حتیالمقدور زبان و فناوری انتخابی بایستی بتواند بیشتر نیازمندیهای ما را پوشش دهد. انتخاب زبان برنامهنویسی برای یک شرکت نوپا، کارآفرین، دانش بنیان انجام میشود. پس باید مقتضیات خاص اینطور شرکتها نیز در نظر گرفته شود. کمبود منابع و امکان outsource کردن بخشهایی از فعالیتهای توسعه نرمافزار به Freelancerها و به طور کلی افراد بیرون از شرکت از آن موضوعات هستند. مثلاً Freelancerهای ایرانی بیشتر PHP بلد هستند. پس انتخاب زبان برنامهنویسی غیر از PHP میتواند احتمال پیدا کردن Freelancer مناسب را کاهش دهد. برای آگاهی نسبی از زبانهای برنامهنویسی رایج در جامعه کدباز ایرانی به مراجعه کنید.
زبان فارسی و به طور کلی ملزومات خاص ما در ایران را نباید فراموش کنیم. تقویم شمسی و دروازههای پرداخت بانکهای ایرانی دو تا از معروفترین نیازمندیهای ما در ایران هستند. زبانهای پر استفاده مثل C# و Java و PHP از این منظر غنی هستند. اما قبل از انتخاب زبان جدید یا باید از وجود آنها مطمئن شد یا اینکه مطمئن بود که نوشتن آنها چندان سخت نیست. صادرات نرمافزار چه به شکل رسمی و شرکتی و چه به شرکت تیم و انفرادی و freelancer چندان همهگیر نیست. اما به هر حال وجود دارد. پس در انتخاب زبان برنامهنویس باید این موضوع را هم در نظر گرفت. به عبارت دیگر باید ببینیم زبانهای برنامهنویسی مورد پذیرش در بازار خارج از کشور کدامها هستند.
با توجه به جمیع این پارامترها و با توجه به بررسیهای متعدد و نظر خواهیهای گوناگون به نظر میرسد دایره انتخاب ما محدود است به Ruby و Python و Node.js و Scala. اینجا فقط از اسامی زبانها استفاده شده ولی با توجه به اینکه از زبان انتخابی بیشتر برای توسعه تحت وب استفاده خواهد شد پس قطعاً از این زبانها در کنار فریمورکهای محبوب توسعه وبشان استفاده خواهد شد. از Ruby در کنار Rails، از Python در کنار Django، از Node.js در کنار Express و از Scala در کنار Play. در ادامه متن برای پرهیز از طولانی شدن جملات صرفاً از نام زبان برنامهنویسی استفاده خواهد شد. در این فهرست چهار تایی جای PHP خالی است. علت غیبت آن عدم اطمینان به کارایی صد در صدی آن به خصوص در برابر پایتون و روبی، پایین بودن احتمالی کیفیت بیشتر (نه همه) برنامهنویسان ایرانی آن (نیاز به یک بررسی کامل و جداگانه دارد)، قدیمی بودن نسبی آن خصوصاً در برابر نود و اسکالا و بدگوییهای متعددی است که از آن شنیدهایم.
همه این چهار زبان به خوبی در لینوکس کار میکنند. به جز اسکالا بقیه به صورت اسکریپتی هستند. یادگیری Python از همه راحتتر است. رواج آن در ایران خیلی زیاد است. تعدادی از شرکتها به استفاده از آن رو آوردهاند. پایتون در برنامهنویسی غیر وب هم پرکاربرد است. تعداد پروژههای مبتنی بر پایتون از آن سه تای دیگر خیلی بیشتر است. برای اطلاع از وضعیت بازار کار هر کدام از این چهار زبان میتوانید در گوگل عباراتی مثل «استخدام برنامهنویس پایتون» را جستجو کنید. نکته جالب اینکه شرکتهای استفاده کننده از هر کدام از این چهار زبان برنامهنویسی از شرکتهای جذاب برای خورههای برنامهنویسی و کامپیوتر به شمار میآیند. زبان پایتون یک زبان دانشگاهی هم هست. این زبان برنامهنویسی به عنوان اولین زبان به تازه کارها هم پیشنهاد میشود. پایتون زبانی است که ساختار منظم و تمیزی دارد و به این سادگیهای اجازه شیرین کاری به برنامهنویسها نمیدهد (محافظه کارانه است). پایتون این شانس را دارد که از دیدگاه رایج بودن به زودی به پای PHP برسد.
زبان روبی و فریمورک معروف آن یعنی Rails بیشتر به خاطر سرعت بالای توسعه نرمافزار در آنها معروف هستند. به همین خاطر هم هست که برای شرکتهای نوپا، کارآفرینی و Startup توصیه میشوند. گفته میشود که لـ*ـذت برنامهنویسی در روبی از زبانهای دیگر بیشتر است و آن هم به خاطر آزادی عمل برنامهنویس است در ساختار روبی. این زبان بعد از اسکالا و نود جدیدترین زبان این مجموعه به حساب میآید. سرعت اجرای برنامههای روبی بر خلاف سرعت توسعه آن چنگی به دل نمیزند. روبی و پایتون همیشه در حال مقایسه شدن با یکدیگر هستند. میگویند اگر به دنبال برنامهنویسی تحت وب هستید روبی/ریلز بهتر است و اگر به دنبال پروژههای دانشگاهی و علمی هستید پایتون بهتر است. شرکت تویتر بیشتر کارهایش را با روبی انجام میدهد. پایتون نیز به همین شکل در گوگل مورد استفاده است. سرعت تغییرات در روبی بیشتر از پایتون است. در حدی که گفته میشود امکاناتی که به پایتون اضافه میشوند امکاناتی هستند که قبلتر به روبی اضافه شدهاند. جهت مشاهده یک مقایسه بین پایتون و روبی را ببینید. نوشتهای هم در وجود دارد که درواقع دلایل نویسنده برای سویچ از داتنت به روبی است.
Node.js همان زبان برنامهنویسی جاواسکریپت منتها به صورت Server Side است. مزیت اصلی آن خصوصاً با توجه به رواج روز افزون جاواسکریپت و client side programming این است که شما از یک زبان برای هر دو طرف server و client استفاده میکنید. Node.js و Scala هر دو خیلی جدید به حساب میآیند و بحثهای مربوط به آنها حسابی داغ است. ابزارهای و کتابخانههای مربوط به آنها هنوز در حال توسعه و تکامل هستند. گفته میشود که شروع و راه اندازی یک پروژه وب در Node.js خیلی کندتر از Ruby است. بنا به نظر برخی برنامهنویسان اگر کسی حوصله یاد گرفتن زبان پر دردسر روبی را دارد بهتر است روبی را انتخاب کند. جهت مشاهده یک مقایسه بین روبی و نود را کلیک کنید. سرعت اجرای برنامهها هم در نود و هم در اسکالا خیلی بیشتر از آن دو تای دیگر است.
اسکالا که رابـ ـطه بسیار نزدیکی با جاوا دارد معروف است به سرعت بسیار بالای اجرای برنامهها در آن. اسکالا در این فهرست چهارتایی کمترین رواج را در ایران دارد.
خوب این فقط یک بررسی اولیه از تعدادی از زبانهای احتمالی جایگزین C#/.Net بودند. برای انتخاب نهایی احتیاج به بررسیها و نظرخواهیهای خیلی بیشتری است. بهترین اقدام این است که هر کدام را کمی امتحان کنیم. یعنی ملزومات آن را نصب کرده و یک مقدار کار کردن با آنها را یاد بگیریم. در آن صورت میتوان تصمیمگیری بهتری داشت. در پایان به هم سری بزنید. عنوان آن «بهترین زبان برنامه نویسی برای یادگیری در سال 2014» بوده و حاوی نکات مفیدی میباشد. هم با عنوان «از کدام فناوری برای شرکت Startup ام استفاده کنم؟» دارای اطلاعات و نکات خوبی است.
قبل از شروع باید توضیح بدهیم که چرا میخواهیم از ویندوز و داتنت کوچ کنیم و به جای دیگری برویم. هم ویندوز و هم داتنت خیلی خوب و کارا هستند اما مشکل اینجاست که برای یک شرکت نوپا یا startup یا برای یک تیم یا پروژه کوچک زیادی بزرگ هستند. یعنی overhead زیادی دارند. به عنوان مثال نصب و config و backup/restore ابزار TFS خیلی سنگینتر از git است. کلاً زبانهایی مثل C# و Java درست مثل MS SQL و Oracle بیشتر مناسب کارهای سازمانی و Enterprise هستند تا کارهای کوچک و متوسط. در عوض دنیای Open Source سازگاری بیشتری با دنیای کارآفرینی و شرکتهای نوپا و دانش بنیان دارند.
به همان علتی که داتنت و C# مناسب تیمهای کوچک و شرکتهای نوپا و کارآفرین نیستند، ویندوز هم برای آنها مناسب نیست و گریزی نیست جز مهاجرت به لینوکس. لینوکس در حالی که کارایی، پایداری و رواج کمتری دارد در عوض کم و بیش رایگان تمام میشود و با اکو سیستم Open Source که به حال شرکتهای کوچک و کارآفرین خوشایندتر است سازگاری بیشتر دارد. در این مورد را بخوانید. در این نوشته به جز موارد بالا به مشکل اخلاقی و امنیتی استفاده از ویندوزها و ابزارهای ویندوزی کرک و قفل شکسته و غیر قانونی هم اشاره شده است.
پارامترهای زیادی وجود دارند که باید در انتخاب زبان برنامهنویسی جدید با توجه به شرایط توضیح داده شده به آنها اهمیت داده شود. همانطور که پیشتر عنوان شد مهم است که برنامهنویسی در محیط لینوکس انجام میشود. پس زبان برنامه نویسی، فریمورکها و ابزارهای آن باید سازگاری خوبی با لینوکس داشته باشند. اکو سیستم آن باید سازگاری خوبی با Open Source و دنیای سورس باز داشته باشد. یکی از دلایل علاقه به Open Source وجود communityهای گستردهتر کد بازها و دیگری رایگان بودن عمده ابزارهای Open Source است. نمیخواهیم درگیر Java و C# شویم، چون قرار نیست Application های سازمانی بنویسیم.حتی المقدور از ابزارهای کوچک و ساده استفاده خواهیم کرد. مثلاً به جای MS SQL یا Oracle از MySQL و PostgeSQL استفاده میکنیم.
در دسترس بودن برنامهنویسهای زبان انتخابی و فناوریهای مربوطه اهمیت زیادی دارد ولی اولویت شماره یک نیست. کیفیت زبان برنامهنویسی و ابزارها و فناوریهای آن مهمتر است.جدید بودن هم مهم است. مثلاً پرل را بیشتر به خاطر قدیمی بودن آن کنار می گذاریم. از زبان انتخابی بیشتر برای توسعه تحت وب استفاده میشود. پس احتمال انتخاب C/C++ خیلی کم است. البته امکان نوشتن برنامه در محیطهای غیر وب هم یک مزیت به شمار میآید.
قبول داریم که هر زبان برنامهنویسی و ابزاری مخصوص یک موقعیت و مشکل ویژه است. اما به هر حال منابع ما نیز محدود است و نمیتوانیم به طور همزمان از چند زبان برنامهنویسی استفاده کنیم. پس حتیالمقدور زبان و فناوری انتخابی بایستی بتواند بیشتر نیازمندیهای ما را پوشش دهد. انتخاب زبان برنامهنویسی برای یک شرکت نوپا، کارآفرین، دانش بنیان انجام میشود. پس باید مقتضیات خاص اینطور شرکتها نیز در نظر گرفته شود. کمبود منابع و امکان outsource کردن بخشهایی از فعالیتهای توسعه نرمافزار به Freelancerها و به طور کلی افراد بیرون از شرکت از آن موضوعات هستند. مثلاً Freelancerهای ایرانی بیشتر PHP بلد هستند. پس انتخاب زبان برنامهنویسی غیر از PHP میتواند احتمال پیدا کردن Freelancer مناسب را کاهش دهد. برای آگاهی نسبی از زبانهای برنامهنویسی رایج در جامعه کدباز ایرانی به مراجعه کنید.
زبان فارسی و به طور کلی ملزومات خاص ما در ایران را نباید فراموش کنیم. تقویم شمسی و دروازههای پرداخت بانکهای ایرانی دو تا از معروفترین نیازمندیهای ما در ایران هستند. زبانهای پر استفاده مثل C# و Java و PHP از این منظر غنی هستند. اما قبل از انتخاب زبان جدید یا باید از وجود آنها مطمئن شد یا اینکه مطمئن بود که نوشتن آنها چندان سخت نیست. صادرات نرمافزار چه به شکل رسمی و شرکتی و چه به شرکت تیم و انفرادی و freelancer چندان همهگیر نیست. اما به هر حال وجود دارد. پس در انتخاب زبان برنامهنویس باید این موضوع را هم در نظر گرفت. به عبارت دیگر باید ببینیم زبانهای برنامهنویسی مورد پذیرش در بازار خارج از کشور کدامها هستند.
با توجه به جمیع این پارامترها و با توجه به بررسیهای متعدد و نظر خواهیهای گوناگون به نظر میرسد دایره انتخاب ما محدود است به Ruby و Python و Node.js و Scala. اینجا فقط از اسامی زبانها استفاده شده ولی با توجه به اینکه از زبان انتخابی بیشتر برای توسعه تحت وب استفاده خواهد شد پس قطعاً از این زبانها در کنار فریمورکهای محبوب توسعه وبشان استفاده خواهد شد. از Ruby در کنار Rails، از Python در کنار Django، از Node.js در کنار Express و از Scala در کنار Play. در ادامه متن برای پرهیز از طولانی شدن جملات صرفاً از نام زبان برنامهنویسی استفاده خواهد شد. در این فهرست چهار تایی جای PHP خالی است. علت غیبت آن عدم اطمینان به کارایی صد در صدی آن به خصوص در برابر پایتون و روبی، پایین بودن احتمالی کیفیت بیشتر (نه همه) برنامهنویسان ایرانی آن (نیاز به یک بررسی کامل و جداگانه دارد)، قدیمی بودن نسبی آن خصوصاً در برابر نود و اسکالا و بدگوییهای متعددی است که از آن شنیدهایم.
همه این چهار زبان به خوبی در لینوکس کار میکنند. به جز اسکالا بقیه به صورت اسکریپتی هستند. یادگیری Python از همه راحتتر است. رواج آن در ایران خیلی زیاد است. تعدادی از شرکتها به استفاده از آن رو آوردهاند. پایتون در برنامهنویسی غیر وب هم پرکاربرد است. تعداد پروژههای مبتنی بر پایتون از آن سه تای دیگر خیلی بیشتر است. برای اطلاع از وضعیت بازار کار هر کدام از این چهار زبان میتوانید در گوگل عباراتی مثل «استخدام برنامهنویس پایتون» را جستجو کنید. نکته جالب اینکه شرکتهای استفاده کننده از هر کدام از این چهار زبان برنامهنویسی از شرکتهای جذاب برای خورههای برنامهنویسی و کامپیوتر به شمار میآیند. زبان پایتون یک زبان دانشگاهی هم هست. این زبان برنامهنویسی به عنوان اولین زبان به تازه کارها هم پیشنهاد میشود. پایتون زبانی است که ساختار منظم و تمیزی دارد و به این سادگیهای اجازه شیرین کاری به برنامهنویسها نمیدهد (محافظه کارانه است). پایتون این شانس را دارد که از دیدگاه رایج بودن به زودی به پای PHP برسد.
زبان روبی و فریمورک معروف آن یعنی Rails بیشتر به خاطر سرعت بالای توسعه نرمافزار در آنها معروف هستند. به همین خاطر هم هست که برای شرکتهای نوپا، کارآفرینی و Startup توصیه میشوند. گفته میشود که لـ*ـذت برنامهنویسی در روبی از زبانهای دیگر بیشتر است و آن هم به خاطر آزادی عمل برنامهنویس است در ساختار روبی. این زبان بعد از اسکالا و نود جدیدترین زبان این مجموعه به حساب میآید. سرعت اجرای برنامههای روبی بر خلاف سرعت توسعه آن چنگی به دل نمیزند. روبی و پایتون همیشه در حال مقایسه شدن با یکدیگر هستند. میگویند اگر به دنبال برنامهنویسی تحت وب هستید روبی/ریلز بهتر است و اگر به دنبال پروژههای دانشگاهی و علمی هستید پایتون بهتر است. شرکت تویتر بیشتر کارهایش را با روبی انجام میدهد. پایتون نیز به همین شکل در گوگل مورد استفاده است. سرعت تغییرات در روبی بیشتر از پایتون است. در حدی که گفته میشود امکاناتی که به پایتون اضافه میشوند امکاناتی هستند که قبلتر به روبی اضافه شدهاند. جهت مشاهده یک مقایسه بین پایتون و روبی را ببینید. نوشتهای هم در وجود دارد که درواقع دلایل نویسنده برای سویچ از داتنت به روبی است.
Node.js همان زبان برنامهنویسی جاواسکریپت منتها به صورت Server Side است. مزیت اصلی آن خصوصاً با توجه به رواج روز افزون جاواسکریپت و client side programming این است که شما از یک زبان برای هر دو طرف server و client استفاده میکنید. Node.js و Scala هر دو خیلی جدید به حساب میآیند و بحثهای مربوط به آنها حسابی داغ است. ابزارهای و کتابخانههای مربوط به آنها هنوز در حال توسعه و تکامل هستند. گفته میشود که شروع و راه اندازی یک پروژه وب در Node.js خیلی کندتر از Ruby است. بنا به نظر برخی برنامهنویسان اگر کسی حوصله یاد گرفتن زبان پر دردسر روبی را دارد بهتر است روبی را انتخاب کند. جهت مشاهده یک مقایسه بین روبی و نود را کلیک کنید. سرعت اجرای برنامهها هم در نود و هم در اسکالا خیلی بیشتر از آن دو تای دیگر است.
اسکالا که رابـ ـطه بسیار نزدیکی با جاوا دارد معروف است به سرعت بسیار بالای اجرای برنامهها در آن. اسکالا در این فهرست چهارتایی کمترین رواج را در ایران دارد.
خوب این فقط یک بررسی اولیه از تعدادی از زبانهای احتمالی جایگزین C#/.Net بودند. برای انتخاب نهایی احتیاج به بررسیها و نظرخواهیهای خیلی بیشتری است. بهترین اقدام این است که هر کدام را کمی امتحان کنیم. یعنی ملزومات آن را نصب کرده و یک مقدار کار کردن با آنها را یاد بگیریم. در آن صورت میتوان تصمیمگیری بهتری داشت. در پایان به هم سری بزنید. عنوان آن «بهترین زبان برنامه نویسی برای یادگیری در سال 2014» بوده و حاوی نکات مفیدی میباشد. هم با عنوان «از کدام فناوری برای شرکت Startup ام استفاده کنم؟» دارای اطلاعات و نکات خوبی است.