Loading AI tools
З Вікіпедії, вільної енциклопедії
В (Бі) (друга буква лат. алфавіту — B) — інтерпретована мова програмування, розроблена в AT&T Bell Telephone Laboratories. Вона є нащадком мови BCPL та попередником C (Сі). Мова B була розроблена Кеном Томпсоном та Деннісом Рітчі і вперше презентована в 1969 році.
B (Бі) | |
---|---|
Парадигма | процедурна |
Дата появи | 1969 |
Творці | Кен Томпсон, Денніс Рітчі: Bell Labs |
Розробник | Bell Laboratories і Кен Томпсон |
Діалекти | внутрішній стандарт |
Під впливом від | BCPL, PL/I, TMG |
Вплинула на | Сі |
На неї сильно вплинула BCPL, і назва цієї мови, ймовірно, є скороченням від BCPL. Також, можливо, що назва походить від мови Bon, більш ранньої, але не зв'язаної з Бі мови, яку Томпсон розробив для використання в Multics. Назва ж Bon походить або від імені дружини Томпсона Bonnie, або від назви старотібетської релігії Бон.
Кен Томпсон розробив Бі ґрунтуючись головним чином на мові BCPL, яку Томпсон використовував у проекті Multics. По суті, Бі була версією BCPL, позбавленою деяких компонентів, без яких, як вважав Томпсон, можна не виходити за об'єм пам'яті, встановлений на мінікомп'ютерах того часу. Перехід від BCPL до Бі також містив зміни у напрямку зменшення кількості непробільних символів в типовій програмі. Велика частина типового ALGOL-подібного синтаксису BCPL була вагомо змінена протягом цього процесу. Наприклад, оператор :=
був замінений на =
, =
для порівняння тексту був замінений на ==
. Пізніше оператори &
та |
в BCPL було змінено на &&
та ||
відповідно, при переході до мови програмування, яка зараз відома як Сі.[джерело?]
Томпсон запозичив арифметичні оператори присвоювання для Бі, використовуючи синтаксис x =+ y
(додати «y» до змінної «x») із мови програмування TMG. Додатково Томпсон винайшов оператори інкременту та декременту (++
та --
). Їх префіксне або постфіксне положення визначає, чи приймаються значення до або після зміни операнда. Ці нововведення були запроваджені не в перших версіях Бі.[джерело?] Дехто вважає, що вони були створені для автоінкрементних та автодекрементних типів адресування у машинному коді PDP-11, хоча це історично неможливо, оскільки PDP-11 в час створення Бі ще не було.
В Бі не існує типів даних, або, точніше, він лише один: комп'ютерне слово. Більшість операторів (наприклад, +
, -
, *
, /
) обробляли його як ціле число, а інші як посилання для розіменування посилання. У багатьох інших напрямках вона виглядала, як рання версія Сі. Існує кілька бібліотечних функцій, в тому числі ті, які віддалено нагадують функції з бібліотеки вводу-виводу[en] в Сі.
Початково Бі було розроблено для мінікомп'ютерів DEC PDP-7 та PDP-11, на яких працювали ранні версії Unix. Кен Томпсон написав перший компілятор за допомогою мови програмвання TMG. Оскільки компілятор Бі використовував техніку нитевого коду (аналогічну сучасному байткоду), програми на Бі працювали повільно.[1][2][3] Згодом покращенням швидкості Бі зайнявся Річі.[4]
Безтиповий характер Бі був природним на PDP-7 і багатьох інших старих комп'ютерах, які не могли адресувати окремий байт, але на PDP-11 з'являлися проблеми, оскільки було важко отримати доступ до символьних типів даних, які PDP-11 повністю підтримував. Починаючи з 1971 Річі вніс зміни в мову при роботі компілятора та при переведенні у машинний код, в першу чергу, додавши типи даних для змінних. Протягом 1971 і 1972 Бі перетворилася на «New-B» (NB) («Нова-В»), а потім Сі.
Бі продовжують використовувати (станом на 2014) на GCOS[en] мейнфреймах[5] і на деяких вбудованих системах, зважаючи на ряд причин, у тому числі через обмежену апаратну частину в невеликих системах; великі бібліотеки, інструменти, питання вартості ліцензій; та просто через достатньо хорошу роботу.[6] Вельми впливова AberMUD[en] була спочатку написана на Бі.
Зараз Бі майже зникла через витіснення її наступником — мовою Сі.
// даний приклад рахує суму трьох послідовних цілих чисел
main() {
auto a, b, c, sum;
a = 1; b = 2; c = 3;
sum = a+b+c;
putnumb(sum);
}
Наступний приклад взятий з Users' Reference to B Кена Томпсона:[7]
/* наступна функція буде друкувати невід'ємне число n, з
основою b, де 2<=b<=10. Ця процедура використовує той факт, що
в наборі символів ASCII, цифри від 0 до 9 мають послідовні
значення кодів. */
printn(n, b) {
EXTRN putchar;
auto a;
if (a = n/b){ /* призначення, а не тест на рівність */
printn(a, b); /* рекурсія */
putchar(n % b + '0');
}
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.