Hamilton C shell

De Wikipedia, la enciclopedia libre
Hamilton C shell
Información general
Tipo de programa lenguaje de programación
Desarrollador Nicole Hamilton
Licencia Licencia de software de Hamilton Laboratories
Información técnica
Programado en C
Enlaces

El Hamilton C shell es un clon del shell Unix C y de 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. Se lanzó 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 de OS/2 se suspendió en 2003, pero la versión de Windows sigue siendo activamente compatible.

Diseño[editar]

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

Analizador[editar]

Bash y Hamilton C shell y Cygwin en Windows 7, mostrando el uso de recursión para factoring

El shell C original utiliza un analizador ad hoc. Esto ha provocado 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 tomar tiempo para escribir en un script.[13]​ No es posible, por ejemplo, canalizar la salida de una instrucción foreach en grep. Había un límite a lo complejo que podía manejar un comando.

Por el contrario, Hamilton utiliza un analizador descendente recursivo descendente que le permite compilar sentencias en una forma interna antes de ejecutarlas.[1][8]​ Como resultado, las declaraciones pueden ser anidadas o canalizadas arbitrariamente.[6]​ El lenguaje también se ha extendido con procedimientos incorporados y definidos por el usuario, variables locales, coma flotante y expresión adicional, operadores de edición y comodín, incluido un constructo de comodín de "directorio indefinido" escrito como "..." que coincide con cero o más niveles de directorio necesarios para que el resto del patrón coincida.[14]

Hilos[editar]

Bucles de datos en Hamilton C shell y Cygwin bash

Al carecer de bifurcación o de una forma de alto rendimiento para recrear esa funcionalidad, Hamilton usa los subprocesos de Windows.[6][8]​ Cuando se crea un nuevo hilo, se ejecuta dentro del mismo espacio de proceso y comparte todo el estado del proceso. Si un hilo cambia el directorio actual o el contenido de la memoria, se cambia para todos los hilos. Es mucho menos costoso 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 usando bloqueos.[15]

Convenciones de Windows[editar]

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

Referencias[editar]

  1. a b Early Hamilton C shell Quick Reference. Hamilton Laboratories, Wayland, MA. 10 de julio de 1990. Consultado el 28 de julio de 2016. 
  2. Faught, Danny (Aug 31, 1996). «The shell game». Software QA Magazine 3. Archivado desde el original el 1 de marzo de 2012. Consultado el Apr 8, 2013. 
  3. The author has discussed her transition from Douglas Hamilton on a panel discussion at Stanford, beginning at 29:37. «Class of 1972 Panel Discussion: Hell No We Won’t Go (Quietly Into the Night)!». Apple (en inglés). 12 de octubre de 2007. 
  4. Machlis, Sharon. «Wayland writer for IBM». Middlesex News (Dec 18 1988): 2E. Consultado el 28 de julio de 2016. 
  5. Sussman, Ann. «Hamilton C Shell Speeds Development Of OS/2 Applications». PC Week (Dec 26 1988 – Jan 2 1989): 37. Consultado el 28 de julio de 2016. 
  6. a b c Hamilton, Douglas A. «Hamilton C shell Announcement». IBM Personal Systems Developer (Summer 1989): 119-121. Archivado desde el original el 1 de febrero de 2017. Consultado el 28 de julio de 2016. 
  7. Richman, Scott (Jan 1991). «Examining the Hamilton C Shell». Dr. Dobb's Journal. Consultado el 28 de julio de 2016. 
  8. a b c d Goutal, Kenneth G. «The Hamilton C shell». MIPS Magazine (Sep 1989). Consultado el 28 de julio de 2016. 
  9. a b c Yager, Tom. «OS/2, Unix Style». BYTE Magazine (Feb 1990). Consultado el 28 de julio de 2016. 
  10. Hamilton C shell for Windows Release Notes 4.0, retrieved July 28, 2016.
  11. Error en la llamada a Plantilla:Hamilton C shell: parámetro title requerido.
  12. Deignan, Michael P. (Apr 1, 1998). «Hamilton C Shell». Windows IT PRo. Archivado desde el original el 5 de octubre de 2017. Consultado el 23 de marzo de 2013. 
  13. Csh Programming Considered Harmful by Tom Christiansen
  14. «Wildcarding and pattern matching». Hamilton Laboratories. Consultado el 13 de agosto de 2018. 
  15. "Suggestions for multiple-reader/single-writer lock?". (Google Groups). URL accedida el 28 de julio de 2016.

Enlaces externos[editar]