WikiSort.ru - Не сортированное

ПОИСК ПО САЙТУ | о проекте

Curses — библиотека управления терминалом для Unix-подобных операционных систем, позволяющая создавать приложения с текстовым интерфейсом пользователя.

Название библиотеки происходит от английского термина «cursor optimization» (оптимизация курсора)[1], а также означает "проклятия". Библиотека содержит функции для работы с дисплеем текстового терминала (например, VT100) [2].

Обзор

API Curses описан в нескольких различных источниках[3]. Большинство реализаций curses использует базу данных, описывающую возможности тысяч различных терминалов. Некоторые реализации (например, PDCurses (англ.)), используют вместо неё специализированные драйверы устройств. Большинство реализаций использует terminfo; некоторые используют termcap. Для приложений, не требующих вывода графики или нескольких шрифтов, реализация интерфейса при помощи curses будет гораздо проще и быстрее, чем с использованием X Window System.

При помощи curses программисты могут создавать текстовые приложения, переносимые между различными типами терминалов — библиотека сама позаботится о том, какие управляющие символы следует использовать для каждого конкретного терминала. Curses предоставляет возможность отображения нескольких окон на одном терминале. Каждое окно представляется матрицей символов. Программист устанавливает позицию, размер и содержимое каждого окна и обновляет экран. Библиотека определяет минимальный набор изменений для обновления экрана и применяет их, исходя из возможностей терминала.

История

Первая реализация curses была написана Кеном Арнольдом и поставлялась вместе с BSD UNIX, где использовалась для нескольких игр, самая известная из которых - Rogue[4][5][6].

Иногда ошибочно утверждается, что curses использовался в текстовом редакторе vi. На самом деле, код, оптимизирующий перемещение курсора, был позаимствован curses из vi, который вышел раньше[5].

Согласно Гудхарту, оригинальная реализация Кена Арнольда началась с расширения функций библиотеки termcap[7]. Несколькими годами позже Марк Хортон, работавший над улучшением кода vi и termcap в Беркли, перешёл в AT&T и создал другую версию на основе terminfo, которая стала частью UNIX System III и UNIX System V. Из-за ограничений лицензии последнего версии BSD и AT&T разрабатывались независимо. Кроме улучшений termcap/terminfoв версии AT&T были добавлены:

выделение текста (полужирный, подчеркнутый)
версия BSD поддерживала только режим выделения standout.
рисование линий
версия BSD имела слабую поддержку данной функции.
цвета
в версии BSD такой возможности не предвиделось.

Разработка AT&T curses остановилась в середине 1990-х, когда было объявлено о создании X/Open Curses. [8] Однако разработка ncurses и PDCurses продолжается. Версия BSD curses продолжает поддерживаться в операционной системе NetBSD (поддержка широких символов, миграция с termcap на terminfo и т. д.).

pcurses и PDCurses

Развитием AT&T curses можно считать как минимум следующие реализации: pcurses от Павела Кёртиса (1982), PDCurses (Public Domain curses) от Марка Хесслинга (Mark Hessling) для поддержки его редактора THE (1987), а также Rexx/Curses[9] и PC curses (версии 1.4 от Бьорна Ларссона (Bjorn Larsson) основаны на библиотеке Кёртиса[10].[11]Шаблон:Discuss

ncurses

ncurses (new curses) «изначально являлась pcurses … и была перевыпущена как ncurses 1.8.1 в конце 1993 года»[12]. ncurses является наиболее известной реализацией curses, которая мотивировала дальнейшую разработку остальных модификаций, таких как BSD curses в проекте NetBSD. [13] [14]

Переносимость

Хотя библиотека ncurses library изначально разрабатывалась под Linux, OpenBSD, FreeBSD, и NetBSD, она была портирована под множество других ANSI/POSIX UNIX-систем, в основном усилиями Томаса Дики. PDCurses (не путать с ncurses) использует те же вызовы, что и ncurses, за исключением того, что PDCurses предназначена для различных устройств, то есть, консольных окон DOS, Win32, OS/2 и X11. Портирование между этими двумя версиями не представляет трудностей. Например, «рогалик» ADOM был написан под Linux и ncurses, и позднее был портирован под DOS и PDCurses[15][16].

Скриншоты

Ниже продемонстрированы типичные примеры использования curses (в окне терминала, поддерживающего цвет)

Программное обеспечение, использующее curses

Curses делает возможным с лёгкостью создавать GUI-подобную функциональность на текстовом терминале, таком как текстовый режим PC, аппаратный ANSI-терминал, клиент Telnet или SSH.

Программы, использующие curses, часто имеют пользовательский интерфейс, напоминающий традиционный графический интерфейс пользователя, включая такие виджеты, как выпадающие меню и прокручиваемые списки, вместо интерфейса командной строки (command line interface, CLI), широко используемого на текстовых терминалах. Кроме того, программы, использующие curses, менее требовательны к ресурсам, чем их графические аналоги, и более переносимы между системами (особенно очень старыми, до 1990 года).

Curses использован в реализации языка FMLI, с помощью которого был создан дружелюбный пользовательский интерфейс FACE в системах SVR4, предоставляющих базовый функционал для администрирования.[источник не указан 3024 дня] FMLI, основанный на Curses, был позднее использован в системе Solaris для создания высокоуровневого интерфейса для команд Live Upgrade.[источник не указан 3024 дня]

Curses чаще всего ассоциируется с Unix-подобными операционными системами, хотя также существуют реализации для Microsoft Windows.

См. также

  • ncurses
  • conio — похожая идея для DOS
  • S-Lang — интерпретируемый язык с похожими средствами экранного ввода/вывода
  • SMG$ — похожая идея для OpenVMS
  • Newt[en] — похожая библиотека тексового интерфейса на основе библиотеки slang

Примечания

  1. Thomas E. Dickey. NCURSES - Frequently Asked Questions.
  2. Thomas E. Dickey. NCURSES - Frequently Asked Questions.
  3. John Strang, Programming with curses, O’Reilly, ISBN 0-937175-02-1
  4. Peter H. Salus. The history of Unix is as much about collaboration as it is about technology. Byte (October 1994).
  5. 1 2 Arnold, K. C. R. C. (1977). “Screen Updating and Cursor Movement Optimization: A Library Package”. University of California, Berkeley.
  6. Kenneth C. R. C. Arnold. Screen Updating and Cursor Movement Optimization: A Library Package (December 1992).
  7. Goodheart, Berny. UNIX Curses Explained. — Prentice Hall, 1991. — P. xi. ISBN 0-13-931957-3.
  8. X/Open Curses, Issue 4 Version 2, Reference Pages. The Open Group (1997).
  9. Mark Hessling. Rexx/Curses. SourceForge project rexxcurses (2008). Проверено 10 февраля 2014.
  10. F. Ellermann. CURSES.NEW in pccurses.zip (26 июля 1993). — «based on PC curses (version 1.4) written by Bjorn Larsson». Проверено 10 февраля 2014. (недоступная ссылка)
  11. Bjorn Larsson. README.NOW in pccurs14.zip (14 января 1990). — «PCcurses is a port/rewrite of Pavel Curtis' [package]». Проверено 10 февраля 2014.
  12. Thomas E. Dickey. NCURSES - New Curses (December 1996).
  13. NetBSD project. CURSES_SCREEN(3), NetBSD Library Functions Manual (February 2004).
  14. Ruibiao Qiu. NetBSD-SoC: Wide Character Support in NetBSD curses Library (September 2005).
  15. Thomas Biskup. ADOM - The Past (недоступная ссылка) (1994–2007). Проверено 16 ноября 2007. Архивировано 10 октября 2007 года.
  16. Thomas Biskup (March 15, 1996). "New Game: ADOM (MS-DOS, MS-Windows, and Linux only)". rec.games.roguelike.announce. (Google Groups). Проверено 16 ноября 2007.

Ссылки

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии