~~~~~~~~~~~~~~~~~~~~ Arc.Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~ 
Номер скриншота №:
✰ 4AD794A55A1F1107245E60E88B9290E9__1715299020 ✰
Заголовок документа оригинал.:
✰ BCPL - Wikipedia ✰
Заголовок документа перевод.:
✰ БКПЛ — Википедия ✰
Снимок документа находящегося по адресу (URL):
✰ https://en.wikipedia.org/wiki/BCPL ✰
Адрес хранения снимка оригинал (URL):
✰ https://arc.ask3.ru/arc/aa/4a/e9/4ad794a55a1f1107245e60e88b9290e9.html ✰
Адрес хранения снимка перевод (URL):
✰ https://arc.ask3.ru/arc/aa/4a/e9/4ad794a55a1f1107245e60e88b9290e9__translat.html ✰
Дата и время сохранения документа:
✰ 21.06.2024 07:15:47 (GMT+3, MSK) ✰
Дата и время изменения документа (по данным источника):
✰ 10 May 2024, at 02:57 (UTC). ✰ 

~~~~~~~~~~~~~~~~~~~~~~ Ask3.Ru ~~~~~~~~~~~~~~~~~~~~~~ 
Сервисы Ask3.ru: 
 Архив документов (Снимки документов, в формате HTML, PDF, PNG - подписанные ЭЦП, доказывающие существование документа в момент подписи. Перевод сохраненных документов на русский язык.)https://arc.ask3.ruОтветы на вопросы (Сервис ответов на вопросы, в основном, научной направленности)https://ask3.ru/answer2questionТоварный сопоставитель (Сервис сравнения и выбора товаров) ✰✰
✰ https://ask3.ru/product2collationПартнерыhttps://comrades.ask3.ru


Совет. Чтобы искать на странице, нажмите Ctrl+F или ⌘-F (для MacOS) и введите запрос в поле поиска.
Arc.Ask3.ru: далее начало оригинального документа

БКПЛ — Википедия Jump to content

БКПЛ

Из Википедии, бесплатной энциклопедии

БКПЛ
Парадигма процедурный , императивный , структурированный
Разработано Мартин Ричардс
Впервые появился 1967 год ; 57 лет назад ( 1967 ) [1]
Дисциплина набора текста бестиповый (все есть слово )
Под влиянием
CPL
Под влиянием
Б , С , Иди [2]

BCPL Базовый комбинированный язык программирования ») — процедурный , императивный и структурированный язык программирования . Первоначально предназначенный для написания компиляторов для других языков, BCPL больше не используется. Однако его влияние все еще ощущается, поскольку урезанная и синтаксически измененная версия BCPL, названная B , была языком, на котором язык программирования C. был основан BCPL представил несколько функций многих современных языков программирования, в том числе использование фигурных скобок для разделения блоков кода. [3] BCPL был впервые реализован Мартином Ричардсом из Кембриджского университета в 1967 году. [1]

Дизайн [ править ]

BCPL был разработан таким образом, чтобы для него можно было писать небольшие и простые компиляторы; по общему мнению, некоторые компиляторы могут работать на 16 килобайтах . Более того, исходный компилятор, написанный на BCPL, легко переносился. Таким образом, BCPL был популярным выбором для начальной загрузки системы. [ нужна цитата ] Основная причина переносимости компилятора заключалась в его структуре. Он был разделен на две части: фронтенд анализировал исходный код и генерировал O-код — промежуточный язык . Серверная часть взяла О-код и перевела его в машинный код целевой машины. Только 1/5 человеко Для поддержки новой машины необходимо было переписать кода компилятора, и эта задача обычно занимала от 2 до 5 -месяцев . Этот подход позже стал общепринятой практикой (например, Pascal , Java ).

Язык необычен тем, что имеет только один тип данных : слово , фиксированное количество битов, обычно выбираемое для согласования с машинным словом архитектуры и достаточной емкости для представления любого действительного адреса хранения. Для многих машин того времени этот тип данных представлял собой 16-битное слово. Этот выбор позже оказался серьезной проблемой, когда BCPL использовался на машинах, в которых наименьшим адресуемым элементом было не слово, а байт , или на машинах с большими размерами слов, например 32-битными или 64-битными. [ нужна цитата ]

Интерпретация любого значения определялась операторами, используемыми для обработки значений. (Например, + сложил два значения вместе, рассматривая их как целые числа ; ! косвенно через значение, эффективно рассматривая его как указатель.) Чтобы это работало, реализация не предусматривала проверку типов .

Несоответствие между ориентацией слов BCPL и аппаратным обеспечением с байтовой ориентацией решалось несколькими способами. Один из них заключался в предоставлении стандартных библиотечных процедур для упаковки и распаковки слов в байтовые строки. Позже были добавлены две функции языка: оператор выбора битового поля и оператор косвенного направления инфиксного байта (обозначаемый %). [4]

BCPL обрабатывает привязки, охватывающие отдельные единицы компиляции уникальным образом . Глобальных переменных, объявляемых пользователем, нет; вместо этого существует глобальный вектор, похожий на «пустой общий» в Фортране . Все данные, совместно используемые различными модулями компиляции, содержат скаляры и указатели на векторы, хранящиеся в заранее заданном месте глобального вектора. Таким образом, файлы заголовков (файлы, включенные во время компиляции с использованием директивы «GET») становятся основным средством синхронизации глобальных данных между модулями компиляции, содержащими «GLOBAL» директивы, которые представляют списки символических имен, каждое из которых сопряжено с числом, связывающим имя. с соответствующим словом с числовой адресацией в глобальном векторе. Помимо переменных, глобальный вектор содержит привязки для внешних процедур. Это делает динамическую загрузку модулей компиляции очень простой. Вместо того, чтобы полагаться на загрузчик ссылок базовой реализации, BCPL фактически дает программисту контроль над процессом связывания. [ нужна цитата ]

Глобальный вектор также упростил замену или расширение стандартных библиотечных процедур. Программа может сохранить указатель глобального вектора на исходную процедуру и заменить его указателем на альтернативную версию. Альтернатива может вызвать оригинал как часть его обработки. Это можно использовать как быстрое средство отладки . [ нужна цитата ]

BCPL был первым языком программирования со скобками , а фигурные скобки пережили синтаксические изменения и стали распространенным средством обозначения операторов исходного кода программы. На практике на ограниченных клавиатурах того времени в исходных программах часто использовались последовательности $( и $) вместо символов { и }. Однострочный // комментарии BCPL, которые не были приняты C , снова появились в C++ , а затем и в C99 .

Книга BCPL: Язык и его компилятор описывает философию BCPL следующим образом:

Философия BCPL не является философией тирана, который думает, что знает лучше всех, и устанавливает законы о том, что разрешено, а что нет; скорее, BCPL действует скорее как слуга, предлагающий свои услуги в меру своих возможностей без жалоб, даже когда сталкивается с очевидной чепухой. Всегда предполагается, что программист знает, что он делает, и не ограничен мелкими ограничениями. [5]

История [ править ]

BCPL был впервые реализован Мартином Ричардсом из Кембриджского университета в 1967 году. [1] BCPL стал ответом на трудности со своим предшественником, Cambridge Programming Language, позже переименованным в Комбинированный язык программирования (CPL), который был разработан в начале 1960-х годов. Ричардс создал BCPL, «удалив из полного языка те особенности, которые затрудняют компиляцию». Первая реализация компилятора для IBM 7094 под совместимой системой разделения времени когда Ричардс посещал проект MAC в Массачусетском технологическом институте. была написана весной 1967 года, Язык был впервые описан в статье, представленной на Spring Joint в 1969 году. Компьютерная конференция . [ нужна цитата ]

Ходят слухи, что BCPL изначально означает «Bootstrap Cambridge Programming Language», но CPL так и не был создан, поскольку разработка остановилась на BCPL, а позже эта аббревиатура была переосмыслена для книги BCPL. [ нужны разъяснения ] [ нужна цитата ]

BCPL — это язык, на котором исходная фраза «Hello, World!» программа была написана. [6] Первый MUD также был написан на BCPL ( MUD1 ).

Некоторые операционные системы были частично или полностью написаны на BCPL (например, TRIPOS и самые ранние версии AmigaDOS ). BCPL также был исходным языком, использованным в проекте Xerox PARC Alto . Среди других проектов Bravo система подготовки документов на BCPL была написана .

Ричардса Первый компилятор, запущенный в 1969 году и начавший с бумажной ленты O-кода компилятора Atlas 2 , был нацелен на серию ICT 1900 . Две машины имели разную длину слова (48 против 24 бит), разные кодировки символов и разные представления упакованных строк, а успешная начальная загрузка повысила уверенность в практичности метода.

К концу 1970 года существовали реализации для Honeywell 635 и Honeywell 645 , IBM 360 , PDP-10 , TX-2 , CDC 6400 , UNIVAC 1108 , PDP-9 , KDF 9 и Atlas 2. В 1974 году диалект BCPL был реализован на BBN без использования промежуточного О-кода. Первоначальная реализация представляла собой кросс-компилятор компании BBN , размещенный на TENEX PDP-10 , и непосредственно нацеленный на PDP-11, используемый в реализации BBN IMP второго поколения , используемых в ARPANET .

Была также версия, выпущенная для BBC Micro в середине 1980-х годов компанией Richards Computer Products, основанной Джоном Ричардсом, братом Мартина Ричардса. [7] Проект BBC Domesday использовал этот язык. Версии BCPL для компьютеров Amstrad CPC и Amstrad PCW также были выпущены в 1986 году британской компанией по разработке программного обеспечения Arnor Ltd. MacBCPL был выпущен для Apple Macintosh в 1985 году компанией Topexpress Ltd из Кенсингтона, Англия.

И дизайн, и философия BCPL сильно повлияли на B , который, в свою очередь, повлиял C. на [8] Программисты в то время спорили, будет ли будущий преемник C называться «D», следующей буквой алфавита, или «P», следующей буквой в названии родительского языка. Языком, наиболее признанным преемником C, является C++ ++ C будучи оператором приращения ), [9] хотя между тем D. существует и язык программирования

В 1979 году реализации BCPL существовали как минимум для 25 архитектур; язык постепенно потерял популярность, поскольку C стал популярным в системах, отличных от Unix.

Мартин Ричардс поддерживает на своем веб-сайте современную версию BCPL, последний раз обновленную в 2018 году. Ее можно настроить для работы в различных системах, включая Linux, FreeBSD и Mac OS X. Последний дистрибутив включает графические и звуковые библиотеки, а также имеется всеобъемлющее руководство. Он продолжает программировать на нем, в том числе для своих исследований в области автоматизированной музыкальной партитуры .

Распространенным неофициальным типом MIME для BCPL является текст/x-bcpl .

Примеры [ править ]

Привет, мир [ править ]

Ричардс и Уитби-Стривенс [10] приведите пример сообщения «Hello, World!» программа для BCPL с использованием стандартного системного заголовка «LIBHDR»:

ПОЛУЧИТЬ «LIBHDR»
 LET START() BE WRITES («Привет, мир»)
 

Дальнейшие примеры [ править ]

Если эти программы запускаются с использованием текущей версии Cintsys Ричардса (декабрь 2018 г.), во избежание ошибок LIBHDR, START и WRITEF необходимо изменить на нижний регистр.

Распечатать факториалы:

ПОЛУЧИТЬ «LIBHDR»

 НАЧНЕМ() = ВАЛОФ $(
	 ДЛЯ I = 1 ДО 5 ДЕЛАТЬ
		 WRITEF("%N! = %I4*N", I, ФАКТ(I))
	 РЕЗУЛЬТАТЫ 0
 $)

 И ФАКТ(N) = N = 0 -> 1, N * ФАКТ(N - 1)
 

Подсчитайте решения задачи о N ферзях :

ПОЛУЧИТЬ «LIBHDR»

 ГЛОБАЛЬНЫЙ $(
	 СЧЕТ: 200
	 ВСЕ: 201
 $)

 ПОПРОБУЙТЕ(LD, ROW, RD) БЫТЬ
	 ТЕСТОВАЯ РЯДКА = ВСЕ ТОГДА
		 СЧЕТ := СЧЕТ + 1
	 ЕЩЕ $(
		 LET POSS = ВСЕ & ~(LD | ROW | RD)
		 ПОКА POSS = 0 ДЕЛАТЬ $(
			 ПУСТЬ P = POSS & -POSS
			 ПОСС := ПОСС - П
			 ПОПРОБУЙТЕ(LD + P << 1, ROW + P, RD + P >> 1)
		 $)
	 $)

 НАЧНЕМ() = ВАЛОФ $(
	 ВСЕ := 1
	 ДЛЯ I = 1 ДО 12 ДЕЛАТЬ $(
		 СЧЕТ := 0
		 ПОПРОБУЙТЕ(0, 0, 0)
		 WRITEF("ЗАДАЧА %I2-КОВИНС ИМЕЕТ %I5 РЕШЕНИЙ*N", I, COUNT)
		 ВСЕ := 2 * ВСЕ + 1
	 $)
	 РЕЗУЛЬТАТЫ 0
 $)
 

Ссылки [ править ]

  1. ^ Перейти обратно: а б с «Мартин Ричардс (Премия пионера компьютеров 2003 г.)» . Компьютерное общество IEEE. Архивировано из оригинала 24 ноября 2017 года . Проверено 24 ноября 2017 г.
  2. ^ Пайк, Роб (24 апреля 2014 г.). «Привет, суслики» . Проверено 11 марта 2016 г.
  3. ^ https://www.cl.cam.ac.uk/~mr10/bcplman.pdf Руководство пользователя BCPL Cintsys и Cintpos, 2.1.4 Скобки разделов
  4. ^ «Клайв Физер о CPL и BCPL» . www.lysator.liu.se . Проверено 1 марта 2024 г.
  5. ^ Ричардс, Мартин; Уитби-Стивенс, Колин (1980). BCPL: язык и его компилятор . Издательство Кембриджского университета. п. 5. ISBN  978-0521785433 .
  6. ^ BCPL , Файл жаргона
  7. ^ «Технические разработки Reuters: Глоссарий - БАРОН» . www.thebaron.info .
  8. ^ Керниган, Брайан В.; Деннис М. Ричи (1978). Язык программирования Си . Телефонные лаборатории Белла. п. 2. ISBN  0-13-110163-3 .
  9. ^ История C++, дата обращения 12 декабря 2017 г.
  10. ^ Ричардс, Мартин; Уитби-Стивенс, Колин (1980). BCPL: язык и его компилятор . Издательство Кембриджского университета. п. 8. ISBN  978-0521785433 .

Дальнейшее чтение [ править ]

  • Мартин Ричардс, Справочное руководство BCPL (Меморандум M-352, Проект MAC , Кембридж, Массачусетс, США, июль 1967 г.)
  • Мартин Ричардс, BCPL — инструмент для написания компиляторов и системного программирования ( Труды весенней совместной компьютерной конференции , том 34, стр. 557–566, 1969)
  • Мартин Ричардс, Артур Эванс, Роберт Ф. Мэби, Справочное руководство BCPL (MAC TR-141, Project MAC , Кембридж, Массачусетс, США, 1974)
  • Мартин Ричардс, Колин Уитби-Стривенс, BCPL, язык и его компилятор (Cambridge University Press, 1980) ISBN   0-521-28681-6

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец оригинального документа.
Arc.Ask3.Ru
Номер скриншота №: 4AD794A55A1F1107245E60E88B9290E9__1715299020
URL1:https://en.wikipedia.org/wiki/BCPL
Заголовок, (Title) документа по адресу, URL1:
BCPL - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть, любые претензии не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, денежную единицу можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)