คำแนะนำสำหรับไลบรารี GUI ใน Haskell [ปิด]


14

ในฐานะที่เป็นHaskell Wiki ระบุว่า :

มีไลบรารี GUI จำนวนมากสำหรับ Haskell น่าเสียดายที่ไม่มีมาตรฐานใด ๆ เลยและทั้งหมดนั้นไม่สมบูรณ์ไม่มากก็น้อย โดยทั่วไปแล้วแผ่นไม้อัดระดับต่ำจะทำได้ดี แต่ก็มีระดับต่ำ abstractions ระดับสูงเป็นการทดลองที่ค่อนข้างดี ไม่จำเป็นต้องมีไลบรารี GUI ระดับกลางที่รองรับ

อาจารย์ที่วิทยาลัยของฉันขอให้ฉันและวิชาเอกวิทยาการคอมพิวเตอร์อีกสามคนพิจารณาที่จะทำงานในห้องสมุด GUI สำหรับ Haskell ความคิดเริ่มต้นของเขาสำหรับโครงการคือการเขียนเลเยอร์บน OpenGL ที่เลียนแบบมอร์ฟิคไลบรารีที่พบใน Smalltalk ; อย่างไรก็ตามนี่เป็นเพียงข้อเสนอแนะและระบบอื่น ๆ ก็เป็นสิ่งที่ควรค่าแก่การพิจารณา

นี่นำเราไปสู่คำถามที่เกิดขึ้นจริงและมีหลายส่วน

  1. ห้องสมุดของเรามุ่งมั่นในระดับใด Haskell Wiki ดูเหมือนจะบ่งบอกอย่างชัดเจนว่าต้องการ GUI ไลบรารีระดับกลาง อย่างไรก็ตามยินดีต้อนรับสู่ห้องสมุดระดับสูง
  2. ห้องสมุดของเราควรสร้างอะไร (เช่น OpenGL)
  3. ห้องสมุด GUI ใดที่มีอยู่ที่คุณต้องการดูห้องสมุดของเราเลียนแบบ (ถ้ามี) และเพราะอะไร (เช่น PyGame, Morphic, Swing ฯลฯ )
  4. คุณต้องการเห็นคุณลักษณะใดในการนำไลบรารี่ของเราไปใช้หรือหลีกเลี่ยง ตัวอย่างเช่นคนดีที่ Gnome อาจยืนยันว่าปุ่มย่อขนาดนั้นไม่จำเป็น
  5. คุณมีคำแนะนำทั่วไปไหม?
  6. ชื่ออะไรที่ฉลาดที่คุณจะให้ห้องสมุดจินตนาการนี้ (เช่น HOT - ชุดเครื่องมือ OpenGL ของ Haskell; HAWT - ชุดเครื่องมือขั้นสูงสำหรับหน้าต่าง Haskell)

2
เลียนแบบ Qt หรือ GTK เหล่านั้นวิเศษมาก
Anto

คุณเคยเห็นhaskell.org/haskellwiki/ ตอบโต้แล้วหรือยัง?
SK-logic

คำตอบ:


7

ฉันต้องการดูห้องสมุดที่สวยงามและใช้งานง่ายกับ Haskell ส่วนที่เหลือเป็นรายละเอียดทางเทคนิคที่ควรให้บริการตามวัตถุประสงค์นี้ไม่ใช่กำหนดใหม่ ดังนั้นฉัน $ 0.02

อย่ายึดไว้กับชุดเครื่องมือที่มีอยู่เช่น Qt หรือ GTK หรือ FLTK หรือ ... - สิ่งนี้จะ จำกัด คุณอย่างรุนแรงและอาจทำให้คุณเจ็บปวดมากกว่ากำไร PyQt นั้นตลกมากและมีความคิดสร้างสรรค์มากพอและทั้ง Python และ C ++ นั้นเป็นภาษา OO ที่จำเป็นอย่างยิ่ง ในกรณีของ Haskell ฉันคิดว่าสิ่งต่าง ๆ จะเลวร้ายไปกว่านี้

ขึ้นอยู่กับพื้นฐานกราฟิกขั้นพื้นฐานที่สุดเท่านั้นจากนั้นสร้างตามนั้น OpenGL นั้นดี แต่สิ่งที่เรียบง่าย (2D- อย่างเดียวเช่น SDL) ก็ทำได้ดีเช่นกัน สิ่งนี้จะให้ความยืดหยุ่นสูงสุดและพกพาได้สูงสุด ดู Smalltalk / Morphic, Java / Swing, TCL / Tk

ทำให้แนวคิดเล็ก GUIs นั้นยากเหมือนกันไม่จำเป็นต้องเพิ่ม Everest อื่นเพื่อปีนขึ้นไป Haskell ฉันหวังว่าจะสามารถทำให้สิ่งเล็กกะทัดรัดและเป็นโมดูล

สำหรับคะแนนโบนัส อย่างน้อยที่สุดให้รู้จักวิธีใช้สีของระบบ (และสีระบบเท่านั้น) เพื่อระบายสีรายการควบคุมทั้งหมดของคุณเพื่อให้แอปที่สร้างขึ้นด้วยชุดเครื่องมือนี้ไม่ได้มีปัญหาใด ๆ โดยมากที่สุดรู้วิธีที่จะทำให้ Win32 / Gtk / Qt / Cocoa วาดตัวควบคุมของคุณเพื่อให้พวกมันดูเป็นเจ้าของเต็ม ความสามารถในการสกินพื้นฐานนั้นเรียบง่ายและสมเหตุสมผล การได้เห็นชาวพื้นเมืองเต็มรูปแบบนั้นค่อนข้างยาก

นอกจากนี้โปรดเรียกใช้ rootless และปล่อยให้การจัดการหน้าต่างไปยังระบบกราฟิกพื้นฐาน - X, Windows ไม่ว่าอะไรก็ตาม การไม่ทำเช่นนั้นจะเป็นการท้าทายผู้ใช้และขัดขวางการยอมรับอย่างมาก

ตามปกติ 'ทำสิ่งที่ง่ายเรียบง่ายและซับซ้อนที่สุดเท่าที่จะเป็นไปได้' + 'หลีกเลี่ยง Turing tarpit ที่ทุกอย่างเป็นไปได้ แต่ไม่มีสิ่งใดที่น่าสนใจง่าย ๆ ' + 'ทำอย่างง่ายที่สุด แต่ไม่ง่ายกว่า'

ชื่อมีความสำคัญน้อยที่สุด ในชุดเครื่องมือ GUI ยอดนิยมทั้งหมด Qt เท่านั้นที่มีชื่อที่ฉลาด โครงการยอดนิยมจำนวนหนึ่งเปลี่ยนชื่อแม้ในเที่ยวบิน (Firefox หรือไฟร์เบิร์ด) มีบางอย่างที่จะตั้งชื่อและคุณจะตั้งชื่อมัน

โชคดี!


1

หลังจากพูดคุยกันระหว่างนักเรียนทุกคนที่เกี่ยวข้องและให้เวลาคำถามนี้อย่างเพียงพอเพื่อสร้างความสนใจฉันเชื่อว่าเราได้รับฉันทามติเกี่ยวกับคำถามสำคัญสองสามข้อในโพสต์ดั้งเดิมของฉัน

ห้องสมุดของเรามุ่งมั่นในระดับใด Haskell Wiki ดูเหมือนจะบ่งบอกอย่างชัดเจนว่าต้องการ GUI ไลบรารีระดับกลาง อย่างไรก็ตามยินดีต้อนรับสู่ห้องสมุดระดับสูง

เราตัดสินใจที่จะตั้งค่าไลบรารี่ระดับกลางตามคำแนะนำของ Haskell Wiki

ห้องสมุดของเราควรสร้างอะไร (เช่น OpenGL)

เราเลือก OpenGL เนื่องจากความนิยมและการสนับสนุน เราจะใช้ทั้งโครงการGLUT หรือ GLFW Haskell wrapper เป็นฐาน

ห้องสมุด GUI ใดที่มีอยู่ที่คุณต้องการดูห้องสมุดของเราเลียนแบบ (ถ้ามี) และเพราะอะไร (เช่น PyGame, Morphic, Swing ฯลฯ )

เราเลือก Morphic หลังจากการถกเถียงอย่างมากระหว่างมันกับ PyGame เราไม่ได้พิจารณา QT หรือ GTK เนื่องจากทั้งสองมีหนึ่งหรือมากกว่าHaskell โครงการห้องสมุดในการพัฒนางาน

ชื่ออะไรที่ฉลาดที่คุณจะให้ห้องสมุดจินตนาการนี้ (เช่น HOT - ชุดเครื่องมือ OpenGL ของ Haskell; HAWT - ชุดเครื่องมือขั้นสูงสำหรับหน้าต่าง Haskell)

นี่คือการอภิปราย เราได้ตัดสินใจที่จะไม่พิจารณา HAWT และกำลังพิจารณาที่:

  • HOT - ชุดเครื่องมือ OpenGL ของ Haskell
  • HOG - Haskell Opengl Graphics (ทำให้ HOG ของโครงการของคุณขับเคลื่อน!)
  • Schön
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.