آی‌ام‌پی (زبان برنامه‌نویسی)

این مقاله در مورد Irons' IMP است. برای زبان برنامه‌نویسی معاصر و نا مربوط است.
IMP یک زبان برنامه‌نویسی بود که توسه داده شد توسط E. T. Irons در اواخر ۱۹۶۰ و زود تر از ۱۹۷۰.
برخلاف دیگر سیستم‌های برنامه‌نویسی ای پی ام یک زبان توسعه گر نحوی بود.

با وجود این که طراحی این زبان پایش زبان الگول است. ای پی ام بسیاری ویژگی هارو تعریف می‌کند؛ که زبان الگول اون هارو ساپورت نمی‌کند مثل: توسعهٔ نحوی

کامپایلر برای ای پی ام در اوایل سال ۱۹۶۵ به وجود آمد؛ که استفاده می‌شد برای زبان برنامه‌نویسی (سیستم اشتراک زمان CDC-6600)و مورد استفاده در موسسه‌های دفاعی از سال ۱۹۶۷ قرار گرفت. اگر چه کامپایلر ان در مقایسه با زبان‌های غیرقابل توسعه کندتر بود ولی برای کار تولید عملی استفاده می‌شود.

کامپایلر IMP برای CDC-6600، کری، PDP-10 و PDP-11 کامپیوتر تهیه شده‌است. نسخه مهم IMP IMP65، IMP70 و آی‌ام‌پی (زبان برنامه‌نویسی) بود.

نحوهٔ نوشتن در IMP 
IMP به برنامه نویسان خود امکان گسترش نحو خود را می‌دهد. البته نه به اون معنای خاص که می‌تواند ساختار یا نوع داده هارو عوض کنه مقصود توسعهٔ نحوی است.
IMP از یک الگوریتم تجزیه قدرتمند که پایهی ان گراف و ماتریس‌های متصل هستند استفاده می‌کند. برنامه‌نویس ممکن است تولیدات جدید BNF به نمودار اضافه کنید.

نحوIMP72گسترش پیدا می‌کند به وسیلهی گسترش بیانیهٔ نحوی BNF که منبع برنامه را شامل می‌شود.
این ماشین خیلی قدرتمندهاست. اون به ماشین اجازه می‌دهد اجرا کنه زبان را به وسیلهٔ خودش. به عنوان مثال: توسط یک فایل IMP72 منبع فایل‌ها به‌طور کامل اظهارات نحو را شامل می‌شود.
در ابتدا وارد یک کامپایلر بی‌اهمیت می‌شود که قادر به ترجمهی ساده‌ترین بیانیه‌ها نحوی است.
وجود دارد همچنین یه بینیهٔ نحوی ساده.

در واقع این بینیه نحوی است که توسط bnf آماده شده با معنیه مرتبط اضافه شده در سمت راست :
 <class> ::= syntax-part ::= semantic-part
به‌طور مثال: اضافه شدن ساختار شرح داده شده توسطBNFزیر
 <EXP> ::= INCREMENT <VBL>
برای این که جملهی INCREMENT Vتبدیل بشود به جملهی V ← V + 1برنامه‌نویس تنها نیاز به وارد کردن بیانیه IMP زیر است:
<EXP> ::= INCREMENT <VBL,A> ::= "A←A+1"
معنایی بخشی همچنین می‌تواند حاوی تماس به روال معنایی باشد، که در بیانیه کد زیر است:
<ATOM> ::= ABS ( <ATOM,A> ) ::= DEWOP(214B,AREG1(1,13),A)
بخش معنایی این بیانیه حاوی تماس با روال معنایی است DEWOP. این استدلال برمبنای هشت است214B . روال معنایی خوانده می‌شود AREG1(1,13),وA,کدام مقدار در حال حاضر در راس پشته قراردارد. dewopیک روش معنایی است کهبه عنوان آرگومان‌هایش pdp-10 machine language opcode و register objectرا می‌گیرد و هر شی دیگری یک شی تولید می‌کند که مقدارش، نتیجهی اجرای machine instructionمعین شده‌است. با استفاده از فیلد آدرس شی ای که آخرین آرگومانش است در این مثال مشخص opcode 214bمشخص می‌کند ساختار  load machine و بنابراین نتیجه سینتکس بالا کد را کامپایل می‌کند تا محاسبه شود مقدار دقیق A

سیستم عامل فرهنگ عامه 
IMPیک زبان است که استفاده می‌شود دراژانس امنیت ملی ایالت متحده آمریکا

منابع 
  
 Experience with an Extensible Language, Irons E.T. , CACM, Vol. 13, No. 1, January 1970.
 Syntax Extension and the IMP72 Programming Language, Walter Bilofsky, Yale University, SIGPLAN Notices, May 1974.

پیوند به بیرون 
 PDP-10 IMP72 Reference Manual
 IMP72 Sources (dcus:[43,50306]*. *)
زبان‌های برنامه‌نویسی با نحو گسترش‌پذیر
زبان‌های برنامه‌نویسی سیستمی
آژانس امنیت ملی ایالات متحده آمریکا