Carcasa Hamilton C


Hamilton C shell es un clon de Unix C shell y utilidades [1] [2] para Microsoft Windows creado por Nicole Hamilton [3] en Hamilton Laboratories como un trabajo completamente original, que no se basa en ningún código anterior. Fue lanzado por primera vez en OS/2 el 12 de diciembre de 1988 [4] [5] [6] [7] [8] [9] y en Windows NT en julio de 1992. [10] [11] [12] El sistema operativo La versión /2 se suspendió en 2003, pero la versión de Windows sigue recibiendo soporte activo.

El shell Hamilton C difiere del shell Unix C en varios aspectos. Estos incluyen su arquitectura de compilador , su uso de subprocesos y la decisión de seguir las convenciones de Windows en lugar de Unix. [8] [9]

El shell C original utiliza un analizador ad hoc. Esto ha dado lugar a quejas sobre sus limitaciones. Funciona lo suficientemente bien para el tipo de cosas que los usuarios escriben de forma interactiva, pero no muy bien para los comandos más complejos que un usuario puede tardar en escribir en un script. No es posible, por ejemplo, canalizar la salida de una instrucción foreach a grep . Había un límite en la complejidad de un comando que podía manejar. [13]

Por el contrario, Hamilton utiliza un analizador descendente recursivo de arriba hacia abajo que le permite compilar declaraciones en un formulario interno antes de ejecutarlas. [1] [8] Como resultado, las declaraciones se pueden anidar o canalizar arbitrariamente. [6] El lenguaje también se ha ampliado con procedimientos integrados y definidos por el usuario, variables locales, coma flotante y expresiones adicionales, operadores de edición y comodines, incluida una construcción comodín de "directorio indefinido" escrita como " ..." que coincide con cero o más niveles de directorio según sea necesario para que el resto del patrón coincida. [14]

Al carecer de una bifurcación o de una forma de alto rendimiento para recrear esa funcionalidad, Hamilton usa las funciones de subprocesos de Windows en su lugar. [6] [8] Cuando se crea un nuevo subproceso, se ejecuta dentro del mismo espacio de proceso y comparte todo el estado del proceso. Si un subproceso cambia el directorio actual o el contenido de la memoria, se cambia para todos los subprocesos. Es mucho más barato crear un hilo que un proceso, pero no hay aislamiento entre ellos. Para recrear el aislamiento faltante de procesos separados, los subprocesos cooperan para compartir recursos mediante bloqueos . [15]

Hamilton se diferencia de otros shells de Unix en que también admite directamente las convenciones de Windows para letras de unidad , barras inclinadas de nombre de archivo , caracteres de escape , etc. [9]


Hamilton C shell y Cygwin bash en Windows 7 , que muestran el uso de la recursividad para la factorización.
Hamilton C shell y Cygwin bash date loops.