" esac" Önceki bir sonlandırır " casebir" oluşturmak üzere " kod bloğu ".
Algol68'de kullanılırlar, genellikle tanıtıcı anahtar kelimenin tersine çevrilmiş karakter dizisi, örneğin muhafazayı sonlandırmak için kullanılır; ( if ~ then ~ else ~ fi, case ~ in ~ out ~ esac, for ~ while ~ do ~ od ).
Edsger Dijkstra ve Korunan Komuta Dilinden sonra onlara "Korunan Bloklar" diyecektim .
odBourne Kabuğunda muhtemelen Unix "od" komutunun varlığından dolayı kullanılmadı .
Tarih:
"Guarded Block" fikri ALGOL 68'den geldi, örneğin İngilizce:
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;
Sovyet'in Algol68 LGU uygulaması da aynı şeyi yaptı: İngilizce'de, Algol68'in saygılı durum açıklaması case ~ in ~ out ~ esac, Kiril dilinde okur выб ~ в ~ либо ~ быв.
Daha sonra 1975'te Algol68'in kod blokları , Korunan Komuta Dili için Edsger Dijkstra tarafından ödünç alındı . Örneğin
if a ≥ b → max := a
| b ≥ a → max := b
fi
Muhtemelen Dijstra , Algol60'da uygulanan ve daha sonra C Programlama Dilinde yeniden tasarlanan Dangling'in belirsizliğini aşmak için "Korunan Blokları" kullandı . (bkz. vardiya azaltma çatışması )
Sonunda - Algol68'den - " esac", ALGOL 68C adlı bir erken Algol68 derleyicisi geliştiren Stephen R. Bourne'un izniyle 1977 Bourne kabuğuna (keşfettiğiniz yer esac) girmiştir .
Ünlü Stephen ayrıca aynı Guarded Bloklarını macro.h adlı bir "C başlık dosyasında" da kullandı.
#define IF if(
#define THEN ){
#define ELSE } else {
#define ELIF } else if (
#define FI ;}
Dikkat çekici yazılım dahileri Landon Curt Noll ve Larry Bassel , 1984 yılında Steve'in macro.h koduna girerek National Semiconductor'ın Genix liman grubunda çalıştı ve uygulamalarını anlamakta zorlandı. Ve böylece Landon & Larry daha sonra Uluslararası Şaşkın C Kod Yarışması'nı yarattı ...
1984'ten günümüze Dijkstra'nın Korunan Komutlarını kullanmayan binlerce başka "daha iyi" programlama dili daha vardı. Ve Steven Bourne'un bunları kullanması macro.h, şimdi genellikle BT mezunlarının "Yazılım Geliştirme Tezleri" nde derslerde uyumadıklarının kanıtı olarak gösteriliyor. :-)
esacTam olarak nerede olması gerektiğine işaret eden dizin girişi - onu tanımlayan satıra ve gerekli olduğunu gösterir.