curses (biblioteka programistyczna) - curses (programming library)

pomstowanie
Termapi.svg
Fmli lu.PNG
Polecenie Live Upgrade (lu), oparte na FMLI, które używa Curses
Deweloper(zy) Ken Arnold
Napisane w C
Rodzaj Zestaw narzędzi do widżetów

curses to biblioteka kontroli terminala dla systemów uniksopodobnych, umożliwiająca budowanie aplikacji z tekstowym interfejsem użytkownika (TUI).

Nazwa jest grą słów na określenie „ optymalizacja kursora ”. Jest to biblioteka funkcji, które zarządzają wyświetlaniem aplikacji na terminalach znakowych (np. VT100 ).

Przegląd

Korzystając z curses, programiści są w stanie pisać aplikacje tekstowe bez pisania bezpośrednio dla konkretnego typu terminala. Biblioteka curses w systemie wykonawczym wysyła poprawne znaki sterujące na podstawie typu terminala. Dostarcza abstrakcję jednego lub więcej okien, które są odwzorowywane na ekranie terminala. Każde okno jest reprezentowane przez macierz znaków. Programista ustawia żądany wygląd każdego okna, a następnie każe pakietowi curses zaktualizować ekran. Biblioteka określa minimalny zestaw zmian, które są potrzebne do aktualizacji wyświetlacza, a następnie wykonuje je przy użyciu specyficznych możliwości terminala i sekwencji sterujących.

W skrócie oznacza to, że programista po prostu tworzy macierz postaci, jak powinien wyglądać ekran i pozwala curses na wykonanie zadania.

Curses API jest opisane w kilku miejscach. Większość implementacji curses korzysta z bazy danych, która może opisywać możliwości tysięcy różnych terminali. Istnieje kilka implementacji, takich jak PDCurses, które wykorzystują wyspecjalizowane sterowniki urządzeń zamiast bazy danych terminala. Większość implementacji używa terminfo ; niektórzy używają termcap . Curses ma tę zaletę, że można go przenosić z powrotem do terminali znakowych i jest prosty. W przypadku aplikacji, która nie wymaga grafiki bitmapowej ani wielu czcionek, implementacja interfejsu wykorzystująca curses będzie zwykle znacznie prostsza i szybsza niż ta przy użyciu zestawu narzędzi X.

Historia

Pierwsza biblioteka curses została napisana przez Kena Arnolda i pierwotnie wydana z BSD UNIX, gdzie była używana w kilku grach, w szczególności Rogue . Pewne ulepszenia zostały wprowadzone do biblioteki BSD w latach 90-tych jako curses "4.4BSD", np. aby zapewnić więcej niż jeden typ podświetlania wideo. Jednak nie są one szeroko stosowane.

Nazwa "curses" to gra słów na temat optymalizacji kursora . Czasami błędnie stwierdza się, że curses był używany przez edytor vi . W rzeczywistości kod w curses, który optymalizuje przenoszenie kursora z jednego miejsca na ekranie do drugiego, został zapożyczony z vi, które poprzedzało curses.

Według Goodheart, oryginalna implementacja curses Kena Arnolda rozpoczęła się od ponownego wykorzystania funkcji z biblioteki termcap i dodania do tego. Kilka lat później Mary Ann Horton , która utrzymywała źródła vi i termcap w Berkeley , przeszła do AT&T Corporation i stworzyła inną wersję używając terminfo , która stała się częścią UNIX System III i UNIX System V . Ze względu na ograniczenia licencyjne tego ostatniego, wersje BSD i AT&T biblioteki zostały opracowane niezależnie. Oprócz ulepszenia termcap/terminfo, w wersji AT&T wprowadzono inne ulepszenia:

podświetlanie wideo (pogrubienie, podkreślenie)
Wersja BSD obsługiwana tylko wyróżniała się .
rysowanie linii
Wersja BSD dała tutaj niewielkie wsparcie.
zabarwienie
Nie było to obsługiwane w wersji BSD.

Wydaje się, że rozwój klątw AT&T zatrzymał się w połowie lat 90., kiedy zdefiniowano X/Open Curses. Jednak rozwój ncurses i PDCurses trwa. Wersja curses BSD jest nadal utrzymywana w systemie operacyjnym NetBSD (obsługa szerokiego zakresu znaków, migracja termcap do terminfo, itp.).

pkurs i PDkursy

Różne kierunki rozwoju zaczął naśladując przekleństwa AT & T, z co najmniej trzech wdrożeń: pcurses przez Pavel Curtis (rozpoczęte w 1982), PDCurses (curses Public Domain) Mark HEßLING wspierać jego edytora THE (rozpoczęte w 1987), a także Rexx /Curses i PC curses (wersja 1.4 i wcześniejsze autorstwa Bjorna Larssona, inspirowane biblioteką Pavela Curtisa przed 1990 r.)

ncurses

ncurses (nowe curses) "powstało jako pcurses  ... i zostało ponownie wydane jako ncurses 1.8.1 pod koniec 1993 roku". ncurses jest najbardziej znaną implementacją curses i zmotywowała do dalszego rozwoju innych odmian, takich jak curses BSD w projekcie NetBSD .

Ruchliwość

Chociaż biblioteka ncurses była początkowo rozwijana pod Linuksem, OpenBSD, FreeBSD i NetBSD, została przeniesiona na wiele innych systemów UNIX ANSI/POSIX, głównie przez Thomasa Dickeya . PDCurses, choć nie identyczne z ncurses, używa tych samych wywołań funkcji i działa w taki sam sposób jak ncurses, z wyjątkiem tego, że PDCurses celuje w różne urządzenia, np. okna konsoli dla DOS , Win32 , OS/2 , a także X11 . Przenoszenie między nimi nie jest trudne. Na przykład, gra roguelike ADOM została napisana dla Linuksa i ncurses, później przeniesiona do DOS i PDCurses.

Zrzuty ekranu

Oprogramowanie oparte na Curses

Oprogramowanie oparte na Curses to oprogramowanie, którego interfejs użytkownika jest zaimplementowany przez bibliotekę curses lub bibliotekę zgodną (taką jak ncurses ).

Curses został zaprojektowany, aby ułatwić działanie podobne do GUI na urządzeniu tekstowym, takim jak komputer PC działający w trybie konsoli, sprzętowy terminal ANSI, klient Telnet lub SSH lub podobny.

Programy oparte na Curses często mają interfejs użytkownika, który przypomina tradycyjny graficzny interfejs użytkownika, w tym „ widżety ”, takie jak pola tekstowe i przewijane listy, a nie interfejs wiersza poleceń (CLI) najczęściej spotykany na urządzeniach tekstowych. Może to sprawić, że będą bardziej przyjazne dla użytkownika niż programy oparte na CLI, a jednocześnie będą mogły działać na urządzeniach tekstowych. Oprogramowanie oparte na Curses może również mieć lżejszy ślad zasobów i działać na szerszym zakresie systemów (zarówno pod względem sprzętu, jak i oprogramowania) niż ich odpowiedniki oparte na GUI. Obejmuje to stare maszyny sprzed 1990 r. oraz nowoczesne systemy wbudowane wykorzystujące wyświetlacze tekstowe.

Curses jest najczęściej kojarzony z systemami operacyjnymi podobnymi do Uniksa , chociaż istnieją również implementacje dla Microsoft Windows .

Zobacz też

Bibliografia

Zewnętrzne linki