PL/I (Programming Language One) е процедурен език за програмиране от трето поколение, подходящ за широка гама приложения, включително системен софтуер, графики, симулации, текстообработка, Интернет- и бизнес приложения. PL/I е създаден от IBM и е въведен в употреба през 1964 г.
PL/I се научава и използва лесно. Той е език със свободна форма, с развита структура и с висока производителност. Притежава множество разнообразни възможности, които правят възможно научно, техническо, бизнес и системно програмиране с него. Предлага надеждност, машинна независимост, конструкции за структурно програмиране, мощни възможности за улавяне и обработване на грешки, управление на динамичната памет, множество типове данни, съвкупности от данни,възможности за входно-изходни операции и вградени функции: за обработка на низове и масиви, за математически и аритметични операции, за управление на точността и паметта, за улавяне и обработване на грешки, за дата и време и др.
За разлика от много други езици, PL/I е с напълно свободна форма и няма запазени ключови думи. PL/I определя значението на ключовите думи от контекста на използване. Програмистът може да се концентрира върху логиката на програмата, като използва значещи имена, вместо постоянно да мисли какви думи използва и дали те нямат специфично значение в езика. Напр., променлива, декларирана с име AREA е напълно валидна, въпреки че има такава ключова дума в PL/I. Осигурени са също и подразбирания, така че не трябва да се мисли за други характеристики.
PL/I е блоково ориентиран език, който се състои от пакети, процедури, начални блокове и команди.
Блоковата структура на PL/I позволява на програмистите да създават приложения с висока модуларност, защото блоковете могат да съдържат декларации, които дефинират имена на променливи и клас памет. По такъв начин програмистите могат да ограничат обхвата на дадена променлива до един единствен блок или до група блокове, или могат да я направят известна в цялата компилирана програма или в даден зареждащ се модул.
PL/I разполага с множество конструкции, които позволяват на програмата да бъде силно модуларна и добре структурирана с цел постигане на висока надеждност и лесно разработване, поддържане и разширяване:
Пакетите, процедурите и началните блокове позволяват висока степен на „капсулиране“ на данните и логиката на програмата.
PL/I предлага почти 200 вградени функции, псевдопроменливи и подпрограми, които манипулират скаларни и сумарни данни. Ето основните групи функции:
- Манипулация със символни, битови и графични низове
- Аритметични изчисления
- Математически изчисления
- Изследване на променливи с плаваща запетая
- Манипулация с променливи с плаваща запетая
- Манипулация с цели числа
- Управление на точността
- Манипулация с масиви
- Управление на паметта
- Управление на условия
- Входно- изходни операции
- Манипулация с дата/ време