موضوع مقاله: ماجولا ۳ | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # ماجولا ۳ | مقدمه: ماجولا-۳ در علوم کامپیوتر ماجولا-۳ به عنوان یک آپدیت موفق ماجولا-۲ به نام ماجولا-۲+ تصور می‌شود. | ## بخش 1: ماجولا ۳ | با وجود اینکه این زبان به عنوان زبانی در سیکل تحقیقات زبان‌های دیگر (در طراحی زبان‌های جاوا، سی شارپ و جاوا) تأثیرگذار بوده‌است ولی به صورت گسترده در صنعت مورد استفاده قرار نگرفته‌است. این زبان در اواخر دهه ۱۹۸۰ توسط لوکا کاردلی، جیم دوناهو، لوسیل گلاسمن، مایک جردن (در لابراتوار تکنولوژی‌های نرم‌افزاری اولیوت)، بیل کالسو و گرگ نلسون در شرکت مرکزی تحقیقات سیستمی تجهیزات دیجیتال و تحقیقات مرکزی اولیوتی طراحی شده‌است. ویژگی‌های اصلی ماجولا-۳ سادگی و امنیت می‌باشد که دلایلی بر قدرت یک زبان است و این ویژگی‌ها زبان را قدرتمند نگاه می‌دارد. با وجود اینکه ماجولا-۳ قصد داشت که امنیت وجود در زبان پاسکال را داشته باشد قصد معرفی ساختاری جدید برای زبان‌های کاربردی جهانی را نیز داشت. ماجولا-۳ پشتیبانی برنامه‌نویسی عمومی (مثل قالب‌ها)، چند نخ، کنترل استثنا، بازیابی زباله، برنامه‌نویسی شی گرا، آشکار سازی و نشانه واضح کدهای نا امن را به زبان خود افزود. دلیل اصلی طراحی ماجولا-۳ این بود که زبانی طراحی شود که عمدهٔ ویژگی‌های زبان‌های امری را در فرم ساده‌ای دربرداشته باشد؛ بنابراین ویژگی‌های مشخص خطرناک و پیچیده مانند وراثت چندگانه و بارگذاری بر روی اپراتور حذف شدند. تاریخچه توسعه پروژه ماجولا-۳ در نوامبر سال ۱۹۸۶ هنگامی که ماریس وایکس به نیکلاس ویس چند ایده در مورد ورژن جدید ماجولا نوشت شروع شد. وایکس که در DEC کار می‌کرد فقط به این نکات بسنده کرد و به انگلیس بازگشت و به صفحه استراتژی پژوهشی اولیوتیس پیوست. ویس به اوبرون انتقال داده شده بود ولی مشکلی به کار کردن به نام ماجولا مشکلی نداشت. در دههٔ ۱۹۸۰، ماجولا-۳، به عنوان زبان قابل توجهی برای آموزش در نظر گرفته شد ولی هرگز این زبان برای استفاده‌های صنعتی پذیرفته نشد. کمک به این زبان می‌توانست برابر از بین رفتن DEC باشد (بخصوص در زمانی که قبل از فروش DEC در سال ۱۹۹۸ متوقف شده بود). | ## بخش 2: ماجولا ۳ | در هر صورت علی‌رغم سادگی و قدرت ماجولا-۳ به نظر می‌رسد تقاضا برای زبان کامپایلر بیس رویه‌ای و جود دارد که کمی از ویژگی‌های شی گرایی را داشته باشد. ماجولا-۳ در حال حاضر در دانشگاه‌ها عمدتاً در دوره‌های تدریس زبان‌های برنامه‌نویسی تدریس می‌شود که کتاب‌هایش خارج از چاپ است. برنامه‌ها در ماجولا-۳ نهایتاً به یک فایل ماژول می‌باشد، که این فایل دارای یک سری رابطه می‌باشد که برای دسترسی کلاینت‌ها می‌باشد. شبیه زبان‌های دیگر ماجولا-۳ نیز می‌تواند یک ماژول اصلی داشته باشد که می‌تواند مثلاً Main.m3 نام بگیرد یا اینکه فایل می‌تواند ماژول اصلی را از طریق دستور export صدا زده شود . ویژگی‌های زبان ماژولاریتی اولین و بهترین ویژگی این است که گردآوری واحدها که خواه INTERFACE یا پیاده‌سازی ماژول باشد از بک نوع هستند. یک واحد گردآوری شده میانجی توسط کلمه کلیدی INTERFACE شروع می‌شود و ثابت‌ها، تایپ‌ها، متغیرها، استثناها و فرایندهای را معنی می‌نماید. ماژول شدن با آوردن کلمهٔ کلیدی MODULE در ابتدا محقق می‌شود و کد واقعی را فراهم می‌آورد و ثابتی، توعی یا متغیری اضافی برای پیاده‌سازی میانجی‌ها احتیاج است. به‌طور میانجی‌ها باید اسمی که ماژول به کار می‌برند را به کار ببرند ولی اگر ماژولی به صورت ضمنی در ماژول دیگری استفاده شود با دستور Export احتیاجی به این کار نیست، برای نمونه برنامهٔ اصلی ماژولی را برای میانجی اصلی پیاده‌سازی می‌کند و خروجی می‌دهد . هر واحد گرد آوری شده شاید میانجی را IMPORT کند و زیر نظر کنترلر برنامه آیتم‌هایی را در میانجی‌ها شامل شود. به‌طور نمونه برای دسترسی به محتوای داخلی ماژول می‌توان از حرف "." استفاده نمود (مانند دسترسی به رکوردها) یک استفاده معمولی این است که یک داده ساختار را برای هر میانجی معرفی می‌کنیم با هرگونه پشتیبانی. در اینجا مثلاً به داده نوع T دسترسی خواهیم داشت با استفاده از MyModule.T ایمنی در برابر نا امنی بعضی از ویژگی‌ها به نظر می‌رسد نا امنی هستنئ، مثلاً زمانی که کامپایلر اطمینان نمی‌دهد که داده و نتیجه زمان زیادی موجود باشد (مثل زمانی که با برنامه‌نویسی c تداخل پیدا می‌کند) بکار بردن کلمهٔ UNSAFE در جلوی INTERFACE یا ماژول به این منظور است که به کامپایلر بفهماند که ویژگی‌های سطح پایین از زبان را فعال کن. | ## بخش 3: ماجولا ۳ | در نتیجه (مثل زبان C ++) به راحتی می‌توان داده‌های نوع انتزاعی را تعریف و استفاده نمود اما نه کاملاً مثل C++، دانه‌دانه بودن در سطح ماژول می‌باشد . قابلیت ردیابی هر کدام از معین کننده‌های هویت می‌توانند پیگیری شوند که درکجا تولید شده‌اند که شبیه include در زبان‌های دیگر نیست. یک واحد یکپارچه باید معرفی کننده‌ها را از یک واحد یکپارچه دیگر وارد خود کند، با استفاده از کلمهٔ IMPORT. برنامه‌نویسی شی گرا برنامه‌نویسی با استفاده از تکنیک‌های شی گرا در ماجولا -۳ استفاده شده‌است اما استفاده از آن‌ها مورد احتیاج نیست. خیلی از ویژگی‌های دیگری که در ماجولا-۳ مانند ماژول و اینترفیس وجود دارد که به‌جای استفاده از برنامه‌نویسی شی گرا می‌توان از آن استفاده کرد. یک نوع شی (کلاس در زبان‌های دیگر) با استفاده از OBJECT معرفی می‌شود که نحوه شبیه به رکورد و معرفی آن دارد اگرچه یک نوع شی از نوع مرجع می‌باشد، گرچه رکوردها در ماجولا-۳ وجود ندارند. BRANDED می‌تواند یک رشته را به عنوان آرگومان دریافت نماید اما وقتی حذف می‌شود یک رشته برای ما تولید می‌کند. ماجولا-۳ یکی از محدود زبان‌هایی است که به ماژول مرجع بیرونی احتیاج دارد که به صورت واضح توصیف شده‌است. مثلاً ماژول A یک مرجع به شی X دارد که این شی از ماژول B درست شده‌است پس باید از B.X استفاده شود. بخاطر احتیاجات زبان در نام‌ها و رونویسی روش‌ها می‌توان کاری را از انجام متوقف کرد با استفاده از اعلاناتی که به یک میانجی می‌دهیم (هر میانجی موجود). | ## جمع‌بندی | این امکان این اختیار را به ما می‌دهد که بتوان در حین اجرای برنامه، برنامهٔ نوشته شده را ویرایش کرد بدون هیچ‌گونه نگرانی در مورد برخورد چند برنامه با هم و می‌توان هستهٔ اصلی کتابخانه‌های زبان را با دانش قطعی در مورد زبان ویرایش کرد بدون اینکه برنامه‌های موجود دچار هیچ‌گونه گسستگی شود .