دلیل یکم:
لینوکس برای برنامهنویسی قانونهای مخصوص به خود را دارد: از جمله اینکه برنامه نباید برای همه کاربران همه چیز را فراهم سازد. به عنوان مثال، در محیط برنامهنویسی متنی نیازی نیست که آن محیط بتواند ایمیل هم بفرستد و تمام تمرکز کاری روی هدف اصلی برنامه است. همچنین ابزارهای متعدد و متمرکزی را در اختیار برنامهنویسان قرار میدهد تا نیازهای فنی خود را برطرف کنند.
دلیل دوم:
مدل مدیریت پردازشگر لینوکس پیشرفته است، به نحوی که اگر پروسهای دارای مجوزهای لازم باشد میتواند پروسههای دیگری را ایجاد کند که ما به آنها پروسههای بچه یا Child process میگوییم که میتوانند با آنها تبادل اطلاعات کنند و تقاضای انجام قسمتی از عملیاتی که به آنها واگذار شده است را از آنها داشته باشند.
دلیل سوم:
خیلی کم پیش میآید که لینوکس مانند ویندوز یکباره هنگ کند و با صفحه آبی مرگ روبهرو شویم. زیرا سیستمعامل برای kernel خود، CPU و RAM خاص اختصاص میدهد تا کارهای جاریش را انجام دهد و برای برنامههای دیگر مانند مرورگر یا برنامههای کاربردی از User Space استفاده میکند و نمیتواند به طور مستقیم به Kernel Space دسترسی داشته باشد.
البته ناگفته نماند که این کار مشکلاتی را نیز دربرخواهد داشت. به عنوان مثال، برنامههای User Space برخلاف ویندوز به تجهیزات سختافزاری سیستم دسترسی ندارند و اگر برنامه نرمافزاری بخواهد با کارت شبکه کار کند مدیر سیستم باید برای کاربر برنامه این دسترسی را ایجاد کند.
دلیل چهارم:
در لینوکس مدل امنیت خاصی برقرار است که در آن همه کاربران تعریف شده برای سیستم با هم برابر نیستند (مانند کاربر Root که از بیشترین اختیارات برخوردار است) و هر کاربر معمولی باید دسترسی استفاده از امکانی را داشته باشد. این مدل امنیتی روی برنامهنویسی تأثیرات مثبتی خواهد گذاشت. مثلاً میتوان به این نکته اشاره کرد که چون با توجه به مدل امنیتی لینوکس تهیه شده پس سیستمی هم که تولید خواهد شد به یقین امنیت خوبی خواهد داشت.
دلیل پنجم:
اگر چه شما در لینوکس فکر میکنید صاحب CPU هستید، اما اینطور نیست؛ شما به طور مجازی به CPU احاطه دارید. CPU در سیستمعامل لینوکس به صورت چندرشتهای کار میکند و روی پردازشگر در زمینه اختصاص منابع و محاسبه برای هر Task مدیریت خاصی وجود دارد.
دلیل ششم:
لینوکس به صورت پیشفرض به گونهای طراحی شده که چند کاربر بتوانند همزمان با هم کار کنند و برنامههایی که در محیطهای لینوکسی نوشته و استفاده می شوند باید با دقت طراحی شوند. برنامهنویسان نباید فکر کنند که میتوانند به منابع دسترسی محض داشته باشند.
دلیل هفتم:
مهمترین دلیلی که میتوان ذکر کرد این است که در سیستمعامل لینوکس مکانیزم IPC (سرنام Interprocess Communication) به برنامهها امکان میدهد تا اطلاعات و منابع خود را با حداقل مقدار Overhead به اشتراک گذارند.
IPC به سه حالت میتواند در سیستمهای لینوکس کارایی داشته باشد:
۱- صفهای پیغامها: از ساختار اطلاعاتی FIFO (سرنام First in First Out) استفاده میکند تا پروسهها پیغامهای کوتاه خود را به آسانی با هم رد و بدل کنند.
۲- Semaphores: یا بهکارگیری علامت خاص برای نشان دادن اینکه مثلاً یک فایل خاص چه دسترسی دارد.
۳- استفاده از حافظه مشترک برای کار در سیستمهایی که چند کار را با هم انجام میدهند.
به طور کلی، به نظر میرسد در مقایسه با سیستمعاملهای دیگر استفاده از لینوکس نه تنها از لحاظ اقتصادی به صرفه است، بلکه به دلایلی مانند قابلیت ارتقای مناسبتر، اعتمادپذیری، امنیت و قدرت بیشتر برای برنامهنویسان حرفهای محیط مناسبتری است.
البته هر فرد سلیقهای دارد برخی سادگی کار سیستمعامل ویندوز و وجود محیطهای متنوع و قدرتمندی را که در اختیار قرار میدهد، میپسندند. به نظر من هیچ اشکالی ندارد که با همه سیستمعاملها برنامهنویسی کنیم، اما لینوکس حرفهایتر است. اگر با این سیستمعامل کار کرده باشید، منظور از این سخن را خوب متوجه میشوید.