زبان پردازش اطلاعات (به انگلیسی: Information Processing Language) (اختصاری IPL) یک زبان برنامه‌نویسی می‌باشد که در حدود سال ۱۹۵۶ توسط آلن نیوول، کلیف شاو و هربرت الکساندر سیمون درشرکت رند و دانشگاه کارنگی ملون ساخته شد. نیوول وظیفهٔ language specifier-application programmer، شاو وظیفهٔ برنامه‌نویس و سیمون وظیفهٔ application programmer-user را بر عهده داشتند.

برای این زبان ویژگی‌هایی در نظر گرفته شده بود تا به برنامه کمک کند که مشکلات ساده را حل کند مثل یک لیست، مدیریت حافظه، نوع دادهs, توابع بازگشتی، رویه به عنوان ارگومان‌ها، ژنراتورها و چند وظیفه‌ای بدون قبضه‌ای. IPL مفهوم پردازش لیست را اختراع کرد اگرچه در سبک یک زبان اسمبلی بود.

نگاهی به IPL
------------

یک کامپیوتر IPL دارای:

1. مجموعه‌ای از *نمادها است*. همه نمادها آدرس‌ها و نام سلول‌ها هستند. برخلاف نمادها در زبان‌های بعدی نمادها شامل کاراکترهایی از اعداد می‌باشند و نوشته می‌شوند: H1, A29, 9-7, 9-100
	1. سلول‌های اسمی که با یک حرف شروع می‌شوند منطقه‌ای و آدرس مطلق هستند.
	2. سلول‌های اسمی که با -۹ شروع می‌شوند محلی هستند و در داخل زمینهٔ لیست مستقل معنی دار می‌باشند، یک لیست ۱–۹ به یک لیست ۱–۹ دیگر وابسته نیست.
	3. نمادهای دیگر (به‌طور مثال تعداد خالصpure numbers) داخلی هستند.
2. مجموعه‌ای از *سلول‌ها*است. لیست‌ها از چندیدن سلول با منابع متقابل ساخته شده‌اند. سلول‌ها دارای چندین فیلد اند:
	1. ،a 3 بیت فیلد زمانی برای ساخت کد استفاده می‌شوند که سلول‌ها به عنوان دستورالعمل استفاده شده‌اند و استفاده نمی‌شوند زمانی که سلول‌ها داده‌ها هستند.
	2. Q,a 3 بیت با ارزش فیلد زمانی برای منبع غیرمستقیم استفاده می‌شوند که سلول‌ها به عنوان دستورالعمل استفاده شده‌اند و استفاده نمی‌شوند زمانی که سلول‌ها داده‌ها هستند.
	3. SYMBیک نماد است که در سلول به عنوان ارزش استفاده می‌شود.
3. مجموعه‌ای از پردازش‌های اولیه می‌باشند که در زبان‌های جدید توابع اولیه نامیده می‌شوند.

ساختار داده‌ای IPL لیست است، اما این لیست‌ها بسیار پیچیده‌تر از لیست‌ها در بسیاری از زبان‌های دیگر هستند. یک لیست یک سری نمادهای متصل پیوسته را شامل می‌شود، همان‌طور که انتظار داریم یکسری تعاریف لیست که متصل شده‌اند به لیست‌ها به صورت تک تابع همچون ویژگی‌های متناوبی مثل اسم و ارزش.IPL اصولی را فراهم می‌کند برای دسترسی و تغییر ویژگی‌های اسم و ارزش. به لیست‌های توصیفی نام‌های محلی داده می‌شود (از ۱ تا ۹). بنابراین یک لیست L1 که دارای نمادهای S4 و S5 است نامیده می‌شود و با توجه به ارزش V1 نسبت به صفت A1 شرح داده می‌شود و V2 نسبت به A1 و به صورت زیر ذخیره می‌شود. ۰ نشان دهنده پایان یک لیست، سلول‌هایی که ۱۰۰ و ۱۰۱ و … نامیده می‌شوند به صورت خودکار تولید علامت داخلی هستند که مقادیر بی ربط هستند. این سلول‌ها می‌توانند در سراسر حافظه پراکنده باشند؛ فقط L1 است که با استفاده از یک نام منطقه‌ای که باید در سطح جهانی شناخته شده نیاز به اقامت در یک محل خاص دارد.

 `**IPL-V لیست ساختار**` 
`**مثال**`| `نام`  |  `SYMB`  |  `لینک` |
| --- | --- | --- |
| `L1`  |  `9-1`  |  `100` |
| `100`  |  `S4`  |  `101` |
| `101`  |  `S5`  |  `0` |
| `9-1`  |  `0`  |  `200` |
| `200`  |  `A1`  |  `201` |
| `201`  |  `V1`  |  `202` |
| `202`  |  `A2`  |  `203` |
| `203`  |  `V2`  |  `0` |

IPL یک زبان اسمبلی برای دستکاری لیست است. آن چند تا سلول دارد که به عنوان ثبت خاص مورد استفاده قرار می‌گیرد، فرضاً H1 شمارنده برنامه است فیلد SYMB از H1 نام دستورالعمل فعلی است. اگرچه، H1 به عنوان یک لیست تفسیر است. لینک H1 در شرایط مدرن، یک اشاره گر به پشته تماس است برای مثال زیرروال می‌خواهد تا SYMB از H1 را در این پشته قرار دهد.

H2 یک ایست خالی است. روش‌هایی که نیاز به تخصیص حافظه برای خالی کردن H2 دارد. روش که با حافظه به پایان می‌رسند با قرار دادن در H2. در ورود به یک تابع، لیستی از پارامترهای به H0 داده می‌شود. در خروج نتایج باید در H0 بازگردادنده می‌شود. بسیاری از روش‌ها بازمی‌گرداند یک نتیجه بولی که موفقیت یا شکست را نشان می‌دهد؛ که در H5 قرار می‌گیرد. ده سلول W0 تاW1 برای ذخیره‌سازی‌های کاری دولتی محفوظ هستند. روش‌ها «از نظر اخلاقی موظف» (به قول مقاله CACM) به ذخیره و بازیابی ارزش‌های این سلول‌ها هستند

هشت دستورالعمل وجود دارد، بر اساس ارزش‌های P، پاسخ زیرروال، گذاشتن /برداشتن S به H0، گذاشتن /برداشتن نماد در S به لیست متصل به S، کچی کردن مقادیر در S، انشعاب شرطی. در این دستورالعمل‌ها، S هدف است. S هم ارزش فیلد SYMB است اگر Q = ۰ باشد. یمبل‌های سلول نامیده می‌شوند به وسیلهٔ SYMB اگر Q=۱ باشد، یا سمبل‌های درون سلول نامیده می‌شوند توسط سمبل‌های درون سلول به‌وسیلهٔٔ SYMB اگر Q=۲ باشد. در تمام موارد، اما انشعاب شرطی، فیلدLINK از سلول می‌گوید که کدام آموزش برای عمل بعدی باید اجرا شود.

IPL دارای یک کتابخانه از ۱۵۰ عملیات پایه است. این خدمات عبارتند از عملیات ماننده:

* علامت متن برای برابری
* پیدا کردن، تنظیم، یا پاک کردن یک ویژگی از یک لیست
* قرار دادن نماد بعدی در یک لیست. درج نماد در یک لیست. پاک کردن یا کپی یک لیست کامل.
* عملیات‌های ریاضی (بر روی نام نماد).
* دستکاری نمادها؛ به عنوان مثال، تست اگر نماد نشان دهنده یک عدد صحیح، یا یک نماد است.
* I / O عملیات
* «ژنراتور»، که به تکرارکننده و فیلتر در برنامه‌نویسی تابعی مطابقت دارد. به عنوان مثال، یک ژنراتور ممکن است یک لیست از اعداد را قبول و یک لیست را از روی مربع‌هایش تولید کند. ژنراتور می‌تواند توابع مناسب طراحی شده را قبول کند - به شدت، آدرس کد از توابع مناسب طراحی می‌شوند - به عنوان آرگومان.

تاریخچه
-------

IPL در ابتدا برای اینکه نشان دهد که قضایای در *مبادی ریاضیات* با تلاش بی وقفهٔ برتراند راسل و آلفرد نورث وایت‌هد با دست ثابت شده‌است، در واقع می‌تواند با محاسبه ثابت شوند. با توجه به زندگی‌نامه سیمون «روش‌های زندگی من»، این نرم‌افزار در اصل برای اولین بار توسط شبیه‌سازی دست توسعه داده شد، استفاده از کودکان خود به عنوان عناصر محاسباتی، در حالی که کارت‌ها را به عنوان ثبات‌ها یی که شامل متغیرهای حالت از برنامه است می‌نویسند و نگه می‌دارند.

IPL به اجرای چند برنامه در اوایل هوش مصنوعی، همچنین با نویسندگان مشابه مورد استفاده قرار گرفت: منطق نظریه‌پرداز (۱۹۵۶)، حل‌کنندهٔ مشکل‌های عمومی (۱۹۵۷)، و برنامه شطرنج کامپیوتر خود

چندین نسخه از IPL ساخته شد: IPL-I (هرگز اجرا نشد)، IPL-II (1957 برای JOHNNIAC), IPL-III (وجود اختصار)،
IPL-IV,)IPL-V برای آی بی ام ۶۵۰، آی بی ام ۷۰۴، آی بی ام ۷۰۹۰، و بسیاری دیگر. به‌طور گسترده‌ای استفاده می‌شود)
IPL-VI.

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

جستارهای وابسته
---------------

* لیسپ

منابع
-----

زبان برنامه‌نویسی IPL