Это C. Просто автор предпочитал синтаксис ALGOL 68 😄



Стив Борн, создатель Bourne shell, использовал макросы, чтобы исходники оболочки выглядели привычнее:

define IF if(
define THEN ){
define ELSE } else {
define FI ;}

Теперь условие можно записать так:

IF n <= 1 THEN
return;
FI

Препроцессор превратит его в обычный C:

if (n <= 1) {
return;
}

Такие макросы действительно есть в исходниках Bourne shell из UNIX V7. На картинке тот же приём применяется к циклам: FOR, DO, OD.

Любопытный кусочек истории: через define можно поменять внешний вид языка, сохранив прежний компилятор. А вот читать и отлаживать такой код придётся уже с учётом собственного «диалекта».

https://www.tuhs.org/cgi-bin/utree.pl?file=V7/usr/src/cmd/sh/mac.h
Просмотры: 8 017
Открыть в MAX Сообщить о неточности

Репосты публикации

Публикация канала

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти