stringtranslate.com

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

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

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

Обзор

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

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

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

История

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

Название «проклятия» — это каламбур, обозначающий оптимизацию курсора . [7] Иногда ошибочно утверждается, что проклятия использовались редактором vi . На самом деле код Curses, оптимизирующий перемещение курсора из одного места экрана в другое, был заимствован из vi, которая предшествовала Curse. [5]

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

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

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

pcurses и PDCurses

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

ncurses

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

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

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

Скриншоты

Приложения

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

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

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

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

Рекомендации

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

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