Користувач:Науменко Данило КБ-11

Матеріал з Вікіпедії — вільної енциклопедії.
Перейти до навігації Перейти до пошуку

Пісочниця[ред. | ред. код]

В
Дата появи 1969; 55 років тому (1969)[1]
Творці Кен Томпсон
Розробник Кен Томпсон, Dennis Ritchie
Система типізації безтипова (все є Слово)
Під впливом від BCPL, PL/I
Вплинула на C
Звичайні розширення файлів .b

В - мова програмування, розроблена в Bell Labs в 1969. Це работа Кена Томпсона та Денніса Рітчі. В вперше з'явилася близько 1969.

В була розроблена з BCPL, і її ім'я може бути скороченням від BCPL. Цілком можливо, що її назва може походити від Bon[en], старішої та не пов'язаної, а скоріше зовсім іншою мовою програмування, яку Томпсон разробив для використання в Multics.[Примітка 1]

В була розроблена для рекурсивних, нечислових, незалежних від машин додатків, таких як системи і мови програмного забезпечення.[3]

Історія[ред. | ред. код]

Спочатку Кен Томпсон[2], а потім Денніс Рітчі[3] розробили B грунтуючись головним чином на мові BCPL, яку Томпсон використовував в проекті Multics. По суті, B була чистою версією BCPL, позбавленою будь-яких компонентів, без яких, як вважав Томпсон, можна впоратись, щоб вкластися в об'єм пам'яті, встановлений на мінікомп'ютерах того часу. Перехід від BCPL до B також включав зміни, внесені відповідно до переваг Томпсона (переважно у напрямку зменшення кількості непробельних символів в типовій програмі).[2] Велика частина типового ALGOL-подібного синтаксису BCPL було достатньо сильно змінено протягом цього процесу, наприклад, ":=" і "=" оператори, які були замінені на "=" для призначення, і "==" для тесту рівності. (Оператори "&" та "|" в BCPL пізніше було змінено на "&&" і "||" вібповідно, при переході до мови програмування, яка зараз відома як С.)[2] Оператор присвоювання знову став "=" мови програмування Рутішазера[en] Superplan, яка вплинула на Algol 58[en], додавши двокрапку.

Томпсон винайшов арифметичні оператори присвоювання для B, використовуючи x =+ y, щоб додати y до x (в мові програмування C оператор пишеться +=). B також представила оператори інкремента та декремента ("++" і "--"); Їх префіксне або постфіксне положення визначає, чи приймаються значення до або після зміни операнда. Ці нововведення були введені не в самих ранніх версіях В. Дехто вважає, що вони були створені для автоінкрементуємих та автодекрементуємих адресних типів DEC PDP-11. Це історично неможливо, оскільки ніякого PDP-11 в той час не було.[2]

В B не існує типів данних, або, точніше, він лише один: комп'ютерне слово. Більшість операторів (наприклад, ".", "+", "-", "*", "/") обробляли його як ціле число, а інші як посилання для розіменування (посилання). У багатьох інших відносинах вона виглядала як рання версія С. Існує кілька бібліотечних функцій, в тому числі ті, які віддалено нагадують функції з бібліотеки вводу-виводу[en] в С[3]

Ранні реалізації були розроблені для DEC PDP-7 та PDP-11 мінікомп'ютерів, використовувавших ранні версії Unix і Honeywell GE-600[en][4] 36-бітові комп'ютери під управлінням операційної системи ГСНК[en]. Найбільш ранні версії PDP-7, компілювали все через багатопотоковий код[en], і Річі написав компілятор за допомогою TMG, який виробляв машинний код. [5][6][7] В 1970 PDP-11 був придбаний та багатопотоковий код був використаний для порту; асемблер, DC і сама мова B були написані на B для запуску[en] комп'ютера. Рання версія Yacc була виготовлений з цією конфігурацією PDP-11. Річі взяв на себе обслуговування протягом цього періоду.[2][7]

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

B продовжує використовуватися (станом на 2014) на ГСНК мейнфреймах,[8] і на деяких вбудованих систем через безліч причин, в тому числі через обмежену апаратну частину в невеликих системах; великі бібліотеки, інструменти, питання вартості ліцензій; та просто через достатньо хорошу роботу.[9] Вельми впливна AberMUD[en] була спочатку написана на B.

B майже вимерла, будучи витісненою C.

Приклади[ред. | ред. код]

Наступний приклад взятий з Users' Reference to B Кена Томпсона: [3]

/* наступна функція буде друкувати a невід'ємне число, n, на
 базi 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');
}

Дивіться також[ред. | ред. код]

Примітки[ред. | ред. код]

  1. " Її ім'я, швидше за все, являє собою скорочення від BCPL, хоча альтернативна теорія стверджує, що вона походить від Bon [ Thompson 69], пов'язаної мови, створеної Томпсоном під час роботи в Multics. Bon в свою чергу, була названа або на честь його дружини Бонні, або (відповідно до енциклопедії котирування в керівництві по її експлуатації), на честь релігії, ритуали якої включають в себе проговорювання магічних формул. "[2]

Список літератури[ред. | ред. код]

  1. http://www.britannica.com/EBchecked/topic/1663863/B
  2. а б в г д е DOI:10.1145/155360.155580
    Нема шаблону {{Cite doi/10.1145/155360.155580}}.заповнити вручну
  3. а б в г Thompson, Ken (7 January 1972). Users' Reference to B. Bell Laboratories. Процитовано 21 March 2014.
  4. bell-labs.com – Early Unix history and evolution, 9 April 2004
  5. TMG. multicians.org.
  6. Ritchie, Dennis M. The Development of the C Language. Bell Labs/Lucent Technologies.
  7. а б McIlroy, M. D. (1987). A Research Unix reader: annotated excerpts from the Programmer's Manual, 1971–1986 (PDF) (Технічний звіт). CSTR. № 139. Bell Labs.
  8. Thinkage UW Tools Package. Thinkage, Ltd. Процитовано 26 March 2014.
  9. Johnson and Kernighan. THE PROGRAMMING LANGUAGE B. Bell Laboratories. Процитовано 21 March 2014.

External links[ред. | ред. код]


Category:Procedural programming languages