stringtranslate.com

curses (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 gestionan la visualización de una aplicación en terminales de celdas de caracteres (por ejemplo, VT100 ). [2]

ncurses es el reemplazo aprobado para los curses clásicos 4.4BSD .

Descripción general

Al utilizar curses, los programadores pueden escribir aplicaciones basadas en texto sin escribir directamente para ningún tipo de terminal específico. La biblioteca de curses en el 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 dice 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 y secuencias de control específicas del terminal.

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 terminal. La mayoría de las implementaciones utilizan terminfo ; algunos usan termcap . Curses tiene la ventaja de la portabilidad a terminales de células 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 usando curses generalmente será mucho más simple y rápida que una que usa un kit de herramientas X.

Historia

La primera biblioteca de curses fue escrita por Ken Arnold y originalmente lanzada con BSD UNIX, donde se usó para varios juegos, sobre todo Rogue . [4] [5] [6] Se realizaron algunas mejoras a la biblioteca BSD en la década de 1990 como cursos "4.4BSD", por ejemplo, para proporcionar más de un tipo de resaltado de vídeo. [ cita necesaria ] Sin embargo, no se utilizan ampliamente.

El nombre "curses" es un juego de palabras con optimización del cursor . [7] A veces se afirma incorrectamente que el editor vi utilizó maldiciones . 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 es anterior a curses. [5]

Según Goodheart, la implementación original de curses de Ken Arnold comenzó reutilizando funciones de la biblioteca termcap y agregándolas. [8] Unos años más tarde, Mary Ann Horton , que había mantenido las fuentes vi y termcap en Berkeley , fue a AT&T Corporation e hizo una versión diferente usando terminfo , que pasó a formar parte de UNIX System III y UNIX System V. Debido a restricciones de licencia para 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 vídeo (negrita, subrayado)
La versión BSD solo admitía destacados .
dibujo lineal
La versión BSD dio poco soporte aquí.
colores
Esto no era compatible con la versión BSD.

El desarrollo de curses de AT&T parece haberse detenido a mediados de la década de 1990, cuando se definió X/Open Curses. [9] En 1995, el mantenedor de BSD, Keith Bostic , desaprobó oficialmente la biblioteca curses en 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 (amplia compatibilidad con 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 (Public Domain curses) 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 (nuevas maldiciones) "se originó como pcurses  ... y fue reeditado como ncurses 1.8.1 a finales de 1993". [14] ncurses es la implementación más conocida de curses y ha motivado un mayor desarrollo de otras variaciones, como los curses BSD en el proyecto NetBSD . [15] [16]

Portabilidad

Aunque la biblioteca ncurses se desarrolló inicialmente bajo Linux, OpenBSD, FreeBSD y NetBSD, ha sido portada a muchos otros sistemas ANSI/POSIX UNIX, principalmente por Thomas Dickey. PDCurses, aunque no es idéntico a ncurses, utiliza las mismas llamadas a funciones y funciona de la misma manera que ncurses, excepto que PDCurses apunta a diferentes dispositivos, por ejemplo, consolas de Windows para DOS , Win32 , OS/2 y X11 . La transferencia 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 una GUI en un dispositivo de solo texto, como una PC que se ejecuta en modo consola, un terminal ANSI de hardware, un cliente Telnet o SSH , o similar. El software basado en Curses es 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, incluyendo ' 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, y al mismo tiempo poder ejecutarse en dispositivos de solo texto. El software basado en Curses también puede ocupar menos recursos y operar en una gama más amplia de sistemas (tanto en términos de hardware como de software) que sus homólogos basados ​​en GUI. Esto incluye máquinas antiguas anteriores a 1990 junto con sistemas integrados modernos que utilizan pantallas de sólo texto.

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

Ver 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 que ver tanto 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}}: Citar diario requiere |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. ^ Buen corazón, Berny (1991). Explicación de las maldiciones de UNIX . Prentice Hall. pag. xi. ISBN 0-13-931957-3.
  9. ^ "X/Open Curses, número 4, versión 2, páginas de referencia". El grupo abierto. 1997.
  10. ^ Eric S. Raymond (1 de septiembre de 1995). "ncurses: manejo de pantalla portátil para Linux". Diario de Linux . Consultado el 18 de mayo de 2023 .
  11. ^ Mark Hessling (2008). "Rexx/Maldiciones". Proyecto SourceForge rexxcurses . Consultado el 10 de febrero de 2014 .
  12. ^ F. Ellermann (26 de julio de 1993). "CURSES.NUEVO 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. ^ Björn 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] 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 la biblioteca NetBSD".
  16. ^ Ruibiao Qiu (septiembre de 2005). "NetBSD-SoC: amplia compatibilidad con 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 (solo MS-DOS, MS-Windows y Linux)". Grupo de noticias : rec.games.roguelike.announce . Consultado el 16 de noviembre de 2007 .

enlaces externos