Ncurses

**ncurses** (new curses) je programátorská knižnica poskytujúca aplikačné programovacie rozhranie (API), ktoré umožňuje programátorovi vytvárať používateľské rozhranie v textovom režime spôsobom nezávislým od terminálu. Je to sada nástrojov na vývoj aplikačného softvéru podobného „GUI“, ktorý beží v emulátore terminálu. Tiež optimalizuje zmeny obrazovky tak, aby sa znížila latencia pri používaní prostredníctvom vzdialeného shellu.

Ncurses je možné použiť v rôznych programovacích jazykoch, vrátane Ada, Python, Gambas, Ruby, PHP, JavaScript, a Perl.

## História
Od novej verzie je ncurses slobodný softvér emulácii curses knižnicu zo System V Release 4.0 (SVr4), ktorý bol sám o sebe vylepšením voči pozastavenému vývoju curses knižnice z 4.4 BSD. Štandard XSI Curses vydaný spoločnosťou X/Open je výslovne a úzko modelovaný v UNIX System V.

### curses
Prvá knižnica curses bola vyvinutá na Kalifornskej univerzite v Berkeley pre operačný systém BSD okolo roku 1980 na podporu textovej adventúry Rogue. Hra pôvodne používala knižnicu termcap, ktorá sa používala v iných programoch, napríklad v editore vi.

Úspech knižnice curses pre BSD prinútil Bell Labs vydať vylepšenú knižnicu curses v ich systémoch Unix System V verzie 2. Táto knižnica bola výkonnejšia a namiesto použitia termcap použila terminfo. Avšak kvôli politike AT&T týkajúcej sa distribúcie zdrojového kódu nemala táto vylepšená knižnica curses v komunite BSD veľké prijatie.

### pcurses
Okolo roku 1982 začal Pavel Curtis pracovať na freewarovom klone curses knižnice Bell Labs s názvom **pcurses**, ktorá do roku 1986 bola spravovaná viacerými ľuďmi.

### ncurses
Knižnica pcurses sa ďalej vylepšovala, keď sa jej vývoja koncom roku 1991 ujal Zeyd Ben-Halim. Nová knižnica bola vydaná ako ncurses v novembri 1993, pričom verzia 1.8.1 bola prvým hlavným vydaním. Ďalšie prácu, prostredníctvom verzie 1.8.8 (M1995), viedol Eric S. Raymond, ktorý pridal do knižnice formuláre a menu napísané Juergenom Pfeiferom. Od roku 1996 ju udržiava Thomas E. Dickey.

Väčšina volaní ncurses sa dá ľahko preniesť na staré curses knižnice. Implementácie knižnice curses zo System V môžu podporovať programy curses BSD iba s novou kompiláciou. Niekoľko oblastí je však problematických, napríklad manipulácia s veľkosťou terminálu, pretože staré curses nemajú na to žiaden ekvivalent.

## Terminálová databáza
Ncurses môžu používať buď terminfo (s rozšíriteľnými údajmi), alebo termcap. Ostatné implementácie curses používajú všeobecne terminfo; menšina používa termcap. Máloktorá používa oboje (mytinfo bola staršia výnimka).

## Licencia
Ncurses je súčasťou projektu GNU. Je to jeden z mála GNU projektov, ktorý sa nedistribuuje pod GNU GPL alebo LGPL, ale distribuuje sa na základe permissive free software licence, podobnej licencii MIT. Je to dôsledkom dohody s FSF v čase, keď vývojári udeľovali svoje autorské práva.

Keď bola uzavretá dohoda o postúpení práv na FSF, existovala klauzula, ktorá uvádzala:*Nadácia sľubuje, že akákoľvek distribúcia Balíka alebo akejkoľvek práce „založenej na Balíku“, ktorá sa uskutoční pod kontrolou Nadácie alebo jej zástupcov alebo nadobúdateľov, sa uskutoční za podmienok, ktoré výslovne a trvalo umožňujú každému, kto vlastní kópiu diela, na ktoré sa vzťahujú podmienky, a s presným oboznámením s týmito podmienkami, za účelom ich redistribúcie rozmnoženiny diela komukoľvek za rovnakých podmienok.*Podľa správcu Thomasa E. Dickeyho to vylučuje zmenu licencie na GPL v akejkoľvek verzii, pretože by to obmedzovalo programy, ktoré sa budú s knižnicami linkovať.

## Programy využívajúce ncurses
Existujú stovky programov využívajúcich ncurses. Niektoré, napríklad GNU Screen a w3m, využívajú iba rozhranie termcap a správu obrazovky vykonávajú sami. Ostatné, napríklad GNU Midnight Commander a YaST, využívajú programovacie rozhranie curses.

## Referencie

## Pozri aj
* conio.h – C hlavičkový súbor používaný v kompilátoroch pre MS-DOS na vytváranie textových používateľských rozhraní
* dialóg (softvér)
* S-Lang (programovacia knižnica)
* SMG$ – Knižnica na správu obrazoviek dostupná v OpenVMS

## Externé odkazy
* Oficiálna stránka
* Psaní aplikací pro terminál: jak funguje knihovna ncurses – úvod série článkov Pavla Stěhuleho na serveri Root.cz

Kategória:Programové knižnice
Kategória:Používateľské rozhranie
Kategória:Softvér pod licenciou MIT
Kategória:GNU