हास्केल में एक GUI पुस्तकालय के लिए सुझाव [बंद]


14

जैसा कि हास्केल विकी खुद कहता है :

हास्केल के लिए जीयूआई पुस्तकालयों की एक बड़ी संख्या है। दुर्भाग्य से कोई मानक नहीं है और सभी अधूरे हैं। सामान्य तौर पर, निम्न-स्तर के लिबास अच्छे होते हैं, लेकिन वे निम्न स्तर के होते हैं। उच्च स्तर के अमूर्त काफी प्रयोगात्मक हैं। एक समर्थित मध्यम-स्तरीय GUI पुस्तकालय की आवश्यकता है।

मेरे कॉलेज के एक प्रोफेसर ने मुझसे और तीन अन्य कंप्यूटर साइंस की बड़ी कंपनियों से हास्केल के लिए GUI लाइब्रेरी में काम करने पर विचार करने के लिए कहा। परियोजना के लिए उनका प्रारंभिक विचार ओपनगेट के शीर्ष पर एक परत लिखना था जो स्मॉलटाक में मिली मॉर्फिक लाइब्रेरी की नकल करता था ; हालाँकि, यह सिर्फ एक सुझाव है और अन्य प्रणाली निश्चित रूप से विचार के लायक है।

यह हमें वास्तविक, बहु-भाग प्रश्न पर लाता है।

  1. हमारे पुस्तकालय को किस स्तर के अमूर्त प्रयास करने चाहिए? हास्केल विकी दृढ़ता से इंगित करता है कि मध्यम स्तर की जीयूआई लाइब्रेरी को प्राथमिकता दी जाएगी; हालाँकि, एक उच्च-स्तरीय पुस्तकालय का अभी भी स्वागत किया जाएगा।
  2. क्या हमारे पुस्तकालय का निर्माण किया जाना चाहिए? (पूर्व। OpenGL)
  3. क्या मौजूदा GUI पुस्तकालय आप हमारे पुस्तकालय की नकल करना चाहते हैं (यदि कोई हो) और क्यों? (पूर्व। PyGame, Morphic, Swing, आदि)
  4. आप हमारी लाइब्रेरी को लागू करने या उससे बचने के लिए क्या सुविधाएँ देखना चाहेंगे? उदाहरण के लिए, गनोम के अच्छे लोगों का तर्क हो सकता है कि न्यूनतम बटन अनावश्यक है।
  5. क्या आपके पास कोई सामान्य सुझाव है?
  6. इस काल्पनिक पुस्तकालय को आप क्या नाम देंगे? (Ex। HOT - हास्केल ओपेंगल टूलकिट; HAWT - हास्केल एडवांस्ड विंडविंग टूलकिट)

2
मिमिक क्यूटी या जीटीके, वे अद्भुत हैं
एंटो

क्या आपने पहले ही haskell.org/haskellwiki/Reactive देखा है ?
तर्क

जवाबों:


7

मैं एक पुस्तकालय देखना चाहूंगा जो हास्केल के साथ उपयोग करने के लिए सुरुचिपूर्ण और सरल है। बाकी तकनीकी विवरण हैं जिन्हें इस उद्देश्य की पूर्ति करनी चाहिए, इसे फिर से परिभाषित नहीं करना चाहिए। इस प्रकार मेरी $ 0.02।

मौजूदा टूलकिट पर इसे आधार न करें , जैसे Qt या GTK या FLTK या ... - यह आपको गंभीर रूप से सीमित कर देगा और संभवतः आपको लाभ की तुलना में कहीं अधिक दर्द देगा। PyQt, erm है, मज़ेदार और पर्याप्त रूप से वंचित है, और Python और C ++ दोनों ही बेहद लचीली अनिवार्य OO भाषाएँ हैं। हास्केल के मामले में, चीजें बहुत अधिक कठिन होंगी, मुझे लगता है।

केवल सबसे बुनियादी ग्राफिक आदिम पर निर्भर करें , फिर उस पर निर्माण करें। OpenGL अच्छा है, लेकिन यहां तक ​​कि कुछ सरल (2D-only, उदाहरण के लिए SDL) भी अच्छा करेगा। यह आपको अधिकतम लचीलापन और अधिकतम पोर्टेबिलिटी देगा। स्मॉलटाक / मॉर्फिक, जावा / स्विंग, टीसीएल / टीके देखें।

इसे वैचारिक रूप से छोटा बनाएं। GUI कठिन हैं क्योंकि वे चढ़ाई करने के लिए किसी और एवरेस्ट को जोड़ने की आवश्यकता नहीं है। हास्केल, मुझे उम्मीद है, इस चीज़ को कॉम्पैक्ट और मॉड्यूलर बनाने में मदद मिल सकती है।

बोनस अंक के लिए, इसे स्किनेबल बनाएं। न्यूनतम के रूप में, अपने संपूर्ण नियंत्रण के रंग प्रदर्शन को चित्रित करने के लिए सिस्टम रंग (और केवल सिस्टम रंग) को लागू करने का तरीका जानें, ताकि इस टूलकिट के साथ बनाया गया ऐप एक आंखों का चश्मा न हो। अधिकतम के रूप में, जानिए कि Win32 / Gtk / Qt / कोको को कैसे अपने नियंत्रण में लाएँ ताकि वे पूरी तरह से देशी दिखें। बुनियादी स्किनबिलिटी सरल और तार्किक है; पूर्ण देशी रूप प्राप्त करना काफी कठिन है।

इसके अलावा, कृपया रूटलेस चलाएं और विंडो प्रबंधन को अंतर्निहित ग्राफिक सिस्टम - एक्स, विंडोज, जो भी हो, पर छोड़ दें । ऐसा नहीं करने पर उपयोगकर्ताओं की पवित्रता और बाधा को अपनाने में भारी चुनौती होगी।

हमेशा की तरह, 'सरल चीजों को सरल और जटिल चीजों को संभव बनाएं' + 'ट्यूरिंग टारपीट से बचें जहां सब कुछ संभव है लेकिन ब्याज की कोई चीज सरल नहीं है' + 'जितना संभव हो उतना सरल लेकिन सरल नहीं है।'

नाम कम से कम महत्वपूर्ण बात है। सभी लोकप्रिय GUI टूलकिट में से, केवल Qt का किसी न किसी तरह चतुर नाम है। कई लोकप्रिय परियोजनाओं ने नाम बदल दिए, यहां तक ​​कि उड़ान (फ़ायरफ़ॉक्स, नी फायरबर्ड) में भी। नाम के लिए कुछ है, और आप इसे नाम देंगे।

सौभाग्य!


1

इसमें शामिल सभी छात्रों के बीच बात करने और रुचि पैदा करने के लिए इस प्रश्न को पर्याप्त समय देने के बाद, मुझे विश्वास है कि हम अपने मूल पोस्ट में कुछ प्रमुख प्रश्नों पर आम सहमति के लिए आए हैं।

हमारे पुस्तकालय को किस स्तर के अमूर्त प्रयास करने चाहिए? हास्केल विकी दृढ़ता से इंगित करता है कि मध्यम स्तर की जीयूआई लाइब्रेरी को प्राथमिकता दी जाएगी; हालाँकि, एक उच्च-स्तरीय पुस्तकालय का अभी भी स्वागत किया जाएगा।

हमने हास्केल विकी के सुझाव के अनुसार एक मध्यम स्तर के पुस्तकालय के लिए लक्ष्य तय किया।

क्या हमारे पुस्तकालय का निर्माण किया जाना चाहिए? (पूर्व। OpenGL)

हमने अपनी लोकप्रियता और समर्थन के कारण ओपनजीएल को चुना। हम या तो GLUT या GLFW हास्केल रैपर परियोजनाओं को आधार के रूप में उपयोग करेंगे।

क्या मौजूदा GUI पुस्तकालय आप हमारे पुस्तकालय की नकल करना चाहते हैं (यदि कोई हो) और क्यों? (पूर्व। PyGame, Morphic, Swing, आदि)

हमने इसके और PyGame के बीच काफी बहस के बाद मॉर्फिक को चुना। हम क्यूटी या जीटीके पर विचार नहीं करते थे क्योंकि दोनों के पास पहले से ही सक्रिय विकास में एक या एक से अधिक हास्केल पुस्तकालय परियोजनाएं हैं

इस काल्पनिक पुस्तकालय को आप क्या नाम देंगे? (Ex। HOT - हास्केल ओपेंगल टूलकिट; HAWT - हास्केल एडवांस्ड विंडविंग टूलकिट)

यह बहस के लिए अभी भी जारी है। हमने HAWT पर विचार नहीं करने का फैसला किया है और इसके बजाय इसे देख रहे हैं:

  • हॉट - हास्केल ओपेंगल टूलकिट
  • HOG - हास्केल ओपेंगल ग्राफिक्स (अपनी परियोजना बनाएं HOG संचालित!)
  • Schön
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.