Nó vẫn còn giá trị học phát triển gui máy tính để bàn? [đóng cửa]


18

Trong vài năm qua, tất cả các dự án nghiêm túc mà tôi đã thực hiện đều dựa trên web hoặc có giao diện người dùng không có đồ họa (dịch vụ, tập lệnh dòng lệnh, v.v.). Tôi có thể kết hợp một ứng dụng WinForms hoặc thực hiện một số WPF đơn giản khi cần, nhưng tôi chưa bao giờ thực sự đào sâu vào một số API cấp thấp hơn như MFC hoặc QT.

Tôi hiểu rằng điều này phụ thuộc vào tình huống nhưng nói chung vẫn đáng để dành thời gian để tìm hiểu phát triển máy tính để bàn tốt hay các ứng dụng chuyển sang web và thiết bị di động với tốc độ khiến kiến ​​thức này ít liên quan hơn? Ngoài ra, bạn có mong đợi các nhà phát triển mà bạn làm việc cùng có chuyên môn về máy tính để bàn không?


5
Có sự phát triển ứng dụng máy tính để bàn là điều tuyệt vời, nhưng vì tình yêu của Knuth, đừng bận tâm đến MFC. Tất cả những gì bạn cần cho 95% công việc ứng dụng máy tính để bàn Windows là WinForms hoặc WPF / XAML. 5% công việc khác mà bạn không muốn có.
Adam Crossland

1
@Adam: +1 cho "5% công việc khác mà bạn không muốn có." - Thật vậy. :)
Bàn Bobby

Câu trả lời:


38

Tôi nói có, đúng vậy. Có một loại hiệu ứng con lắc trong phát triển chương trình. Đầu tiên mọi thứ chạy trực tiếp trên máy tính. Sau đó, khi máy tính trở nên đủ mạnh để chạy nhiều chương trình, họ có các máy tính lớn với các thiết bị đầu cuối câm. Nhưng các thiết bị đầu cuối câm thực sự hấp dẫn về khả năng sử dụng, vì vậy ngay khi máy tính đủ mạnh để đặt số lượng phần cứng hợp lý vào hệ thống có kích thước thiết bị đầu cuối, chúng tôi có máy tính cá nhân và mọi thứ chạy trực tiếp trên máy tính.

Sau đó, họ đã phát minh ra World Wide Web và chúng tôi quay lại máy tính lớn (máy chủ) và thiết bị đầu cuối câm (trình duyệt.) Nhưng thiết bị đầu cuối câm vẫn thực sự hấp dẫn về khả năng sử dụng và mọi người bắt đầu học lại bài học của 30 năm trước và chúng ta đang có xu hướng tránh xa điều đó một lần nữa. Ngày nay, rất nhiều sự phát triển thực sự hấp dẫn dành cho các ứng dụng dành cho máy tính để bàn (hoặc thiết bị di động) chạy cục bộ, nhưng có thể kết nối với Internet cho các mục đích cụ thể để tăng cường chức năng của chúng.


5
+1 để chỉ ra rằng những xu hướng này chạy theo chu kỳ. Tuy nhiên, tôi đã thấy một trường hợp ứng dụng thiết bị đầu cuối được viết lại dưới dạng ứng dụng trên máy tính để bàn và người dùng có thể làm việc hiệu quả hơn với ứng dụng thiết bị đầu cuối.
Larry Coleman

2
Sự khác biệt với các trình duyệt là trên thực tế chúng có thể chạy mã trên hệ thống cục bộ và khả năng này phát triển theo từng thế hệ trình duyệt. Hậu quả của điều đó là sự khác biệt về khả năng sử dụng giữa máy tính để bàn và ứng dụng web không lớn. Đối với nhiều người (bao gồm cả bản thân tôi) gmail có thể sử dụng nhiều hơn là triển vọng. Con lắc dao động ít hơn mỗi lần và nó sẽ dừng lại giữa chừng, với các ứng dụng là hỗn hợp của các bộ phận cục bộ và đám mây, bất kể công nghệ cơ bản.
Joeri Sebrechts

13
+1, tôi ghét khi mọi người bắt đầu tuyên bố rằng máy tính để bàn đã chết, thật là nực cười.
dr Hannibal Lecter

1
@Joeri: Hầu hết các thiết bị đầu cuối luôn có thể thực hiện ít nhất một vài bit và miếng cục bộ. Một lượng JavaScript đáng buồn mà tôi đã thấy làm những điều mà IBM 3270 (ví dụ) có thể đã được thực hiện tại địa phương.
Jerry Coffin

1
@Joeri Sebrichts - khi Gmail cho phép tôi kéo và thả email vào một tác vụ hoặc mục lịch tôi có thể đồng ý với bạn, nhưng cho đến lúc đó, cách đó có quá ít tính năng.
JeffO

11

Ngay cả khi bạn không bao giờ có ý định làm dev máy tính để bàn, tôi sẽ đề nghị bạn có đủ kinh nghiệm mà bạn sẽ có ý kiến ​​được thông báo về việc sử dụng giải pháp máy tính để bàn trên máy khách web sẽ tốt hơn.


+1: Giả sử rằng 'máy tính để bàn đã chết' và các ứng dụng chim bồ câu trái ngược với các nhà phát triển máy tính để bàn thuần túy nói rằng "ứng dụng web không bao giờ có thể tốt như ứng dụng web". Chọn những gì bạn muốn làm việc với, nhưng biết người khác chỉ đủ để biết lợi ích / cạm bẫy thực sự của nó.
Steven Evers

8

Có, nhưng không phải theo cách bạn đang nghĩ.

Lập trình GUI không còn khó khăn nữa và cũng không đòi hỏi các kỹ năng chuyên môn ngoài việc làm quen với giao diện lập trình gui. Kết nối các nút và cửa sổ và điều khiển không quá khó khăn và khá dễ dàng với môi trường lập trình hiện đại so với thời kỳ đầu với những thứ như MFC. Lập trình GUI là thứ khá dễ học khi được yêu cầu.

Tuy nhiên, trong khi kết nối các nút và hộp văn bản khá dễ dàng, việc biết các nút đặt khi nào và ở đâu, và thiết kế một gui được sử dụng bởi con người là rất khó. Đó là một kỹ năng rất có giá trị và quan trọng cần phải có. Tuy nhiên, các nguyên tắc thiết kế áp dụng cho giao diện gốc so với web rất giống nhau.

Vì vậy, hãy tìm hiểu cách thiết kế giao diện người dùng tốt, hiệu quả và không gây nhầm lẫn cho người dùng và bạn sẽ làm quen với việc lập trình miễn phí cho họ.


2
Đặc biệt trong những ngày này, Trải nghiệm người dùng phụ trách thiết kế phần mềm. Kiến trúc không còn phụ trách nữa.
rwong

5

Nó thực sự sẽ phụ thuộc vào tình hình của bạn. Gần đây tôi đã làm việc cho một công ty Fortune 500, người đã có một số dự án chuyển đổi các ứng dụng web trở lại thành các ứng dụng máy tính để bàn (SmartClient / Click-once). Trong trường hợp cụ thể của họ, nó rất có ý nghĩa và loại bỏ một số vấn đề về khả năng sử dụng mà các ứng dụng hiện tại của họ phải chịu.

Nếu bạn là một nhân viên toàn thời gian và công ty của bạn thường không thiết kế các ứng dụng máy tính để bàn thì có lẽ không có ý nghĩa gì để hoàn toàn tăng tốc trên Winforms hoặc WPF. Tuy nhiên, nếu bạn là một nhà tư vấn và bạn muốn có thể cung cấp một dịch vụ khác cho khách hàng của mình, thì nó không thể bị tổn thương.


4

Hmm, ngoài GMail, Stack-Exchange và ngân hàng tại nhà của ngân hàng của tôi, tôi sử dụng tất cả các phần mềm không phải web hàng ngày. Bây giờ với sự ra đời của điện thoại thông minh và máy tính bảng, ứng dụng web thậm chí còn kém hấp dẫn hơn đối với tôi (tôi sử dụng ứng dụng khách trên điện thoại thông minh Facebook của mình). Đó là phía người dùng.

Phía nhà phát triển: trong 10 năm qua, tôi hầu như chỉ làm việc trên phần mềm không phải web (và sự nghiệp của tôi trải qua nhiều lĩnh vực rất khác nhau khi tôi làm tư vấn phần mềm) và tôi không thấy xu hướng web nào trong tương lai trong công việc của mình.

Vì vậy, có, nó vẫn phải học môi trường GUI máy tính để bàn.


2
Ồ, bạn không sử dụng Công cụ Tìm kiếm Internet?
JBRWilkinson

1
@JBRWilkinson: không, tôi dựa vào Gopher. Nghiêm túc, chắc chắn tôi sử dụng Google cả ngày, nhưng đó không thực sự là sự thay thế cho bất kỳ công cụ hoặc ứng dụng máy tính để bàn nào.
Wizard79

2

Tất nhiên "nó phụ thuộc" - nhưng tôi nghĩ kinh nghiệm của bạn là điển hình. Tôi hiếm khi phải tạo một máy khách dày cho bất kỳ ứng dụng nào tôi đã viết. Trừ khi có một lý do cụ thể mà máy khách cần chạy trên máy tính để bàn (vấn đề kết nối hoặc trò chơi 3D, v.v.) - Tôi tin rằng nhà phát triển và quản trị viên sẽ dễ dàng duy trì một "ví dụ" của ứng dụng. Nếu họ có bộ kỹ năng để thiết kế một ứng dụng web, họ sẽ ổn khi chuyển sang lĩnh vực ứng dụng máy tính để bàn nói chung.

Trên thực tế tôi nghĩ điều quan trọng hơn là một nhà phát triển khách hàng dày học lập trình ứng dụng web - tính không trạng thái vốn có của HTTP khiến cho mô hình phát triển ứng dụng trở nên khó khăn hơn (hoặc ít nhất là bạn phải suy nghĩ nhiều hơn là chỉ tát điều khiển trên một bảng điều khiển).

Đừng quên - bạn có các công nghệ như Silverlight và Adobe Flex / AIR có thể kết nối ranh giới giữa ứng dụng máy tính để bàn / web.


+1 để phát triển web trở nên khó khăn hơn. Tôi bắt đầu như một nhà phát triển máy tính để bàn và phải chuyển sang phát triển web trong công việc. Nó chắc chắn phức tạp hơn (rõ ràng đây là giả định các nhiệm vụ có thể so sánh, không dễ dàng).
Bàn Bobby

@Guzica - vâng, tôi đã gặp một thái độ tương tự từ các nhà phát triển tốt mà tôi đã làm việc với những người bị khóa trong phát triển ứng dụng máy tính để bàn. Một khi họ cố gắng làm cho việc chuyển đổi không dễ dàng như họ nghĩ đầu tiên. Tôi không biết liệu đây có phải là bất kỳ sự phức tạp vốn có nào trong lập trình ứng dụng web hay không, đó chỉ là một cách lập trình khác và rất nhiều giả định cơ bản của bạn về những gì hệ thống có thể làm phải thay đổi (ngoài việc học các khung mới).
Watson

Luôn luôn khó hơn để làm mọi thứ với các công cụ hạn chế hơn, điều đó không làm cho nó "phức tạp hơn". Nó làm cho nó thêm rắc rối.
Sam

0

Theo nhóm IE9:

Không nên có một khoảng cách giữa các ứng dụng gốc và ứng dụng web. Tăng tốc CTNH, JS nhanh và ghim trang web bắt đầu tắt

Tôi nghĩ rằng đó là một sự đánh cược an toàn rằng những công nghệ này sẽ phát triển gần nhau hơn. Nếu bạn là nhà phát triển java, có rất ít sự khác biệt giữa phát triển ứng dụng máy tính để bàn và ứng dụng web (sử dụng GWT). Không phải là không có lý khi hy vọng ngày càng nhiều nền tảng phát triển "máy tính để bàn" có thể nhắm mục tiêu vào công cụ trình duyệt. Cũng không phải là không có lý khi hy vọng ngày càng có nhiều ứng dụng máy tính để bàn có mô hình phân phối giống như web (tự động cập nhật trong nền, thực hiện hộp cát, như chrome).


3
Đó là tổng số BS. Tôi đang làm việc trên một ứng dụng đo độ trễ phải được đặt cục bộ để đo lường và hiển thị trong "thời gian thực" độ trễ của việc cung cấp dữ liệu thị trường. Loại điều này sẽ KHÔNG BAO GIỜ được chuyển lên đám mây.
Tim

Đó là toàn bộ BS bởi vì bạn đã tìm thấy một nhu cầu mơ hồ lố bịch cho một ứng dụng là cục bộ?
Mike M.

@Tim: bạn nói đúng rằng một số ứng dụng sẽ luôn là cục bộ. Cũng đúng là các ứng dụng khác không bao giờ có thể là cục bộ (ví dụ: google dịch). Nhưng, chạy cục bộ không có nghĩa là nó không đến từ đám mây. Chrome chạy cục bộ nhưng là một ứng dụng dựa trên đám mây (bạn có ít quyền kiểm soát đối với "phiên bản" đó là gì). Có những nỗ lực để thực thi mã gốc vào các nền tảng trình duyệt (Google NaCl) và cố gắng kết nối các ngôn ngữ web vào các ứng dụng gốc (Adobe Air).
Joeri Sebrechts

1
@Mike M - điều đó không tối nghĩa một cách lố bịch. Ở công việc trước đây tôi làm việc trên phần mềm đóng tàu Hải quân. Những người cũng có khả năng không ở trong đám mây. Các miền mà tôi làm việc có thể sẽ không di chuyển - chúng phải là cục bộ vì lý do độ trễ và giao diện phần cứng. Web là tốt, nhưng một số người trong chúng ta vẫn làm việc trong khu vực ứng dụng gốc vì một lý do.
Tim

@Tim Quan điểm của tôi là bạn đã tìm thấy một kịch bản mà nó không theo kịp. Tác giả nhận ra điều này khi ông nói NHẤT. Bạn đã đưa ra một quan điểm, và điều đó thật tuyệt. Bạn không có nghĩa là đã chứng minh rằng toàn bộ điều không có cơ sở. Tất nhiên sẽ có những lúc nó phải là địa phương vì vô số lý do. Nhưng đối với đại đa số, ném vào một số sợi cáp quang và 1200 dặm của bạn có thể vượt qua những gì, 10 mili giây? Là người dùng, tôi sẽ ổn với mỗi một ứng dụng trên máy tính để bàn của mình, mất 10 mili giây để tải một biểu mẫu.
Mike M.
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.