1 . 3 . 5 پاسکال : در این بخش یک ارزیابی از ویژگیهای پاسکال برای برنامه نویسی بزرگ ارائه می کنیم . به همین دلیل نسخه اصلی زبان را دراینجا در نظر می گیریم . اکثر بی مناسبتی های بحث شده در اینجا توسط تأکیدات انجام شده توسط اجراهای مدرن تصحیح شده اند . روالها و توابع برای تجزیه یک برنامه به مدول ها می باشد که می توانند برای اجرای آبسترهای روالی استفاده گردند بنابراین زبان صرفاً برنامه نویسی روالی را پشتیبانی می کند . بعضی نسخه های بعدی زبان باعث اصلاح نسخه اصلی پاسکال با افزودن ویژگی های برنامه نویسی شئ گرا و مدول گرا شده اند. یک برنامه پاسکال دارای ساختار شکل S.6 است . یک برنامه شامل عملیات و عبارت ها می باشد . عملیات توسط زبان فراهم می شوند یا بصورت تابع و روال مطرح می گردند . یک روال یا تابع حاوی بیان ثوابت ، انواع ، متغیرها و سایر روال ها وتوابع است سازمان یک برنامه پاسکال یک ساختار درختی از مدول ها است . ساختار درختی لانه ای کردن مدول هایی سطح پایین تر را نشان می دهد . لانه ای کردن برای کنترل دورنمایی اسامی بیان شده در داخل مدول ها مطابق با قانون اتصال استاتیک مطرح شده در بخش 4 . 7 . 2 ، استفاده می شود .
شکل ص 17
برای دسترسی به ساختار برنامه های پاسکال ، مثال زیر را در نظر بگیرید .
فرض کنید که طرح مدولار از بالا به پایین یک مدول A دو مدول را تعریف کند ، C , B . و آبستره های روالی کمکی را فراهم نماید . مدول B دو آبستر کش روالی خصوص را فرا می خواند که توسط مدول E , D فراهم می شوند . مدول C یک آبستراکشن روالی خصوص را فرا می خواند که توسط مدول F فراهم می شود .
شکل S.7 یک ساختار لانه بندی را برای یک برنامه ای نشان می دهد که شرایط های طرح را ارضاء می نماید .
شکل ص 18
یک مسئله اساسی با جواب شکل 7. 5 آن است که ساختار محدودیت ها را بر موارد یافت شده در طراحی تحمیل نمی کند . در واقع ،ساختار امکان فراخوانی های متعدد دیگر را فراهم می سازد . مثلاً می تواند A,B,C را فرابخواند . C میتواند A,B را فرابخواند و غیره از طرف دیگر ، ساختار 7 .5 بعضی شرائط را تحمیل می کند که ممکن است نامطلوب باشند . بعنوان مثال ، اگر ما کشف کنیم که مدول F به آبستراکشن روالی فراهم شده توسط مدول E احتیاج دارد ، ساختار فعلی دیگر کافی نمی باشد . شکل 8 . 5 یک آرایش مجدد ساختار برنامه را نشان می دهد که با این نیاز جدید سازگار است . مسئله با این سازمان جدید آن است که ساختار دیگر تفکیک سلسله مرتبه ای آبستراکشنی را نمایش نمی دهد . مدول E یک آبستراکشن کمکی است که توسط A بکار می رود ، اگر چه تنها دلیل برای تعویض آن در آن سطح در درخت آن است که هر دو مدول B, F لازم است به آن مراجعه کنند . مسائل مشابهی برای متغیر ها ، ثابت ها ،و انواع رخ می دهند . ساختار درخت دسترسی به متغیر های بیان شده را در محول های محصور کننده فراهم می کند . بعلاوه ، اگر هر مدول N,M لازم باشد که یک متغیر را به اشتراک بگذارد ، این متغیر ممکن است در مدولی بیان شود که از لحاظ استاتیکی N,M را هر دو محصور می نماید لذا متغیر برای هر مدول محصور شده دیگر توسط این مدول قابل دسترسی می شود . مسائل بعدی توسط طرح یک برنامه متنی از پاسکال ایجاد می شوند . کل برنامه یک متن یکنواخت واحد می باشد .
اگر برنامه بزرگ باشد ، مرزهای مدول فوراً دیده نمی شوند ، حتی اگر برنامه نویسی از قرار دادهای دقیق برای تعیین هویت استفاده نماید . یک تسرروال می تواند قبل از بدنه آن دیده شود ، (بدلیل مداخله نمودن بیان های روال داخلی) ، در نتیجه ، برنامه ها به سختی خوانده شده یا اصلاح می گردند . مسائل مربوط به پاسکال که دراین فصل بحث می شوند از ساختار بلوک ناشی می گردند و بنابراین برای سایر زبان های شبیه به ALGOL صدق می نمایند . ساختار بلوک برای برنامه نویسی کوچک کافی می باشد زیرا بطور طبیعی پشتیبانی را انجام می دهد ولی برای ساختار بندی برنامه های بزرگ باارزش نمی باشد . ساختار برنامه حاصل ازلانه بندی ممکن است با ساختار یافت شده در طی طراحی مداخله نماید . این امر می تواند به نوشتن ، خواندن و اصلاح برنامه ها لطمه بزند . پرسش مهم دیگر در ارتباط با پاسکال اولیه ، که تعریف زبان رسمی را فراهم می کند این موضوع را اصلاً اشاره نمی نماید . مثلاً ، گزارش اولیه پرسش های زیر را باقی می گذارد . به چه موجودیت های برنامه ای می تواند یک صدور واحد تألیف مجزا باشد ؟ چگونه یک رابط واحد معین می شود ؟ چه مقدار از کنترل نوع در مورد رابط های واحد انجام می شود ؟
اجراهای متفاوت راه حل های متفاوت را برای این نکات پذیرفته اند . در نتیجه برنامه های پاسکال توسعه یافته بر روی سکوهای متفاوت ممکن است ناسازگار باشد . مثلاً ، بعضی اجراها به روال های سطح خارجی وتوابع سطح خارجی اجازه می دهند که بطور مستقل کامپایل شوند . واحدهای کامپایل شده بطور مستقل از طریق یک ارتباط دهنده استاندارد جمع آوری و سر هم می شوند که اتصالات بین موجودیت های وارد شده توسط هر مدول و موجودیت های صادر شده بر طرف می کند .