Phạm Minh Hiếu
Phạm Minh Hiếu
UCC Gen2 RnD member.
Văn Quốc An
Văn Quốc An
UCC Gen2 RnD member.

So sánh GUI và CLI

So sánh GUI và CLI

Hệ điều hành là thứ đem lại sự tương tác tốt hơn giữa người dùng và thiết bị. Hệ điều hành cung cấp 2 giao diện chính giúp người dùng tương tác, đó là giao diện đồ họa (GUI)giao diện dòng lệnh (CLI). Người sử dụng giao diện đồ họa tương tác với thiết bị hoặc phần mềm qua các biểu tượng đồ họa trong khi giao diện dòng lệnh là được biểu thị bằng văn bản, ở đó người dùng nhập các câu lệnh để điều hướng và vận hành máy tính hoặc phần mềm.

Trong bài viết này, UCC sẽ giúp bạn giải đáp các thắc mắc về khái niệm của giao diện đồ họa (GUI) và giao diện dòng lệnh (CLI), chức năng hoạt động của mỗi cái, cách chúng hoạt động khác nhau như thế nào và khi nào nên sử dụng hai giao diện đó

1. So sánh tổng quan

  Giao diện đồ họa (Graphical User Interface) Giao diện dòng lệnh(Command Line Interface)
Phương thức hoạt động Giao diện dựa trên đồ họa, giúp người dùng giao tiếp với máy tính thông qua đồ họa trức quan như biểu tượng, nút,… Giao diện dựa trên văn bản ,giúp người dùng giao tiếp với may thông qua nhập lệnh văn bản, code, script
Yêu cầu thiết bị GUI yêu cầu người dùng có chuột và bàn phím CLI chỉ yêu cầu người dùng có bàn phím
Độ phức tạp Dễ dàng sử dụng vì có giao diện đồ họa và không cần ghi nhớ câu lệnh Khó sử dụng vì cần ghi nhớ câu lệnh
Đối tượng hướng đến Người dùng máy tính bình thường Lập trình viên,chuyên viên quản trị mạng, cơ sở dữ liệu,…
Tốc độ làm việc Giao diện đồ hoa thường sử dụng chuột để thao tác nên thường chậm hơn Giao diện dòng lệnh sử dụng bàn phím nên thao tác làm việc nhanh hơn

1.1 Khái niệm giao diện đồ họa (GUI)

Giao diện đồ họa (Graphical User Interface hay GUI) là một dạng giao diện cho phép người dùng tương tác với máy tính hoặc thiết bị điện tử thông qua các hình ảnh, biểu tượng đồ họa hoặc chỉ báo âm thanh thay vì giao diện ngôn ngữ, câu lệnh hoặc điều hướng văn bản. Được phát triển vào những năm 70 của thế kỷ trước và triển khai thương mại hóa trên máy tính Macintosh của Apple (Hệ điều hành MacOS) và hệ điểu hành Windows với mục đích giải quyết vấn đề về hiệu quả sử dụng cho người dùng thông thường. Giao diện đồ họa trở thành chuẩn mực trong thiết kế lấy người dùng làm trung tâm của lập trình ứng dụng, cung cấp cho người dùng khả năng điều hành máy tính thông qua hình ảnh đồ họa như nút bấm, thành trượt, cửa sổ và con trỏ chuột.

1.2 Khái niệm giao diện dòng lệnh (CLI)

Giao diện dòng lệnh (Command Line Interface hay CLI) là giao diện được thiết kế để người sử dụng có thể ra mệnh lệnh cho máy tính thực hiện chỉ bằng bàn phim thông qua các câu lệnh. Giao diện này cho phép người dùng thao tác viết các lệnh trong cửa sổ console hoặc terminal để có thể giao tiếp với hệ thống máy tính. Giao diện dòng lệnh có độ chính xác cực cao và nghiêm ngặt vì là do tự bản thân người dùng sử dụng bàn phím để gõ ra, người dùng bắt buộc phải gõ lệnh hoặc tự tạo lệnh cho mình để thực hiện thành công một tác vụ nào đó. Chương trình với giao diện dòng lệnh thường dễ dàng tự động hóa hơn. Một số hệ thống phần mềm triển khai thực hiện giao diện dòng lệnh để điều khiển và vận hành, bao gồm lập trình môi trường và các chương trình tiện ích.

2. Chức năng hoạt động

Với những hệ thống hoạt động song song với nhau trong một hệ điều hành, sự liên kết của những phần mềm được liên kết một cách chặt chẽ. Tuy vậy, cái nhìn đầu tiên của đại đa số những người dùng hiện nay là con chuột, emoji và những ứng dụng đồ họa cao cấp. So với thế kỷ trước đây, chất lượng của LED - thứ tạo nên màn hình của chúng ta hiện nay - đã vượt lên rất nhiều lần nhằm cải thiện hiệu năng và sắc nét của hình ảnh nói chung. Cộng với sự phát triển của kinh tế số và công nghệ 4.0 ngày nay, việc di dời các hệ thống lỗi thời cũng đã mang đến sự tiếp nhận của mọi người với giao diện tương tác đồ họa (GUI).

Chính vì vậy, bạn có thể thấy GUI ở khắp mọi nơi - kể từ ti vi, máy giặt, tủ lạnh, điều hòa đến những hệ thống cao cấp như cơ sở dữ liệu, phần mềm bán hàng hoặc hệ thống quản lý hành trình - tất cả những sản phẩm trên được quản lý một cách đơn giản và dễ hiểu cho mọi người, đặc biệt trong các tác vụ yêu cầu sự chuẩn xác và tính lặp lại của công việc. Đặc biệt, sự phát triển của Internet ngày nay đã làm cho trình duyệt Web như Google Chrome hoặc Firefox là một phàn thiết yếu của xã hội. Từ đó, bạn có thể thấy GUI chính là cái nhìn đầu tiên khi mọi người nhìn thấy về công nghệ đó - đẹp mắt, dễ hiểu và đơn giản.

Tuy vậy, những biểu tượng này không thể hoạt động được khi không có sự trợ giúp của backend - một hệ thống ngầm quản lý cho tất cả những yêu cầu của bạn. Chắc hẳn rằng, bạn đã gặp phải những trường hợp như:

img-1.png

Hoặc, thi thoảng các bạn thấy những người sửa chữa máy tính thường mang tính “hacker”:

img-2.png

Những thứ tưởng chừng gây hoang mang và khó hiểu này, thực chất nó vô cùng quan trọng với máy tính của bạn. Đó là các hệ thống mã lệnh (CLI) mà thi thoảng chúng ta, những người coder thường xuyên gặp phải. Mặc dù không có tính họa mĩ như GUI, nhưng chức năng của chúng là vô tận - từ việc giúp bạn xử lý những commit cho công việc, khởi tạo dự án hoặc framework đến truy hồi dữ liệu bị mất sau khi xóa - chúng ở đằng sau tấm màn hệ điều hành để chờ đợi một công việc quan trong sắp tới. Hơn nữa, với một developer hiện nay, việc sử dụng các API là điều hoàn toàn cần thiết - và từ đó CLI xuất hiện như một công cụ đơn giản để chúng ta kết nối thành những hệ thống cao cấp hơn mà không tốn thời gian và giá trị.

3. Độ thuận tiện

Với GUI, ứng dụng có nhiều hình tượng, nhiều bộ mặt và dáng vẻ.

img-3.png

Một profile trên Facebook

img-4.jpg

Visual Studio Code

img-5.png

Một phần mềm quản lý điện cho doanh nghiệp

Với mỗi người dùng công nghệ, trải nghiệm sử dụng của một sản phẩm công nghệ là cái cốt lõi cho số lượng người dùng của bạn - với họ, sự tiện nghi luôn đặt lên hàng đầu. GUI không chỉ là một nơi để họ có thể thực hiện công việc - nó cần phải tránh được sự phức tạp và khó hiểu cho những công việc đơn giản thường ngày.

Do vậy, độ nhất quán của giao diện là yếu tố quan trọng để làm cho GUI có sự nổi tiếng với người dùng hiện nay, và chính vì thế khoảng tiện ích cũng bao quát từ thoải mái đến khó chịu. Một ví dụ điển hình là cách để thêm máy in vào hệ thống, với Windows:

printer1.png

Và với Linux:

printerr.png

Với Windows, biểu thị máy in được hiện rõ ràng bằng dấu cộng và dòng chữ “Add a printer or scanner”. Cách thức này cũng được thực hiện trên Linux, tuy vậy các thuật ngữ như LPT, URI hoặc SAMBA sẽ mang đến sự hoang mang cho người dùng nếu không được hướng dẫn cụ thể.

Trái ngược với GUI, CLI được quản lý một cách đơn giản hơn - chữ trắng trong nền đen, nên sự tiện nghi được nhất quán theo hướng dùng của mỗi người - bạn hoặc thích hoặc không thích hẳn. Tuy vậy, có thể thấy được nhiều ngoại lệ, nhất là những hệ điều hành UNIX như MacOS hay Linux sử dụng Unicode để trải nghiệm sự dụng đẹp gần như GUI, cho phép người dùng tùy chỉnh tông màu, phông chữ, v.v.

img-last.png

neofetch, một công cụ xử lý thông tin của phần cứng máy tính

Đặc biệt, sự tiện nghi của CLI so với thời trước đã được cải thiện khá rõ rệt, thậm chí có thể nhanh hơn với các dụng cụ hỗ trợ cho lập trình viên.

Ví dụ, để cài một ứng dụng như MySQL bằng giao diện, chúng ta sẽ:

  1. Tìm MySQL trên Google
  2. Vào trang chủ
  3. Tìm mục ” Download “ trong rất nhiều các mục khác
  4. Trượt xuống cuối trang để tìm phím “MySQL Community (GPL) Downloads “
  5. Chọn tùy chọn trong danh sách (?)
  6. Chọn bộ cài Web hoặc Offline

Với CLI, chúng ta chỉ cần khởi động trình mã lệnh, và nhập

  • choco install mysql cho Windows, hoặc
  • apt install mysql cho Linux

là xong.

4. Tốc độ làm việc

Khi tốc độ là điều hiển nhiên, một câu hỏi được đặt ra là

“Sự đa dạng của GUI hay khả năng của CLI sẽ tốt hơn?”

Để đánh giá được điểm này rất khó vì chính công việc và độ khó làm nên ý kiến của bạn, tuy vậy, chúng mình có thể đưa ra một số cái mạnh và điểm khuất của GUI và CLI như sau:

4.1 UI

  • Khả năng diễn đạt của GUI là một điểm rất lớn - nó tạo cho người dùng một thói quen tương tác giống với việc lặp lại các động tác ngoài thực tế mà không cần kỹ năng chuyên ngành cao.
  • Tuy vậy, chính sự tương tác này có thể làm giảm thời gian hoạt động thông thường do việc kiểm soát dữ liệu không thể đảm bảo lớn bằng những phần mềm có cấu trúc đơn giản, mà đại đa số là các bộ mã lệnh - thể hiện cho tính tương đối của người dùng.
  • Hơn nữa, việc chạy một ứng dụng đồ họa chắc chắn sẽ ảnh hưởng đến hiệu năng do việc vẽ lên màn hình là một chức năng tốn kém, đặc biệt có thể phải sử dụng đến phần cứng chuyên biệt như card xử lý đồ họa (GPU). Tuy vậy, các máy tính hiện đại thời nay đều đa phần có GPU được đặt sẵn nên thời gian phản ứng của chúng có giảm bớt đôi chút.

4.2 CLI

  • Chắc chắn ràng, các bộ thực thi lệnh có hiệu năng cao hơn so với GUI - thậm chí có một số trình soạn mã như Alacritty hoặc Kitty cho phép người dùng sử dụng GPU thay thế, từ đó tăng tốc quá trình thực thi lệnh hơn.
  • Sự đặc biệt của hệ thống mã lệnh là tính tuyêt đối - tất cả các dữ liệu nhập vào đều trả ra các giá trị tương đương. Chính vì vậy, bạn có thể tạo ra các scriptlet - các file để thực thi các câu lệnh phức tạp một cách ngắn gọn, từ đó làm giảm công đoạn làm việc so với GUI.
  • Một điểm yếu khá rõ rệt của CLI nói chung chính là dữ liệu đầu vào phải rất chính xác và cụ thể. Một sai sót có thể làm cho tất cả bộ lệnh không chấp nhận dữ liệu và báo lỗi, từ đó gây mất thời gian xử lý các tác vụ.

5. Tốc độ hoàn thiện

Là một lập trình viên, chắc chắn bạn muốn phần mềm của mình được hoàn thiện nhanh và đẹp?

GUI có thể: CLI có thể:
Giúp bạn có được giao diện mà bạn mong muốn bằng Design Framework Tùy chỉnh cách nhìn của trình mã lệnh như màu sắc
Tương tác với người dùng một cách dễ dàng hơn Cho người dùng của bạn sự tò mò và hiểu biết về máy tính
Đưa phần mềm của bạn đến nhiều góc độ sử dụng khác nhau Thực hiện một công việc nhanh chóng và chính xác
GUI hạn chế: CLI hạn chế:
Thời gian tạo ứng dụng dài và khả năng bug cao Không hữu ích với người dùng thường, ngoại trừ một số trường hợp chuyên môn
Cần có hiểu biết về framework đồ họa Cần có hiểu biết về API, syscall, các module bậc thấp, …

6. Khi nào và tại sao nên dùng GUI và CLI

6.1 Đối với giao diện đồ họa (GUI)

Với người thường, việc sử dụng giao diện dòng lệnh đôi khi là không cần thiết vì nó đòi hỏi phải phải học hỏi, ghi nhớ dòng lệnh nên việc sử dụng giao diện đồ họa giúp bạn đỡ tốn dung luượng não và tiết kiệm thời gian cho việc học các dòng lệnh. Ngoài ra trong một số trường hợp, giao diện đồ họa cũng mang lại cho bạn trải nghiệm thẩm mỹ về thiết kế của sản phẩm. Đối với lập trình viên, việc sử dụng giao diện đô họa không phải là việc nên né tránh. Bản thân giao diện đồ họa được sinh ra để giảm bớt thời gian gõ bàn phím và tăng tuổi thọ của bàn phím nên bạn nên thông thái lựa chọn khi nào sử dụng giao diện đồ họa và giao diện câu lệnh.Việc sử dụng giao diện đồ họa nhiều có thể giúp cho các developer cụ thể là front-end developer, UI-UX designer hoặc software developer nói chung có khả năng hiểu thêm về trải nghiệm người dùng đối với giao diện đồ họa để giúp bản thân có thể thiết kế ra những giao diện đồ họa tốt hơn .

gui.png

6.2 Đối với giao diện dòng lệnh (CLI)

Với người thường, giao diện dòng lệnh cho phép bạn thực hiện những thao tác mà giao diện đồ họa không thực hiện được .Ngoài ra nó còn giúp bạn hiểu thêm về cách mà lập trình viên làm việc với máy tính. Đối với lập trình viên,thời gian là quý báu nên việc sử dụng giao diện dòng lệnh là điều cần thiết, bạn có thể không cần dùng tới chuột do các thao tác di chuyển con trỏ, thay đổi cửa sổ làm việc hoàn toàn có thể thực hiện từ bàn phím. Tay phải của bạn sẽ không phải chuyển qua chuyển lại giữa bàn phím – chuột rồi lại chuột – bàn phím nữa, vừa nhìn chuyên nghiệp hơn mà lại tiết kiệm được kha khá thời gian trong công việc. Hầu hết các công cụ cho developer đa phần đều là giao diện dòng lệnh, ví dụ như: git, docker, npm,…. đều được ưu tiên sử dụng giao diện dòng lệnh đơn giản là vì sự nhanh chóng và tiện lợi. Ngoài ra nếu bạn có định hướng làm việc với server thì hầu hết các server thường sử dụng các phiên bản phân phối của Linux làm hệ điều hành và loại bỏ phần giao diện đồ họa nên việc hiểu và sử dụng thành thạo giao diện dòng lệnh là điều bắt buộc.

cli.png

7. Kết luận

Qua bài viết này, bọn mình mong các bạn có thể hiểu ra được sự khác biệt giữa giao diện đồ họa (graphical user interface) và giao diện dòng lệnh (command line interface) cũng như có thể ứng dụng những kiến thức trên vào trong học tập và công việc. Cảm ơn các bạn đã dành thời gian cho bài viết của bọn mình. Chúc các bạn có thời gian học lập trình vui vẻ và bổ ích.