TAHA
09-22-2009, 11:17 AM
اشاره :
در اين يادداشت ميخواهم شما را با محيطهاي برنامهنويسي لينوكس آشنا كنم، اگرچه ميدانم خيلي از برنامهنويسان متأسفانه تنها با محيط ويندوز كار ميكنند و از مزاياي زياد محيطهاي برنامهنويسي لينوكس بياطلاع هستند.
در اين يادداشت ميخواهم شما را با محيطهاي برنامهنويسي لينوكس آشنا كنم، اگرچه ميدانم خيلي از برنامهنويسان متأسفانه تنها با محيط ويندوز كار ميكنند و از مزاياي زياد محيطهاي برنامهنويسي لينوكس بياطلاع هستند.
بهطور كلي محيطهاي برنامهنويسي به دو دسته كلي تقسيم ميشوند: واسطهاي كاربر مبتني بر خط دستور و واسطهاي كاربر گرافيكي. در سيستمعامل لينوكس محيطهاي برنامهنويسي، سرويسها و امكانات فراواني دارند و بدون ترديد ميتوان گفت كه لينوكس قدرتمندترين محيط برنامهنويسي را در اختيار ما قرار ميدهد.
ممكن است خيلي از شما طرفدار سيستمعاملهايي مانند ويندوز باشيد و متعصبانه بگوييد چرا بايد چنين باشد؟ شايد هفت دليل زير شما را قانع كند.
دليل يكم: لينوكس براي برنامهنويسي قانونهاي مخصوص به خود را دارد: از جمله اينكه برنامه نبايد براي همه كاربران همه چيز را فراهم سازد. به عنوان مثال، در محيط برنامهنويسي متني نيازي نيست كه آن محيط بتواند ايميل هم بفرستد و تمام تمركز كاري روي هدف اصلي برنامه است. همچنين ابزارهاي متعدد و متمركزي را در اختيار برنامهنويسان قرار ميدهد تا نيازهاي فني خود را برطرف كنند.
دليل دوم: مدل مديريت پردازشگر لينوكس پيشرفته است، به نحوي كه اگر پروسهاي داراي مجوزهاي لازم باشد ميتواند پروسههاي ديگري را ايجاد كند كه ما به آنها پروسههاي بچه يا 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- استفاده از حافظه مشترك براي كار در سيستمهايي كه چند كار را با هم انجام ميدهند.
به طور كلي، به نظر ميرسد در مقايسه با سيستمعاملهاي ديگر استفاده از لينوكس نه تنها از لحاظ اقتصادي به صرفه است، بلكه به دلايلي مانند قابليت ارتقاي مناسبتر، اعتمادپذيري، امنيت و قدرت بيشتر براي برنامهنويسان حرفهاي محيط مناسبتري است.
البته هر فرد سليقهاي دارد برخي سادگي كار سيستمعامل ويندوز و وجود محيطهاي متنوع و قدرتمندي را كه در اختيار قرار ميدهد، ميپسندند. به نظر من هيچ اشكالي ندارد كه با همه سيستمعاملها برنامهنويسي كنيم، اما لينوكس حرفهايتر است. اگر با اين سيستمعامل كار كرده باشيد، منظور از اين سخن را خوب متوجه ميشويد.