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

редактировать
Язык процедурного программирования
B
Разработан Кеном Томпсоном
разработчиком Кеном Томпсоном, Деннисом Ричи
Впервые появился1969; 51 год назад (1969)
Дисциплина набора текста без типа (все является словом )
Расширения имени файла .b
Под влиянием
BCPL, PL / I, TMG
Influenced
C

B- это язык программирования, разработанный в Bell Labs около 1969 года. Это работа Кена Томпсона с Деннисом Ричи.

B произошло от BCPL, и его название может быть сокращением от BCPL. Сотрудник Томпсона Деннис Ричи предположил, что название могло быть основано на Bon, более раннем, но не связанном с ним языке программирования, который Томпсон разработал для использования on Multics.

B был разработан для рекурсивных, нечисловых, машинно-независимых приложений, таких как системное и языковое программное обеспечение. Это был язык без типов, с единственным типом данных, являющимся естественной памятью базовой машины формат word, каким бы он ни был. В зависимости от контекста слово обрабатывалось либо как целое число, либо как адрес памяти.

Как машины с ASCII обработка стала обычным явлением, особенно DEC PDP-11, прибывшая в Bell, стала важна поддержка символьных данных, содержащихся в словах памяти. Бестиповая природа языка рассматривалась как недостаток, который побудил Томпсона и Ричи разработать расширенную версию языка, поддерживающую новые внутренние и определяемые пользователем типы, которая стала языком программирования C.

Содержание
  • 1 История
  • 2 Примеры
  • 3 См. Также
  • 4 Примечания
  • 5 Ссылки
  • 6 Внешние ссылки
История

Примерно в 1969 году Кен Томпсон и позже Деннис Ричи разработали B базируясь в основном на языке BCPL, который Томпсон использовал в проекте Multics. По сути, B была системой BCPL, лишенной каких-либо компонентов, без которых, по мнению Томпсона, он мог обойтись, чтобы она соответствовала объему памяти миникомпьютеров того времени. Переход с BCPL на B также включал изменения, сделанные в соответствии с предпочтениями Томпсона (в основном, в направлении уменьшения количества непробельных символов в типичной программе). Большая часть типичного ALGOL -подобного синтаксиса BCPL была довольно сильно изменена в этом процессе. Оператор присваивания : =изменен на =, а оператор равенства =был заменен на ==.

. Томпсон добавил «двухадресные операторы присваивания», используя x = + yсинтаксис для добавления y к x (в C оператор записывается + =). Этот синтаксис заимствован из реализации Дугласа Макилроя TMG, в которой впервые был реализован компилятор B (и он пришел в TMG из ALGOL 68 из x +: = yсинтаксис). Томпсон пошел дальше, изобретя операторы увеличения и уменьшения (++и -). Их положение префикса или постфикса определяет, будет ли значение принято до или после изменения операнда. Этого нововведения не было в самых ранних версиях B. По словам Денниса Ричи, люди часто предполагали, что они были созданы для режимов автоматического увеличения и автоматического уменьшения адреса DEC PDP-11, но это исторически невозможно, поскольку машина этого не делала. Не существовало, когда впервые был разработан B.

B не имеет типа, или, точнее, имеет один тип данных: компьютерное слово. Большинство операторов (например, +, -, *, /) рассматривали это как целое число, но другие рассматривали его как адрес памяти, который нужно разыменовать. Во многих других отношениях он очень похож на раннюю версию C. Есть несколько библиотечных функций, в том числе некоторые, которые отдаленно напоминают функции из стандартной библиотеки ввода-вывода в C.

Ранние реализации были для миникомпьютеров DEC PDP-7 и PDP-11 с использованием ранних Unix и Honeywell GE 645 36-битные мэйнфреймы под управлением операционной системы GCOS. Самые ранние реализации PDP-7 компилировались в поточный код, и Ричи написал компилятор с использованием TMG, который создавал машинный код. В 1970 году была приобретена PDP-11, и для порта использовался многопоточный код; ассемблер, dc и сам язык B были написаны на B для начальной загрузки компьютера. Ранняя версия yacc была произведена с этой конфигурацией PDP-11. В этот период Ричи взял на себя обслуживание.

Бестиповая природа B имела смысл на Honeywell, PDP-7 и многих старых компьютерах, но была проблемой на PDP-11, потому что было трудно получить элегантный доступ к символьный тип данных, который полностью поддерживает PDP-11 и большинство современных компьютеров. Начиная с 1971 года, Ритчи внес изменения в язык, преобразовывая свой компилятор для создания машинного кода, в первую очередь добавляя типизацию данных для переменных. В течение 1971 и 1972 годов B превратился в "New B" (NB), а затем C.

B почти исчез, будучи вытесненным языком C. Тем не менее, он по-прежнему используется на мэйнфреймах GCOS (по состоянию на 2014 г.) и на некоторых встроенных системах (по состоянию на 2000 г.) по ряду причин: ограниченное оборудование в небольших системах, обширная библиотеки, инструменты, вопросы стоимости лицензирования и просто быть достаточно хорошими для работы. Очень влиятельный AberMUD был первоначально написан на B.

Примеры

Следующие примеры взяты из ссылки пользователей на B Кена Томпсона:

/ * The следующая функция напечатает неотрицательное число n по основанию b, где 2 <=b<=10. This routine uses the fact that in the ASCII character set, the digits 0 to 9 have sequential code values. */ printn(n, b) { extrn putchar; auto a; /* Wikipedia note: auto declares a variable with automatic storage (lifetime is function scope), not "automatic typing" as in C++. */ if (a = n / b) /* assignment, not test for equality */ printn(a, b); /* recursive */ putchar(n % b + '0'); }
/ * Следующая программа вычислит константу e-2 примерно до 4000 десятичных цифр и распечатает ее по 50 символов в строке в группах из 5 знаков. Метод простой выходной конверсии расширения 1/2! + 1/3! +... =.111.... где основания цифр 2, 3, 4,... * / main () {extrn putchar, n, v; авто i, c, col, a; я = столбец = 0; while (i 
См. также

Octicons-terminal.svg Портал компьютерного программирования

Примечания
Ссылки
Внешние ссылки
Последняя правка сделана 2021-05-11 04:28:07
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте