Lập trình giao diện console

Manh

December 13, 2015

C++

1. Giới thiệu về Ncurses

NCurses được bắt nguồn từ Curses (chữ N là viết tắt của New). Curses là một thư viện lập trình giao diện terminal cho các hệ thống tựa Unix (và tất nhiên nó được viết bằng C). Ra đời bản đầu tiên vào năm 1993, hiện nay được phát triển bởi GNU, phiên bản gần đây nhất là NCurses 6.0 (8/8/2015).

NCurses được sử dụng để viết giao diện cho các công cụ trong Linux Kernel, nên có thể nói rằng bất kỳ một hệ thống nào chạy nhân Linux, NCurses đã được sử dụng ở đây.

Ngoài ra NCurses cũng được sử dụng trong các hệ UNIX, OpenBSD, FreeBSD và OSX, hoặc trong một số môi trường của Cygwin và MinGW.

Dưới đây là một ảnh chụp màn hình (mình tìm từ Wikipedia) của ứng dụng menuconfig trong Linux Kernel, được viết bằng NCurses.

2. NCurses có gì hay không?

Đây hoàn toàn là ý kiến chủ quan của mình :v, bởi mình thấy có hứng thú giao diện console theo một cách nào đó. Mặt khác nếu bạn là một System Developer, có khả năng bạn sẽ viết chương trình cho một server linux (thường sẽ không có môi trường desktop), thì NCurses sẽ là thứ bạn cần.

NCurses cũng có các bản language binding dành cho các ngôn ngũ lập trình khác, cung cấp các chức năng điều khiển và giao tiếp với Terminal:

C#: http://sourceforge.net/projects/curses-sharp/

Free Pascal: http://www.freepascal.org/packages/ncurses.html

Go: http://logik.li/projects/gocurses

PHP/ Zend Framework: http://php.net/manual/en/ref.ncurses.php / http://devzone.zend.com/173/using-ncurses-in-php/

Node.js: https://github.com/mscdex/node-ncurses/

Java: http://sourceforge.net/projects/javacurses/

Perl: https://metacpan.org/module/Curses

Lua: http://www.t2-project.org/packages/lua-curses.html

Python: https://docs.python.org/2/library/curses.html

Ruby: http://rubygems.org/gems/ncursesw

Lisp (ANSI Common Lisp): http://common-lisp.net/project/cl-ncurses/

3. Cài đặt NCurses

Các hệ thống linux đã có sẵn Ncurses, nhưng đó sẽ là các Run-time libraries dành cho các ứng dụng. Để cài thư viện lập trình bạn có thể tìm trong hệ thống package của distribution mà bạn đang dùng. Ví dụ Ubuntu (14.04) dùng NCurses 5, package bạn cần là libncurses5-dev

Cách thứ 2 là bạn có thể download và cài đặt Ncurses 6.0 (hoặc bất cứ bản nào khác) từ link: https://www.gnu.org/software/ncurses/

Tại thư mục bạn giải nén NCurses 6, bạn gõ các lệnh sau để biên dịch từ mã nguồn và cài đặt:

./configure
make 
make install

4. Lập trình với NCurses

Việc đầu tiên bạn cần làm là hãy dành thời gian các tài liệu của NCurses đi kèm trong thư mục doc. Các tài liệu này được viết rất kỹ lưỡng và bao gồm nhiều ví dụ lập trình NCurses với C.

Ở các bài sau mình sẽ giới thiệu về lập trình NCurses sử dụng C++ API, nó dễ dàng hơn để lập trình ứng dụng hướng đối tượng, cũng như tài liệu NCurses C++ còn hạn hẹp. Mong là các bạn sẽ có thêm được một lựa chọn khi viết các ứng dụng, giao diện console hẳn là cũng có cái hay của nó.

Xem tiếp:

Lập trình giao diện console: NCurses Menu

Comments

comments

Related Posts

Hãy dừng việc sử dụng fflush(stdin) để xóa dòng nhập

Manh

March 16, 2016

C++

1. Hiện thực – Lập trình C được giảng dạy ở Việt Nam một cách rất “hỗn tạp” – Vì chỉ được coi là một môn học “nhập môn” nên giảng dạy khá “cẩu thả” – C không xứng đáng là để dạy nhập môn, hãy dạy nó chuyên sâu: Vì sao lại khiến một […]

Read More

Modern C++: Functors

Manh

March 11, 2016

C++

1. Functor là gì? Nếu như là một fan trung thành của C++ STL (Standard Template Library), bạn sẽ bắt gặp functor rất nhiều. Ví dụ trong đoạn code sau: #include <iostream> #include <vector> #include <algorithm>   void increment(int& i) { ++i; std::cout << i << ' '; }   int main() { std::vector<int> v […]

Read More