الگول دبلیو

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو
الگول دبلیو
پارادایم(ها) رویه‌ای، دستوری، ساخت‌یافته
طراحی‌شده توسط نیکلاوس ویرت، سی. ای. آر هوار
ظهور در ۱۹۶۶ میلادی
تأثیرگرفته از الگول ۶۰
تأثیرگذاشته بر پاسکال

الگول دبلیو (به انگلیسی: ALGOL W) یک زبان برنامه‌نویسیست. الگول دبلیو بر مبنای یک ارائه برای الگول ایکس توسط نیکلاوس ویرت و سی. ای. آر هوار، به عنوان جانشین الگول ۶۰ در IFIP Working Group 2.1 ایجاد شد. هنگامی که کمیته داوری به این نتیجه رسید که این ارائه پیشرفتی نسبت به الگول ۶۰ ندارن، ارائه با عنوان کمکی به توسعهٔ الگول. به انتشار یافت. بعد از اعمال تغییرات اندکی به این زبان، ویرت پیاده سازی با کیفیتی برای IMB/360 در دانشگاه استنفورد را سرپرستی کرد که به گستردگی انتشار یافت.

این زبان تغییرات نسبتاً محافظه‌کارانه‌ای از جمله اضافه کردن رشته‌ها، بیت رشته‌ها، اعداد مختلط و ارجاع به نوع‌داده‌ی Record، و ارسال پارامترها با روش فراخوانی-با-نتیجه، معرفی کردن دستور while، جایگزینی switch با دستور case، و به طور کلی محدود کردن این ربان را نشان می‌داد. پیاده سازی با استفاده از PL/360، زبانی اسمبلی شبه الگول، طراحی شده توسط ویرت، انجام شد. این پیاده سازی شامل قابلیت‌های اشکال‌زدایی و عیب‌یابی Profiling بود.

صرف و نحو[ویرایش]

صرف و نحو الگول دبلیو بر مبنای زیرمجموعه‌ای از مجموعه حروف EBCDIC ساخته شده است. در الگول ۶۰ کلمه‌های از پیش‌تعریف شده کلمات کم استفاده هستند، اما در الگول دبلیو چیزی بیش از یک سلسله حروف نیستند، و نیازی به Stropping ندارند. کلمات از پیش تعریف شده و شناسه‌ها با فاصله از هم جدا می‌شوند. از این منظر صرف و نحو الگول دبلیو مشابه پاسکال و زبان‌های جدیدتر است.

توضیحات زبان الگول دبلیو با روش Affix Grammer، زبان الگول دبلیو را تعریف می‌کند که مشابه فرم بکوس-نائور است. این دستور صرف و نحو هستهٔ دستور صرف و نحو ون وینگاردن بود.

بسیاری از صرف و نحو الگول دبلیو با این دستورها تعریف شده‌اند.

  • شناسه‌ها در حوزه خود به وسیلهٔ تعریفشان مشخص شده‌اند. به عنوان مثال procedure identifier شناسه‌ایست که به وسیلهٔ اعلام یک روش تعریف می‌شود. و label identifier شناسه‌ایست که به عنوان برچسب goto استفاده می‌شود.
  • نوع متغیرها و عبارات با وندها مشخص می‌شود. به عنوان مثال τ function identifier یک نمونه نحوی برای تابعی است که متغیری از نوع τ بازمیگرداند، اگر یک شناسه به عنوان تابعی که متغیر از نوع صحیح بازمیگرداند در همین حوزه اعلام شده باشد، آن به integer function identifier گسترش میابد.
  • خطاهای نوع متغیری، خطاهای دستوری محسوب می‌شوند. برای مثال، «integer expression / integer expression» و «real expression / real expression» معتبر اما متمایز هستند که عبارات را نمایش می‌دهند، اما «real expression DIV integer expression» (مثلاً تقسیم یک عدد صحیح بر یک عدد اعشاری از نوع float-point) یک نمونهٔ نحوی نامعتبر است.

مثال[ویرایش]

این مثال امکان نوع دادهٔ Record را در الگول دبلیو نشان می‌دهد:

RECORD PERSON (
    STRING(20) NAME; 
    INTEGER AGE; 
    LOGICAL MALE; 
    REFERENCE(PERSON) FATHER, MOTHER, YOUNGESTOFFSPRING, ELDERSIBLING
);

REFERENCE(PERSON) PROCEDURE YOUNGESTUNCLE (REFERENCE(PERSON) R);
    BEGIN
        REFERENCE(PERSON) P, M;
        P := YOUNGESTOFFSPRING(FATHER(FATHER(R)));
        WHILE (P ¬= NULL) AND (¬ MALE(P)) OR (P = FATHER(R)) DO
            P := ELDERSIBLING(P);
        M := YOUNGESTOFFSPRING(MOTHER(MOTHER(R)));
        WHILE (M ¬= NULL) AND (¬ MALE(M)) DO
            M := ELDERSIBLING(M);
        IF P = NULL THEN 
            M 
        ELSE IF M = NULL THEN 
            P 
        ELSE 
            IF AGE(P) <AGE(M) THEN P ELSE M
    END

جستارهای وابسته[ویرایش]

منابع[ویرایش]

  • [۱] کمکی به توسعهٔ الگول
  • [۲] نکات افزوده بر "کمکی به توسعهٔ الگول"
  • [۳] اسناد متنوعی برای پیاده سازی‌های الگول دبلیو در سال ۱۹۷۲
  • [۴]
  • این مقاله، ترجمهٔ [۵] می‌باشد.