Оглавление
Шлеп и шлеп
-
Описание языков BlooP и FlooP
- BlooP и FlooP — простые языки программирования, разработанные Дугласом Хофштадтером.
- BlooP — неполный по Тьюрингу язык с ограниченным циклом, рекурсия запрещена.
- FlooP — полностью разработанный по Тьюрингу язык с неограниченными циклами, может выражать все вычислимые функции.
-
Особенности BlooP
- Все программы должны завершаться.
- Язык может выражать только примитивные рекурсивные функции.
- Единственные переменные: OUTPUT и CELL(i).
- Единственные операторы: ⇐, +, ×, <, >, =.
- Программы используют конечное число ячеек, числа в ячейках могут быть сколь угодно большими.
- Структуры данных обрабатываются путем нумерации возможных структур по методу Геделя.
- Конструкции потока управления включают ограниченные циклы, условные операторы, прерывающие и завершающие переходы.
- BlooP не допускает рекурсии и неограниченных переходов.
- Могут быть определены именованные процедуры, вызывающие только ранее определенные процедуры.
-
Особенности FlooP
- Поддерживает неограниченные циклы (MU-циклы).
- Может выражать все вычислимые функции, включая функцию Аккермана.
- Программы могут не завершаться, невозможно решить, какие программы завершаются.
-
Примеры программ
- Пример BlooP: функция вычитания, не встроенная операция, не дает отрицательного результата.
- Пример FlooP: функция Аккермана, нелегальная программа BlooP из-за использования неограниченного MU-LOOP.
-
Дополнительные ресурсы
- Машина, которая всегда останавливается.
- Рекомендации и внешние ссылки.
- Словарь языков программирования — BLooP и FLooP.
- Музей ретрокомпьютеров.
- Портлендское хранилище шаблонов: Bloop, Floop и Gloop.
- Компилятор для BlooP и FlooP.