Sự khác biệt chính khi chuyển từ lập trình dựa trên bảng điều khiển sang lập trình dựa trên GUI là gì?


18

Tôi bắt đầu, giống như nhiều người khác, với lập trình dựa trên bảng điều khiển (như trong thiết bị đầu cuối, không phải Playstation). Nhưng sớm hay muộn, người ta cần chạm vào lập trình dựa trên GUI, dù bạn muốn hay không. Quá trình chuyển đổi này có nhiều thay đổi trong cách bạn cần suy nghĩ về frontend (và có thể cả phần phụ trợ).

Vậy, sự khác biệt chính khi chuyển từ lập trình dựa trên bảng điều khiển sang lập trình dựa trên GUI là gì?


1
Bạn có nghĩa là Console như trong Terminal, phải không? Không phải bảng điều khiển như trong Playstation ..
JBRWilkinson

@JBRWilkinson: Vâng. Tôi sẽ làm rõ câu hỏi.
gablin

Câu trả lời:


18

Sự khác biệt lớn nhất là thiết kế của UI. Một GUI tốt có thể tạo hoặc phá vỡ một ứng dụng. Người hâm mộ Mac sẽ thu hút sự chú ý đến GUI được thiết kế đẹp mắt của ứng dụng Mac OS X trung bình và họ đã có một điểm, nhưng đây không phải là vấn đề về công nghệ - đó là vấn đề về thiết kế / đạo đức / khả năng sử dụng.

Đối với các vấn đề kỹ thuật, không theo thứ tự cụ thể:

  1. Người dùng có thể làm bất cứ điều gì họ muốn theo bất kỳ thứ tự nào vào bất cứ lúc nào, không giống như chương trình bảng điều khiển trong đó bạn đang yêu cầu đầu vào hoặc cho họ biết đầu ra. Bạn không thể cho rằng họ sẽ tuân theo thứ tự bạn hy vọng, trừ khi bạn thi hành kiểu công việc Wizard-stylee.

  2. Như đã đề cập, các sự kiện đóng một vai trò lớn trong việc này và bạn có thể có nhiều sự kiện xảy ra trong khi bạn đang phục vụ sự kiện cuối cùng, vì vậy bạn không thể thực sự xây dựng trạng thái của mình dựa trên 'sự kiện hiện tại'. Sử dụng các bao đóng hoặc một cơ chế tương tự để duy trì bối cảnh qua các sự kiện khác nhau. Trong ứng dụng bảng điều khiển, FSM của bạn thường được bao quanh xung quanh vòng lặp 'lấy đầu vào, xử lý đầu vào, cập nhật đầu ra'. Không có cùng một loại cấu trúc trong lập trình GUI - 'chính' là một thứ được điều khiển lại theo sự kiện, thường là một câu lệnh switch () ginormous.

  3. Bạn cần xem xét các kích thước / độ phân giải màn hình khác nhau và cho phép GUI thay đổi kích thước từ 800x600 lên đến tối đa màn hình của người dùng.

  4. Bạn cần xem xét các chiến lược đầu vào khác nhau - chuột, bàn phím, cảm ứng, v.v. Một số công nghệ được cung cấp miễn phí (cuộn bằng bánh xe chuột), một số công nghệ khác yêu cầu một số công việc tích hợp (Ink).

  5. Khả năng truy cập - GUI phù hợp hơn nhiều đối với người dùng ít có khả năng bị hạn chế về thị giác, thính giác, kỹ năng vận động hoặc kỹ năng nhận thức. Tiếng ồn 'ding' là tốt và rõ ràng so với thông báo lỗi khó hiểu trên bảng điều khiển.

  6. Quốc tế hóa - tôi giả sử ứng dụng bảng điều khiển của bạn chỉ là US / ANSI, nhưng khi bạn vào GUI, bạn có thể có các gói ngôn ngữ / tài nguyên có thể nhắm mục tiêu các ngôn ngữ và khu vực khác mà không thay đổi mã hóa, nếu bạn chuẩn bị cho nó từ khởi đầu. Ví dụ, không có chuỗi ngôn ngữ được mã hóa cứng trong mã - mọi thứ như tra cứu tài nguyên.

  7. Bạn có nhiều tùy chọn hơn cho công nghệ triển khai - dựa trên web, các bộ GUI khác nhau, Flash / WPF, v.v.

  8. Sử dụng màu sắc và hình ảnh động. Các chương trình điều khiển nói chung là đơn sắc và không hoạt hình nhiều. Nhiều khung GUI hiện đại cung cấp các widget theo chủ đề và có các hiệu ứng di chuyển / kích thước / hiển thị / ẩn hoạt hình, thường là miễn phí.

  9. Đồ họa. Các ứng dụng bảng điều khiển đôi khi sử dụng nghệ thuật ASCII cho sơ đồ, nhưng một ứng dụng GUI cung cấp cho bạn khả năng đồ họa đầy đủ. Nghệ thuật đáng yêu cũng có thể tạo ra một sự khác biệt lớn.


1
Mặc dù tôi thấy quan điểm của bạn nói chung, tôi không đồng ý với sự phân đôi giả ở đây. Ý tôi là, bạn cũng cần chú ý đến UI cho các ứng dụng bảng điều khiển, bạn có thể có các ứng dụng bảng điều khiển dựa trên sự kiện, bạn có thể có một ứng dụng đầu cuối thực sự hiển thị GUI chứ không chỉ là văn bản tuyến tính và cần chú ý thay đổi kích thước (và có thể hoạt động với chuột), bạn có thể thực hiện các ứng dụng cli có thể truy cập, bạn quốc tế hóa các ứng dụng cli giống như gui, bạn có thể sử dụng màu sắc và hoạt hình. Tôi sẽ cấp cho bạn rằng 7 và 9 bị hạn chế hơn.
haylem

17

Đối với tôi nó sẽ quen dần với lập trình hướng sự kiện. Nó vẫn có thể áp dụng cho phần mềm dựa trên bảng điều khiển nhưng tôi thấy phần lớn được sử dụng với GUI. Một khi bạn nắm bắt nó, nó là một công cụ rất mạnh mẽ.


Đồng ý. Điều bạn cần học là mã của bạn không hoàn toàn kiểm soát những gì người dùng có thể làm tiếp theo.

Với sự háo hức của các cuộc đối thoại.
Morgan Herlocker

6

Tôi muốn nói rằng đa luồng và nó có ý nghĩa với UI (nếu bạn muốn không chặn UI)


+1, vì luồng là một vấn đề kỹ thuật thực sự tẻ nhạt để đối phó.
Clement Herreman

2

Việc xem xét luồng điều khiển trên UI và xác nhận đầu vào của người dùng trở nên rất quan trọng.


2

Một chương trình giao diện điều khiển có xu hướng được tinh chỉnh theo thời gian trong khi một chương trình GUI có xu hướng bị vặn.


1

Thông thường tôi nghĩ chương trình dựa trên bàn điều khiển là Mô hình, trong khi chương trình dựa trên GUI là Chế độ xem / Trình điều khiển nhúng Mô hình.


1

Đối với tôi, việc thiết kế một GUI tốt luôn gặp nhiều thách thức hơn khi các chi tiết kỹ thuật thực hiện nó.

Thật dễ dàng để nói "làm cho nó đơn giản và rõ ràng, giống như máy Mac". Thật khó để làm cho nó như vậy; luôn luôn có rất nhiều chi tiết nên có sẵn, nhưng đồng thời, chúng nên được đưa ra khỏi tầm nhìn.

tính đơn giản http: // warethathappens.com/blog/wp-content/uploads/2008/03/simplicity.png


1
Hãy nhìn vào Google Wave hoặc iMovie và bạn biết những hình ảnh này là sai lệch.
Ivo Flipse

0

Trong một số ngôn ngữ (nhiều?), Sự khác biệt chính đối với tôi là, bây giờ, bạn phải chọn một thư viện. Làm điều khiển trong hệ thống điều khiển trực tuyến, lập trình xương sống (và nhiều hơn nữa, với một số may mắn) ứng dụng của bạn sử dụng các tài nguyên tiêu chuẩn của ngôn ngữ của bạn. Thêm một GUI mà bạn có thể (hy vọng) vẫn có mô hình Mô-đun của bạn trong các thành ngữ tiêu chuẩn, nhưng bây giờ là một phần rất lớn, chế độ xem Cảnh sẽ phụ thuộc vào một số thư viện bên ngoài (và, không ngờ, bạn sẽ gắn bó với nó mãi mãi). Sự lựa chọn của thư viện này là một trách nhiệm lớn đối với người mới bắt đầu cũng như trường hợp (của tôi) của bạn (không đề cập đến đường cong bước học tập bổ sung).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.