Пропозиції щодо бібліотеки GUI в Haskell [закрито]


14

Як зазначає сам Haskell Wiki :

Для Haskell існує велика кількість бібліотек GUI. На жаль, немає стандартного і всі більш-менш неповні. Взагалі, шпони низького рівня йдуть добре, але вони низького рівня. Абстракції високого рівня досить експериментальні. Існує потреба у підтримці бібліотеки графічного інтерфейсу середнього рівня.

Професор мого коледжу попросив мене та трьох інших спеціальностей з інформатики розглянути можливість роботи над бібліотекою GUI для Haskell. Його початковою ідеєю проекту було написати шар поверх OpenGL, який імітував морфічну бібліотеку, знайдену в Smalltalk ; однак це лише пропозиція, і інша система, безумовно, заслуговує на розгляд.

Це підводить нас до власне багатозначного питання.

  1. До якого рівня абстрагування повинна прагнути наша бібліотека? Здається, що Haskell Wiki чітко вказує на те, що бібліотека графічного інтерфейсу середнього рівня буде кращою; однак, бібліотека високого рівня все-таки вітається.
  2. На чому повинна будуватися наша бібліотека? (Наприклад, OpenGL)
  3. Яку існуючу бібліотеку графічного інтерфейсу ви б хотіли, щоб наша бібліотека імітувала (якщо вона є) і чому? (Наприклад, PyGame, Morphic, Swing тощо)
  4. Які функції ви хотіли б, щоб наша бібліотека впроваджувала чи уникала? Наприклад, хороші люди в Gnome можуть стверджувати, що кнопка мінімізації не потрібна.
  5. Чи є у вас загальні пропозиції?
  6. Яку розумну назву ви б дали цій уявній бібліотеці? (Напр. HOT - Haskell Opengl Toolkit; HAWT - Haskell Advanced Windowing Toolkit)

2
Mimic Qt або GTK, це чудово
Anto

Відповіді:


7

Я хотів би побачити бібліотеку, яка є елегантною та простою у використанні з Haskell. Решта - це технічні деталі, які повинні служити цій меті, а не переосмислювати її. Таким чином, мої 0,02 долара.

Не грунтуйтеся на існуючих інструментальних інструментах , таких як Qt, GTK або FLTK або ... - це серйозно обмежить вас і, ймовірно, доставить вам набагато більший біль, ніж прибуток. PyQt, erm, досить смішний і надуманий, і Python і C ++ надзвичайно гнучкі імперативні мови OO. У випадку з Haskell, гадаю, все буде набагато грубіше.

Залежить лише від основних основних графічних примітивів , а потім будуйте на цьому. OpenGL приємно, але навіть щось простіше (лише для 2D, наприклад, SDL) теж було б добре. Це дасть вам максимальну гнучкість та максимальну портативність. Див. Smalltalk / Morphic, Java / Swing, TCL / Tk.

Зробіть це концептуально невеликим. Графічні інтерфейси важкі, як є, не потрібно додавати ще один Еверест, щоб піднятися. Надіюсь, Haskell може допомогти зробити річ компактною та модульною.

Щоб отримати бонусні бали, зробіть це знятим. Як мінімум, знайте, як застосувати системні кольори (і лише системні кольори) для фарбування всього репертуару елементів керування, щоб додаток, створений за допомогою цього інструментарію, не мав очей. Як максимум, знайте, як змусити Win32 / Gtk / Qt / какао намалювати свої елементи управління, щоб вони виглядали повністю рідними. Основна шкірність є простою і логічною; досягти повного рідного вигляду досить складно.

Крім того, будь ласка, запустіть без корінних даних і залиште управління вікнами базовій графічній системі - X, Windows, будь-що. Якщо цього не зробити, це призведе до серйозної суперечності користувачів і перешкоджає прийняттю.

Як завжди, "зробіть прості речі можливими простими і складними речами" + "уникайте Тюрінга Тьюрінга там, де все можливо, але нічого цікавого не є простим" + "зробити максимально просто, але не простіше".

Назва - найменш важлива річ. З усіх популярних наборів інструментів GUI, лише Qt має якось розумне ім’я. Ряд популярних проектів змінив імена, навіть під час польоту (Firefox, née Firebird). Щось назвати, і ти його назвеш.

Удачі!


1

Після розмови серед усіх залучених студентів та надання цього питання достатньо часу, щоб викликати інтерес, я вважаю, що ми дійшли консенсусу щодо кількох ключових питань у моєму первісному дописі.

До якого рівня абстрагування повинна прагнути наша бібліотека? Здається, що Haskell Wiki чітко вказує на те, що бібліотека графічного інтерфейсу середнього рівня буде кращою; однак, бібліотека високого рівня все-таки вітається.

Ми вирішили націлитись на бібліотеку середнього рівня за пропозицією Haskell Wiki.

На чому повинна будуватися наша бібліотека? (Наприклад, OpenGL)

Ми вибрали OpenGL завдяки його популярності та підтримці. В якості основи ми будемо використовувати або обгорткові проекти GLUT або GLFW Haskell.

Яку існуючу бібліотеку графічного інтерфейсу ви б хотіли, щоб наша бібліотека імітувала (якщо вона є) і чому? (Наприклад, PyGame, Morphic, Swing тощо)

Ми вибрали Morphic після значних дискусій між нею та PyGame. Ми не розглядали питання QT або GTK, оскільки в обох уже є один або кілька проектів бібліотеки Haskell в активному розвитку .

Яку розумну назву ви б дали цій уявній бібліотеці? (Напр. HOT - Haskell Opengl Toolkit; HAWT - Haskell Advanced Windowing Toolkit)

Це ще для обговорення. Ми вирішили не вважати HAWT і замість цього переглядаємо:

  • ГОРЯЧЕ - Інструментарій Haskell Opengl
  • HOG - Haskell Opengl Graphics (Зробіть проект HOG на базі!)
  • Schön
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.