Ncurses leren: aan de slag met het ontwikkelen van tekstinterfaces

Openbaarmaking: Uw steun helpt de site draaiende te houden! We verdienen een verwijzingsvergoeding voor sommige van de services die we op deze pagina aanbevelen.


Ncurses is een bibliotheek die voornamelijk wordt gebruikt in op Linux en Unix gebaseerde besturingssystemen en die een op tekst gebaseerde visuele interface biedt voor een verscheidenheid aan tools. Dit betekent dat een programma dat ncurses gebruikt, een GUI-achtige interface kan weergeven in een terminalvenster dat toetsenbord- en muisnavigatie ondersteunt. Met andere woorden, het biedt functies om de cursor te verplaatsen, vensters te maken, kleuren te produceren en meer zonder rechtstreeks voor een specifiek terminaltype te schrijven.

Het is als een kloon van vloeken van System V Release 4.0 en het is vrij verspreid onder de Permissive Free Software License, vergelijkbaar met de MIT-licentie.

Korte geschiedenis van Ncurses

Ncurses heeft een geëvolueerde geschiedenis die teruggaat tot vloeken. De eerste vloekenbibliotheek werd ontwikkeld aan de Universiteit van Californië in Berkeley en gebruikte de termcap-database, die documenteerde hoe verschillende terminals worden bestuurd. Na het succes van de nieuwe bibliotheek bracht Bell Labs een verbeterde vloekenbibliotheek uit in hun System V Release 2 die terminfo-database gebruikte. Maar vanwege de licentiebeperkingen werd deze bibliotheek niet erg geaccepteerd in de BSD-gemeenschap.

Begin jaren 80 begon Pavel Curtis te werken aan een freeware-kloon van de Bell Labs-bibliotheek, pcurses genaamd, die tot 1986 werd onderhouden. Deze nieuwe bibliotheek werd verder verbeterd toen Zeyd Ben-Halim de ontwikkeling overnam en uiteindelijk werd het uitgebracht als ncurses in november 1993. In de daaropvolgende jaren hebben tientallen mensen bijgedragen aan ncurses, wat heeft geleid tot actieve ontwikkeling en verbetering. Sinds 1996 wordt ncurses onderhouden door Thomas E Dickey.

Ncurses is geport naar vele systemen en wordt gebruikt in bijna elk systeem gebaseerd op de Linux-kernel, aangezien het systeem de bibliotheek vervloekt op OpenBSD, FreeBSD en OSX, en in omgevingen zoals Cygwin en MinGW.

Waarom Ncurses?

De ncurses-bibliotheek biedt een robuust raamwerk waarmee programmeurs visueel aantrekkelijke gebruikersinterfaces in tekstmodus kunnen creëren. De functies stellen programmeurs en ontwikkelaars in staat om applicaties te maken die meerdere vensters, formulieren, menu’s en panelen bevatten die het selecteren van opdrachten, gegevensinvoer en het omgaan met overlappende en gestapelde vensters vergemakkelijken.

Enkele voordelen van ncurses zijn:

  • De mogelijkheid om gebruikers een menugestuurde interface te bieden
  • De mogelijkheid om selectievakjes, meerdere submenu’s en zelfs tekstinvoer te gebruiken voor het selecteren van opties en opdrachten
  • Een meer gebruiksvriendelijke omgeving voor gebruikers die vertrouwd zijn met grafische interfaces.

Voorbeelden van programma’s die Ncurses gebruiken

Sommige programma’s die ncurses gebruiken, zijn onder meer:

  • GNU Midnight Commander: een visuele bestandsbeheerder.
  • Aptitude: een visuele frontend voor de APT-tool voor pakketbeheer die wordt gebruikt in Debian en andere besturingssystemen.
  • Lynx: de op tekst gebaseerde internetbrowser.
  • Nvi: nieuwe vi, een herimplementatie van de klassieke vi-editor die traditioneel wordt gedistribueerd met BSD- en Unix-systemen.
  • Emacs: een andere teksteditor gevonden in veel Unix-systemen.

Middelen

De onderstaande bronnen omvatten alles onder de zon met betrekking tot ncurses: van geschiedenis tot praktische voorbeelden en toepassingen in verschillende programmeertalen zoals C, Python en PHP.

  • Officiële website: de officiële website voor ncurses met een gedetailleerd overzicht en downloadlinks.
  • A Hacker’s Guide to Ncurses: deze gids bespreekt ontwerpfilosofie, implementatiemethoden en de conventies die worden gebruikt voor codering en documentatie. Het is bedoeld voor diegenen die het pakket willen bijdragen, porteren of wijzigen.
  • Ncurses FAQ: een gedetailleerde FAQ van Thomas Dickey die verantwoordelijk is voor het onderhoud van ncurses.
  • Ncurses: een zeer gedetailleerd en grondig overzicht van ncurses, de geschiedenis, ontwikkeling en functies ervan.
  • Ncurses Programming How To: deze tutorial biedt uitgebreide informatie over het gebruik van ncurses en helpt je bij het schrijven van een eenvoudige “Hallo wereld!” programma voor complexere vormmanipulatie. Het veronderstelt geen eerdere ervaring en bevat tal van details en voorbeelden.
  • Hoe Ncurses-bibliotheek op Linux te installeren: eenvoudige en to-the-point tutorial die uitlegt hoe ncurses op verschillende Linux-distributies te installeren.
  • Game Programming in C with the ncurses Library: iets geavanceerdere tutorial die je helpt bij het maken van een eenvoudige simulatie van een bal die heen en weer stuitert over het scherm.
  • Ncurses Terminal Screen Control: volledige handleiding voor het gebruik van ncurses met PHP.
  • Ncurses Library-zelfstudie voor beginners: deze zelfstudie begeleidt u bij het maken van een eenvoudige interface voor een teksteditor.
  • Code Project: Bouw een Ncurses-gebruikersinterface met Python: nog een iets meer geavanceerde tutorial die uitlegt hoe Python en ncurses te gebruiken om een ​​gebruikersinterface te creëren.
  • Ncurses-voorbeelden: deze pagina heeft verschillende voorbeelden van eenvoudige programma’s en games die ncurses gebruiken.
  • Menu maken met Ncurses In C: een zelfstudie die zich richt op het gebruik van de programmeertaal C en de basisfuncties van ncurses om een ​​eenvoudig menu te maken.

Boeken

Verschillende boeken behandelen ncurses tot in detail en bieden nuttige referenties en voorbeelden.

  • Programmeur’s Guide to NCurses (2007) door Dan Gookin: dit boek dient als een duidelijke gids voor de ncurses-bibliotheek en bevat een volledige referentie van meer dan 175 functies waarnaar wordt verwezen en geïllustreerd met voorbeelden.
  • Guile NCurses Library (2015) door The NCurses Team: dit boek biedt een diepgaand overzicht van verschillende terminals en legt uit hoe de ncurses-bibliotheek helpt bij het vereenvoudigen van het programmeren voor karakter-cel terminals.
  • Termcap & Terminfo (O’Reilly Nutshell) (1988) van Mui, O’Reilly en Strang: hoewel het boek niet specifiek over ncurses gaat, biedt het nuttige informatie over termcap- en terminfo-databases. Terminfo wordt gebruikt door ncurses, dus dit boek is een geweldige aanvulling op de hierboven genoemde boeken, omdat het voorbeelden biedt van mogelijkheden en syntaxis voor termcap en terminfo, het schrijven en debuggen van terminalbeschrijvingen en terminalinitialisatie.

Vloek niet, gebruik Ncurses

Hoewel bijna elke applicatie, software en gadget die we tegenwoordig gebruiken een grafische gebruikersinterface heeft, heeft het ook toepassingen en voordelen als je weet hoe je met een op tekst gebaseerde gebruikersinterface moet werken. Dit is handig als u geïnteresseerd bent in het werken met externe servers of het gebruik van hardware met beperkte mogelijkheden. De bovenstaande bronnen zullen je op het juiste pad brengen om ncurses te beheersen.

Verder lezen en bronnen

We hebben meer handleidingen, tutorials en infographics met betrekking tot codering en ontwikkeling:

  • Mantis Hosting: ontdek welke webhostingbedrijven goede deals aanbieden met dit populaire bug-trackingprogramma.
  • Ubuntu Primer: leer alles over een van de meest populaire Linux-distributies.
  • Objectgeoriënteerd programmeren: leer meer over het brede scala aan objectgeoriënteerde programmeertalen – sommige zullen u misschien verrassen.

Zou internet het einde van de wereld overleven??

Heb je je ooit afgevraagd wat een grote ramp met internet zou doen? Bekijk onze infographic, Zou internet het einde van de wereld overleven? Het is mogelijk dat we allemaal vernietigd zouden worden, maar het internet zou voortleven.

Zou internet het einde van de wereld overleven?
Zou internet het einde van de wereld overleven??

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me