कंसोल-आधारित से GUI- आधारित प्रोग्रामिंग पर चलते समय प्रमुख अंतर क्या हैं?


18

मैंने कई अन्य लोगों की तरह, कंसोल-आधारित (टर्मिनल में, Playstation नहीं) प्रोग्रामिंग के साथ शुरू किया। लेकिन जल्द या बाद में, किसी को GUI-आधारित प्रोग्रामिंग पर छूने की जरूरत है, चाहे आप चाहें या नहीं। यह संक्रमण कई परिवर्तनों को रखता है कि आपको दृश्यपटल के बारे में कैसे सोचना चाहिए (और संभवतः बैकएंड भी)।

तो, कंसोल-आधारित प्रोग्रामिंग से GUI- आधारित प्रोग्रामिंग पर चलते समय प्रमुख अंतर क्या हैं?


1
आप टर्मिनल में कंसोल का मतलब है, है ना?
PlayStation

@JBRWilkinson: हाँ। मैं प्रश्न स्पष्ट करूँगा।
गाब्लिन

जवाबों:


18

सबसे बड़ा अंतर UI का डिज़ाइन है। एक अच्छा GUI किसी एप्लिकेशन को बना या तोड़ सकता है। मैक प्रशंसक औसत मैक ओएस एक्स ऐप के सुंदर रूप से डिज़ाइन किए गए जीयूआई पर ध्यान आकर्षित करेंगे और उन्हें एक बिंदु मिला है, लेकिन यह एक प्रौद्योगिकी मुद्दा नहीं है - यह एक डिजाइन / लोकाचार / प्रयोज्य मुद्दा है।

तकनीकी मुद्दों के लिए, किसी विशेष क्रम में नहीं:

  1. उपयोगकर्ता किसी भी समय किसी भी क्रम में कुछ भी कर सकते हैं, कंसोल प्रोग्राम के विपरीत जिसमें आप या तो इनपुट के लिए पूछ रहे हैं या उन्हें आउटपुट बता रहे हैं। जब तक आप वर्कफ़्लो विज़ार्ड-स्टाइल लागू नहीं करते, आप यह नहीं मान सकते कि वे आपके द्वारा अपेक्षित आदेश का पालन करेंगे।

  2. जैसा कि पहले ही उल्लेख किया गया है, ईवेंट इसमें एक बड़ी भूमिका निभाते हैं, और आप अंतिम ईवेंट की सेवा करते समय कई ईवेंट प्राप्त कर सकते हैं, इसलिए आप वास्तव में 'वर्तमान ईवेंट' के आधार पर अपने राज्य का निर्माण नहीं कर सकते। विभिन्न घटनाओं में संदर्भ बनाए रखने के लिए क्लोजर या एक समान तंत्र का उपयोग करें। एक कंसोल ऐप में, आपका FSM आमतौर पर 'प्राप्त इनपुट, प्रोसेस इनपुट, अपडेट आउटपुट' लूप के चारों ओर स्व-निहित होता है। जीयूआई प्रोग्रामिंग में एक ही तरह की संरचना नहीं है - 'मुख्य' एक फिर से प्रवेश करने वाली घटना-चालित चीज़ है, अक्सर एक गिन्नॉर्मस स्विच () स्टेटमेंट।

  3. आपको अलग-अलग स्क्रीन साइज़ / रिज़ॉल्यूशन पर विचार करने की ज़रूरत है और GUI को 800x600 तक के यूज़र्स मॉनिटर पर अधिकतम आकार देने की अनुमति देनी चाहिए।

  4. आपको विभिन्न इनपुट रणनीतियों पर विचार करने की आवश्यकता है - माउस, कीबोर्ड, टच, आदि। कुछ प्रौद्योगिकियां मुफ्त (माउस-व्हील स्क्रॉलिंग) के लिए आती हैं, अन्य को कुछ एकीकरण कार्य (इंक) की आवश्यकता होती है।

  5. पहुँच क्षमता - एक GUI कम सक्षम उपयोगकर्ताओं के लिए अधिक उपयुक्त है जिनके पास दृष्टि, श्रवण, मोटर कौशल या संज्ञानात्मक कौशल हैं। कंसोल पर एक गुप्त त्रुटि संदेश की तुलना में एक 'डिंग' शोर अच्छा और स्पष्ट है।

  6. अंतर्राष्ट्रीयकरण - मैं आपके कंसोल ऐप को केवल यूएस / एएनएसआई मान रहा हूं, लेकिन जब आप जीयूआई में आते हैं, तो आपके पास भाषा / संसाधन पैकेज हो सकते हैं, जो कोडिंग में कोई बदलाव नहीं करने के साथ अन्य भाषाओं और क्षेत्रों को लक्षित कर सकते हैं, यदि आप इसके लिए तैयार हैं शुरू। उदाहरण के लिए, कोड में कोई हार्ड-कोडेड भाषा नहीं है - संसाधन लुकअप के रूप में सब कुछ।

  7. कार्यान्वयन तकनीक के लिए आपके पास बहुत अधिक विकल्प हैं - वेब-आधारित, विभिन्न GUI किट, फ्लैश / WPF, आदि।

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

  9. ग्राफिक्स। कंसोल एप्लिकेशन कभी-कभी आरेख के लिए ASCII कला का उपयोग करते हैं, लेकिन एक GUI ऐप आपको पूर्ण ग्राफ़िकल क्षमता देता है। लवली आर्ट बहुत बड़ा बदलाव ला सकती है।


1
जब मैं आपकी बात को सामान्य रूप से देखता हूं, तो मैं यहां एक झूठे द्वंद्ववाद से असहमत हूं। मेरा मतलब है, आपको कंसोल एप्स के लिए भी यूआई पर ध्यान देने की जरूरत है, आपके पास इवेंट-आधारित कंसोल एप्स हो सकते हैं, आपके पास एक टर्मिनल एप्स हो सकते हैं जो वास्तव में जीयूआई प्रदर्शित कर रहे हैं न कि केवल रैखिक पाठ और आकार बदलने पर ध्यान देने की जरूरत है (और एक माउस के साथ काम कर सकते हैं), आप सुलभ क्ली एप्स कर सकते हैं, आप क्ली एप्स का अंतर्राष्ट्रीयकरण उसी तरह कर सकते हैं जैसे कि गुई वाले, आप रंगों और चेतन चीजों का उपयोग कर सकते हैं। मैं आपको बताता हूं कि 7 और 9 अधिक सीमित हैं।
हेयर स्टाइल

17

मेरे लिए यह इवेंट-संचालित प्रोग्रामिंग के लिए उपयोग किया जाएगा। यह अभी भी कंसोल-आधारित सॉफ़्टवेयर पर लागू हो सकता है, लेकिन मुझे इसका ज्यादातर GUI के साथ उपयोग होता है। एक बार जब आप इसे समझ लेते हैं, तो यह एक बहुत शक्तिशाली उपकरण है।


इस बात से सहमत। आपको जो सीखने की ज़रूरत है वह यह है कि आपका कोड पूरी तरह से नियंत्रण में नहीं है कि उपयोगकर्ता आगे क्या कर सकता है।

संवादों के स्वागत के साथ।
मॉर्गन हेरलॉकर

6

मैं कहूंगा कि मल्टी-थ्रेडिंग और यह यूआई के साथ निहित है (यदि आप गैर अवरुद्ध यूआई करना चाहते हैं)


+1, जैसा कि थ्रेडिंग सामना करने के लिए वास्तव में थकाऊ तकनीकी मुद्दा है।
क्लेमेंट हेरमैन

2

यूआई पर नियंत्रण के प्रवाह के लिए विचार और उपयोगकर्ता इनपुट की मान्यता बहुत महत्वपूर्ण हो जाती है।


2

कंसोल प्रोग्राम को समय के साथ परिष्कृत किया जाता है जबकि GUI प्रोग्राम खराब हो जाता है।


1

आमतौर पर मैं कंसोल-आधारित कार्यक्रम को मॉडल के रूप में सोचता हूं, जबकि जीयूआई-आधारित कार्यक्रम मॉडल को एम्बेड करने वाला दृश्य / नियंत्रक है।


1

मेरे लिए एक अच्छा GUI डिजाइन करना हमेशा से अधिक चुनौतीपूर्ण रहा है कि इसे लागू करने का तकनीकी विवरण।

यह कहना आसान है "मैक की तरह इसे सरल और स्पष्ट बनाएं"। इसे ऐसा बनाना अविश्वसनीय रूप से कठिन है; हमेशा बहुत सारे विवरण होते हैं जो वहां उपलब्ध होने चाहिए, लेकिन साथ ही, उन्हें दृष्टि से बाहर होना चाहिए।

सरलता http://stuffthathappens.com/blog/wp-content/uploads/2008/03/simplicity/png


1
Google Wave या iMovie पर एक नज़र डालें और आप जानते हैं कि ये चित्र भ्रामक हैं।
इवो ​​फ्लिप

0

कुछ (कई?) भाषाओं में मेरे लिए मुख्य अंतर यह है कि अब, आपको एक पुस्तकालय चुनना होगा। आपके एप्लिकेशन के बैकबोन (और बहुत कुछ, सभी भाग्य के साथ) प्रोग्रामिंग को "कंसोल" करना आपकी भाषा के मानक संसाधनों का उपयोग करता है। एक जीयूआई जोड़ सकते हैं (उम्मीद है) अभी भी मानक मुहावरों में आपका "मॉडल" है, लेकिन अब एक बड़ा हिस्सा, "दृश्य" कुछ बाहरी पुस्तकालय पर निर्भर करेगा (और, अनजाने में, आप इसे "हमेशा के लिए" से चिपका देंगे)। इस लाइब्रेरी का चुनाव एक शुरुआती के लिए एक बड़ी जिम्मेदारी है जैसा कि आपका (मेरा) मामला है (अतिरिक्त अधिगम-चरण वक्र का उल्लेख नहीं करना)।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.