موضوع مقاله: مادولا (زبان برنامه‌نویسی) | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # مادولا (زبان برنامه‌نویسی) | مقدمه: عدم وجود متودی منسجم در طراحی الگول-68 باعث شد که این زبان به مجموعه‌ای از امکانات بی نظم و آشفته تبدیل شود و مانند زبان PL/I سقوط زود هنگامی را تجربه کند. | ## بخش 1: مادولا (زبان برنامه‌نویسی) | در این زمان دکتر ورث کمیته را رها کرد و تصمیم به طراحی زبانی متأثر از تئوری‌های دایسترا (Dijkstra)، هور (Hoare) و دال (Dahl) گرفت و سرانجام تلاش او زبان پاسکال بود که به گفته خودش هدف از طراحی زبان پاسکال بر دو مبنا بود: طراحی زبانی اصولی برای آموزش برنامه‌نویسی و گسترش زبانی که قابلیت اطمینان و کارایی بالایی برای کامپیوترهای موجود دارد. اول لیستی از مسائل مرتبط با پروژه و دیگر راه حل هر یک از این مسائل که به راهکاری برای پروژه منجر می‌شوند. چیزی که مرکز تحقیقات پالو آلتو (PARC)، جایی که ورث مشغول به کار بود، به آن نیاز داشتند نوعی زبان برنامه‌نویسی بود که به کمک آن بتوان سیستم‌های بزرگ و پیچیده را پیاده کرد یا به عبارتی امکانی برای پیاده‌سازی واحدهایی مرتبط با سیستم که به‌طور جداگانه قابل ترجمه باشند. زیانی که ورث در صدد طراحی آن برای رفع نیازهای PARC بود، برگرفته از زبان پاسکال با تأکید بیشتری بر واحدهای برنامه‌نویسی یا همان مادول‌ها بودند و به همین علت مادولا نام گرفت. امکاناتی کامپیوترهای سال 1977 مهیا می‌کردند پردازنده‌های مرکزی بودند که سیستم‌های پیچیده time-sharing را مدیریت می‌کردند و با ترمینال‌ها قابل دسترسی بودند. انقلاب بزرگ پدیدار شدن سیستم‌های شخصی آلتو که در PARC توسعه یافته بودند ورث را متقاعد کرد که در آینده، توسعه نرم‌افزار بر اساس این سیستم‌های شخصی خواهد بود. در حالی که این سیستم‌ها در آن زمان در بازارها موجود نبودند یک راه برای PARC وجود داشت و آن این بود که خود این امکانات را فراهم آورد. ساخت سخت‌افزارهای جدید ملزم به فراهم کردن سیستم‌عامل، نرم‌افزارهای کاربردی و به همینطور زبان و کامپایلر مناسب برای آن است. در واقع محرک اصلی طراحی زبان Modula-2 ایجاد زبانی ساده بود که بتواند ساخت نرم‌افزارهای مورد نیاز لیلیث را تحت پوشش قرار دهد تا به سیستمی قدرتمند برای توسعه نرم‌افزار تبدیل شود. | ## بخش 2: مادولا (زبان برنامه‌نویسی) | اسناد و اهداف ساخت این زبان جدید در سال 1977 تدوین شدند و طراحی زبان به سال‌های 1978-79 موکول شد و هم‌زمان با آن پروژه پیاده‌سازی یک مترجم برای زبان شروع شد. Mesa زبانی بود که در دهه 70 از آن در PARC برای پروژه‌های سطح پایین و پیاده سازی‌های تیمی استفاده می‌شد. Modula-2 و ایستگاه کاری آن لیلیت، همواره کنار یکدیگر شناخته شده‌اند و اولین سیستمی را تشکیل می‌دادند که امکانات کامپیوتر شخصی به همراه محیط گرافیکی با تفکیک بالا و پنجره ای، موشواره، ویراشگرهای متن با فونت‌های مختلف و چاپگر لیزری مدت‌ها قبل از مکینتاش ارائه کردند. در طراحی Modula-3 تلاش شد که امنیت تایپ داده‌های پاسکال دنبال شود و در عین حال ساختارهای جدید برای کاربردهای واقعی اضافه شود. هدف از طراحی Modula-3 ساخت زبانی بود که از مهم‌ترین امکانات زبان‌های برنامه‌نویسی مدرن امروزی به فرم ساده استفاده کند و از امکاناتی مانند وراثت چندگانه و اشتقاق عملگرها که باعث پیچیدگی و ناامنی زبان می‌شدند جلوگیری شود. در دهه 90 Modula-3 جایگاه قابل توجهی در آموزش برنامه‌نویسی کسب کرد ولی همچنان در کابردهای تجاری چندان به کار گرفته نشد. در حال حاضر Modula-3 در دانشگاه‌ها عموماً در درس‌هایی که به مقایسه زبان‌های برنامه‌نویسی می‌پردازند تدریس می‌شود و کتاب‌های مربوط به Modula-3 دیگر چاپ می‌شوند. زبانهای برنامه‌نویسی خانواده مادولا تمام نسخه‌های مختلف و فرزندان زبان مادولا از نوع زبان‌های امری و از خانواده زبان‌های بلوکی الگول 60 هستند. در زبان‌های مادولا تایپ تمام عبارتها و متغیرها در زمان کامپایل مشخص می‌شوند و تایپ یک عبارت با استفاده از زیر عبارتهای آن عبارت مشخص می‌شوند. | ## بخش 3: مادولا (زبان برنامه‌نویسی) | همچنین در زبان‌های مادولا تبدیل خودکار تایپ وجود ندارد و تبدیل تایپ باید به‌طور صریح انجام شود. همچنین مفهوم فایل سمبل‌ها به عنوان اطلاعات از قبل ترجمه شده از زبان Mesa گرفته شدند. مادول واحدی است که به‌طور ساده مفهوم کپسوله‌سازی را پیاده می‌کند و به برنامه‌نویس امکان می‌دهد متغیرها و توابع در یک مادول از دید کاربر بیرونی مخفی باشند مگر آنکه Import یا Export شده باشند. بدین معنی که در زمان کامپایل تطابق تایپ‌ها و پیروی آن‌ها از قواعد تایپ زبان در زمان کامپایل صورت می‌گیرد و به زمان اجرا موکول نمی‌شود. در مقابل پاسکال مشکلاتی داشت از جمله کامل نبودن برخی از تایپ‌های پارامتری توابع مانند تایپ Procedure که باعث می‌شود نتوان چک کردن تایپ به‌طور ایستا صورت بگیرد. این نوع تایپ در پاسکال نیز به عنوان پروسیجرهای پارامتریک (ورودی از نوع پروسیجر) وجود داشت و در مادولا به متغیرها و پارامترها بسط داده شد. امکانات سطح پایین در زبان مادولا در زبان مادولا امکاناتی هستند که قابل پیاده‌سازی توسط مجردات زبان نیستند و از این رو دز سطح ماشین پیاده‌سازی شده‌اند. اگر x یک متغیر و T یک تایپ در زبان مادولا باشند، T(x) همان مقدار x را با تایپ T داراست در صورتی که تایپ x به T قابل تبدیل باشند. این امکانات زبان مادولا این زبان را تا حدی وابسته به ماشین و نحوه پیاده‌سازی زبان کرده‌است. | ## جمع‌بندی | Modula-2 یکی از اولین زبان‌های برنامه‌نویسی سطح بالاست که این امکان را فراهم کرده‌است.