Názor k článku Psaní aplikací pro terminál: ošetření vstupů od Pavel Stěhule - Těch důvodů proč nepoužít ncurses bude celá řada...

  • Článek je starý, nové názory již nelze přidávat.
  • 10. 9. 2021 10:51

    Pavel Stěhule

    Těch důvodů proč nepoužít ncurses bude celá řada - nejsou modulární, není tam podpora pro tvorbu komponent, a tudíž existují jen tři rozšiřující komponenty, občas se chovají "divně", protože dost funkcionality je implementováno tak, že se o ni stará terminál nebo se emuluje v ncurses (a vy jako autor nemáte jistotu na co se spolehnout).

    Na druhou stranu pořád je to poměrně lehká a jednoduchá knihovna, která nemá zbytečně moc vrstev. Je všude a v sobě nese brutálně velkou knowleadge base. Terminály jsou hrozná bažina, a od toho vás ncurses v 99% odizoluje. Navíc implementuje jakýs double buffering a optimalizaci tisku (tiskne se jen změněný obsah). To knihovny, které jedou nad ANSI terminálem většinou nedělají.

    20 let dělám s Cčkem, protože je Postgres v Cčku, takže nemám s Cčkem problém, a naopak mi vyhovuje, že se pohybuji plus mínus na podobné vrstvě abstrakce jako v Céčku - a u pageru chci rychlý start, a na to je ncurses ideální.

    Určitě bych nechtěl psát komplexnější aplikaci v ncurses. Návrh formulářů je peklo (z dnešního pohledu). Na druhou stranu nemusí být na škodu se s ncurses seznámit, když se zajímáte o TUI. Je to nejrozšířenější API, které žije velice těsně nad hw vrstvou, a přitom pokrývá prakticky veškerý dostupný hw (včetně sw emulací). Je to podobné jako s assamblerem - nemusíte v něm psát, ale čím víc o něm víte, tím snáze ladíte nejrůznější špeky