" esac
" Закінчується раніше " case
" для формування " коду-блоку ".
У Algol68 вони використовуються, як правило, зворотна послідовність символів ключового слова, що вводиться, використовується для завершення корпусу, наприклад ( if ~ then ~ else ~ fi, case ~ in ~ out ~ esac, for ~ while ~ do ~ od ).
Я б назвав їх "Блоками, що охороняються" за Едджером Дійкстра та його мовою командної охорони .
od
імовірно, він не використовувався в оболонці Борна через існування команди "od" Unix .
Історія:
Ідея "Охоронного блоку", схоже, походить від ALGOL 68, наприклад англійською:
proc days in month = (int year, month)int:
case month in
31,
if year mod 4=0 ∧ year mod 100≠0 ∨ year mod 400=0 then 29 else 28 fi,
31, 30, 31, 30, 31, 31, 30, 31, 30, 31
esac;
Радянська реалізація Algol68 LGU зробила те ж саме: англійською мовою Algol68 написано шанобливе твердження про справу case ~ in ~ out ~ esac
, кирилицею це написано выб ~ в ~ либо ~ быв
.
Потім у 1975 році кодові блоки Algol68 були запозичені Едсгером Дайкстра для своєї мови охоронної команди . напр
if a ≥ b → max := a
| b ≥ a → max := b
fi
Імовірно Dijstra використовується «Блоки охоронюваних» , щоб подолати обірвану ще неоднозначність реалізований в Algol60 , а потім повторно спроектований в мові програмування C . (пор . конфлікт зрушення-зменшення. )
Нарешті - від Algol68 - " esac
" перетворився на оболонку Борна 1977 року (де ви виявили esac
) люб'язно надано Стівену Р. Борну, який розробив ранній компілятор Algol68 під назвою ALGOL 68C .
Відомо, що Стівен також використовував ці самі охоронені блоки у "файлі заголовка C", який називається macro.h
#define IF if(
#define THEN ){
#define ELSE } else {
#define ELIF } else if (
#define FI ;}
Значні програмні генії Ландон Керт Нолл та Ларрі Бассел натрапили на код макро.h Стіва в 1984 році, працюючи в групі перевезень Genix National Semiconductor і намагалися зрозуміти його застосування. Тоді Ландон і Ларрі створили Міжнародний конкурс з прихованих кодів С ...
З 1984 року по сьогодні існує кілька тисяч інших «кращих» мов програмування, які не використовують охороняються команди Діжкстри. І використання їх Стівен Борн macro.h
часто цитується в "Дисертаціях з розробки програмного забезпечення" студентів ІТ як доказ того, що вони не спали на лекціях. :-)
esac
точок саме там, де він повинен бути - до рядка, який його визначає, і ілюструє, що це потрібно.