سیستم لینینگ و زیرلر

از ویکی‌پدیا، دانشنامهٔ آزاد

سیستم لینینگ و زیرلر (به انگلیسی: Laning and Zierler system) (که توسط کاربران آن «جورج» نیز نامیده می‌شود) یکی از اولین کامپایلرهای جبری عملیاتی بود، یعنی سیستمی با قابلیت پذیرش فرمول‌های ریاضی در علامت گذاری جبری و تولید کد ماشین معادل (اصطلاح کامپایلر هنوز اختراع شده و از این سیستم به عنوان «یک برنامه تفسیری» یاد می‌شود). در سال ۱۹۵۲ توسط J. Halcombe Laning و Neal Zierler برای MIT WHIRLWIND اجرا شد. قبل از آن UNIVAC A-2، IBM Speedcoding و تعدادی از سیستم‌ها پیشنهاد شده‌اند اما هرگز اجرا نشده‌اند.

شرح[ویرایش]

این سیستم فرمول‌ها را در یک علامت گذاری کمابیش جبری پذیرفت. این قوانین استاندارد برای تقدم اپراتور را محترم شمرده، پرانتزهای تو در تو را مجاز می‌داند و از نسخه‌های فرعی برای نشان دادن توان استفاده می‌کند. این در میان اولین سیستم‌های برنامه‌نویسی بود که به نام متغیرهای نمادین اجازه می‌دهد و ذخیره‌سازی را به صورت خودکار اختصاص می‌دهد.

این سیستم همچنین وظایف زیر را به صورت خودکار انجام می‌دهد: محاسبه نقطه شناور، ارتباط با زیر برنامه‌ها برای عملکردهای اصلی تجزیه و تحلیل (سینوسی و غیره) و چاپ و آرایه‌ها و نمایه سازی.

سیستم ورودی را روی نوار پانچ شده تولید شده توسط فریدن فلکسوویتر پذیرفت. نویسه ای که در نصب Whirlwind مورد استفاده قرار گرفت شامل ارقام «بزرگ» (خط بزرگ) و یک خط خط بود که برای نشان دادن شاخص‌های آرایه، کدهای عملکرد و نمایشگرهای (عدد صحیح) استفاده می‌شد. مانند سایر نکات برنامه‌نویسی زمان خود، این سیستم فقط نام متغیرهای تک حرف را می‌پذیرد و ضرب با قرار گرفتن متغیرها نشان داده می‌شود. یک نقطه برجسته برای نشان دادن ضرب صریح در دسترس بود (این کاراکتر با پر کردن نیمه پایینی روده بزرگ ایجاد شد!) این سیستم همچنین شامل پشتیبانی از حل معادلات دیفرانسیل خطی با استفاده از روش Runge-Kutta بود.

این سیستم در کتابچه راهنمای نوشتاری ۱۸ صفحه ای برای افراد آشنا به ریاضیات اما شاید آشنا به رایانه شرح داده شده‌است. تقریباً هیچ چیزی در راه معرفی سخت‌افزار کامپیوتر وجود ندارد.

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

مثال زیر، برگرفته از صفحه ۱۱ کتابچه راهنمای سیستم، با استفاده از گسترش سری تیلور، cos⁡x را برای x = ۰٬۰٫۱، … ، ۱ ارزیابی می‌کند. پیاده‌سازی بسیار کارآمد نیست، و سیستم در حال حاضر cos⁡x را در کتابخانه زیرروالین خود شامل می‌شود، اما این مثال به طعم نحو سیستم کمک می‌کند. توجه داشته باشید که تقسیم در سیستم پس از ضرب ارزیابی می‌شود:

1 x = 0,
   z = 1 - x^2/2 + x^4/2·3·4 - x^6/2·3·4·5·6
     + x^8/2·3·4·5·6·7·8 - x^10/2·3·4·5·6·7·8·9·10,
PRINT x, z. e = x - 1.05, CP 1, STOP

برنامه‌ها[ویرایش]

برنامه‌های کمی برای سیستم نوشته شده‌است. یک برنامه مستند که توسط خود لانینگ و زیرلر تألیف شده‌است، مشکلی در هوانوردی داشت. این مسئله برای بیان نیاز به هفت سیستم معادلات دیفرانسیل داشت و به Whirlwind داده شده بود زیرا بیش از حد تحمل آن برای تحلیلگر دیفرانسیل MIT بود. نویسندگان با بهره‌گیری از ویژگی Runge-Kutta سیستم برنامه‌نویسی خود، در مدت زمان دو ساعت و نیم برنامه ۹۷ گزاره ای تولید کردند. این برنامه برای اولین بار با موفقیت اجرا شد.

تأثیر بر FORTRAN[ویرایش]

برخی منابع گفته‌اند که سیستم Laning و Zierler الهام بخش FORTRAN بوده‌است. خود جان باکوس اعتراف کرد که در این باور غلط سهیم بوده‌است:

تأثیر سیستم Laning و Zierler در توسعه FORTRAN سؤالی است که بسیاری از اظهارات نادرست از جانب من گنگ کرده‌است. برای سالهای زیادی من معتقد بودم که ما با استفاده از دیدن نمایشی از سیستم Laning و Zierler در MIT ایده استفاده از نت جبری را در FORTRAN گرفته‌ایم. (Backus)

پس از بررسی اسناد و مدارک مربوط به آن زمان، بکوس دریافت که وقتی او و تیمش فرصتی برای دیدن کارهای لانینگ و زیرلر پیدا کردند، پروژه FORTRAN "به خوبی در حال انجام است":

ما قبلاً در حال بررسی ورودی جبری بودیم که بسیار پیچیده‌تر از سیستم لانینگ و زیرلر بود وقتی که ما برای اولین بار از کار پیشگام آنها شنیدیم … دشوار است که بدانیم، در صورت وجود، ایده‌های جدیدی که از دیدن نمایش سیستم آنها به دست آوردیم. (Backus, op cit)

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

یادداشت[ویرایش]

^ J. W. Backus، تاریخچه FORTRAN I، II و III. مجموعه مقالات اولین کنفرانس ACM SIGPLAN در مورد تاریخچه زبانهای برنامه‌نویسی

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

  • Backus, J. W. The history of FORTRAN I, II and III. Proceedings First ACM SIGPLAN conference on History of programming languages (Available on line).
  • Laning, J.H. and N. Zierler. A Program For Translation of Mathematical Equations for Whirlwind I. Engineering Memorandum E-364, Instrumentation Laboratory, Massachusetts Institute of Technology. (Available on line).
  • Sammet, Jean E. , "Programming Languages: History and Fundamentals" Prentice-Hall, 1969
  • "The Early Development of Programming Languages" in A History of Computing in the Twentieth Century, New York, Academic Press, 1980. ISBN 0-12-491650-3

Specific