проклятия (библиотека программирования)
![]() | |
Команда Live Upgrade (lu), основанная на FMLI [ обсуждать ] который использует проклятия | |
Разработчик(и) | Кен Арнольд |
---|---|
Первоначальный выпуск | 1978 [1] |
Написано в | С |
Тип | Набор инструментов для виджетов |
Curses — это терминалом управления библиотека для Unix-подобных систем, позволяющая создавать приложения с текстовым пользовательским интерфейсом (TUI).
Название представляет собой каламбур от термина « оптимизация курсора ». Это библиотека функций, которые управляют отображением приложения на символьных терминалах (например, VT100 ). [2]
ncurses — одобренная замена классическим проклятиям 4.4BSD .
Обзор
[ редактировать ]Используя проклятия, программисты могут писать текстовые приложения, не записывая их непосредственно для какого-либо конкретного типа терминала. Библиотека проклятий в исполняющей системе отправляет правильные управляющие символы в зависимости от типа терминала. Он предоставляет абстракцию одного или нескольких окон, отображаемых на экране терминала. Каждое окно представлено символьной матрицей. Программист настраивает желаемый внешний вид каждого окна, а затем сообщает пакету проклятий обновить экран. Библиотека определяет минимальный набор изменений, необходимых для обновления дисплея, а затем выполняет их, используя определенные возможности терминала и последовательности управления.
Короче говоря, это означает, что программист создает матрицу символов того, как должен выглядеть экран, и позволяет проклятиям выполнять эту работу.
проклятий API описан в нескольких местах. [3] Большинство реализаций проклятий используют базу данных, которая может описывать возможности тысяч различных терминалов. Существует несколько реализаций, таких как PDCurses, которые используют специализированные драйверы устройств, а не базу данных терминала. Большинство реализаций используют terminfo ; некоторые используют termcap . Преимущество Curses заключается в возможности обратной переносимости на терминалы символьных ячеек и простоте. Для приложения, которое не требует растровой графики или нескольких шрифтов, реализация интерфейса с использованием проклятий обычно будет намного проще и быстрее, чем реализация интерфейса с использованием X. набора инструментов
История
[ редактировать ]Первая библиотека проклятий была написана Кеном Арнольдом и первоначально выпущена вместе с BSD UNIX, где она использовалась в нескольких играх, в первую очередь в Rogue . [4] [5] [6] Некоторые улучшения были внесены в библиотеку BSD в 1990-х годах в виде проклятий «4.4BSD», например, для обеспечения более чем одного типа выделения видео. [ нужна ссылка ] Однако они не получили широкого распространения.
Название «проклятия» — это каламбур, обозначающий оптимизацию курсора . [7] Иногда ошибочно утверждается, что проклятия использовались редактором 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.
Разработка проклятий 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. /Проклятия, [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 .
См. также
[ редактировать ]- conio – аналогичная идея, для DOS
- S-Lang — интерпретируемый язык с некоторыми связанными функциями.
- SMG$ — аналогичная идея для OpenVMS.
- Newt — аналогичная текстовая библиотека пользовательского интерфейса, основанная на библиотеке сленга.
Ссылки
[ редактировать ]- ^ Крэддок, Дэвид Л. (17 июня 2016 г.). «Процедурные подземелья Doom: Создание Rogue – Глава 3» . Проверено 18 мая 2023 г.
- ^ Томас Э. Дики. «НКУРСЕС – Часто задаваемые вопросы» .
- ^ Джон Стрэнг, Программирование с проклятиями , О'Рейли, ISBN 0-937175-02-1
- ^ Питер Х. Салус (октябрь 1994 г.). «История Unix связана не только с технологиями, но и с сотрудничеством» . Байт.
- ^ Перейти обратно: а б Арнольд, KCRC (1977). «Обновление экрана и оптимизация движения курсора: пакет библиотеки». Калифорнийский университет, Беркли.
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ Кеннет К.Р.С. Арнольд; Элан Амир (декабрь 1992 г.). «Обновление экрана и оптимизация движения курсора: пакет библиотеки» .
- ^ Томас Э. Дики. «НКУРСЕС – Часто задаваемые вопросы» .
- ^ Гудхарт, Берни (1991). Объяснение проклятий UNIX . Прентис Холл. п. xi. ISBN 0-13-931957-3 .
- ^ «X/Open Curses, выпуск 4, версия 2, справочные страницы» . Открытая группа. 1997.
- ^ Эрик С. Рэймонд (1 сентября 1995 г.). «ncurses: портативная обработка экрана для Linux» . Linux-журнал . Проверено 18 мая 2023 г.
- ^ Марк Хесслинг (2008). «Рекс/Проклятия» . SourceForge Проект rexxcurses . Проверено 10 февраля 2014 г.
- ^ Ф. Эллерманн (26 июля 1993 г.). «CURSES.NEW в pccurses.zip» . Проверено 10 февраля 2014 г.
на основе проклятий для ПК (версия 1.4), написанных Бьорном Ларссоном.
[ постоянная мертвая ссылка ] - ^ Бьорн Ларссон (14 января 1990 г.). «README.NOW в pccurs14.zip» . Архивировано из оригинала 23 февраля 2014 г. Проверено 10 февраля 2014 г.
PCcurses — это порт/переработка [пакета] Павла Кертиса.
- ^ Томас Э. Дики (декабрь 1996 г.). «НКУРСЫ — Новые проклятия» .
- ^ Проект NetBSD (февраль 2004 г.). «CURSES_SCREEN(3), Руководство по функциям библиотеки NetBSD» .
- ^ Жуйбяо Цю (сентябрь 2005 г.). «NetBSD-SoC: широкая поддержка символов в библиотеке проклятий NetBSD» .
- ^ Томас Бискап (1994–2007). «АДОМ – Прошлое» . Архивировано из оригинала 10 октября 2007 г. Проверено 16 ноября 2007 г.
- ^ Томас Бискап (15 марта 1996 г.). «Новая игра: ADOM (только для MS-DOS, MS-Windows и Linux)» . Группа новостей : Rec.games.roguelike.announce . Проверено 16 ноября 2007 г.
Внешние ссылки
[ редактировать ]- NCURSES - Страницы руководства
- Учебное пособие по проклятиям. Архивировано 28 мая 2005 г. в Wayback Machine ( PDF ). формат
- Проклятия общественного достояния
- Интерфейс для программистов Rexx
- Инструментарий Tcl
- X/Открыть проклятия
- Проклятия для Python
- Основная страница руководства NetBSD Curses. Архивировано 8 августа 2014 г. на Wayback Machine.
- X/Open Curses, выпуск 4, версия 2 , 1996, opengroup.org
- X/Open Curses, выпуск 7 , 2009 г., opengroup.org