IMP ادینبورگ
پارادایم برنامهنویسی | رویهای, دستوری, ساختیافته |
---|---|
خانواده | الگول |
طراحی شده توسط | Bratley, Whitfield, M. M. Barritt, David Rees, Peter D. Schofield, Roderick McLeod, Hamish Dewar, Peter D. Stephens, Peter Robertson |
توسعهدهنده | دانشگاه ادینبرو |
ظهوریافته در | ۱۹۶۶ |
ایستا, قوی | |
دامنه | واژگانی |
زبان پیادهسازی | Atlas Autocode, IMP |
بنسازه رایانش | English Electric KDF9, ICL System 4, UNIVAC 1108, IBM System/360, DEC PDP-9, DEC PDP-10, DEC PDP-11, DEC PDP-15, CTL Modular One, x86, Interdata 7-16, Interdata 7-32, Data General Nova |
سیستمعامل | BOS/360, DOS, Windows, Linux |
پیادهسازیهای بزرگ | |
Edinburgh IMP | |
گویش | |
IMP77, IMP80 | |
متأثر از | |
ALGOL 60, Atlas Autocode |
IMP ادینبورگ یک توسعه از Atlas Autocode است که ابتدا در حدود سالهای ۱۹۶۶-۱۹۶۹ در دانشگاه ادینبورگ اسکاتلند توسعه یافت. این زبان، یک زبان برنامهنویسی عمومی است که بهطور گستردهای برای برنامهنویسی سیستمها استفاده میشد.
بهطور واضحتر، IMP بسیار شبیه به ALGOL است و شامل تمام ساختارهای بلوکی به سبک ALGOL، کلمات کلیدی و انواع دادهها مانند آرایهها و رکوردها میباشد. این زبان به زبانهای به سبک ALGOL، یک نوع رشته (آرایهای از کاراکترها که اندازه آنها از قبل تعیین شده است) و عملگرهای داخلی برای دستکاری رشتهها و پردازش کاراکترها اضافه میکند. یک تفاوت مهم این زبان با ALGOL این است که IMP از پارامترهایی که به صورت نام منتقل میشوند، پشتیبانی نمیکند، اگرچه از پارامترهایی که به صورت مرجعی منتقل میشوند، پشتیبانی میکند.
IMP علاوه بر دستورهایی برای آدرسدهی در بخشهایی از کلمات، کنترل قابل توجهی بر نقشهبرداری حافظه دادهها فراهم میکند. بیشتر کامپایلرهای IMP بهطور پیشفرض، حتی در کد تولیدی، چکهای زمان اجرا و یک قابلیت ردیابی پشته (بازگشت به عقب) ایجاد میکنند. IMP اجازه میدهد دستورهای زبان ماشین اسمبلر داخلی در کد منبع نیز استفاده شود.
پیادهسازی IMP توسط ERCC برای سیستم ICL System 4 (که به نام IMP9 شناخته میشود) یک قابلیت ماکرو مبتنی بر سینتکس (که توسط آلن فریمن طراحی شده بود) ارائه داد که شبیه به ویژگیهای کامپایلر-کامپایلر ارائه شده توسط پیشساز IMP، یعنی Atlas Autocode بود.
کامپایلرهای اولیه IMP برای کامپیوترهای English Electric KDF9، ICL System 4، UNIVAC 1108، IBM System/360، DEC PDP-9 ،DEC PDP-15 و CTL Modular One توسعه یافتند. IMP برای پیادهسازی سیستم عامل Edinburgh Multiple Access System (EMAS) استفاده شد و یک کامپایلر برای سری ICL 2900 نوشته شد تا امکان انتقال EMAS به آن پلتفرم را فراهم کند. در سالهای بعد، نسخهای از IMP به نام IMP77 توسط پیتر رابرتسون در دپارتمان علوم کامپیوتر ادینبورگ توسعه یافت که یک کامپایلر قابل حمل بود و IMP را به پلتفرمهای بیشتری آورد. در سال 2002، زبان IMP77 توسط پروژه تاریخچه کامپیوتر ادینبورگ برای سختافزار Intel x86 که سیستمعاملهای DOS، ویندوز و لینوکس را اجرا میکرد، بازسازی شد و دوباره توسط فارغالتحصیلان و مهاجران ادینبورگ مورد استفاده قرار گرفت.
IMP و IMP77 که جدا شده بودند، بعدها با معرفی استاندارد IMP80 که توسط پیادهسازیهای مرکز کامپیوتر منطقهای ادینبورگ پشتیبانی میشد، به یک زبان واحد تبدیل شدند. IMP80 همچنین به چندین پلتفرم از جمله اینتل منتقل شد و تا دهه ۱۹۹۰ بهطور فعال مورد استفاده قرار میگرفت.
IMP ادینبورگ ارتباطی با زبان برنامهنویسی قابل توسعه از لحاظ سینتکس IMP که توسط ادگار تی. آیرونس برای CDC 6600 توسعه داده شده بود ندارد؛ زبانی که توسط آژانس امنیت ملی (NSA) برای سالها مورد استفاده قرار میگرفت.
همچنین بخوانید
[ویرایش]- IMP (زبان برنامهنویسی) (تفاوت)
منابع
[ویرایش]- "Early IMP Program (the world's first known self-reproducing program)".
- "IMP77 Compiler: Intel (Windows, Linux)". Archived from the original on 2005-04-07. Retrieved 2020-05-05.
- Freeman, Alan. "The IMP Macro Language Manual" (PDF).
- Freeman, Alan. "An example of IMP Macros in use".
- McLeod, Roderick (1974). "Edinburgh IMP Language Manual, Second edition, scan".
- Robertson, Peter S. (December 1977). "The IMP77 Language: A Reference Manual (rekeyed 2003)" (PDF). Edinburgh Computer History Project. University of Edinburgh. Archived from the original (PDF) on 2005-05-29. (ASCII version)
- "Using Imp77".
- "The Production of Optimised Machine Code for High Level Languages using Machine-Independent Intermediate Codes".
- "I-Code V1.3 Working Notes". Archived from the original on 2004-12-16.
- "IMP11 User's Guide".
- Farvis, Keith M. (June 1978). "IMP on the DECsystem-10/20: Users Guide (Library Manual)".
- Stephens, Felicity; Murison, John. "Edinburgh IMP80 Language Manual".
- Bratley; Rees; Schofield; Whitfield (1965). "Source of first ever IMP compiler; for English Electric KDF9".
- Dewar, Hamish. "IMP compiler for PDP9/PDP15 (source code)".
- "Windows Port of IMP15 (generates stand-alone .exe files)".
- Dewar, Hamish Notes on. "IMP9 Compiler Output".
- Rees, David. "Skimp MkII compiler (used in 3rd year compilers class at University of Edinburgh)".
- "IMP compiler for PDP11 bootstrapped via Skimp (source code)".
- "Source of first IMP compiler written entirely in IMP". 1970.
- Dewar, Hamish. "Source of IMP compiler for 68000 platform". Archived from the original on 2003-11-27.
- Robertson, Peter. "Sources of Imp77 compilers for several platforms".
- Stephens, Peter D. "Source of Imp80 compiler for Intel".
- Schofield, Peter D. "Notes on IMP Programming".
- Stephens, Peter D. "The IMP Language and Compiler (extracts)". Archived from the original on 2006-09-24.
- Stephens, Peter D. "IMP80: A Historical Introduction". Archived from the original on 2004-12-07.
- Murison, John M. "Differences between ERCC IMP on ICL 4/75 and IMP80 on ICL2900".
مراجع
[ویرایش]- McLeod, Roderick; Barritt, Marjorie M. (July 1970). "Edinburgh IMP Language Manual, Second edition" (PDF). University of Edinburgh, Edinburgh Regional Computing Centre (published 1974).