مونو ؛ تحولی در برنامه‌نویسی تحت لینوكس
دات‌نت محدود به نوع خاصی از برنامه‌ها نیست، از این چارچوب می‌توان برای تولید برنامه‌های تحت ویندوز، تحت وب، سرویس‌های مبتنی بر وب و … استفاده كرد.
دات‌نت محدود به نوع خاصی از برنامه‌ها نیست، از این چارچوب می‌توان برای تولید برنامه‌های تحت ویندوز، تحت وب، سرویس‌های مبتنی بر وب و … استفاده كرد. یكی دیگر از ویژگی‌های دات‌نت، دارار بودن كتابخانه‌ای بزرگ و جامع از كلاس‌ها و توابع است كه همان‌طور كه گفتیم، تمام زبان‌های تحت دات‌نت می‌توانند از توابع و كلاس‌های موجود در آن، استفاده كنند.

در شماره‌های‌ قبل، به معرفی یك IDE متن‌باز به نام لازاروس پرداختیم كه در واقع، جایگزینی برای دلفی در لینوكس محسوب می‌شد. اما از آنجا كه تكنولوژی .NET، بحث روز علم برنامه‌نویسی است، تلاش‌های زیادی نیز از سوی حامیان دنیای اپن‌سورس برای پیاده‌سازی این تكنولوژی در سیستم‌عامل لینوكس انجام شده است. در این مقاله، به بررسی پروژه‌ Mono یا به عبارت دیگر، همان دات‌نت تحت لینوكس خواهیم پرداخت.
ابتدا لازم است تا كمی با ویژگی‌های چارچوب دات‌نت و مزیت‌های آن آشنا شویم. اما دات‌نت چیست؟ شاید دات‌نت یكی از گیج‌كننده‌‌ترین علائم تجاری مایكروسافت باشد، بنا به تعریف خود مایكروسافت، دات‌نت گردایه‌ای از تكنولوژی‌هایی است كه اتصال به اطلاعات، اشخاص، تجهیزات و قطعات را از طریق نرم‌افزار فراهم می‌آورد.

اما این تعریفی نیست كه بیشتر كاربران از .Net دارند. آنچه معمولا به دات‌نت اطلاق می‌شود، برنامه‌نویسی در چارچوب یا FrameWork دات‌نت است. یكی از بزرگ‌ترین مزیت‌های چارچوب دات‌نت، مسئله‌ مستقل از زبان بودن آن است. برنامه‌های كاربردی در چارچوب دات‌نت، می‌توانند به هر زبانی كه از این frameWork پشتیبانی می‌كند، نوشته شوند.
این امر، به واسطه‌ وجود یك زبان میانی (IL) فراهم شده است. در هنگام برنامه‌نویسی خارج از چارچوب دات‌نت، كد نوشته شده مستقیما به كد قابل فهم برای CPU كامپایل می‌شود، اما در دات‌نت، برنامه به هر زبانی كه نوشته شده باشد، در مرحله‌ اول، به این زبان میانی ترجمه‌ می‌گردد (كه در بین تمام زبان‌های این چارچوب مشترك است).

نتیجه‌ وجود زبان میانی این است كه امكان برقراری ارتباط بین زبان‌های مختلف برنامه‌نویسی فراهم می‌شود. هر زبان در چارچوب دات نت، دارای یك كامپایلر خاص است، و به كمك این كامپایلر می‌تواند با برنامه‌هایی كه در سایر زبان‌های تحت .Net نوشته‌ شده‌اند، ارتباط برقرار كند. چراكه در مرحله‌ اول، برنامه به هر زبانی كه نوشته شده باشد به این زبان میانی ترجمه می‌شود.
دات‌نت محدود به نوع خاصی از برنامه‌ها نیست، از این چارچوب می‌توان برای تولید برنامه‌های تحت ویندوز، تحت وب، سرویس‌های مبتنی بر وب و … استفاده كرد. یكی دیگر از ویژگی‌های دات‌نت، دارار بودن كتابخانه‌ای بزرگ و جامع از كلاس‌ها و توابع است كه همان‌طور كه گفتیم، تمام زبان‌های تحت دات‌نت می‌توانند از توابع و كلاس‌های موجود در آن، استفاده كنند.

از مزیت‌های دیگر این چارچوب، می‌توان به مسئله‌ مدیریت حافظه اشاره كرد. در برنامه‌نویسی خارج از چارچوب دات‌نت، این مدیریت می‌بایست توسط برنامه‌نویس انجام شود و ممكن است با یك اشتباه كوچك از سوی برنامه‌نویس، حافظه‌ زیادی به هدر برود و برنامه با مشكل كمبود حافظه مواجه شود. در FrameWork دات‌نت، سیستمی به نام GC، در فاصله‌های زمانی غیر ثابت به بررسی حافظه می‌پردازد و داده‌هایی را كه دیگر استفاده نمی‌شوند از حافظه‌ سیستم حذف می‌كند و نیز به كاربر اطمینان می‌دهد كه با پایان برنامه، حافظه‌ اختصاص داده‌ شده به آن، به طور كامل بازیابی می‌شود.

از دیگر ویژگی‌های برنامه‌نویسی تحت دات‌نت، می‌توان به عدم دسترسی مستقیم به سخت‌افزار و حذف اشاره‌گرها و … اشاره كرد كه توضیح كامل این مسائل، از حوصله‌ این بحث خارج است. بسیاری معتقدند كه ایده‌ دات‌نت، ابتدا در كمپانی Borland مطرح شد و سر انجام سر از مایكروسافت درآورد! اما آنچه مسلم است، این است كه مایكروسافت با معرفی این تكنولوژی، انقلابی را در عرصه‌ برنامه‌نویسی در ویندوز پدید آورد.
البته مهم‌ترین كمبود دات‌نت همین مسئله بود؛ این كه فقط به یك سیستم‌عامل تعلق داشت، هرچند مستقل از معماری پردازگر بود. مشكلی كه در حال حاضر توسط پروژه‌ Mono در حال مرتفع شدن است. مونو تنها پروژه‌ای نیست كه قصد دارد دات‌نت را برای سایر سیستم‌عامل‌ها پیاده‌سازی كند، اما در حال حاضر می‌توان به عنوان كامل‌ترین و امیدواركننده‌ترین پروژه از آن نام برد.

هدف مونو پیاده‌سازی متن‌بازی از دات‌نت مایكروسافت است. مونو دارای كتابخانه‌ای از كلاس‌ها و توابع است كه به سرعت رو به تكمیل شدن می‌رود و نیز كامپایلری برای زبان C دارد و در كنار IDE ویژه‌ خود (MonoDevelop)، ابزار مناسبی را برای برنامه‌نویسی در چارچوب دات‌نت فراهم می‌آورد. توسعه‌دهندگان این پروژه اعلام كرده‌اند كه به زودی برای بیشتر زبان‌هایی كه نسخه‌ تحت دات‌نت دارند، كامپایلرهایی را ارائه خواهند كرد.

علاوه بر سیستم‌عامل لینوكس، نسخه‌هایی از مونو برای مكینتاش، یونیكس و سولاریس ارائه شده است. این پروژه‌ از سوی كمپانی Novell پشتیبانی مالی و فنی می‌شود. ناول با فعالیت در پروژه‌ مونو، دو هدف را دنبال می‌كند. اول افزایش میزان قابلیت تولید نرم‌افزار، و مهم‌تر از آن، كمك به برنامه‌نویسان دات‌نت تحت ویندوز برای توسعه برنامه‌هایشان در سایر سیستم‌عامل‌ها.
این مسئله نكته‌ ظریفی را به همراه خود دارد و می‌تواند با تكمیل شدن مون در آینده‌ نزدیك، عرصه را بر انحصار طلبی مایكروسافت تنگ كند. در حال حاضر، مایكروسافت با اقتدار تمام بر بازار سیستم‌عامل‌ها سایه‌ انداخته و طبق آمار‌های جهانی، بیش از ۹۰ درصد از كامپیوتر‌های موجود در دنیا، حاوی سیستم‌عامل ویندوز هستند.

اینكه مایكروسافت چگونه به این موقعیت رسیده است، شاید چندان مهم نباشد، اما آنچه راه را برای پیروزی‌های پیاپی سیستم‌عامل ویندوز در دهه‌ اخیر باز گذاشته، ترس سایر كمپانی‌های بزرگ از ورود به عرصه‌ رقابت سیستم‌عامل‌هاست. چراكه اولین شرط موفقیت یك سیستم‌عامل در بین كاربران