BCPL
- Дата создания:
- 1967
- Создан под влиянием:
- Повлиял на:
- Парадигма:
- Типизация:
- Принятые расширения файлов:
- .b
- Реализации и версии (свернуть все | развернуть все):
BCPL (аббр. Basic/Bootstrap Combined Programming Language) — бестиповый процедурный императивный структурный язык программирования, разработанный Мартином Ричардсом (Martin Richards) в 1966 году (первая реализация создана им же в 1967).
Язык был создан под влиянием CPL, но без элементов, которые его усложняли. В настоящее время язык не используется, но в свое время он оказал значительное влияние на язык B, который, в свою очередь, стал прародителем C. В частности, именно в BCPL были впервые использованы фигурные скобки { } для выделения блоков и // для выделения комментариев до конца строки. Считается, что именно на BCPL была написана первая программа “Hello, World!”.
Единственный тип данных в языке — целое число, обычно 32-битное.
Элементы синтаксиса:
| Комментарий до конца строки | // |
|---|---|
| Присваивание значения переменной | varname := value, varname : value |
| Объявление переменной с присваиванием значения | let varname = value |
| Группировка выражений | ( ... ) |
| Блок | { ... } |
| Равенство | = |
| Неравенство | ~= neqv |
| Определение функции | f(para1, para2, ...) = valof $( ... $) или let f(para1, para2, ...) be $( ... $) |
| Вызов функции | f(a,b,...f) или f[a,b,...] |
| Если - то | if condition do trueBlock |
| Если - то - иначе | test condition then trueBlock or falseBlock; condition -> trueBlock, falseBlock |
| Цикл с предусловием | while condition do loopBody |
| Цикл с постусловием | loopBody repeatuntil condition |
Примеры:
Hello, World!:
Пример для версий 64-bit BCPL Cintcode System (1 Nov 2006)*n служит для печати символа перевода строки
GET "libhdr"
LET start() = VALOF
$( writes("Hello, World!*n")
RESULTIS 0
$)
Факториал:
Пример для версий 64-bit BCPL Cintcode System (1 Nov 2006)Используется рекурсивное определение факториала.
*n служит для печати символа перевода строки.
Вычисление факториала 15 и более вызывает арифметическое переполнение. В результате вывод программы имеет следующий вид:
0! = 1
1! = 1
2! = 2
3! = 6
4! = 24
5! = 120
6! = 720
7! = 5040
8! = 40320
9! = 362880
10! = 3628800
11! = 39916800
12! = 479001600
13! = 6227020800
14! = 87178291200
15! = 18000
16! = 000
GET "libhdr"
LET start() = VALOF
{ FOR i = 0 TO 16 DO writef("%n! = %n*n", i, factorial(i))
RESULTIS 0
}
AND factorial(n) = n=0 -> 1, n*factorial(n-1)
Числа Фибоначчи:
Пример для версий 64-bit BCPL Cintcode System (1 Nov 2006)Используется рекурсивный метод вычисления чисел Фибоначчи.
GET "libhdr"
LET start() = VALOF
{ FOR i = 0 TO 15 DO writef("%n, ", fibonacci(i))
writef("...*n")
RESULTIS 0
}
AND fibonacci(n) = n<2 -> 1, fibonacci(n-1)+fibonacci(n-2)
Комментарии
]]>blog comments powered by Disqus
]]>