Hamilton C shell es un clon del shell C de Unix y de sus utilidades [1] [2] para Microsoft Windows creado por Nicole Hamilton [3] en Hamilton Laboratories como un trabajo completamente original, no basado 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] La versión para OS/2 se suspendió en 2003, pero la versión para Windows continúa recibiendo soporte activo.
Diseño
El C shell de Hamilton difiere del C shell de Unix en varios aspectos, entre ellos la arquitectura del compilador , el uso de subprocesos y la decisión de seguir las convenciones de Windows en lugar de las de Unix. [8] [9]
Analizador sintáctico
El shell C original utiliza un analizador ad hoc, lo que ha dado lugar a quejas sobre sus limitaciones. Funciona bastante 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 podría tardar en escribir en un script. No es posible, por ejemplo, canalizar la salida de una sentencia foreach a grep . Había un límite a la complejidad de los comandos que podía manejar. [13]
Por el contrario, Hamilton utiliza un analizador descendente recursivo de arriba hacia abajo que le permite compilar sentencias en una forma interna antes de ejecutarlas. [1] [8] Como resultado, las sentencias se pueden anidar o canalizar arbitrariamente. [6] El lenguaje también se ha ampliado con procedimientos integrados y definidos por el usuario, variables locales, operadores de punto flotante y expresión adicional, edición y comodín, incluida una construcción de 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]
Trapos
A falta de una bifurcación o una forma de alto rendimiento para recrear esa funcionalidad, Hamilton utiliza en su lugar las facilidades de subprocesos de Windows. [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 subproceso que un proceso, pero no hay aislamiento entre ellos. Para recrear el aislamiento faltante de los procesos separados, los subprocesos cooperan para compartir recursos mediante bloqueos . [15]
^ ab Referencia rápida de la capa C de Hamilton
temprana (PDF) . Hamilton Laboratories, Wayland, MA. 10 de julio de 1990 . Consultado el 28 de julio de 2016 .
^ Faught, Danny (31 de agosto de 1996). "The shell game". Revista Software QA . 3 (4). Archivado desde el original el 1 de marzo de 2012. Consultado el 8 de abril de 2013 .
^ La autora ha hablado de su transición de Douglas Hamilton en una mesa redonda en Stanford, que comienza en el minuto 29:37. Nicole Hamilton, Carl Ingram, Liz Kennedy Myers, Tom Mills, John Ordway, Scott Thatcher, Kirstie Wilde (moderadora) (28 de noviembre de 2007). Mesa redonda de la promoción de 1972: ¡No, no nos iremos (en silencio, en medio de la noche)!. Asociación de exalumnos de Stanford, iTunes U. Consultado el 28 de julio de 2016 .
^ Machlis, Sharon. "Wayland writer for IBM" (PDF) . Middlesex News (18 de diciembre de 1988): 2E . Consultado el 28 de julio de 2016 .
^ Sussman, Ann. "Hamilton C Shell acelera el desarrollo de aplicaciones OS/2" (PDF) . PC Week (26 de diciembre de 1988 – 2 de enero de 1989): 37 . Consultado el 28 de julio de 2016 .
^ abc Hamilton, Douglas A. "Anuncio de Hamilton C shell" (PDF) . IBM Personal Systems Developer (verano de 1989): 119–121 . Consultado el 28 de julio de 2016 .
^ Richman, Scott (enero de 1991). "Examinando la carcasa Hamilton C" (PDF) . Diario del Dr. Dobb . Consultado el 28 de julio de 2016 .
^ abcd Goutal, Kenneth G. "The Hamilton C shell" (PDF) . Revista MIPS (septiembre de 1989) . Consultado el 28 de julio de 2016 .
^ abc Yager, Tom. "OS/2, Unix Style" (PDF) . BYTE Magazine (febrero de 1990) . Consultado el 28 de julio de 2016 .
^ Notas de la versión 4.0 de Hamilton C shell para Windows, consultado el 28 de julio de 2016.
^ Hamilton, Doug (27 de julio de 1995). "Buscando C-Shell en NT". Grupo de noticias : comp.os.ms-windows.nt.misc. Usenet:[email protected]. Consultado el 8 de octubre de 2010 .
^ Deignan, Michael P. (31 de marzo de 1998). "Hamilton C Shell". Windows IT Pro . Consultado el 22 de septiembre de 2019 .
^ Tom Christiansen considera que la programación CSH es perjudicial
^ "Comodines y comparación de patrones". Hamilton Laboratories . Consultado el 13 de agosto de 2018 .
^ Hamilton, Doug (21 de abril de 1995). "Sugerencias para el bloqueo de múltiples lectores y un solo escritor". Grupo de noticias : comp.os.ms-windows.nt.misc. Usenet:[email protected]. Consultado el 28 de julio de 2016 .