BS (язык программирования) - Bs (programming language)

bs
РазработаноРичард К. Хейт
Впервые появился1980; 40 лет назад (1980)
Операционные системыUnix
Под влиянием
БАЗОВЫЙ, СНОБОЛ4, C

bs - это язык программирования и компилятор / интерпретатор для небольших программ на UNIX системы.[1] В bs Команда может быть вызвана либо для интерактивного программирования, либо с файлом, содержащим программу, необязательно с аргументами, через Оболочка Unix, например, используя Шебанг (Unix) #! / usr / bin / bs.

Рано страница руководства состояния, "[bs] является удаленным потомком Базовый [sic] и СНОБОЛ4, с небольшим C добавлено. "[1]

История

В bs команда появляется в Система UNIX III Версия 3.0 (1980 г.), впервые выпущенная за пределами Bell Labs в 1982 г.[1] Он был написан Диком Хейтом (Ричард К. Хейт) примерно в 1978 году, который рассказывает о нем следующим образом:[2]

я написал bs в то время Unix (V 3?) и все команды переводились с ассемблера на C. Итак [ Кен Томпсон S] бас стал моим bs - вроде, как бы, что-то вроде.

В руководстве версии 3.0 упоминается bs заметно на странице 9 (курсив мой):[3]

Написание программы. Чтобы ввести текст исходной программы в файл UNIX, используйте изд (1). В UNIX доступны четыре основных языка: C (см. куб.см (1)), Фортран (см. f77 (1)), bs (компилятор / интерпретатор в духе Basic, см. бс (1)), и язык ассемблера (см. как (1)).

Хотя не выпускался за пределами до System III, bs команда присутствовала внутри UNIX / TS 1.0 (ноябрь 1978 г.),[4] PWB / UNIX 2.0 (июнь 1979 г.),[4] и CB UNIX редакции 2.1 (ноябрь 1979 г.)[5][6] и 2.3 (1981).[7]В bs не присутствует в некоторых более ранних внутренних выпусках, например, в выпуске группы поддержки UNIX от марта 1977 г.,[4] ни руководство PWB / UNIX от мая 1977 г.,[8] предполагая его создание около 1978 года. Он не появляется ни в одной версии Исследование Unix ни Распространение программного обеспечения Беркли.

Впоследствии и в 1990-е гг. bs был включен в различные коммерческие операционные системы, производные от System III или System V, включая, но не ограничиваясь: PC / IX;[9] Система UNIX V Выпуски 2 и 3: SVR2,[10] SVR3, SVR3.2 (1986);[11] HP-UX;[12] AIX;[13] и A / UX.[14](Руководство пользователя для AT&T UNIX ПК (3B1) особо отмечает, что bs команда недоступна, но доступна в SVR3.2.[10])

Изредка, bs рекламировался как один из основных языков программирования для разработки под UNIX.[3][9][15] Тем не мение, bs не входит в POSIX.1 команды и утилиты (стандартные Список команд Unix ) ни в Единая спецификация UNIX и не предоставляется в большинстве современных операционных систем. Например в Linux, аналогичный синтаксис и функциональность обеспечивается до н.э, Perl, и Оболочка POSIX.

В 21 веке bs присутствует, по крайней мере, в HP-UX Выпуск 11i (2000 г.),[12] а также AIX версии 6.1 (2007)[13] и 7.2 (2018 г.),[16] вероятно из-за их Система UNIX V наследство.

Дизайн и особенности

В bs[1] страница руководства, якобы единственная спецификация языка программирования, характеризует его следующим образом:

Bs предназначен для задач программирования, в которых время разработки программы так же важно, как и конечная скорость выполнения. Минимизированы формальности объявления данных и манипулирования файлами / процессами. Построчная отладка, след и свалка операторы и полезные сообщения об ошибках во время выполнения упрощают тестирование программы. Кроме того, можно отлаживать неполные программы; внутренний функции могут быть протестированы перед внешний функции были написаны и наоборот.

А bs программа компилируется и выполняется иначе, чем программы, написанные на других основных языках программирования Unix того времени: C, FORTRAN, и язык ассемблера, соответствующие команды которого компилируют исходный код программы в исполняемый файл ассемблера (а. выход ). Вместо этого bs программа сначала конвертируется bs команда внутренней обратной польской (РПН ) промежуточное представление а затем выполняется внутренним виртуальным штабелеукладчик.[17] В bs язык, таким образом, представляет собой гибрид устный переводчик и компилятор и расхождение в Unix программирование из Древний Unix.

В bs язык разделяет некоторые функции и синтаксис с БАЗОВЫЙ, СНОБОЛ, и C Двое бывших по-видимому вдохновляют ее названием. Как и BASIC, его можно использовать интерактивно, либо выполняя операторы немедленно, либо собирая их в программу для последующего выполнения. Как и в СНОБОЛ4, оператор присваивания (=) используется для Ввод / вывод и bs может выполнять код в строках, используя его оценка функция. Также в него входит допросник СНОБОЛА (?) используется для проверки успешности оценки выражения. Встроенный формат функция, ограниченная одним аргументом, поддерживает подмножество C printf спецификаторы преобразования формата, например, "% f".

В языке есть несколько заметных элементов. Например, его программные функции определяются с помощью весело ... нуф синтаксис и его функции могут иметь локальные переменные. Также, bs может работать в двух режимах: либо интерпретировать (и выполнять) операторы и программы, либо компилировать их, а также переключаться между ними с помощью компилировать и остановка. В противном случае его функциональность уникальна только в совокупности (на одном языке), поскольку отдельные функции дублируют функции сосуществующих инструментов, таких как Оболочка Unix, например, файловый ввод-вывод и циклы, и AWK, например, ассоциативные массивы и Регулярное выражение соответствие.

В bs язык был предназначен для удобной разработки и отладки небольших модульных программ. В нем есть набор синтаксиса и функций из предыдущих популярных языков, но он компилируется внутри, в отличие от Сценарий оболочки. Таким образом, по назначению, дизайну и функциям bs является в значительной степени неизвестным, скромным предшественником гибридных интерпретируемых / компилируемых языков, таких как Perl и Python.

Примеры синтаксиса

Следующие примеры взяты из A / UX бс (1) страница руководства.[18]

В этом примере используется bs как калькулятор:

$ bs # Расстояние (дюймы), на которое свет распространяется за наносекунду. 186000 * 5280 * 12 / 1e9 11.78496...# Сложный процент # (6% на 5 лет на 1000 долларов США). int = .06 / 4 бал = 1000 за я = 1 5*4 бал = бал + бал * int бал - 1000 346.855007 ... выход

Этот пример представляет собой схему типичного bs программа:

# инициализировать вещи: var1 = 1 открыто("читать", "infile", "р") ... # вычислить: пока ?(ул = читать) ... следующий # очистить: Закрыть("читать") ... # последний выполненный оператор (выход или остановка): выход # последняя строка ввода: пробег

Этот пример демонстрирует ввод-вывод:

# Скопируйте «старый файл» в «новый файл». открыто("читать", "старый файл", "р") открыто("записывать", "новый файл", "ш")... пока ?(записывать = читать) ... # закрыть "чтение" и "запись": Закрыть("читать") Закрыть("записывать")# Канал между командами. открыто("ls", "! ls *", "р") открыто("пр", "! pr -2 -h’ List ’", "ш") пока ?(пр = ls) ... ... # обязательно закройте (подождите) эти: Закрыть("ls") Закрыть("пр")

Пример программы

Ниже приведен образец bs программа, которая воспроизводит слова к песне 99 бутылок пива с помощью / usr / bin / bs.[19]

весело петь(п, конец) s   s = ("s", "")[ матч(п, "^1$") ]   положить = формат(формат(формат("% s бутылка %% s пива %%%% s", п), s), конец)нуфза п = 99, п, положить = ""   петь(формат("% -0.0f", п), " на стене,")   петь(формат("% -0.0f", п), ",")   положить = "сними один, разнеси его"   --п   петь((формат("% -0.0f", п), "нет")[ 0 == п ], " на стене.")следующий

Смотрите также

Рекомендации

  1. ^ а б c d Руководство пользователя UNIX (Выпуск 3.0 ред.). Bell Telephone Laboratories, Incorporated. 1980. с. 95.
  2. ^ Личное сообщение Дика Хейта, 10 сентября 2019 г.
  3. ^ а б Руководство пользователя UNIX (PDF) (Выпуск 3.0 ред.). Bell Telephone Laboratories, Incorporated. 1980. с. 9.
  4. ^ а б c Личный разговор с Джон Р. Маши, 9 сентября 2019.
  5. ^ "CB / UNIX человек 7", Общество наследия Unix, Ноябрь 1979 г. Проверено 9 сентября 2019 г.
  6. ^ "CB / UNIX человек 1", Общество наследия Unix, Ноябрь 1979 г. Проверено 9 сентября 2019 г.
  7. ^ Дж. Д. Доан, изд. (Май 1981 г.). Руководство программиста CB-UNIX, редакция 2.3 (PDF). Колумбус, Огайо: Bell Telephone Laboratories. п. iii.
  8. ^ Т. А. Долотта; Р. К. Хейт; Е. М. Пискорик, ред. (Май 1977 г.). "Секция 1". PWB UNIX Programmer's Manual, Edition 1. Пискатауэй, Нью-Джерси: Bell Telephone Laboratories.
  9. ^ а б «IBM переходит на UNIX». Журнал ПК. 12 июня 1984 г. с. 218.
  10. ^ а б «Том 1». AT&T UNIX PC UNIX System V Руководство пользователя (PDF). AT&T. 1986. стр. 8.
  11. ^ «Команды и утилиты Тома 1». Руководство программиста UNIX (PDF). AT&T. 1986. стр. 41.
  12. ^ а б «Раздел 1 (А-М)». Пользовательские команды HP-UX Reference Release 11i (PDF) (1-е изд.). Компания Hewlett-Packard. 2000. с. 93.
  13. ^ а б «Раздел 1 (а-с)». Справочник команд AIX версии 6.1 (PDF) (Первое изд.). Международная корпорация бизнес-машин. 2007. с. 251.
  14. ^ «Раздел 1 (A-L)». Справочник команд A / UX (PDF) (2.0 изд.). Apple Computer, Inc. 1990. стр. 93.
  15. ^ «A / UX: инструменты разработки», Apple, Inc, 18 февраля 2012. Проверено 9 сентября 2019.
  16. ^ «Раздел 1 (а-с)». Справочник по командам AIX версии 7.2. Корпорация IBM. 2018. с. 282.
  17. ^ Личный разговор с Диком Хейтом, 12 сентября 2019 г.
  18. ^ В / ФАЙЛЫ файл, установочный носитель A / UX 3.0.1, Apple Inc. (1993)
  19. ^ "Language BS", 99 бутылок пива, 8 августа 1996 г. Проверено 9 сентября 2019 г.