Từ điển IT - P1: UI, GUI, CLI và API

Nếu bạn là một sinh viên ngành IT chưa có nhiều kinh nghiệm, hay là một lập trình viên mới bước chân vào ngành, bạn “xỉu ngang” khi nghe các anh trong ngành trao đổi, khi đọc tài liệu kỹ thuật? Hoặc đơn giản bạn muốn hiểu hơn về các khái niệm trong IT?… Seri này dành cho bạn! Đây là loạt bài viết ngắn mình sẽ giải thích các thuật ngữ một cách gần gũi, dễ hiểu, thông qua các ví dụ thực tiễn và trường hợp sử dụng cụ thể.

Trong bài viết lần này mình sẽ nói về UI, GUI, CLI và API. Có thể bạn nhìn thấy từ UI là một từ hết sức phổ biến rồi, cần gì phải rặn ra content để viết shj.t post nữa 😀. Nhưng ngược lại, mình dám khẳng định rất nhiều người vẫn không thực sự hiểu đúng ý nghĩa của các từ trên. Nếu giờ bạn cũng cảm thấy nghi ngờ bản thân thì cùng đọc tiếp nhé, Let’s go!

𝗨𝗜

UI – User Interface, tiếng Việt thường gọi là "𝑔𝑖𝑎𝑜 𝑑𝑖𝑒̣̂𝑛 𝑛𝑔𝑢̛𝑜̛̀𝑖 𝑑𝑢̀𝑛𝑔", chắc chắn đây là một từ xuất hiện hằng ngày đối với dân IT, nhất là các bạn làm front-end. Theo nhiều người vẫn nghĩ, “giao diện người dùng” là các trang web, ứng dụng mobile, ứng dụng PC… nhưng rất tiếc, điều này chưa hoàn toàn chính xác. Thực tế, UI dùng để nói đến tất cả mọi thứ mà một hệ thống cung cấp ra bên ngoài giúp cho người dùng có thể tương tác và giao tiếp với hệ thống đó (ở đây chúng ta hiểu luôn là máy tính). Do vậy, UI có thể được tích hợp vào bất kì đâu, có thể là một cái nút trên case máy tính, hay con chuột để bạn click, bàn phím, điều khiển, giao diện trên màn hình… tất cả đều được coi là “giao diện người dùng”.

𝗚𝗨𝗜

GUI – Graphical User Interface, hay dịch ra là “𝑔𝑖𝑎𝑜 𝑑𝑖𝑒̣̂𝑛 đ𝑜̂̀ ℎ𝑜̣𝑎 𝑛𝑔𝑢̛𝑜̛̀𝑖 𝑑𝑢̀𝑛𝑔”. Nghe cái tên này thì có vẻ dễ hiểu hơn rồi ha. Đây là một dạng UI, nhưng GUI dùng để chỉ các loại giao diện người dùng được xây dựng bằng cách kết hợp các thành phần ĐỒ HỌA MÁY TÍNH như khối màu sắc, icon, text, hình ảnh, v.v… Các trang web, ứng dụng bạn sử dụng hằng ngày đều thuộc nhóm này. Ưu điểm của giao diện đồ họa là sự thân thiện với người dùng, dễ thao tác, có thể nhanh chóng tiếp cận. Chính vì sức mạnh này khiến nó trở thành một cuộc cách mạng của máy tính và xuất hiện trên mọi thiết bị công nghệ bây giờ. Ngày xưa chỉ có máy tính có giao diện đồ họa, rồi điện thoại ra đời, bây giờ ngay cả nồi cơm nhà mình cũng có một cái giao diện đồ họa đơn giản 🤣.

Trong thực tế, từ “GUI” lại được ít sử dụng hơn hoặc được mọi người hiểu thành từ “UI” luôn. Mình không hề lên án việc này, miễn là nó thuận tiện và mọi người hiểu ngôn ngữ của nhau, vì “nước trong thì không có cá - technical quá thì không ai chơi” 🤡. Tuy nhiên khái niệm là khái niệm, chúng ta vẫn phải phân biệt bởi vì chúng ta là người học kỹ thuật, hiểu sai ngôn ngữ kỹ thuật sẽ khiến bạn gặp khó khăn trong quá trình làm việc, nghiên cứu và hiểu các khái niệm khác. Bản thân mình cũng đã từng gặp trường hợp này, đó là khi còn học đại học, nghe thầy giảng về kiến trúc máy tính, mình đã thực sự lú khi thầy hỏi: “em hãy kể tên các giao diện người dùng của máy tính thời nay”, tất nhiên mình chỉ trả lời là cái màn hình đang hiển thị giao diện Windows 7. Trước đó mình thực sự đã nghĩ “giao diện” chỉ là những thứ hiển thị trên màn hình mà thôi 😀.

Nhưng bạn có thắc mắc khi chưa có giao diện đồ họa GUI thì trước kia con người thao tác với máy tính như nào không? Vào những thập niên 80 thế kỷ trước, Microsoft đã ra đời một hệ điều hành mang tên “𝗠𝗦-𝗗𝗢𝗦”, một cái tên chắc cũng nhiều người nghe đến 😼 Nhưng liệu bạn có biết, hệ điều hành này không hề có giao diện đồ họa! Cùng đọc tiếp để tìm hiểu nhé 🤟

𝗖𝗟𝗜

CLI – Command Line Interface, hay “𝑔𝑖𝑎𝑜 𝑑𝑖𝑒̣̂𝑛 𝑑𝑜̀𝑛𝑔 𝑙𝑒̣̂𝑛ℎ. Có thể nói, đây là một trong các loại giao diện thuần túy nhất, nguyên thủy nhất còn phổ biến mà máy tính cung cấp cho người dùng (phổ biến ở đây nó cũng chỉ là một vài % thôi nhé 😃). Đã bao giờ bạn xem phim và nhìn thấy mấy ông hacker gõ gõ trên một cái màn hình đen xì chưa? Chính nó, CLI đó!

Giao diện dòng lệnh cho phép người dùng thao tác với máy tính qua các câu lệnh ngắn gọn, các từ khóa, logic được quy định sẵn, buộc người dùng phải “học” cách sử dụng của từng lệnh. Khác với giao diện đồ họa, CLI không có các hình minh họa đẹp mắt và chỉ dẫn dễ hiểu, nó chỉ có một con trỏ nhấp nháy ở đầu dòng và việc của bạn là nhập các câu lệnh rồi nhấn Enter, máy tính sẽ phân tích và chuyển đổi câu lệnh bạn nhập rồi thực thi hành động tương ứng.

Ví dụ trên giao diện đồ họa, bạn muốn xem danh sách các tập tin, thì bạn chỉ cần click double vào icon folder đó, một danh sách files sẽ hiển thị ra kèm với các icon định dạng dễ hiểu. Còn ở giao diện dòng lệnh, bạn chỉ cần gõ “ls -la”, máy tính cũng sẽ hiển thị ra cho bạn một danh sách tệp tin, nhưng chỉ đơn giản là 1 list các dòng chữ trắng trên nền đen thôi =)))

Dễ hiểu lý do tại sao GUI lại được sử dụng rộng rãi nhỉ 😀

Vậy tại sao CLI vẫn tồn tại? Mình sẽ nói sơ qua một vài lý do chính sau đây:

Không phải hệ điều hành nào cũng hỗ trợ GUI: Không như Windows hay MacOS, một số hệ điều hành không hỗ trợ GUI. Chính MS-DOS mình nói bên trên sử dụng CLI như một giao diện chính để người dùng sử dụng, hoặc một số hệ điều hành thuộc Linux sẽ lược bỏ đi phần GUI để làm máy chủ

Không phải phần mềm nào cũng có GUI: một số phần mềm hay chương trình sẽ không có GUI vì đơn giản các Lập trình viên không muốn hoặc không có thời gian để làm giao diện. Đối với việc phát triển phần mềm, các chương trình sử dụng giao diện dòng lệnh rất phổ biến nên lập trình viên cũng quen thuộc với chúng hơn là phát triển thêm một bộ giao diện đồ họa.

CLI sẽ nhanh hơn rất nhiều nếu bạn đã quen với các câu lệnh, tránh việc phải mất nhiều thao tác như trên GUI

̶C̶̶L̶̶I̶ ̶k̶̶h̶̶i̶̶ế̶̶n̶ ̶b̶̶ạ̶̶n̶ ̶n̶̶g̶̶ầ̶̶u̶ ̶l̶̶ò̶̶i̶ ̶h̶̶ơ̶̶n̶ ̶t̶̶r̶̶o̶̶n̶̶g̶ ̶q̶̶u̶̶á̶̶n̶ ̶C̶̶a̶̶f̶̶e̶

𝗔𝗣𝗜

API - Application Programming Interface hay “giao diện lập trình ứng dụng”. Lúc mới học lập trình, hầu như ai cũng lơ tơ mơ khi đọc khái niệm “API” trên google vì nó là một khái niệm trừu tượng. Nhưng nếu anh em nào đọc qua phần UI, GUI, CLI đến đây thì cũng sẽ hiểu sương sương API rồi đúng không 😎

API là một loại giao diện để giao tiếp, thao tác giữa các chương trình, ứng dụng phần mềm. Nếu như UI là giữa máy tính với người dùng, GUI cụ thể hơn là phần mềm đồ họa với người dùng, thì API lại là giao diện giao tiếp giữa các chương trình phần mềm, mình nhấn mạnh là giữa các chương trình phần mềm với nhau nhé. Hiểu đơn giản, chương trình A muốn sử dụng một chức năng của chương trình B, khi đó chương trình B phải mở ra một bộ giao diện để cho chương trình A tương tác, bộ giao diện này được gọi là API. Để dễ hình dung hơn chúng ta cùng đến với ví dụ nhé:

Chrome hay app desktop nói chung là một phần mềm, một chương trình chạy trên máy tính, không hơn không kém. Vì là một phần mềm bên thứ 3 nên nó chỉ có dữ liệu và logic, vậy tại sao chúng ta nghe nhạc được trên Chrome? Đó là vì hệ điều hành máy tính đã cung cấp một bộ giao diện (API) để cho Chrome sử dụng, các API này có thể nói đến như điều khiển loa, điều khiển Webcam, bộ định vị GPS và nhiều tính năng khác nữa. Khi muốn phát một bài hát, chương trình của Chrome sẽ sử dụng API của hệ điều hành và “đưa” cho API đó dữ liệu của bài hát, khi đó hệ điều hành sẽ có nhiệm vụ phát âm thanh theo đúng dữ liệu Chrome cung cấp, ngược lại phía Chrome sẽ không cần quan tâm hệ điều hành sẽ làm những gì, nó chỉ cần làm theo đúng những gì API quy ước.

Thêm một ví dụ khác về API để hiểu hơn nhé, lần này sẽ là 2 chương trình trên 2 máy chủ khác nhau:

Hệ thống GHTK và Shopee đều là những hệ thống phần mềm, để hai bên có thể hợp tác làm ăn với nhau, bên GHTK mở ra một một bộ giao diện bao gồm các chức năng: Tạo vận đơn, báo giá vận đơn,... cho Shopee sử dụng. Từ đó, mỗi khi bạn click mua hàng ở Shopee, nó sẽ sử dụng bộ giao diện mà GHTK cung cấp để tính toán phí vận chuyển và tạo một vận đơn từ sản phẩm bạn vừa mua lên hệ thống của GHTK. Để sử dụng được, GHTK yêu cầu Shopee phải gửi đi đầy đủ các thông số mà GHTK cần, phải đúng định dạng, đúng kiểu dữ liệu mà GHTK quy định

=> Ta nói: “Shopee đang sử dụng API của GHTK” hay “GHTK đang cung cấp API cho Shopee sử dụng”

Thực tế, giữa 2 hệ thống phần mềm nằm ở 2 máy chủ khác nhau như ví dụ trên sẽ sử dụng API bằng các gói tin gửi qua mạng internet, theo một giao thức (protocol) nào đó, có thể là HTTP, WebSocket, gRPC… giao thức là thứ sẽ giúp 2 hệ thống cùng tuân theo tiêu một chuẩn giao tiếp và hiểu được thông điệp của nhau. Mình sẽ có bài viết riêng về cách hoạt động của các giao thức trên.

Tada! Và đó chính là API, là cách các chương trình máy tính giao tiếp với nhau đó.

Qua các ví dụ trên chắc các bạn cũng đã hiểu về API rồi ha.

Sau bài viết này, chúng ta nắm được 4 từ: 𝗨𝗜, 𝗚𝗨𝗜, 𝗖𝗟𝗜 𝘃𝗮̀ 𝗔𝗣𝗜, đã hiểu được một số các loại Interface phổ biến để tương tác giữa con người với chương trình máy tính và giữa các chương trình máy tính với nhau. Ở loạt bài sau mình sẽ tiếp tục trình bày về Client-Server và các khái niệm thú vị khác trong CNTT, tiếp tục theo dõi Techomies nhé!


Bài viết gốc

Bình luận: