چهارشنبه, ۲۹ فروردین, ۱۴۰۳ / 17 April, 2024
مجله ویستا

مونو ؛ تحولی در برنامه‌نویسی تحت لینوکس


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


همچنین مشاهده کنید