curses (biblioteca de programação) - curses (programming library)

maldições
Termapi.svg
Fmli lu.PNG
Comando Live Upgrade (lu), construído sobre FMLI que usa Curses
Desenvolvedor (s) Ken Arnold
Escrito em C
Modelo Kit de ferramentas de widget

curses é uma biblioteca de controle de terminal para sistemas do tipo Unix, permitindo a construção de aplicativos de interface de usuário de texto (TUI).

O nome é um trocadilho com o termo " otimização do cursor ". É uma biblioteca de funções que gerencia a exibição de um aplicativo em terminais de células de caracteres (por exemplo, VT100 ).

Visão geral

Usando curses, os programadores são capazes de escrever aplicativos baseados em texto sem escrever diretamente para qualquer tipo de terminal específico. A biblioteca de curses no sistema em execução envia os caracteres de controle corretos com base no tipo de terminal. Ele fornece uma abstração de uma ou mais janelas que são mapeadas na tela do terminal. Cada janela é representada por uma matriz de caracteres. O programador configura a aparência desejada de cada janela, então diz ao pacote curses para atualizar a tela. A biblioteca determina um conjunto mínimo de alterações necessárias para atualizar a tela e, em seguida, as executa usando os recursos específicos do terminal e as sequências de controle.

Resumindo, isso significa que o programador simplesmente cria uma matriz de caracteres de como a tela deve ficar e permite que os curses cuidem do trabalho.

A API curses é descrita em vários lugares. A maioria das implementações de curses usa um banco de dados que pode descrever as capacidades de milhares de terminais diferentes. Existem algumas implementações, como PDCurses, que usam drivers de dispositivo especializados em vez de um banco de dados de terminal. A maioria das implementações usa terminfo ; alguns usam termcap . O Curses tem a vantagem de ser portável de volta para terminais de células de caracteres e simplicidade. Para um aplicativo que não requer gráficos com mapeamento de bits ou fontes múltiplas, uma implementação de interface usando curses geralmente será muito mais simples e rápida do que usando um kit de ferramentas X.

História

A primeira biblioteca de curses foi escrita por Ken Arnold e originalmente lançada com BSD UNIX, onde foi usada para vários jogos, principalmente Rogue . Algumas melhorias foram feitas na biblioteca BSD na década de 1990 como curses "4.4BSD", por exemplo, para fornecer mais de um tipo de destaque de vídeo. No entanto, eles não são amplamente usados.

O nome "maldições" é um trocadilho com a otimização do cursor . Às vezes, é afirmado incorretamente que curses foi usado pelo editor vi . Na verdade, o código em curses que otimiza a movimentação do cursor de um lugar para outro na tela foi emprestado do vi, que era anterior aos curses.

De acordo com Goodheart, a implementação original de curses de Ken Arnold começou reutilizando funções da biblioteca termcap , e adicionando a isso. Alguns anos mais tarde, Mary Ann Horton , que tinha mantido os vi e termcap fontes em Berkeley , foi para a AT & T Corporation e fez uma versão diferente usando terminfo , que se tornou parte da UNIX System III e UNIX System V . Devido às restrições de licenciamento deste último, as versões BSD e AT&T da biblioteca foram desenvolvidas de forma independente. Além da melhoria do termcap / terminfo, outras melhorias foram feitas na versão AT&T:

destaque do vídeo (negrito, sublinhado)
A versão BSD suportava apenas destaque .
desenho de linha
A versão BSD deu pouco suporte aqui.
cores
Isso não era compatível com a versão BSD.

O desenvolvimento de curses da AT&T parece ter parado em meados da década de 1990, quando o X / Open Curses foi definido. No entanto, o desenvolvimento de ncurses e PDCurses continua. Uma versão dos curses BSD continua a ser mantida no sistema operacional NetBSD (amplo suporte a caracteres, migração de termcap para terminfo, etc.).

pcurses e PDCurses

Diferentes linhas de desenvolvimento começaram imitando os curses da AT&T, a partir de pelo menos três implementações: pcurses de Pavel Curtis (iniciado em 1982), PDCurses (curses de domínio público) de Mark Hessling para apoiar seu editor THE (iniciado em 1987), bem como Rexx / Curses e curses para PC (versão 1.4 e anteriores por Bjorn Larsson baseado na biblioteca de Pavel Curtis antes de 1990.)

ncurses

ncurses (new curses) "originou-se como pcurses  ... e foi reemitido como ncurses 1.8.1 no final de 1993". ncurses é a implementação mais conhecida de curses e motivou o desenvolvimento de outras variações, como curses BSD no projeto NetBSD .

Portabilidade

Embora a biblioteca ncurses tenha sido desenvolvida inicialmente no Linux, OpenBSD, FreeBSD e NetBSD, ela foi portada para muitos outros sistemas ANSI / POSIX UNIX, principalmente por Thomas Dickey . PDCurses, embora não seja idêntico a ncurses, usa as mesmas chamadas de função e opera da mesma maneira que ncurses, exceto que PDCurses tem como alvo dispositivos diferentes, por exemplo, janelas de console para DOS , Win32 , OS / 2 , bem como X11 . Transferir entre os dois não é difícil. Por exemplo, o jogo ADOM roguelike foi escrito para Linux e ncurses, posteriormente portado para DOS e PDCurses.

Capturas de tela

Software baseado em maldições

Software baseado em curses é aquele cuja interface de usuário é implementada por meio da biblioteca de curses ou uma biblioteca compatível (como ncurses ).

O Curses foi projetado para facilitar a funcionalidade semelhante à GUI em um dispositivo somente texto, como um PC executando no modo console, um terminal ANSI de hardware, um cliente Telnet ou SSH ou similar.

Os programas baseados em maldições geralmente têm uma interface de usuário que se assemelha a uma interface gráfica de usuário tradicional, incluindo ' widgets ' como caixas de texto e listas roláveis, em vez da interface de linha de comando (CLI) mais comumente encontrada em dispositivos somente texto. Isso pode torná-los mais amigáveis ​​ao usuário do que um programa baseado em CLI, embora ainda seja capaz de rodar em dispositivos somente texto. O software baseado em curses também pode ocupar menos recursos e operar em uma ampla variedade de sistemas (tanto em termos de hardware quanto de software) do que seus equivalentes baseados em GUI. Isso inclui máquinas anteriores a 1990, juntamente com sistemas embarcados modernos usando telas somente de texto.

Curses é mais comumente associado a sistemas operacionais do tipo Unix, embora também existam implementações para Microsoft Windows .

Veja também

Referências

links externos