Gợi ý cho thư viện GUI trong Haskell [đã đóng]


14

Như chính Haskell Wiki tuyên bố :

Có một số lượng lớn các thư viện GUI cho Haskell. Thật không may, không có một tiêu chuẩn và tất cả ít nhiều không đầy đủ. Nhìn chung, veneers cấp thấp đang diễn ra tốt đẹp, nhưng chúng ở cấp độ thấp. Trừu tượng cấp cao là khá thử nghiệm. Cần có một thư viện GUI cấp trung bình được hỗ trợ.

Một giáo sư tại trường đại học của tôi đã yêu cầu tôi và ba chuyên ngành khoa học máy tính khác xem xét làm việc trên thư viện GUI cho Haskell. Ý tưởng ban đầu của anh cho dự án là viết một lớp trên OpenGL mô phỏng thư viện hình thái được tìm thấy trong Smalltalk ; tuy nhiên, đây chỉ là một gợi ý và hệ thống khác chắc chắn đáng xem xét.

Điều này đưa chúng ta đến câu hỏi thực tế, nhiều phần.

  1. Thư viện của chúng ta nên phấn đấu ở mức độ nào? Wiki Haskell dường như chỉ ra mạnh mẽ rằng thư viện GUI cấp trung sẽ được ưu tiên; tuy nhiên, một thư viện cấp cao vẫn sẽ được chào đón.
  2. Dựa trên những gì thư viện của chúng ta nên được xây dựng? (Ví dụ: OpenGL)
  3. Thư viện GUI nào hiện tại bạn muốn xem thư viện của chúng tôi bắt chước (nếu có) và tại sao? (Ví dụ: PyGame, Morphic, Swing, v.v.)
  4. Những tính năng nào bạn muốn thấy thư viện của chúng tôi thực hiện hoặc tránh? Ví dụ: những người tốt ở Gnome có thể lập luận rằng nút thu nhỏ là không cần thiết.
  5. Bạn có bất cứ đề nghị chung?
  6. Cái tên thông minh nào bạn sẽ đặt cho thư viện tưởng tượng này? (Ví dụ: HOT - Bộ công cụ Opengl của Haskell; HAWT - Bộ công cụ cửa sổ nâng cao Haskell)

2
Mimic Qt hoặc GTK, những thứ đó thật tuyệt vời
Anto

Câu trả lời:


7

Tôi muốn thấy một thư viện thanh lịch và đơn giản để sử dụng với Haskell. Phần còn lại là các chi tiết kỹ thuật nên phục vụ mục đích này, không xác định lại nó. Do đó, 0,02 đô la của tôi.

Đừng dựa trên bộ công cụ hiện có , như Qt hoặc GTK hoặc FLTK hoặc ... - điều này sẽ hạn chế nghiêm trọng bạn và có thể sẽ khiến bạn đau đớn hơn nhiều so với lợi nhuận. PyQt là, erm, hài hước và đủ khả năng, và cả Python và C ++ đều là các ngôn ngữ OO bắt buộc cực kỳ linh hoạt. Trong trường hợp của Haskell, tôi cho rằng mọi thứ sẽ khó khăn hơn nhiều, tôi cho rằng.

Chỉ phụ thuộc vào các nguyên thủy đồ họa cơ bản nhất , sau đó dựa trên đó. OpenGL là tốt, nhưng ngay cả một cái gì đó đơn giản hơn (chỉ 2D, ví dụ SDL) cũng sẽ làm tốt. Điều này sẽ cung cấp cho bạn sự linh hoạt tối đa tính di động tối đa. Xem Smalltalk / Morphic, Java / Swing, TCL / Tk.

Làm cho nó khái niệm nhỏ. GUI rất khó, không cần thêm Everest nữa để leo lên. Haskell, tôi hy vọng, có thể giúp làm cho mọi thứ nhỏ gọn và mô-đun.

Đối với điểm thưởng, làm cho nó skinnable. Tối thiểu, hãy biết cách áp dụng màu hệ thống (và chỉ màu hệ thống) để vẽ toàn bộ tiết mục điều khiển của bạn, để ứng dụng được xây dựng với bộ công cụ này không phải là một điều chướng mắt. Tối đa, hãy biết cách làm cho Win32 / Gtk / Qt / Ca cao rút ra các điều khiển của bạn để chúng trông hoàn toàn tự nhiên. Khả năng da cơ bản là đơn giản và hợp lý; đạt được cái nhìn bản địa đầy đủ là khá khó khăn.

Ngoài ra, vui lòng chạy rootless và để lại quản lý cửa sổ cho hệ thống đồ họa cơ bản - X, Windows, bất cứ điều gì. Không làm như vậy sẽ thách thức sự tỉnh táo của người dùng và cản trở việc áp dụng quyết liệt.

Như thường lệ, 'làm cho mọi thứ đơn giản trở nên đơn giản và phức tạp' + 'tránh bạt Turing khi mọi thứ đều có thể nhưng không có gì quan tâm là đơn giản' + 'làm cho đơn giản nhất có thể nhưng không đơn giản hơn'.

Tên là điều quan trọng nhất. Trong tất cả các bộ công cụ GUI phổ biến, chỉ Qt có một cái tên thông minh nào đó. Một số dự án phổ biến đã thay đổi tên, ngay cả trong chuyến bay (Firefox, née Firebird). Có một cái gì đó để đặt tên, và bạn sẽ đặt tên cho nó.

Chúc may mắn!


1

Sau khi nói chuyện giữa tất cả các sinh viên tham gia và đưa ra câu hỏi này đủ thời gian để tạo hứng thú, tôi tin rằng chúng tôi đã đi đến thống nhất về một vài câu hỏi chính trong bài viết gốc của tôi.

Thư viện của chúng ta nên phấn đấu ở mức độ nào? Wiki Haskell dường như chỉ ra mạnh mẽ rằng thư viện GUI cấp trung sẽ được ưu tiên; tuy nhiên, một thư viện cấp cao vẫn sẽ được chào đón.

Chúng tôi quyết định nhắm đến một thư viện cấp trung bình theo đề xuất của Haskell Wiki.

Dựa trên những gì thư viện của chúng ta nên được xây dựng? (Ví dụ: OpenGL)

Chúng tôi đã chọn OpenGL do sự phổ biến và hỗ trợ của nó. Chúng tôi sẽ sử dụng các dự án trình bao bọc GLUT hoặc GLFW Haskell làm cơ sở.

Thư viện GUI nào hiện tại bạn muốn xem thư viện của chúng tôi bắt chước (nếu có) và tại sao? (Ví dụ: PyGame, Morphic, Swing, v.v.)

Chúng tôi đã chọn Morphic sau cuộc tranh luận đáng kể giữa nó và PyGame. Chúng tôi không xem xét QT hoặc GTK vì cả hai đã có một hoặc nhiều dự án thư viện Haskell đang phát triển .

Cái tên thông minh nào bạn sẽ đặt cho thư viện tưởng tượng này? (Ví dụ: HOT - Bộ công cụ Opengl của Haskell; HAWT - Bộ công cụ cửa sổ nâng cao Haskell)

Điều này vẫn còn cho tranh luận. Chúng tôi đã quyết định không xem xét HAWT và thay vào đó đang xem xét:

  • HẤP DẪN - Bộ công cụ Haskell Opengl
  • HOG - Đồ họa Haskell Opengl (Làm cho dự án HOG của bạn được hỗ trợ!)
  • Schon
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.