El " esac
" termina un "anterior" case
para formar un " bloque de código ".
En Algol68 se usan, generalmente la secuencia de caracteres invertida de la palabra clave de introducción se usa para terminar el recinto, p. Ej. ( if ~ then ~ else ~ fi, case ~ in ~ out ~ esac, for ~ while ~ do ~ od ).
Los llamaría "Bloques guardados" después de Edsger Dijkstra y su lenguaje de comando guardado .
od
presumiblemente no se utilizó en Bourne Shell debido a la preexistencia del comando "od" de Unix .
La historia:
La idea del "bloque guardado" parece provenir de ALGOL 68, por ejemplo, inglés:
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;
La implementación de la LGU Algol68 del soviet hizo lo mismo: en inglés se lee la declaración de caso reveladora de Algol68 case ~ in ~ out ~ esac
, en cirílico esto se lee выб ~ в ~ либо ~ быв
.
Luego, en 1975, los bloques de código de Algol68 fueron prestados por Edsger Dijkstra para su Lenguaje de comando guardado . p.ej
if a ≥ b → max := a
| b ≥ a → max := b
fi
Presumiblemente Dijstra utiliza "bloques" de vigilado para superar la persona que cuelga ambigüedad implementado en Algol60 y luego re-ingeniería en el lenguaje de programación C . (cf. desplazamiento-reducir conflicto ) .
Finalmente, de Algol68, " esac
" llegó al shell Bourne de 1977 (donde descubrió esac
) por cortesía de Stephen R. Bourne, quien había desarrollado un compilador de Algol68 temprano llamado ALGOL 68C .
El famoso Stephen también usó estos mismos bloques guardados en un "archivo de encabezado C" llamado macro.h
#define IF if(
#define THEN ){
#define ELSE } else {
#define ELIF } else if (
#define FI ;}
Los genios notables del software Landon Curt Noll y Larry Bassel se toparon con el código macro.h de Steve en 1984 mientras trabajaban en el grupo de transferencia Genix de National Semiconductor y lucharon por comprender su aplicación. Y entonces Landon & Larry crearon el Concurso Internacional de Código C Ofuscado ...
Desde 1984 hasta hoy ha habido varios miles de otros "mejores" lenguajes de programación que no utilizan los comandos guardados de Dijkstra. Y el uso de Steven Bourne en ellos macro.h
ahora se cita a menudo en las "Disertaciones de desarrollo de software" de estudiantes universitarios de TI como prueba de que no dormían en las conferencias. :-)
esac
puntos exactamente donde debería, a la línea que lo define e ilustra que es obligatorio.