Có một xu hướng cho các bộ công cụ GUI đa nền tảng? [đóng cửa]


12

Xu hướng như thế nào đối với việc sử dụng các khung GUI đa nền tảng ngay bây giờ? Có phải nhiều người bắt đầu sử dụng các khung nền tảng chéo (như GTK +, Qt và wxWidgets) hoặc có nhiều người sử dụng nhiều khung công tác gắn kết nền tảng hơn (ví dụ: Ca cao hoặc WPF)? Là nó nhiều hay ít trì trệ? Nó giống như một tàu lượn siêu tốc? Bạn nghĩ xu hướng sẽ như thế nào, nói, 5 năm nữa?

Toàn cảnh hệ điều hành đang thay đổi với ít người sử dụng Windows (quan sát cá nhân). Điều này sẽ làm tăng nhu cầu về bộ công cụ đa nền tảng, phải không?

Chỉnh sửa: Ngoài ra, bộ công cụ (đa nền tảng) nào đang phát triển nhất, nếu vậy?

Câu trả lời:


11

Dường như có xu hướng chống lại các bộ dụng cụ đa nền tảng. Nếu mọi người muốn viết một lần, chạy ở bất cứ đâu, họ có xu hướng sử dụng HTML - tạo một trang web. Mọi người chỉ sử dụng bộ công cụ nền tảng khi giao diện gốc được yêu cầu cao, ví dụ như trên iPhone. Vì vậy, nếu toàn bộ lý do bạn bận tâm với ứng dụng không phải là web để có được giao diện tự nhiên, thì sẽ không có ý nghĩa gì khi sử dụng bộ công cụ đa nền tảng.

Bộ công cụ đa nền tảng chưa bao giờ hoạt động tốt như vậy; các nền tảng máy tính để bàn không quá giống nhau và thật khó để trừu tượng hóa chúng. Thêm điện thoại và máy tính bảng vào hỗn hợp làm cho nó thậm chí còn khó hơn. Bạn kết thúc với một bản tóm tắt rất rò rỉ (xem http://www.joelonsoftware.com/articles/LeakyAbstrilities.html ). Thông thường, việc tách riêng "công cụ" của bạn khỏi UI và viết UI riêng biệt trên mỗi nền tảng sẽ dễ dàng hơn.

Xu hướng Mac trở nên phổ biến hơn có thể làm cho bộ dụng cụ đa nền tảng trở nên ít phổ biến hơn là nhiều hơn. Tôi nghĩ rằng mọi người thường sử dụng một bộ đa nền tảng nhiều hơn để kiểm tra về mặt lý thuyết hộp kiểm đa nền tảng hơn là để có được kết quả thực sự tốt trên tất cả các nền tảng. Khi bạn thực sự quan tâm đến nhiều nền tảng ... bạn bắt đầu thấy các bộ dụng cụ đa nền tảng có nhược điểm như thế nào.

Đây là một bài đăng blog từ Alex Payne về những nhược điểm đó: http: // al3x.net/2011/01/15/user-hostile-pl platforms.html

Tôi nghĩ rằng nó nói rằng nhiều ứng dụng đa nền tảng lớn, phổ biến phát minh ra cách tiếp cận đa nền tảng của riêng họ (Firefox, Chrome, Eclipse, OpenOffice.org là những ví dụ xuất hiện trong tâm trí). Bằng cách sở hữu khuôn khổ, họ có thể vượt qua sự trừu tượng khi được yêu cầu. Ngoài ra, các ứng dụng này đều có xu hướng trông giống nhau (và không đặc biệt là bản địa) trên tất cả các nền tảng.

Tất cả điều này nói, tôi không có số liệu thống kê thực tế hoặc bất cứ điều gì. Nhưng tôi đã thực hiện rất nhiều công việc trên GTK + và có một số quen thuộc với các cơ sở mã bao gồm Firefox, Chrome và Eclipse. Vì vậy, tôi đã tận mắt nhìn thấy những thách thức kỹ thuật ở đây.


2
Tôi có thể nói điều này đơn giản là "Xu hướng cho các bộ công cụ đa nền tảng là hướng tới sự thất bại."
ohmantics

14

Như một vấn đề thực tế, đã có một xu hướng đối với bộ công cụ UI đa nền tảng trong những năm gần đây. Bộ công cụ đó là HTML / CSS / JavaScript.

Nó chỉ đơn giản hơn để phát triển một lần và thấy nó chạy gần như giống hệt nhau ở mọi nơi.

Và vâng, sự phát triển đang ồ ạt chuyển từ máy tính để bàn vào web. Bạn nhìn thấy nó


+1 Đối với web là xu hướng UI đang phát triển, nhưng tôi không nghĩ điều này giải quyết câu hỏi của OP.

Hoàn toàn đồng ý. Chúng tôi phát triển ứng dụng IPTV của mình trên hộp Settop hoàn toàn bằng HTML5 / CSS3 / JavaScript. Đó là tương lai, chưa phải là một khung C / C ++ đồ sộ, đầy đủ khác
Ernelli

1
Đề cập tốt, nhưng tôi thực sự quan tâm đến bộ công cụ máy tính để bàn đa nền tảng . Vẫn nâng cao.
Anto

@Anto - có thể muốn thêm câu hỏi đó vào câu hỏi của bạn. Từ khi đọc, tôi đã không chọn "máy tính để bàn" nào cả. Tất nhiên, tôi là một lập trình viên web và không nhận ra hầu hết các khung bạn đã đề cập :)
Marcie

@Anto, bạn có thể muốn đề cập đến máy tính để bàn trong câu hỏi của bạn.
JBRWilkinson

7

Tôi có xu hướng sử dụng các bộ công cụ đa nền tảng vì chúng có thiết kế tốt hơn, không phải vì tôi đang cố gắng trở thành đa nền tảng. Ví dụ: tôi làm việc trên các dự án được viết bằng C ++ chỉ nhắm mục tiêu nền tảng Windows. Tôi có sử dụng win32 hoặc MFC không, các tùy chọn CHỈ có sẵn cho bộ công cụ gốc?

Thánh fsck không! Chúng là những đống rác spaghetti tồi tệ nhất tôi từng thấy! Sự kết hợp trực tiếp của hệ thống sự kiện với hệ thống "thông điệp" của hệ điều hành cơ bản là cực kỳ không trực quan và thiếu tính biểu cảm cần thiết để nhanh chóng tạo các chương trình UI. Trừu tượng cấp cao hơn, hiện chỉ được cung cấp bởi các bộ công cụ đa nền tảng, là hoàn toàn cần thiết cho nhiệm vụ.

Đó cũng chỉ là một ví dụ. Tôi có thể đọc và liệt kê danh sách những thứ được thực hiện tốt hơn bởi các bộ công cụ đa nền tảng. Thực tế là các giao diện đồ họa giống nhau hơn là khác biệt. Chẳng hạn, có rất ít sự khác biệt giữa một chương trình cửa sổ trên Windows so với một chương trình trên Linux. Các loại việc bạn làm khi tạo chương trình UI hầu như luôn giống hệt nhau cho dù bạn đang nhắm mục tiêu hệ điều hành nào ... và chỉ có sự khác biệt nhỏ giữa các kiến ​​trúc như điện thoại / cọ so với máy tính để bàn. Lĩnh vực này chỉ đơn giản tập trung vào các phương pháp đa nền tảng vì a) nó cần thiết cho nhiều người và b) tất cả đều giống nhau.


0

Một lập luận chống lại việc tạo ra một khung đa nền tảng là nó sẽ luôn được nhắm mục tiêu vào mẫu số chung thấp nhất - các máy khách của khung muốn viết mã chỉ một lần và nó chạy 'được hỗ trợ ở mọi nơi. Vì vậy, một nền tảng phần cứng tuyệt vời sẽ trông giống như bất kỳ nền tảng nào chạy khung đó khi bạn không thể tận dụng các tính năng dành riêng cho nền tảng.

Theo thời gian, điều này không may dẫn đến các khung dựa vào nền tảng phổ biến nhất của họ và cùng nhau hack hỗ trợ cho các nền tảng khác hoặc chỉ loại bỏ chúng khi hết ngân sách / mức độ phổ biến.

Một cách để tận dụng các khả năng của nền tảng cụ thể là có một cái gì đó giống như một #if PLATFORM_FEATURE_Xcấu trúc xung quanh tất cả các mã cụ thể hoặc kiểm tra thời gian chạy tương đương dẫn đến sự phình to mã. Điều này trở nên tẻ nhạt khá nhanh, vì các biến thể của cùng một nền tảng sẽ cần xử lý cụ thể. Ví dụ: một số XBox v1 không có ổ cứng, vì vậy các trò chơi sử dụng các công cụ đa nền tảng không thể sử dụng nó để lưu vào bộ đệm, so với phiên bản PC nơi bạn có thể đảm bảo ổ cứng.

Đối với các ứng dụng Máy tính để bàn / Năng suất, giao diện nền tảng có vẻ quan trọng, nhưng nhiều ứng dụng có kiểu dáng riêng nên không có vấn đề gì giống nhau trên tất cả các nền tảng, ví dụ như các ứng dụng được xây dựng với AIR.

Các nhà cung cấp phần cứng như Apple, Sony, Nintendo và Toshiba sẽ muốn đảm bảo rằng các sản phẩm của họ làm điều gì đó để tạo sự khác biệt so với đối thủ, ví dụ như Touch, Gia tốc kế / Gryoscopes, Blu-Ray, màn hình 3D. Không chắc sẽ có một nền tảng với tất cả các tính năng của tất cả các đối thủ cạnh tranh thành một (do chi phí và sự phức tạp), vì vậy một người sẽ chiến thắng.

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.