close
Перейти до вмісту

PL360

Матеріал з Вікіпедії — вільної енциклопедії.
PL360
Парадигмапроцедурне програмування, імперативне програмування і структурне програмування Редагувати інформацію у Вікіданих
Дата появи1966 Редагувати інформацію у Вікіданих
Система типізаціїстатична і строга типізація Редагувати інформацію у Вікіданих

PL360 (або PL/360) — мова системного програмування, розроблена Ніклаусом Віртом і реалізована Віртом, Джозефом В. Веллсом молодшим та Едвіном Саттертуейтом молодшим для комп’ютера IBM System/360 у Стенфордському університеті . Опис PL360 опубліковано на початку 1968 року, хоча реалізація, ймовірно, була завершена до того, як Вірт покинув Стенфорд у 1967 році.[1]

Основні особливості

[ред. | ред. код]

PL/360 — це однопрохідний компілятор мови, синтаксис якої подібний до ALGOL, який надає можливості низькорівневого програмування (машинні інструкції, робота з регістрами тощо), подібно [a] до мови асемблера, але також надає функції, які зазвичай зустрічаються у мовах програмування високого рівня, такі як складні арифметичні вирази та потоки керування. Вірт використовував PL360 для створення ALGOL W .

Типи даних: :8

  • Byte (character) – 1 байт
  • Short integer – 2 байти, інтерпретується як ціле число в двійковій системі запису
  • Integer / logical – 4 байти, що інтерпретуються як ціле число в двійковій нотації з доповненням до двох
  • Real – 4 байти, інтерпретовані як коротке арифметичне число з рухомою комою з основою 16 (шістнадцяткове)
  • Long real – 8 байт, інтерпретується як довге число з плаваючою комою з основою 16

Регістри можуть містити ціле, дійсне або довге дійсне.

Індивідуальні інструкції System/360 можна генерувати inline за допомогою «інструкції функції» PL360, яка визначала інструкцію за форматом і кодом операції. Аргументи функції призначалися послідовно полям в інструкції. Приклади[прояснити: ком.]:

визначення посилання
UNPK(10,#F300) UNPK(3,7,B2,worker)
EX(2,#4400) EX(R1,MVC(0,lines,buffer)) зверніть увагу на вкладене посилання

Приклад

[ред. | ред. код]

R0, R1, R2 і FLAG є попередньо декларованими іменами.

    BEGIN INTEGER BUCKET;
         IF FLAG THEN
         BEGIN BUCKET := R0; R0 := R1; R1 := R2;
               R2 := BUCKET;
         END ELSE
         BEGIN BUCKET := R2; R2 := R1; R1 := R0;
              R0 := BUCKET;
         END
         RESET(FLAG);
    END

Реалізація

[ред. | ред. код]

Вірт працював у Стенфорді у 1963-1967 роках. На початку своєї роботи там він розробляв свій компілятор та інтерпретатор мови Euler, початковий код яких датовані 1965 роком. Також у 1965 році Стенфорд оновив свій B5000 на базі феритової пам’яті з барабанним накопичувачем до B5500 з дисковим накопичувачем .

Оскільки цільовий IBM System/360 (який мав замінити наявний IBM 7090) не був встановлений до 1967 року, початкова реалізація PL360 була написана на ALGOL і протестована на станфордському B5500. [2] Після роботи компілятор був перекодований у PL360, перекомпільований у системі Burroughs і переміщений як двійковий файл до S/360.[1]:66

Основною мовою для B5500 була Executive Systems Problem Oriented Language (ESPOL), похідна від ALGOL, а PL360 був призначений для того, щоб привнести подібні можливості в архітектуру мейнфреймів IBM, хоча йому бракувало основних можливостей як Assembler F, так і ESPOL. Цей намір було здебільшого проігноровано, а програмісти продовжували використовувати реалізації макро-асемблерів IBM.

Однак на початку 1970-х років PL360 було розширено, щоб забезпечити більше можливостей, і це була мова програмування, вибрана для розробки Stanford Physics Information Retrieval System (SPIRES), Стенфордської системи керування базами даних.

Див. також

[ред. | ред. код]

Примітки

[ред. | ред. код]
  1. Але можливостей неявного адресування, типу асемблерного USING, не було.

Список літератури

[ред. | ред. код]
  1. 1 2 Wirth, Niklaus (Січень 1968). PL360, a Programming Language for the 360 Computers. Journal of the ACM. 15 (1): 34—74. doi:10.1145/321439.321442.
  2. Satterthwaite, E. (Березень 1968). Notes on Construction of Subsystems within Operating System/360 (PDF). с. 1. CGTM #43.

Зовнішні посилання

[ред. | ред. код]