Стив Борн, создатель 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
