Jump to content

бс (язык программирования)

бс
Разработано Ричард С. Хейт
Впервые появился 1980 год ; 44 года назад ( 1980 )
ТЫ Юникс
Под влиянием
БЕЙСИК , СНОБОЛ4 , С

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

На ранней странице руководства говорится: «[ bs] является дальним потомком Basic [sic] и SNOBOL4 небольшого количества C ». с добавлением [1]

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

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

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

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

Хотя он и не выпускался наружу до Системы 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 году. Он не появляется ни в одной версии Research Unix , ни в Berkeley Software Distribution .

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

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

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

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

[ редактировать ]

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

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

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

The bs язык имеет некоторые общие функции и синтаксис с BASIC , SNOBOL и C , причем первые два, по-видимому, послужили источником его названия. Как и BASIC, его можно использовать в интерактивном режиме, либо немедленно выполняя операторы, либо собирая их в программу для последующего выполнения. Как и в SNOBOL4, оператор присваивания ( =) используется для ввода/вывода и bs может выполнять код в строках, используя свою eval функцию . Он также включает в себя оператор опроса SNOBOL ( ?) используется для проверки того, успешна ли оценка выражения или нет. Встроенный format функция, ограниченная одним аргументом, поддерживает подмножество C printf спецификаторы преобразования формата, например, «%f».

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

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

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

[ редактировать ]

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

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

$ bs 
# Distance (inches) light travels in a nanosecond. 
186000 * 5280 * 12 / 1e9 
11.78496
...
# Compound interest 
# (6% for 5 years on $1,000). 
int = .06 / 4 
bal = 1000 
for i = 1 5*4 bal = bal + bal*int 
bal - 1000 
346.855007 
... 
exit

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

# initialize things: 
var1 = 1 
open("read", "infile", "r") 
... 
# compute: 
while ?(str = read) 
... 
next 
# clean up: 
close("read") 
... 
# last statement executed (exit or stop): 
exit 
# last input line: 
run

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

# Copy "oldfile" to "newfile". 
open("read", "oldfile", "r") 
open("write", "newfile", "w")
... 
while ?(write = read) 
... 
# close "read" and "write": 
close("read") 
close("write")
# Pipe between commands. 
open("ls", "!ls *", "r") 
open("pr", "!pr -2 -h ’List’", "w") 
while ?(pr = ls) ... 
... 
# be sure to close (wait for) these: 
close("ls") 
close("pr")

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

[ редактировать ]

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

fun sing(n, end) s
   s = ("s", "")[ match(n, "^1$") ]
   put = format(format(format("%s bottle%%s of beer%%%%s", n), s), end)
nuf

for n = 99, n, put = ""
   sing(format("%-0.0f", n), " on the wall,")
   sing(format("%-0.0f", n), ",")
   put = "take one down, pass it around,"
   --n
   sing((format("%-0.0f", n), "no")[ 0 == n ], " on the wall.")
next

См. также

[ редактировать ]
  1. ^ Перейти обратно: а б с д Руководство пользователя UNIX (выпуск 3.0 изд.). Bell Telephone Laboratories, Incorporated. 1980. с. 95.
  2. Личное сообщение Дика Хейта, 10 сентября 2019 г.
  3. ^ Перейти обратно: а б Руководство пользователя UNIX (PDF) (выпуск 3.0 изд.). Bell Telephone Laboratories, Incorporated. 1980. с. 9.
  4. ^ Перейти обратно: а б с Личный разговор с Джоном Р. Мэши , 9 сентября 2019 г.
  5. ^ «CB/UNIX man 7» , Общество наследия Unix , ноябрь 1979 г. Проверено 9 сентября 2019 г.
  6. ^ «CB/UNIX man 1» , Общество наследия Unix , ноябрь 1979 г. Проверено 9 сентября 2019 г.
  7. ^ Дж. Д. Доан, изд. (май 1981 г.). Руководство программиста CB-UNIX, издание 2.3 (PDF) . Колумбус, Огайо: Bell Telephone Laboratories. п. iii.
  8. ^ Т. А. Долотта; РЦ Хейт; Э. М. Пискорик, ред. (май 1977 г.). «Раздел 1». Руководство программиста PWB UNIX, издание 1 . Пискатауэй, Нью-Джерси: Bell Telephone Laboratories.
  9. ^ Перейти обратно: а б «IBM переходит на UNIX». Журнал ПК . 12 июня 1984 г. с. 218.
  10. ^ Перейти обратно: а б «Том 1». Руководство пользователя AT&T UNIX PC UNIX System V (PDF) . АТ&Т. 1986. с. 8.
  11. ^ «Том 1 Команды и утилиты». Руководство программиста UNIX (PDF) . АТ&Т. 1986. с. 41.
  12. ^ Перейти обратно: а б «Раздел 1 (АМ)». Справочник по пользовательским командам HP-UX, выпуск 11i (PDF) (1-е изд.). Компания Хьюлетт-Паккард. 2000. с. 93.
  13. ^ Перейти обратно: а б «Раздел 1 (ас)». Справочник команд AIX версии 6.1 (PDF) (первое издание). Международная корпорация бизнес-машин. 2007. с. 251.
  14. ^ «Раздел 1 (АЛ)». Справочник по командам 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. ^ /FILES файл, установочный носитель A/UX 3.0.1, Apple Inc. (1993 г.)
  19. ^ "Language BS" , 99 бутылок пива , 8 августа 1996 г. Проверено 9 сентября 2019 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: d67d8cf982e94a601b69cfd204aae107__1627204560
URL1:https://arc.ask3.ru/arc/aa/d6/07/d67d8cf982e94a601b69cfd204aae107.html
Заголовок, (Title) документа по адресу, URL1:
bs (programming language) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)