stringtranslate.com

maldiciones (biblioteca de programación)

curses es una biblioteca de control de terminal para sistemas tipo Unix , que permite la construcción de aplicaciones de interfaz de usuario de texto (TUI).

El nombre es un juego de palabras con el término " optimización del cursor ". Es una biblioteca de funciones que administran la visualización de una aplicación en terminales de celdas de caracteres (por ejemplo, VT100 ). [2]

ncurses es el reemplazo aprobado para el clásico curses de 4.4BSD .

Descripción general

Con curses, los programadores pueden escribir aplicaciones basadas en texto sin tener que escribir directamente para ningún tipo de terminal específico. La biblioteca curses del sistema en ejecución envía los caracteres de control correctos según el tipo de terminal. Proporciona una abstracción de una o más ventanas que se asignan a la pantalla del terminal. Cada ventana está representada por una matriz de caracteres. El programador configura la apariencia deseada de cada ventana y luego le indica al paquete curses que actualice la pantalla. La biblioteca determina un conjunto mínimo de cambios necesarios para actualizar la pantalla y luego los ejecuta utilizando las capacidades específicas del terminal y las secuencias de control.

En resumen, esto significa que el programador crea una matriz de caracteres de cómo debería verse la pantalla y deja que curses se encargue del trabajo.

La API de curses se describe en varios lugares. [3] La mayoría de las implementaciones de curses utilizan una base de datos que puede describir las capacidades de miles de terminales diferentes. Hay algunas implementaciones, como PDCurses, que utilizan controladores de dispositivos especializados en lugar de una base de datos de terminales. La mayoría de las implementaciones utilizan terminfo ; algunas utilizan termcap . Curses tiene la ventaja de la retroportabilidad a terminales de celdas de caracteres y la simplicidad. Para una aplicación que no requiere gráficos de mapa de bits o múltiples fuentes, una implementación de interfaz que utilice curses normalmente será mucho más sencilla y rápida que una que utilice un kit de herramientas X.

Historia

La primera biblioteca de curses fue escrita por Ken Arnold y publicada originalmente con BSD UNIX, donde se usó para varios juegos, especialmente Rogue . [4] [5] [6] Se realizaron algunas mejoras a la biblioteca BSD en la década de 1990 como curses "4.4BSD", por ejemplo, para proporcionar más de un tipo de resaltado de video. [ cita requerida ] Sin embargo, estos no se usan ampliamente.

El nombre "curses" es un juego de palabras con la palabra optimización del cursor . [7] A veces se afirma incorrectamente que curses fue utilizado por el editor vi . De hecho, el código en curses que optimiza el movimiento del cursor de un lugar a otro en la pantalla fue tomado de vi, que era anterior a curses. [5]

Según Goodheart, la implementación original de curses por parte de Ken Arnold comenzó reutilizando funciones de la biblioteca termcap y añadiendo más. [8] Unos años más tarde, Mary Ann Horton , que había mantenido las fuentes de vi y termcap en Berkeley , fue a AT&T Corporation e hizo una versión diferente utilizando terminfo , que pasó a formar parte de UNIX System III y UNIX System V. Debido a las restricciones de licencia de este último, las versiones BSD y AT&T de la biblioteca se desarrollaron de forma independiente. Además de la mejora de termcap/terminfo, se realizaron otras mejoras en la versión de AT&T:

Resaltado de video (negrita, subrayado)
La versión BSD sólo admitía .
dibujo lineal
La versión BSD brindó poco soporte en este aspecto.
bandera
Esto no era compatible con la versión BSD.

El desarrollo de curses de AT&T parece haberse detenido a mediados de los años 1990 cuando se definió X/Open Curses. [9] En 1995, el mantenedor de BSD, Keith Bostic , desaprobó oficialmente la biblioteca curses a favor de ncurses . [10] [ dudosodiscutir ] El desarrollo de ncurses y PDCurses continúa. Se sigue manteniendo una versión de BSD curses en el sistema operativo NetBSD (soporte amplio de caracteres, migración de termcap a terminfo, etc.).

pcurses y PDCurses

Diferentes líneas de desarrollo comenzaron imitando los curses de AT&T, a partir de al menos tres implementaciones: pcurses de Pavel Curtis (iniciado en 1982), PDCurses (curses de dominio público) de Mark Hessling para apoyar a su editor THE (iniciado en 1987) así como Rexx/Curses, [11] y PC curses (versión 1.4 y anteriores de Bjorn Larsson basada en la biblioteca de Pavel Curtis antes de 1990). [12] [13] [ discutir ]

Maldiciones

ncurses (new curses) "se originó como pcurses  ... y fue reeditado como ncurses 1.8.1 a fines de 1993". [14] ncurses es la implementación más conocida de curses y ha motivado el desarrollo posterior de otras variantes, como BSD curses en el proyecto NetBSD . [15] [16]

Portabilidad

Aunque la biblioteca ncurses fue desarrollada inicialmente bajo Linux, OpenBSD, FreeBSD y NetBSD, ha sido portada a muchos otros sistemas UNIX ANSI/POSIX, principalmente por Thomas Dickey. PDCurses, aunque no es idéntico a ncurses, utiliza las mismas llamadas de función y opera de la misma manera que ncurses, excepto que PDCurses apunta a dispositivos diferentes, por ejemplo, ventanas de consola para DOS , Win32 , OS/2 , así como X11 . La portabilidad entre los dos no es difícil. Por ejemplo, el juego roguelike ADOM fue escrito para Linux y ncurses, y luego portado a DOS y PDCurses. [17] [18]

Capturas de pantalla

Aplicaciones

Curses está diseñado para facilitar una funcionalidad similar a la de una interfaz gráfica de usuario en un dispositivo de solo texto, como una PC que se ejecuta en modo consola, una terminal ANSI de hardware, un cliente Telnet o SSH o similar. El software basado en Curses es un software cuya interfaz de usuario se implementa a través de la biblioteca curses o una biblioteca compatible (como ncurses ).

Los programas basados ​​en Curses suelen tener una interfaz de usuario que se asemeja a una interfaz gráfica de usuario tradicional, que incluye " widgets " como cuadros de texto y listas desplazables, en lugar de la interfaz de línea de comandos (CLI) que se encuentra más comúnmente en dispositivos de solo texto. Esto puede hacerlos más fáciles de usar que un programa basado en CLI, al mismo tiempo que pueden ejecutarse en dispositivos de solo texto. El software basado en Curses también puede tener una huella de recursos más liviana y operar en una gama más amplia de sistemas (tanto en términos de hardware como de software) que sus contrapartes basadas en GUI. Esto incluye máquinas antiguas anteriores a 1990 junto con sistemas integrados modernos que usan pantallas de solo texto.

Curses se asocia más comúnmente con sistemas operativos tipo Unix , aunque también existen implementaciones para Microsoft Windows .

Véase también

Referencias

  1. ^ Craddock, David L. (17 de junio de 2016). «Procedural Dungeons of Doom: The Making of Rogue – Capítulo 3» . Consultado el 18 de mayo de 2023 .
  2. ^ Thomas E. Dickey. "NCURSES - Preguntas frecuentes".
  3. ^ John Strang, Programación con maldiciones , O'Reilly, ISBN 0-937175-02-1 
  4. ^ Peter H. Salus (octubre de 1994). "La historia de Unix tiene tanto que ver con la colaboración como con la tecnología". Byte.
  5. ^ ab Arnold, KCRC (1977). "Actualización de pantalla y optimización del movimiento del cursor: un paquete de biblioteca". Universidad de California, Berkeley. {{cite journal}}: Requiere citar revista |journal=( ayuda )
  6. ^ Kenneth CRC Arnold; Elan Amir (diciembre de 1992). "Actualización de pantalla y optimización del movimiento del cursor: un paquete de biblioteca".
  7. ^ Thomas E. Dickey. "NCURSES - Preguntas frecuentes".
  8. ^ Goodheart, Berny (1991). Las maldiciones de UNIX explicadas . Prentice Hall. pág. xi. ISBN 0-13-931957-3.
  9. ^ "X/Open Curses, número 4, versión 2, páginas de referencia". The Open Group. 1997.
  10. ^ Eric S. Raymond (1 de septiembre de 1995). «ncurses: Portable Screen-Handling for Linux». Linux Journal . Consultado el 18 de mayo de 2023 .
  11. ^ Mark Hessling (2008). "Rexx/Curses". Proyecto SourceForge rexxcurses . Consultado el 10 de febrero de 2014 .
  12. ^ F. Ellermann (26 de julio de 1993). "CURSES.NEW en pccurses.zip" . Consultado el 10 de febrero de 2014. Basado en PC curses (versión 1.4) escrito por Bjorn Larsson.[ enlace muerto permanente ]
  13. ^ Bjorn Larsson (14 de enero de 1990). "README.NOW en pccurs14.zip". Archivado desde el original el 23 de febrero de 2014. Consultado el 10 de febrero de 2014. PCcurses es una adaptación/reescritura del paquete [paquete] de Pavel Curtis .
  14. ^ Thomas E. Dickey (diciembre de 1996). "NCURSES - Nuevas maldiciones".
  15. ^ Proyecto NetBSD (febrero de 2004). "CURSES_SCREEN(3), Manual de funciones de biblioteca de NetBSD".
  16. ^ Ruibiao Qiu (septiembre de 2005). "NetBSD-SoC: Compatibilidad amplia de caracteres en la biblioteca de curses de NetBSD".
  17. ^ Thomas Biskup (1994–2007). "ADOM - El pasado". Archivado desde el original el 10 de octubre de 2007. Consultado el 16 de noviembre de 2007 .
  18. ^ Thomas Biskup (15 de marzo de 1996). «Nuevo juego: ADOM (sólo MS-DOS, MS-Windows y Linux)». Grupo de noticias : rec.games.roguelike.announce . Consultado el 16 de noviembre de 2007 .

Enlaces externos