Jump to content

БЛАЖЕНСТВО

БЛАЖЕНСТВО
Парадигма Структурированный , императивный ( процедурный )
Разработано В.А. Вульф , Д.Б. Рассел, А.Н. Хаберманн
Разработчик Университет Карнеги-Меллон
Впервые появился 1970 год ; 54 года назад ( 1970 )
Стабильная версия
БЛИСС-64
Дисциплина набора текста Бестиповый
Объем Лексический
Платформа PDP-10 , PDP-11 , VAX , PRISM , MIPS , DEC Alpha , IA-32 , IA-64 , x86-64
ТЫ Кросс-платформенный
Веб-сайт пдп-10 .задний край /bb-m836d-bm /
Диалекты
Общее БЛИСС
Под влиянием
АЛГОЛ

BLISS — это язык системного программирования, разработанный в Университете Карнеги-Меллона (CMU) В.А. Вульфом , Д.Б. Расселом и А.Н. Хаберманном примерно в 1970 году. Это был, пожалуй, самый известный системный язык, пока C. несколько лет спустя не дебютировал С тех пор C стал популярным и распространенным, а BLISS канул в безвестность. Когда язык C находился в зачаточном состоянии, в нескольких проектах Bell Labs обсуждались преимущества BLISS перед C. [ нужна ссылка ]

BLISS — это бестиповый блочной структурой , язык программирования с основанный на выражениях, а не на инструкциях, и включает в себя конструкции для обработки исключений , сопрограммы и макросы . Он не включает оператор goto .

По-разному говорят, что это название является сокращением от « Базового языка реализации системного программного обеспечения» или «Языка реализации системного программного обеспечения, наоборот» . Однако в своей устной истории в 2015 году для проекта истории компьютерной безопасности Института Бэббиджа Вульф заявил, что аббревиатура изначально была основана на названии «Язык Билла для реализации системного программного обеспечения». [1]

Оригинальный компилятор Карнеги-Меллона отличался широким использованием оптимизаций и лег в основу классической книги «Проектирование оптимизирующего компилятора» .

Digital Equipment Corporation (DEC) разработала и поддерживала компиляторы BLISS для PDP-10 . [2] ПДП-11 , [2] ВАКС , [2] ДЕК ПРИЗМА , [3] МИПС , [2] ДЭК Альфа , [2] и Intel IA-32 , [2] Язык не стал популярным среди клиентов, и лишь немногие имели компилятор. [4] но DEC активно использовала его внутри компании до 1980-х годов; большинство служебных программ для OpenVMS операционной системы были написаны на BLISS-32. Компилятор DEC BLISS был портирован на архитектуры IA-64 и x86-64 как часть портирования OpenVMS на эти платформы. [2] [5] Компилятор BLISS x86-64 использует LLVM в качестве внутреннего генератора кода , заменяя собственный бэкэнд GEM, используемый для Alpha и IA-64.

Описание языка [ править ]

[ чрезмерная цитата ]

BLISS обладает многими функциями других современных языков высокого уровня. Он имеет блочную структуру, автоматический стек и механизмы для определения и вызова рекурсивных процедур... предоставляет множество предопределенных структур данных и... средства для тестирования и итерации...

С другой стороны, в BLISS отсутствуют некоторые особенности других языков высокого уровня. Он не имеет встроенных средств ввода/вывода, поскольку проект системного программного обеспечения обычно разрабатывает собственный ввод/вывод или основывается на базовом вводе/выводе монитора или службах управления экраном... он обеспечивает доступ к специфичным для машины функциям, потому что системное программное обеспечение часто требует этого. BLISS обладает характеристиками, необычными для языков высокого уровня. Имя... единообразно интерпретируется как адрес этого сегмента, а не как значение сегмента... Кроме того, BLISS является «языком выражений», а не «языком операторов».

Это означает, что каждая конструкция языка, не являющаяся объявлением, является выражением. Выражения создают значение, а также могут вызывать такие действия, как изменение памяти, передача управления или выполнение программного цикла. Например, аналогом «оператора» присваивания в BLISS, строго говоря, является выражение, которое само по себе имеет значение. Значение выражения может быть использовано или отброшено в BLISS... Наконец, BLISS включает в себя функцию макросов, которая обеспечивает уровень возможностей, обычно встречающийся только в макроассемблерах.

- Руководство по языку Bliss , Digital Equipment Corporation (1987). [6]

Язык BLISS имеет следующие характеристики:

  • Все константы представляют собой полное слово для используемой машины, например, на 16-битной машине, такой как PDP-11 , константа равна 16 битам; на компьютере VAX константы имеют размер 32 бита, а на PDP-10 константа равна 36 битам.
  • Ссылка на переменную всегда относится к адресу этой переменной. Например, инструкция Z+8 относится к добавлению 8 к адресу Z, а не к его значению . Z нужно добавить 8 Если к значению , необходимо поставить перед переменной точку; так что можно было бы набрать .Z+8 для выполнения этой функции, которая добавляет 8 к содержимому Z.
  • Назначение выполняется по стандарту. = символ, например Z=8 – в котором говорится, что нужно создать константу из полного слова, содержащую 8, и сохранить ее в месте, адрес которого соответствует адресу Z. Итак Z+12=14 (или, как вариант 12+Z=14) помещает константу 14 в позицию, которая находится через 12 слов после адреса Z. (Это считается плохой практикой. [ кем? ] .)
  • Операторы блока аналогичны операторам АЛГОЛА : блок начинается с BEGIN заявление и прекращено с END. Как и в Алголе, операторы завершаются точкой с запятой («;»). Когда значение вычисляется, оно сохраняется до следующего признака завершения оператора — это означает, что значение может быть вычислено, присвоено переменной и при желании перенесено на следующий оператор. Альтернативно, открывающая скобка может использоваться для начала блока, а закрывающая скобка — для закрытия блока. Когда в выражение включены круглые скобки, приоритета , согласно которым сначала вычисляются выражения в скобках. используются стандартные правила
  • Условное выполнение использует IF выражение, которое проверяет условие true-false, выполняет альтернативные действия и возвращает результат.
  • Для сравнения используются такие ключевые слова, как EQL для равенства (в отличие от перегрузки символа = для той же цели), GTR для «Больше чем» и NEQ ибо не равны. Например, следующий код присвоит абсолютное значение Z адресу, указанному Q:
Q = (IF .Z GTR 0 THEN .Z ELSE -.Z);
  • Идентификаторы (переменные и константы) должны быть объявлены перед использованием, обычно с использованием метода OWN ключевое слово. Объявление переменной обычно приводит к тому, что компилятор выделяет для нее место; при необходимости переменной может быть присвоен фиксированный машинный адрес через BIND декларация. Эта функция в основном используется для доступа к регистрам машины или к определенным специальным адресам.
  • Подпрограммы в языке называются подпрограммами и объявляются с помощью ключевого слова ROUTINE.
  • Макросы , допускающие замену текста, объявляются с ключевым словом MACRO.
  • Язык поддерживает массивы , которые называются структурами и объявляются с помощью ключевого слова VECTOR.
  • Язык поддерживает некоторые языка программирования высокого уровня, конструкции такие как:
    • Альтернативные пути выполнения через CASE выражение
    • Цикл с использованием INCR выражение, похожее на оператор FOR в Алголе.
    • Встроенные строковые функции
    • Определенные автоматические преобразования данных (число в строку и т. д.)

Исходный пример [ править ]

Следующий пример дословно взят из Bliss Language Guide : [6]

MODULE E1 (MAIN = CTRL) =
BEGIN
FORWARD ROUTINE
    CTRL,
    STEP;
ROUTINE CTRL =
!+
! This routine inputs a value, operates on it, and
! then outputs the result.
!-
    BEGIN
    EXTERNAL ROUTINE
        GETNUM,     ! Input a number from terminal
        PUTNUM;     ! Output a number to terminal
    LOCAL
        X,          ! Storage for input value
        Y;          ! Storage for output value
    GETNUM(X);
    Y = STEP(.X);
    PUTNUM(.Y)
    END;
ROUTINE STEP(A) =
!+
! This routine adds 1 to the given value.
!-
    (.A+1);
END
ELUDOM

Версии [ править ]

  • БЛИСС-10
  • BLISS-11 — кросс-компилятор для PDP-11.
  • БЛИСС-16
  • BLISS-16C — декабрьская версия BLISS-11.
  • БЛИСС-32
  • БЛИСС-36
  • БЛИСС-64
  • Common BLISS — портативное подмножество

Примечания [ править ]

  1. ^ Вульф, Уильям А. (23 июня 2015 г.). «Интервью с УИЛЬЯМОМ А. ВУЛЬФОМ, ОХ 477» (PDF) (Интервью). Беседовал Джеффри Р. Йост. Шарлоттсвилль, Вирджиния.
  2. ^ Jump up to: Перейти обратно: а б с д и ж г Брендер, Рональд Ф. (2002). «Язык программирования BLISS: история» (PDF) . Программное обеспечение: практика и опыт . 32 (10): 955–981. дои : 10.1002/спе.470 . S2CID   45466625 .
  3. ^ Макларен, Дон (27 августа 1987 г.). «Проект, описание и план компилятора DECWest» (PDF) . Bitsavers.org .
  4. ^ да Круз, Франк (16 сентября 1987 г.). «Новости о программах Kermit для VAX/VMS» . Инфо-Кермит Дайджест (список рассылки). Проект Кермита, Колумбийский университет . Проверено 5 мая 2019 г. Kermit-32 написан на языке Bliss, «языке корпоративной реализации» DEC (первоначально разработанном в CMU). Bliss так и не завоевала популярность среди клиентов DEC; на немногих сайтах есть компиляторы Bliss.
  5. ^ «Собрание разработчиков LLVM 2017: Дж. Рейган «Портирование OpenVMS с использованием LLVM» » . Ютуб . 31 октября 2017 г. Архивировано из оригинала 21 декабря 2021 г.
  6. ^ Jump up to: Перейти обратно: а б Руководство по языку Bliss , Digital Equipment Corporation (1987)

Ссылки [ править ]

Внешние ссылки [ править ]

Загрузки [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: d0c3afafbe92e5ec743762a29e5e998a__1683414840
URL1:https://arc.ask3.ru/arc/aa/d0/8a/d0c3afafbe92e5ec743762a29e5e998a.html
Заголовок, (Title) документа по адресу, URL1:
BLISS - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)