B — интерпретируемый язык программирования для мини-компьютеров, прямой потомок BCPL и предшественник C.
Язык B был разработан в AT&T Bell Telephone Laboratories и опубликован в 1969 году. Главным разработчиком языка был Кен Томпсон, содействие разработке оказывал Денис Ритчи. Позднее Стивен Джонсон (Stephen C. Johnson) значительно улучшил авторскую версию языка и добавил библиотеки.
Кен Томпсон и Деннис Ритчи
Язык B создан в первую очередь для системного программирования, а не для решения вычислительных задач. Он был проще и удобнее в использовании, чем
Assembler, но в то же время генерировал почти столь же эффективный код.
B очень похож на BCPL, сделанный более лаконичным за счет сокращения или удаления всех элементов, которые Кен Томпсон счел лишними или громоздкими. Руководство пользователя языка часто сравнивает его с
Fortran, видимо, из-за большей популярности последнего и из-за встроенных возможностей взаимодействия с программами на Fortran.
Единственный тип данных в языке B — слово; большинство операторов трактуют его как целое число, но в некоторых оно используется как адрес ячейки
памяти. Также переменные можно трактовать как символы, инициализировать их символьными константами и т.д. Чисел с плавающей точкой в языке нет; важной частью языка являются восьмеричные числа (запись такого числа начинается с 0).
Программы состоят из наборов функций, одна из которых,
main, вызывается при запуске программы; завершение выполнения
main завершает программу. Переменные могут быть объявлены как
auto (локальные в пределах одной функции) и
extrn (глобальные, объявляются и инициализируются за пределами функций). Переменные бывают скалярными и векторными (одномерные массивы постоянного размера). Строки — это векторы символов.
Язык включает в себя небольшой набор библиотек, в том числе C-подобные функции ввода-вывода, работы с файлами, манипуляции со строками, и стоящую особняком функцию
callf, позволяющую вызвать функцию Fortran.
B использовался в ранних
Unix-системах, на миникомпьютерах DEC
PDP-7 и
PDP-11, а также на мейнфреймах Honeywell под управлением операционной системы GCOS. Позднее в Unix-системах его вытеснил C, и в настоящее время интерпретатор языка существует только для ОС GCOS8.
Синтаксис
Комментарии, которые не могут быть вложенными | /* ... */ |
Регистрозависимость | да (нижний регистр для ключевых слов) |
Присваивание значения переменной | < varname > = < value > |
Объявление переменной | auto или extrn < varname > |
Объявление переменной с присваиванием значения | < varname > < value > |
Блок | { ... } |
Равенство | == |
Неравенство | != |
Сравнение | < > <= >= |
Определение функции | < name > (< arguments >) < statement > |
Вызов функции | (< arguments >) |
Вызов функции без параметров | < name >() |
Последовательность | ; |
Если - то | if (expression) statement |
Если - то - иначе | if (expression) statement else statement2 |
Бесконечный цикл | while (1) statement |
Цикл с предусловием | while (expression) statement |
Примеры:
Hello, World!:
Пример для версий H6070 B из “A tutorial introduction to the language B”, написанного
Брайаном Керниганом. Демонстрирует использование и инциализацию глобальных переменных.
main( ) {
extrn a, b, c;
putchar(a);
putchar(b);
putchar(c);
putchar('!*n');
}
a 'Hell';
b 'o, W';
c 'orld';
© kool
Источники:
progopedia.ru
В начало