|
سه شنبه، ۲۳ مردادماه ۱۳۸۶

داتنت محدود به نوع خاصي از برنامهها نيست، از اين چارچوب ميتوان براي توليد برنامههاي تحت ويندوز، تحت وب، سرويسهاي مبتني بر وب و ... استفاده كرد. يكي ديگر از ويژگيهاي داتنت، دارار بودن كتابخانهاي بزرگ و جامع از كلاسها و توابع است كه همانطور كه گفتيم، تمام زبانهاي تحت داتنت ميتوانند از توابع و كلاسهاي موجود در آن، استفاده كنند.
مونو؛ تحولي در برنامهنويسي تحت لينوكس
بهروز دالوندي- دنياي كامپيوتر و ارتباطات
در شمارههاي قبل، به معرفي يك IDE متنباز به نام لازاروس پرداختيم كه در واقع، جايگزيني براي دلفي در لينوكس محسوب ميشد. اما از آنجا كه تكنولوژي .NET، بحث روز علم برنامهنويسي است، تلاشهاي زيادي نيز از سوي حاميان دنياي اپنسورس براي پيادهسازي اين تكنولوژي در سيستمعامل لينوكس انجام شده است. در اين مقاله، به بررسي پروژه Mono يا به عبارت ديگر، همان داتنت تحت لينوكس خواهيم پرداخت.
ابتدا لازم است تا كمي با ويژگيهاي چارچوب داتنت و مزيتهاي آن آشنا شويم. اما داتنت چيست؟ شايد داتنت يكي از گيجكنندهترين علائم تجاري مايكروسافت باشد، بنا به تعريف خود مايكروسافت، داتنت گردايهاي از تكنولوژيهايي است كه اتصال به اطلاعات، اشخاص، تجهيزات و قطعات را از طريق نرمافزار فراهم ميآورد.
اما اين تعريفي نيست كه بيشتر كاربران از .Net دارند. آنچه معمولا به داتنت اطلاق ميشود، برنامهنويسي در چارچوب يا FrameWork داتنت است. يكي از بزرگترين مزيتهاي چارچوب داتنت، مسئله مستقل از زبان بودن آن است. برنامههاي كاربردي در چارچوب داتنت، ميتوانند به هر زباني كه از اين frameWork پشتيباني ميكند، نوشته شوند.
اين امر، به واسطه وجود يك زبان مياني (IL) فراهم شده است. در هنگام برنامهنويسي خارج از چارچوب داتنت، كد نوشته شده مستقيما به كد قابل فهم براي CPU كامپايل ميشود، اما در داتنت، برنامه به هر زباني كه نوشته شده باشد، در مرحله اول، به اين زبان مياني ترجمه ميگردد (كه در بين تمام زبانهاي اين چارچوب مشترك است).
نتيجه وجود زبان مياني اين است كه امكان برقراري ارتباط بين زبانهاي مختلف برنامهنويسي فراهم ميشود. هر زبان در چارچوب دات نت، داراي يك كامپايلر خاص است، و به كمك اين كامپايلر ميتواند با برنامههايي كه در ساير زبانهاي تحت .Net نوشته شدهاند، ارتباط برقرار كند. چراكه در مرحله اول، برنامه به هر زباني كه نوشته شده باشد به اين زبان مياني ترجمه ميشود.
داتنت محدود به نوع خاصي از برنامهها نيست، از اين چارچوب ميتوان براي توليد برنامههاي تحت ويندوز، تحت وب، سرويسهاي مبتني بر وب و ... استفاده كرد. يكي ديگر از ويژگيهاي داتنت، دارار بودن كتابخانهاي بزرگ و جامع از كلاسها و توابع است كه همانطور كه گفتيم، تمام زبانهاي تحت داتنت ميتوانند از توابع و كلاسهاي موجود در آن، استفاده كنند.
از مزيتهاي ديگر اين چارچوب، ميتوان به مسئله مديريت حافظه اشاره كرد. در برنامهنويسي خارج از چارچوب داتنت، اين مديريت ميبايست توسط برنامهنويس انجام شود و ممكن است با يك اشتباه كوچك از سوي برنامهنويس، حافظه زيادي به هدر برود و برنامه با مشكل كمبود حافظه مواجه شود. در FrameWork داتنت، سيستمي به نام GC، در فاصلههاي زماني غير ثابت به بررسي حافظه ميپردازد و دادههايي را كه ديگر استفاده نميشوند از حافظه سيستم حذف ميكند و نيز به كاربر اطمينان ميدهد كه با پايان برنامه، حافظه اختصاص داده شده به آن، به طور كامل بازيابي ميشود.
از ديگر ويژگيهاي برنامهنويسي تحت داتنت، ميتوان به عدم دسترسي مستقيم به سختافزار و حذف اشارهگرها و ... اشاره كرد كه توضيح كامل اين مسائل، از حوصله اين بحث خارج است. بسياري معتقدند كه ايده داتنت، ابتدا در كمپاني Borland مطرح شد و سر انجام سر از مايكروسافت درآورد! اما آنچه مسلم است، اين است كه مايكروسافت با معرفي اين تكنولوژي، انقلابي را در عرصه برنامهنويسي در ويندوز پديد آورد.
البته مهمترين كمبود داتنت همين مسئله بود؛ اين كه فقط به يك سيستمعامل تعلق داشت، هرچند مستقل از معماري پردازگر بود. مشكلي كه در حال حاضر توسط پروژه Mono در حال مرتفع شدن است. مونو تنها پروژهاي نيست كه قصد دارد داتنت را براي ساير سيستمعاملها پيادهسازي كند، اما در حال حاضر ميتوان به عنوان كاملترين و اميدواركنندهترين پروژه از آن نام برد.
هدف مونو پيادهسازي متنبازي از داتنت مايكروسافت است. مونو داراي كتابخانهاي از كلاسها و توابع است كه به سرعت رو به تكميل شدن ميرود و نيز كامپايلري براي زبان C# دارد و در كنار IDE ويژه خود (MonoDevelop)، ابزار مناسبي را براي برنامهنويسي در چارچوب داتنت فراهم ميآورد. توسعهدهندگان اين پروژه اعلام كردهاند كه به زودي براي بيشتر زبانهايي كه نسخه تحت داتنت دارند، كامپايلرهايي را ارائه خواهند كرد.
علاوه بر سيستمعامل لينوكس، نسخههايي از مونو براي مكينتاش، يونيكس و سولاريس ارائه شده است. اين پروژه از سوي كمپاني Novell پشتيباني مالي و فني ميشود. ناول با فعاليت در پروژه مونو، دو هدف را دنبال ميكند. اول افزايش ميزان قابليت توليد نرمافزار، و مهمتر از آن، كمك به برنامهنويسان داتنت تحت ويندوز براي توسعه برنامههايشان در ساير سيستمعاملها.
اين مسئله نكته ظريفي را به همراه خود دارد و ميتواند با تكميل شدن مون در آينده نزديك، عرصه را بر انحصار طلبي مايكروسافت تنگ كند. در حال حاضر، مايكروسافت با اقتدار تمام بر بازار سيستمعاملها سايه انداخته و طبق آمارهاي جهاني، بيش از 90 درصد از كامپيوترهاي موجود در دنيا، حاوي سيستمعامل ويندوز هستند.
اينكه مايكروسافت چگونه به اين موقعيت رسيده است، شايد چندان مهم نباشد، اما آنچه راه را براي پيروزيهاي پياپي سيستمعامل ويندوز در دهه اخير باز گذاشته، ترس ساير كمپانيهاي بزرگ از ورود به عرصه رقابت سيستمعاملهاست. چراكه اولين شرط موفقيت يك سيستمعامل در بين كاربران، وجود نرمافزارهاي مورد نياز آنها براي آن سيستمعامل است.
براي يك توليد كننده سيستمعامل هميشه اين سوال مطرح است كه «آيا ساير شركتهاي كوچك و بزرگ توليدكننده نرمافزارهاي كاربردي، محصولات خود را براي سيستمعامل ما ارائه خواهند كرد يا نه؟» تا پيش از اين، پاسخ اين سوال همواره منفي بود، چراكه برنامهنويسي در سيستمعاملهاي مختلف، روشها و ابزارهاي متفاوتي را ميطلبيد و براي داشتن دو نسخه از يك برنامه كاربردي كه در دو سيستمعامل مجزا كار كند، تقريبا لازم بود كه اين برنامه در هريك از سيستمعاملها به طور مجزا نوشته شود.
در اين ميان قطعا شركتهاي توليدكننده نرمافزارهاي كاربردي مختلف، ترجيح ميدادند كه هزينه نسبتا هنگفت توليد نرمافزار را صرف سيستمعاملي كنند كه كاربران بيشتري دارد و در مورد صرف هزينه براي توليد نرمافزار براي سيستمعاملهاي نوپا، «ريسك» نكنند. اما با سوق پيدا كردن علم برنامهنويسي به سوي چارچوب واحد داتنت، و توسعه اين چارچوب براي ساير سيستمعاملها از توزيعهاي مختلف لينوكس گرفته تا مك، سولاريس و حتي سيستمعاملهايي كه ممكن است در آينده متولد شوند، فرايند توليد نرمافزار از حالت يك ريسك خارج ميشود.
توليدكننده فقط يك بار برنامه را مينويسد و با استفاده از محيطهاي پيادهساز داتنت در ساير پلتفرمها، به ازاي هر سيستمعامل فقط يك بار آن را كامپايل ميكند و متحمل هزينه چنداني نميشود. بنابراين ترجيح ميدهد كه نرمافزار خود را تنها به قيمت چند بار كامپايل كردن، براي تمام سيستمعاملهاي رايج ارائه كند. و همانطور كه گفتيم، سادگي و يكپارچه شدن اين قالب كاري، ميتواند در آينده به كمپانيهايي به جز مايكروسافت نيز جرات ورود به بازار سيستمعاملها را بدهد.
اگر پيگير اخبار دنياي اپنسورس بوده باشيد، حتما ميدانيد كه چندي پيش امضاي قراردادي بين ناول و مايكروسافت، موجي از اعتراضات را از سوي جوامع هوادار اپنسورس متوجه ناول كرد. اما مسئولان پروژه مونو، اظهار كردهاند كه اين امر خود باعث نزديكي بيشتر مهندسان مايكروسافت و ناول شده و هرچند همكاري رسمي بين دو كمپاني در زمينه پروژه مونو وجود ندارد، اما اين نزديكي موجبات سادهتر شدن فرايند تكميل مونو را فراهم كرده است. به گفته مسئولان ناول، مايكروسافت علاقه زيادي به پيادهسازي نسخههاي مختلف .Net دارد.
در حال حاضر كمپانيهاي زيادي از مونو براي توسعه نرمافزارهاي خود كمك ميگيرند، به عنوان مثال ميتوان به WikiPedia اشاره كرد كه بخشي از ساختار موتور جستوجوي آن بر پايه مونو قرار دارد. از ابتداي ارائه تكنولوژي داتنت، همواره رقابت يا به نوعي دعواي رسانهاي بين Microsoft و Sun (سازنده زبان جاوا) وجود داشته است.
به طوري كه هريك از دو كمپاني در سايت خود، ادعا كردهاند كه هر دو محصول را آزمايش كردهاند و به اين نتيجه رسيدهاند كه محصول خودشان كارايي بهتري دارد! اما در برابر تمام مزيتهاي داتنت، J2EE امتياز بزرگي داشت؛ اين محيط توسعه مستقل از سيستمعامل بود (همانطور كه ميدانيد، در زبان جاوا برنامه نوشته شده كامپايل نميشود و به كمك Virtual machine در هر سيستمعاملي اجرا ميگردد). در اين بين توسعه پروژههايي مانند مونو، راه را براي داتنت هموارتر كرد.
به طوريكه اخيرا در يك نظرسنجي، مشخص شد كه حدود 66 درصد از توسعهدهندگان، پلتفرم داتنت را بر J2EE ترجيح ميدهند. از ديگر پروژههاي مربوط به پيادهسازي داتنت در لينوكس، ميتوان به DotGNU اشاره كرد. توسعهدهندگان داتگنو ميگويند به دنبال طراحي و ساخت چيزي هستند كه بتوان آن را «سيستمعاملي براي اينترنت» ناميد! مجموعهاي از ابزارها كه به كامپاننتها اجازه ميدهند از طريق اينترنت، با هم تقابل داشته باشند.
در اين راستا، نسخه قابل حملي (Portable) از داتگنو ارائه شده كه آن نيز شامل يك كتابخانه از كلاسها و توابع، يك كامپايلر براي سيشارپ، و مجموعهاي ديگر از ساير ابزارهاي برنامهنويسي است. ابزار ديگري به نام phpGroupWare نيز در اين مجموعه قرار دارد كه قابليت كار گروهي را براي توليد سرويسهاي مبتني بر وب فراهم ميآورد.
ناول در نسخههاي اخير توزيع OpenSUSE خود، مونو را به صورت پيشفرض به همراه آن ارائه كرده است. بايد ديد با فراگير شدن اين FrameWork در توزيع OpemSUSE و احتمالا ساير توزيعهاي لينوكس، چه تغييراتي در حوزه برنامهنويسي در اين سيستمعامل پديد ميآيد و آيا تلاش ناول در جهت سادهسازي برنامهنويسي در لينوكس، بنياد نرمافزارهاي آزاد (FSF) را از اعمال تحريم عليه ناول منصرف خواهد كرد يا نه؛ تحريمي كه به دليل انعقاد قرارداد با مايكروسافت، ممكن است گريبانگير ناول بشود.
|