engeneer_19
19th April 2010, 02:53 PM
هفت دلیل برای کار و برنامهنویسی با لینوكس
در این یادداشت میخواهم شما را با محیطهای برنامهنویسی لینوكس آشنا كنم، اگرچه میدانم خیلی از برنامهنویسان متأسفانه تنها با محیط ویندوز كار میكنند و از مزایای زیاد محیطهای برنامهنویسی لینوكس بیاطلاع هستند.
بهطور كلی محیطهای برنامهنویسی به دو دسته كلی تقسیم میشوند: واسطهای كاربر مبتنی بر خط دستور و واسطهای كاربر گرافیكی. در سیستمعامل لینوكس محیطهای برنامهنویسی، سرویسها و امكانات فراوانی دارند و بدون تردید میتوان گفت كه لینوكس قدرتمندترین محیط برنامهنویسی را در اختیار ما قرار میدهد.
ممكن است خیلی از شما طرفدار سیستمعاملهایی مانند ویندوز باشید و متعصبانه بگویید چرا باید چنین باشد؟
شاید هفت دلیل زیر شما را قانع كند.
دلیل یكم:
لینوكس برای برنامهنویسی قانونهای مخصوص به خود را دارد: از جمله اینكه برنامه نباید برای همه كاربران همه چیز را فراهم سازد. به عنوان مثال، در محیط برنامهنویسی متنی نیازی نیست كه آن محیط بتواند ایمیل هم بفرستد و تمام تمركز كاری روی هدف اصلی برنامه است. همچنین ابزارهای متعدد و متمركزی را در اختیار برنامهنویسان قرار میدهد تا نیازهای فنی خود را برطرف كنند.
دلیل دوم:
مدل مدیریت پردازشگر لینوكس پیشرفته است، به نحوی كه اگر پروسهای دارای مجوزهای لازم باشد میتواند پروسههای دیگری را ایجاد كند كه ما به آنها پروسههای بچه یا Child process میگوییم كه میتوانند با آنها تبادل اطلاعات كنند و تقاضای انجام قسمتی از عملیاتی كه به آنها واگذار شده است را از آنها داشته باشند.
دلیل سوم:
خیلی كم پیش میآید كه لینوكس مانند ویندوز یكباره هنگ كند و با صفحه آبی مرگ روبهرو شویم. زیرا سیستمعامل برای kernel خود، CPU و RAM خاص اختصاص میدهد تا كارهای جاریش را انجام دهد و برای برنامههای دیگر مانند مرورگر یا برنامههای كاربردی از User Space استفاده میكند و نمیتواند به طور مستقیم به Kernel Space دسترسی داشته باشد.
البته ناگفته نماند كه این كار مشكلاتی را نیز دربرخواهد داشت. به عنوان مثال، برنامههای User Space برخلاف ویندوز به تجهیزات سختافزاری سیستم دسترسی ندارند و اگر برنامه نرمافزاری بخواهد با كارت شبكه كار كند مدیر سیستم باید برای كاربر برنامه این دسترسی را ایجاد كند.
دلیل چهارم:
در لینوكس مدل امنیت خاصی برقرار است كه در آن همه كاربران تعریف شده برای سیستم با هم برابر نیستند (مانند كاربر Root كه از بیشترین اختیارات برخوردار است) و هر كاربر معمولی باید دسترسی استفاده از امكانی را داشته باشد. این مدل امنیتی روی برنامهنویسی تأثیرات مثبتی خواهد گذاشت. مثلاً میتوان به این نكته اشاره كرد كه چون با توجه به مدل امنیتی لینوكس تهیه شده پس سیستمی هم كه تولید خواهد شد به یقین امنیت خوبی خواهد داشت.
دلیل پنجم:
اگر چه شما در لینوكس فكر میكنید صاحب CPU هستید، اما اینطور نیست؛ شما به طور مجازی به CPU احاطه دارید. CPU در سیستمعامل لینوكس به صورت چندرشتهای كار میكند و روی پردازشگر در زمینه اختصاص منابع و محاسبه برای هر Task مدیریت خاصی وجود دارد.
دلیل ششم:
لینوكس به صورت پیشفرض به گونهای طراحی شده كه چند كاربر بتوانند همزمان با هم كار كنند و برنامههایی كه در محیطهای لینوكسی نوشته و استفاده می شوند باید با دقت طراحی شوند. برنامهنویسان نباید فكر كنند كه میتوانند به منابع دسترسی محض داشته باشند.
دلیل هفتم:
مهمترین دلیلی كه میتوان ذكر كرد این است كه در سیستمعامل لینوكس مكانیزم IPC (سرنام Interprocess Communication) به برنامهها امكان میدهد تا اطلاعات و منابع خود را با حداقل مقدار Overhead به اشتراك گذارند.
IPC به سه حالت میتواند در سیستمهای لینوكس كارایی داشته باشد:
1- صفهای پیغامها: از ساختار اطلاعاتی FIFO (سرنام First in First Out) استفاده میكند تا پروسهها پیغامهای كوتاه خود را به آسانی با هم رد و بدل كنند.
2- Semaphores: یا بهكارگیری علامت خاص برای نشان دادن اینكه مثلاً یك فایل خاص چه دسترسی دارد.
3- استفاده از حافظه مشترك برای كار در سیستمهایی كه چند كار را با هم انجام میدهند.
به طور كلی، به نظر میرسد در مقایسه با سیستمعاملهای دیگر استفاده از لینوكس نه تنها از لحاظ اقتصادی به صرفه است، بلكه به دلایلی مانند قابلیت ارتقای مناسبتر، اعتمادپذیری، امنیت و قدرت بیشتر برای برنامهنویسان حرفهای محیط مناسبتری است.
البته هر فرد سلیقهای دارد برخی سادگی كار سیستمعامل ویندوز و وجود محیطهای متنوع و قدرتمندی را كه در اختیار قرار میدهد، میپسندند. به نظر من هیچ اشكالی ندارد كه با همه سیستمعاملها برنامهنویسی كنیم، اما لینوكس حرفهایتر است. اگر با این سیستمعامل كار كرده باشید، منظور از این سخن را خوب متوجه میشوید.
در این یادداشت میخواهم شما را با محیطهای برنامهنویسی لینوكس آشنا كنم، اگرچه میدانم خیلی از برنامهنویسان متأسفانه تنها با محیط ویندوز كار میكنند و از مزایای زیاد محیطهای برنامهنویسی لینوكس بیاطلاع هستند.
بهطور كلی محیطهای برنامهنویسی به دو دسته كلی تقسیم میشوند: واسطهای كاربر مبتنی بر خط دستور و واسطهای كاربر گرافیكی. در سیستمعامل لینوكس محیطهای برنامهنویسی، سرویسها و امكانات فراوانی دارند و بدون تردید میتوان گفت كه لینوكس قدرتمندترین محیط برنامهنویسی را در اختیار ما قرار میدهد.
ممكن است خیلی از شما طرفدار سیستمعاملهایی مانند ویندوز باشید و متعصبانه بگویید چرا باید چنین باشد؟
شاید هفت دلیل زیر شما را قانع كند.
دلیل یكم:
لینوكس برای برنامهنویسی قانونهای مخصوص به خود را دارد: از جمله اینكه برنامه نباید برای همه كاربران همه چیز را فراهم سازد. به عنوان مثال، در محیط برنامهنویسی متنی نیازی نیست كه آن محیط بتواند ایمیل هم بفرستد و تمام تمركز كاری روی هدف اصلی برنامه است. همچنین ابزارهای متعدد و متمركزی را در اختیار برنامهنویسان قرار میدهد تا نیازهای فنی خود را برطرف كنند.
دلیل دوم:
مدل مدیریت پردازشگر لینوكس پیشرفته است، به نحوی كه اگر پروسهای دارای مجوزهای لازم باشد میتواند پروسههای دیگری را ایجاد كند كه ما به آنها پروسههای بچه یا Child process میگوییم كه میتوانند با آنها تبادل اطلاعات كنند و تقاضای انجام قسمتی از عملیاتی كه به آنها واگذار شده است را از آنها داشته باشند.
دلیل سوم:
خیلی كم پیش میآید كه لینوكس مانند ویندوز یكباره هنگ كند و با صفحه آبی مرگ روبهرو شویم. زیرا سیستمعامل برای kernel خود، CPU و RAM خاص اختصاص میدهد تا كارهای جاریش را انجام دهد و برای برنامههای دیگر مانند مرورگر یا برنامههای كاربردی از User Space استفاده میكند و نمیتواند به طور مستقیم به Kernel Space دسترسی داشته باشد.
البته ناگفته نماند كه این كار مشكلاتی را نیز دربرخواهد داشت. به عنوان مثال، برنامههای User Space برخلاف ویندوز به تجهیزات سختافزاری سیستم دسترسی ندارند و اگر برنامه نرمافزاری بخواهد با كارت شبكه كار كند مدیر سیستم باید برای كاربر برنامه این دسترسی را ایجاد كند.
دلیل چهارم:
در لینوكس مدل امنیت خاصی برقرار است كه در آن همه كاربران تعریف شده برای سیستم با هم برابر نیستند (مانند كاربر Root كه از بیشترین اختیارات برخوردار است) و هر كاربر معمولی باید دسترسی استفاده از امكانی را داشته باشد. این مدل امنیتی روی برنامهنویسی تأثیرات مثبتی خواهد گذاشت. مثلاً میتوان به این نكته اشاره كرد كه چون با توجه به مدل امنیتی لینوكس تهیه شده پس سیستمی هم كه تولید خواهد شد به یقین امنیت خوبی خواهد داشت.
دلیل پنجم:
اگر چه شما در لینوكس فكر میكنید صاحب CPU هستید، اما اینطور نیست؛ شما به طور مجازی به CPU احاطه دارید. CPU در سیستمعامل لینوكس به صورت چندرشتهای كار میكند و روی پردازشگر در زمینه اختصاص منابع و محاسبه برای هر Task مدیریت خاصی وجود دارد.
دلیل ششم:
لینوكس به صورت پیشفرض به گونهای طراحی شده كه چند كاربر بتوانند همزمان با هم كار كنند و برنامههایی كه در محیطهای لینوكسی نوشته و استفاده می شوند باید با دقت طراحی شوند. برنامهنویسان نباید فكر كنند كه میتوانند به منابع دسترسی محض داشته باشند.
دلیل هفتم:
مهمترین دلیلی كه میتوان ذكر كرد این است كه در سیستمعامل لینوكس مكانیزم IPC (سرنام Interprocess Communication) به برنامهها امكان میدهد تا اطلاعات و منابع خود را با حداقل مقدار Overhead به اشتراك گذارند.
IPC به سه حالت میتواند در سیستمهای لینوكس كارایی داشته باشد:
1- صفهای پیغامها: از ساختار اطلاعاتی FIFO (سرنام First in First Out) استفاده میكند تا پروسهها پیغامهای كوتاه خود را به آسانی با هم رد و بدل كنند.
2- Semaphores: یا بهكارگیری علامت خاص برای نشان دادن اینكه مثلاً یك فایل خاص چه دسترسی دارد.
3- استفاده از حافظه مشترك برای كار در سیستمهایی كه چند كار را با هم انجام میدهند.
به طور كلی، به نظر میرسد در مقایسه با سیستمعاملهای دیگر استفاده از لینوكس نه تنها از لحاظ اقتصادی به صرفه است، بلكه به دلایلی مانند قابلیت ارتقای مناسبتر، اعتمادپذیری، امنیت و قدرت بیشتر برای برنامهنویسان حرفهای محیط مناسبتری است.
البته هر فرد سلیقهای دارد برخی سادگی كار سیستمعامل ویندوز و وجود محیطهای متنوع و قدرتمندی را كه در اختیار قرار میدهد، میپسندند. به نظر من هیچ اشكالی ندارد كه با همه سیستمعاملها برنامهنویسی كنیم، اما لینوكس حرفهایتر است. اگر با این سیستمعامل كار كرده باشید، منظور از این سخن را خوب متوجه میشوید.