Forbandelser

Den aktuelle version af siden er endnu ikke blevet gennemgået af erfarne bidragydere og kan afvige væsentligt fra den version , der blev gennemgået den 24. marts 2021; checks kræver 5 redigeringer .

Curses  er et terminaladministrationsbibliotek til Unix - lignende operativsystemer, der giver dig mulighed for at oprette applikationer med en tekstbrugergrænseflade .

Navnet på biblioteket kommer fra det engelske udtryk "cursor optimization" ( cursor optimization ) [1] , og betyder også "curses". Biblioteket indeholder funktioner til at arbejde med visning af en tekstterminal (for eksempel VT100 ) [2] .

Oversigt

Curses API er beskrevet i flere forskellige kilder [3] . De fleste implementeringer af forbandelser bruger en database , der beskriver mulighederne for tusindvis af forskellige terminaler. Nogle implementeringer (såsom PDCurses) brug specialiserede enhedsdrivere i stedet for . De fleste implementeringer bruger terminfo ; nogle bruger termcap . For programmer, der ikke kræver grafisk output eller flere skrifttyper, vil implementering af grænsefladen med forbandelser være meget nemmere og hurtigere end at bruge X Window System .

Ved hjælp af forbandelser kan programmører skabe tekstbaserede applikationer, der er bærbare mellem forskellige typer terminaler – biblioteket sørger selv for, hvilke kontroltegn der skal bruges til hver specifik terminal. Curses giver mulighed for at vise flere vinduer på en enkelt terminal. Hvert vindue er repræsenteret af en matrix af tegn. Programmøren indstiller placeringen, størrelsen og indholdet af hvert vindue og opdaterer skærmen. Biblioteket bestemmer minimumssættet af ændringer for at opdatere skærmen og anvender dem baseret på terminalens muligheder.

Historie

Den første implementering af forbandelser blev skrevet af Ken Arnold og sendt med BSD UNIX, hvor den blev brugt til adskillige spil, den mest berømte er Rogue [4] [5] [6] .

Det hævdes nogle gange fejlagtigt, at forbandelser blev brugt i vi -teksteditoren . Faktisk blev koden, der optimerer markørens bevægelse, lånt af forbandelser fra vi , som udkom tidligere [5] .

Ifølge Goodhart begyndte Ken Arnolds oprindelige implementering med at udvide funktionerne i termcap-biblioteket [7] . Et par år senere flyttede Mark Horton , som havde arbejdet på at forbedre vi- og termcap -koden hos Berkeley , til AT&T og skabte en anden version baseret på terminfo , der blev en del af UNIX System III og UNIX System V. På grund af begrænsningerne af sidstnævntes licens blev BSD- og AT&T-versionerne udviklet uafhængigt. Ud over termcap/terminfo-forbedringer tilføjede AT&T-versionen:

tekstvalg (fed, understreget) BSD-versionen understøttede kun den standout -allokeringstilstand . stregtegning BSD-versionen havde svag understøttelse af denne funktion. farver BSD-versionen gav ikke en sådan mulighed.

Udviklingen af ​​AT&T-forbandelser gik i stå i midten af ​​1990'erne, da X/Open Curses blev annonceret . [8] Udviklingen af ​​ncurses og PDCurses fortsætter dog. BSD-versionen af ​​forbandelser understøttes fortsat på NetBSD -operativsystemet (understøttelse af bred tegn, migrering fra termcap til terminfo osv.).

pcurses og PDCurses

Som minimum kan følgende implementeringer betragtes som en udvikling af AT&T-forbandelser: pcurses af Pavel Curtis (1982), PDCurses (Public Domain curses) af Mark Hessling til støtte for hans THE -redaktør (1987), samt Rexx/Curses [9 ] og pc-forbandelser (version 1.4 af Bjørn Larsson) er baseret på Curtis-biblioteket [10] . [11]

ncurses

ncurses (nye forbandelser) "var oprindeligt pcurses ... og blev genudgivet som ncurses 1.8.1 i slutningen af ​​1993" [12] . ncurses er den mest kendte implementering af forbandelser og har motiveret yderligere udvikling af andre modifikationer såsom BSD-forbandelser i NetBSD -projektet . [13] [14]

Portabilitet

Selvom ncurses-biblioteket oprindeligt blev udviklet til Linux, OpenBSD , FreeBSD og NetBSD, er det blevet overført til mange andre ANSI/POSIX UNIX-systemer, for det meste af Thomas Dickey . PDCurses (ikke at forveksle med ncurses) bruger de samme kald som ncurses, bortset fra at PDCurses målretter mod forskellige enheder, dvs. DOS , Win32 , OS/2 og X11 konsolvinduer . Porting mellem disse to versioner er ikke svært. For eksempel blev den roguelike ADOM skrevet til Linux og ncurses, og blev senere porteret til DOS og PDCurses [15] [16] .

Skærmbilleder

Nedenfor er en typisk brug af forbandelser (i et terminalvindue, der understøtter farver)

Software, der bruger forbandelser

Curses gør det nemt at skabe GUI-lignende funktionalitet på en tekstterminal, såsom pc-teksttilstand, ANSI-hardwareterminal, Telnet eller SSH -klient .

Programmer, der bruger forbandelser, har ofte en brugergrænseflade, der ligner en traditionel grafisk brugergrænseflade , inklusive widgets såsom rullemenuer og rullelister, i stedet for kommandolinjegrænsefladen (CLI), der almindeligvis bruges på tekstterminaler. Derudover er programmer, der bruger forbandelser, mindre ressourcekrævende end deres grafiske modstykker og mere bærbare mellem systemer (især meget gamle, før 1990).

Curses bruges i implementeringen af ​​FMLI-sproget, som blev brugt til at skabe en venlig FACE-brugergrænseflade i SVR4-systemer, der giver grundlæggende funktionalitet til administration. Curses-baseret FMLI blev senere brugt på Solaris -systemet til at levere en grænseflade på højt niveau til Live Upgrade-kommandoerne.

Curses er oftest forbundet med Unix-lignende operativsystemer, selvom implementeringer til Microsoft Windows også findes .

Se også

Noter

  1. Thomas E. Dickey. NCURSES - Ofte stillede spørgsmål . Hentet 25. februar 2015. Arkiveret fra originalen 21. august 2018.
  2. Thomas E. Dickey. NCURSES - Ofte stillede spørgsmål . Hentet 25. februar 2015. Arkiveret fra originalen 21. august 2018.
  3. John Strang, Programmering med forbandelser , O'Reilly, ISBN 0-937175-02-1
  4. Peter H. Salus. Unix' historie handler lige så meget om samarbejde, som det handler om teknologi . Byte (oktober 1994). Hentet 25. februar 2015. Arkiveret fra originalen 25. februar 2015.
  5. 1 2 Arnold, KCRC Skærmopdatering og markørbevægelsesoptimering: En bibliotekspakke  (eng.)  : journal. - University of California, Berkeley, 1977.
  6. Kenneth CRC Arnold. Skærmopdatering og markørbevægelsesoptimering: En bibliotekspakke (december 1992). Dato for adgang: 25. februar 2015. Arkiveret fra originalen 28. september 2007.
  7. Godhjerte, Bernie. UNIX-forbandelser forklaret  (neopr.) . - Prentice Hall , 1991. - S. xi. — ISBN 0-13-931957-3 .
  8. X/Open Curses, Issue 4 Version 2, Reference Pages . Den åbne gruppe (1997). Hentet 25. december 2016. Arkiveret fra originalen 26. december 2016.
  9. Mark Hessling. Rexx/Forbandelser . SourceForge -projektet rexxcurses (2008). Dato for adgang: 10. februar 2014. Arkiveret fra originalen 15. december 2013.
  10. F. Ellermann. CURSES.NEW i pccurses.zip (26. juli 1993). - "baseret på pc-forbandelser (version 1.4) skrevet af Bjørn Larsson". Hentet: 10. februar 2014.  (ikke tilgængeligt link)
  11. Bjørn Larsson. README.NOW i pccurs14.zip (downlink) (14. januar 1990). - "PCcurses er en port/omskrivning af Pavel Curtis' [pakke]". Hentet 10. februar 2014. Arkiveret fra originalen 23. februar 2014. 
  12. Thomas E. Dickey. NCURSES - New Curses (december 1996). Hentet 5. marts 2013. Arkiveret fra originalen 8. maj 2019.
  13. NetBSD-projekt. CURSES_SCREEN(3), NetBSD Library Functions Manual (februar 2004). Hentet 25. februar 2015. Arkiveret fra originalen 25. februar 2015.
  14. Ruibiao Qiu. NetBSD-SoC: Wide Character Support i NetBSD curses Library (september 2005). Hentet 25. februar 2015. Arkiveret fra originalen 13. marts 2015.
  15. Thomas Biskup. ADOM - The Past (utilgængeligt link) (1994-2007). Hentet 16. november 2007. Arkiveret fra originalen 10. oktober 2007. 
  16. Thomas Biskup (15. marts 1996). " Nyt spil: ADOM (kun MS-DOS, MS-Windows og Linux) ". rec.games.roguelike.announce . (Google Grupper) . Hentet 16. november 2007. Arkiveret 4. juni 2011 på Wayback Machine

Links