stringtranslate.com

проклятия (библиотека программирования)

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

Название является игрой слов на термине « оптимизация курсора ». Это библиотека функций, которые управляют отображением приложения на символьных терминалах (например, VT100 ). [2]

ncurses — одобренная замена классическому curses 4.4BSD .

Обзор

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

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

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

История

Первая библиотека curses была написана Кеном Арнольдом и первоначально выпущена вместе с BSD UNIX, где она использовалась в нескольких играх, наиболее известной из которых была Rogue . [4] [5] [6] Некоторые улучшения были внесены в библиотеку BSD в 1990-х годах как «4.4BSD» curses, например, для предоставления более одного типа подсветки видео. [ необходима ссылка ] Однако они не получили широкого распространения.

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

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

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

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

pcurses и PDCurses

Различные линии разработки начинались с имитации проклятий AT&T, по крайней мере, из трех реализаций: pcurses Павла Кертиса ( начато в 1982 году), PDCurses (Public Domain curses) Марка Хесслинга для поддержки его редактора THE (начато в 1987 году), а также Rexx/Curses, [11] и PC curses (версия 1.4 и более ранние версии, основанные на Бьорне Ларссоне и вдохновленные библиотекой Павла Кертиса до 1990 года). [12] [13] [ обсудить ]

ncurses

ncurses (новые проклятия) «зародились как pcurses  ... и были переизданы как ncurses 1.8.1 в конце 1993 года». [14] ncurses — наиболее известная реализация curses, которая послужила стимулом для дальнейшей разработки других вариаций, таких как BSD curses в проекте NetBSD . [15] [16]

Портативность

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

Скриншоты

Приложения

Curses разработан для обеспечения функциональности, подобной GUI, на текстовом устройстве, таком как ПК, работающий в консольном режиме, аппаратный терминал ANSI, клиент Telnet или SSH и т. п. Программное обеспечение на основе Curses — это программное обеспечение, пользовательский интерфейс которого реализован через библиотеку curses или совместимую библиотеку (например, ncurses ).

Программы на основе Curses часто имеют пользовательский интерфейс, который напоминает традиционный графический пользовательский интерфейс, включая « виджеты », такие как текстовые поля и прокручиваемые списки, а не интерфейс командной строки (CLI), который чаще всего встречается на текстовых устройствах. Это может сделать их более удобными для пользователя, чем программы на основе CLI, при этом сохраняя возможность запуска на текстовых устройствах. Программное обеспечение на основе Curses также может иметь меньший ресурсный след и работать на более широком спектре систем (как с точки зрения оборудования, так и программного обеспечения), чем их аналоги на основе GUI. Сюда входят старые машины до 1990 года, а также современные встроенные системы, использующие только текстовые дисплеи.

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

Смотрите также

Ссылки

  1. ^ Крэддок, Дэвид Л. (17 июня 2016 г.). «Процедурные подземелья судьбы: Создание Rogue – Глава 3» . Получено 18 мая 2023 г.
  2. ^ Томас Э. Дики. «NCURSES — Часто задаваемые вопросы».
  3. ^ Джон Стрэнг, Программирование с помощью проклятий , O'Reilly, ISBN 0-937175-02-1 
  4. ^ Питер Х. Салус (октябрь 1994 г.). «История Unix — это история сотрудничества в той же степени, что и история технологий». Byte.
  5. ^ ab Arnold, KCRC (1977). «Обновление экрана и оптимизация движения курсора: библиотечный пакет». Калифорнийский университет, Беркли. {{cite journal}}: Цитировать журнал требует |journal=( помощь )
  6. ^ Кеннет CRC Арнольд; Элан Амир (декабрь 1992 г.). «Обновление экрана и оптимизация движения курсора: библиотечный пакет».
  7. ^ Томас Э. Дики. «NCURSES — Часто задаваемые вопросы».
  8. ^ Goodheart, Berny (1991). UNIX Curses Explained . Prentice Hall. стр. xi. ISBN 0-13-931957-3.
  9. ^ "X/Open Curses, выпуск 4, версия 2, справочные страницы". The Open Group. 1997.
  10. ^ Эрик С. Рэймонд (1 сентября 1995 г.). "ncurses: Portable Screen-Handling for Linux". Linux Journal . Получено 18 мая 2023 г. .
  11. ^ Марк Хесслинг (2008). "Rexx/Curses". Проект SourceForge rexxcurses . Получено 2014-02-10 .
  12. ^ Ф. Эллерманн (1993-07-26). "CURSES.NEW в pccurses.zip" . Получено 2014-02-10 . на основе PC curses (версия 1.4), написанного Бьорном Ларссоном[ постоянная мертвая ссылка ]
  13. ^ Бьорн Ларссон (1990-01-14). "README.NOW в pccurs14.zip". Архивировано из оригинала 2014-02-23 . Получено 2014-02-10 . PCcurses — это порт/переписывание [пакета] Павла Кертиса
  14. Томас Э. Дики (декабрь 1996 г.). «NCURSES — Новые проклятия».
  15. Проект NetBSD (февраль 2004 г.). «CURSES_SCREEN(3), Руководство по функциям библиотеки NetBSD».
  16. ^ Ruibiao Qiu (сентябрь 2005 г.). «NetBSD-SoC: Поддержка широких символов в библиотеке NetBSD curses».
  17. Томас Бискап (1994–2007). «ADOM — The Past». Архивировано из оригинала 2007-10-10 . Получено 2007-11-16 .
  18. Томас Бискап (15 марта 1996 г.). "Новая игра: ADOM (только MS-DOS, MS-Windows и Linux)". Группа новостей : rec.games.roguelike.announce . Получено 16 ноября 2007 г.

Внешние ссылки