Би (вторая буква английского алфавита — B) — интерпретируемый язык программирования, разработанный в AT&T Bell Telephone Laboratories. Является потомком языка BCPL и непосредственным предшественником Си. Би был в основном произведением Кена Томпсона при содействии Денниса Ритчи и был опубликован в 1969 году.
B | |
---|---|
Класс языка | процедурный |
Тип исполнения | интерпретируемый |
Появился в | 1969 |
Автор | Кен Томпсон, Денис Ритчи: Bell Labs |
Система типов | статическая |
Диалекты | внутренний стандарт |
Испытал влияние | BCPL |
Повлиял на | C |
На язык B сильно повлиял BCPL, и его название, скорее всего, является сокращением от BCPL. Возможно также, что его название происходят от языка Bon, более раннего, но не связанного с B и весьма несхожего, языка программирования, который Томпсон разработал для использования в Multics. Название последнего, в свою очередь, происходит от имени жены Томпсона Bonnie либо от названия старотибетской религии бон[1].
Язык B был разработан для рекурсивных, нечисловых, машинно-независимых приложений, таких как программное обеспечение операционных систем и языков программирования.[2] Это был бестиповый язык, с единственным типом данных, который представлял собой естественный формат слова памяти базовой машины, каким бы он ни был. В зависимости от контекста слово обрабатывалось как целое число или адрес памяти.
Поскольку машины с обработкой ASCII-символов были уже обычным явлением, в частности DEC PDP-11, полученные фирмой Bell, стала важна поддержка символьных данных, помещённых в слова памяти. Бестиповая природа языка B была отмечена как недостаток, который заставил Томпсона и Ричи разработать расширенную версию языка, поддерживающую новые внутренние и определяемые пользователем типы данных, которая стала языком программирования C (Си).
main()
{
auto a, b, c, sum;
a = 1; b = 2; c = 3;
sum = a+b+c;
putnumb(sum);
}
Следующий пример взят из книги «Users' Reference to B» Кена Томпсона:
/* The following function will print a non-negative number, n, to
the base b, where 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;
if (a = n / b) /* assignment, not test for equality */
printn(a, b); /* recursive */
putchar(n % b + '0');
}
![]() Языки программирования | |
---|---|
| |
|
![]() Кен Томпсон | |
---|---|
Операционные системы |
|
Языки программирования | |
Программное обеспечение |
|
Другое |
|
![]() | Это «статья-заготовка» о компьютерных языках. Вы можете помочь проекту, дополнив эту статью, как и любую другую в Википедии. Нажмите и узнайте подробности. |