" esac
" Önceki bir sonlandırır " case
bir" 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 .
od
Bourne 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. :-)
esac
Tam olarak nerede olması gerektiğine işaret eden dizin girişi - onu tanımlayan satıra ve gerekli olduğunu gösterir.