From Wikipedia, the free encyclopedia
PL/I (Пи Ел Едно или Пи Ел Уан) (от англ. Programming Language One) е процедурен език за програмиране от трето поколение, подходящ за широка гама приложения, включително системен софтуер, графики, симулации, текстообработка, Интернет- и бизнес приложения. PL/I е създаден от IBM и е въведен в употреба през 1964 г.
PL/I се научава и използва лесно. Той е език със свободна форма, с развита структура и с висока производителност. Притежава множество разнообразни възможности, които правят възможно научно, техническо, бизнес и системно програмиране с него. Предлага надеждност, машинна независимост, конструкции за структурно програмиране, мощни възможности за улавяне и обработване на грешки, управление на динамичната памет, множество типове данни, съвкупности от данни (масиви, структури, обединения и комбинации от тях), множество възможности за входно-изходни операции и вградени функции: за обработка на низове и масиви, за математически и аритметични операции, за управление на точността и паметта, за улавяне и обработване на грешки, за дата и време и др.
За разлика от много други езици, PL/I е с напълно свободна форма и няма запазени ключови думи. PL/I определя значението на ключовите думи от контекста на използване. Програмистът може да се концентрира върху логиката на програмата, като използва значещи имена, вместо постоянно да мисли какви думи използва и дали те нямат специфично значение в езика. Напр., променлива, декларирана с име AREA е напълно валидна, въпреки че има такава ключова дума в PL/I. Осигурени са също и подразбирания, така че не трябва да се мисли за други характеристики (напр. данни от типа COMPLEX).
PL/I дефинира своите типове данни много прецизно, без оглед на хардуера. Например, дадено цяло число (integer) се дефинира като имащо вида REAL или COMPLEX, основа BINARY или DECIMAL, плюс точност, каквато пожелае програмистът. Следователно, FIXED BINARY(12) декларира цяло двоично число от 12 бита данни, а FIXED DECIMAL(3) декларира десетично число от три десетични цифри. Получава се точно това, което иска програмистът, дори и машината да не поддържа даден тип данни или точност.
PL/I е блоково ориентиран език, който се състои от пакети, процедури, начални (begin) блокове и команди (statements).
Блоковата структура на PL/I позволява на програмистите да създават приложения с висока модуларност, защото блоковете могат да съдържат декларации, които дефинират имена на променливи и клас памет. По такъв начин програмистите могат да ограничат обхвата на дадена променлива до един-единствен блок или до група блокове, или могат да я направят известна в цялата компилирана програма или в даден зареждащ се модул.
PL/I разполага с множество конструкции (constructs), които позволяват на програмата да бъде силно модуларна и добре структурирана с цел постигане на висока надеждност и лесно разработване, поддържане и разширяване:
Характерна черта на PL/I, която допринася за използването му от широка гама приложения, е голямото разнообразие типове данни, които могат да бъдат представени и с които може да се борави:
В PL/I данните могат да бъдат единични елементи от данни или могат да се групират в съвкупности от данни, към които програмистът може да се обръща колективно или индивидуално. Съвкупностите от данни могат да бъдат масиви, структури, обединения (unions), масиви от структури или обединения, структури от обединения или масиви и комбинации от тях, осигурявайки изключително богат фонд от средства за описание и боравене с всякакви възможни данни.
Например, ако един масив от структури ще се използва за съхраняване на метеорологични данни за всеки месец от 20 и 21 век, той трябва да бъде деклариран по следния начин:
Declare 1 Year(1901:2100), 3 Month(12), 5 Temperature, 7 High decimal fixed(4,1), 7 Low decimal fixed(4,1), 5 Wind&us.velocity, 7 High decimal fixed(3), 7 Low decimal fixed(3), 5 Precipitation, 7 Total decimal fixed(3,1), 7 Average decimal fixed(3,1), 3 * char(0);
Метеорологичните данни за месец юли 1991 г. ще се съдържат в елемента Year(1991,7) на масива от структури Year. Програмистът може да се обръща и към части от тези данни, напр. Temperature(1991,7) или Precipitation(1991,7).
С данните може да се манипулира или като с индивидуални елементи, или като със съвкупности. Например, едно извикване на вградената функция SQRT може да изведе корен квадратен на данните от цял масив с 15 измерения, като създава идентичен масив, съдържащ стойностите на квадратните корени в съответстващите елементи.
PL/I предлага почти 200 вградени функции, псевдопроменливи и подпрограми, които манипулират скаларни и сумарни данни. Ето основните групи функции и някои примери:
Осигурени са четири различни класа памет: автоматична (AUTOMATIC), статична (STATIC), управлявана (CONTROLLED) и базирана (BASED). Типът на данните, представянето им, характерът на приложението и т.н., обикновено диктуват избора на класа памет, използван за дадени данни. Програмистите могат динамично да заделят и освобождават базираната и управляваната памет.
За всички класове памет данните могат да се инициализират автоматично, когато паметта бъде заделена.
PL/I осигурява средства за управление на различни условия, които могат да възникнат при изпълнение на PL/I програма. Тези условия могат да бъдат очаквани или неочаквани и могат да бъдат откривани от хардуера (напр. ZERODIVIDE) или от PL/I (напр. CONVERSION), или от операционната система, или от друг софтуер. Като използва тези средства, програмистът може да напише приложение на PL/I, което да осигури безпрепятствена работа.
Могат да се управляват дори прекъсвания, инициирани от потребителя, както и нормалното и ненормалното прекратяване на програмата.
Могат да бъдат активирани условия по много различни начини, за да се осъществява автоматична диагностика на програмата при:
PL/I програмите имат възможност да обработват записи с различни размери и типове, да имат достъп до различни устройства, да редактират и проверяват различни видове входни и изходни данни и лесно да създават файлове с отчети. Поддържат се два типа вход/ изход:
Въпреки че повечето рутинни операции като отварянето и затварянето на файл се управляват автоматично от PL/I, са предвидени множество възможности, които да позволят на PL/I програмата прецизно да управлява входно-изходните операции, отваряне, затваряне и състояние на файловете, както и условия на грешки. Средствата за управление на входно-изходните условия включват:
В PL/I има възможност за използване на макроси за условно компилиране и модифициране на сорса преди компилация. Например, програмистът може да включи специфичен код по време на разработката и тестването и да го отстрани при окончателното компилиране на програмата.
Seamless Wikipedia browsing. On steroids.