लोचदार टैबस्टॉप की कमियां क्या हैं? [बन्द है]


83

यहां देखें: टैब बनाम रिक्त स्थान पर एक विशिष्ट पवित्र युद्ध

अब यहां देखें: लोचदार टैबस्टॉप । सभी समस्याओं को हल किया, और बहुत उपयोगी नए व्यवहारों का एक गुच्छा जोड़ा।

लोचदार टैबस्टॉप

क्या लोचदार टैब भी उस टैब बनाम रिक्त स्थान चर्चा में उल्लिखित हैं? क्यों नहीं? क्या लोचदार टैबस्टॉप विचार में इतनी कमियां हैं कि किसी ने उन्हें लोकप्रिय संपादक में लागू नहीं किया है?

संपादित करें : मैं "क्यों वे उल्लेख नहीं कर रहे हैं" पर बहुत अधिक जोर देने के लिए माफी माँगता हूँ। यह वास्तव में मैं क्या इरादा नहीं था; यह सवाल संभवतः विषय से भी दूर है। मेरा वास्तव में क्या मतलब है, इसमें सबसे बड़ी कमियां क्या हैं जो स्पष्ट रूप से लाभकारी विचार को व्यापक रूप से अपनाने से रोकती हैं? (एक आदर्श दुनिया में जहां सब कुछ पहले से ही इसका समर्थन करता है)

(पता चलता है कि लोचदार टैबस्टॉप के विज़ुअल स्टूडियो कार्यान्वयन के लिए Microsoft कनेक्ट पर पहले से ही एक अनुरोध है , और ग्रहण में एक अनुरोध भी है। इसके अलावा अन्य संपादकों के बारे में एक सवाल है जो लोचदार टैबस्टॉप को लागू करते हैं )



11
उन्हें "टैब बनाम रिक्त स्थान" चर्चा में कभी उल्लेख नहीं किया गया है क्योंकि इन चीजों का उपयोग करने के लिए एक कामकाजी प्रोग्रामर के लिए लगभग कोई रास्ता नहीं है। हो सकता है कि यदि आपके पास एक ग्रहण, वीएस, जीवीएम और एमएसीएस कार्यान्वयन हो, तो यह बदल सकता है।
पॉल टॉम्बलिन

2
मुझे वास्तव में यह विचार पसंद है, लेकिन यह केवल तब होता है जब आप इसके साथ एक महीने तक रहते हैं या इसलिए कि आप वास्तव में जानते हैं कि नुकसान क्या हैं। सब कुछ की तरह, कुछ मामलों की गारंटी दी जाती है जहां यह उन चीजों को करता है जिनकी आपको उम्मीद नहीं होती ...
क्रिस बर्ट-ब्राउन

3
@ क्रिसबर्ट-ब्राउन यह हमेशा एक जोखिम है, हाँ। IntelliSense के पास इसके नुकसान भी हैं, जैसे कि जब आप इसे नहीं चाहते थे तो टेक्स्ट को सब्स्क्राइब करना। कुल मिलाकर, हालांकि, C # में IntelliSense एक बड़ी वसा जीत है।
रोमन स्टार्कोव

4
मैं इसे नोटपैड ++ में चाहता हूं ... मुझे अब यह चाहिए
बेन ब्रोका

जवाबों:


32

पवित्र युद्ध सब्जेक्टिव होते हैं

निक की इलास्टिक टैबस्टॉप एक अद्भुत अवधारणा है जो बहुत से लोगों को एक व्यावहारिक समाधान पर सहमत होने में मदद कर सकती है, हालांकि मुझे अत्यधिक संदेह है कि यह पूरी तरह से इस पवित्र युद्ध को समाप्त करेगा: यह है, आखिरकार, स्वाद का मामला भी है और कई प्रोग्रामर एक कदम नहीं उठाएंगे इस मामले पर अपनी स्थिति से इंच, समझौता की कीमत पर भी। तो यह एक पहला कारण होगा।

उदाहरण के लिए, "रिक्त स्थान" पक्ष के बहुत से लोग अभी भी इसे नापसंद करेंगे क्योंकि इसे आपके सॉफ्टवेयर में एक उत्कृष्ट प्रतिपादन के लिए तर्क के अतिरिक्त टुकड़े की आवश्यकता होती है (उदाहरण के लिए आपके SCM के वेबव्यू में एक बदलाव देखने वाला)।

कार्यान्वयन के लिए मुद्दें

लेकिन सबसे स्पष्ट कारण सिर्फ इसके प्रवेश की तकनीकी बाधा है : यह आईडीई और पाठ संपादकों में कई वर्षों (यदि दशकों नहीं) के लिए लागू किया गया है, से एक मौलिक रूप से अलग अवधारणा है। इसके लिए उनमें से कुछ को फिर से लिखने की आवश्यकता होती है, जो एक अलग तरह के फ़िक्शन में लाइनों को संसाधित करने के लिए होता है, जो पुराने और बड़े सिस्टम के लिए मुश्किल बनाता है जो उनके लाइन प्रोसेसिंग कोड में गहरे और तंग युग्मन के पीड़ित होने की अधिक संभावना रखते हैं। हालाँकि, यह बहुत आसान है जब आप स्क्रैच से शुरू करते हैं ( निक के डेमो के बारे में या गो के टैबराइटर पैकेज के बारे में सोचें )।

एक व्यक्तिगत किस्से के लिए, मुझे याद है कि लेखक से कुछ समय पहले पूछ रहा था कि क्या दृष्टि में कोई इमैक सपोर्ट है, और इस विशेष मामले में उन्होंने इसका उल्लेख तुच्छ नहीं होने का कारण बताया। उन्होंने इस सुविधा को लागू करने और इसे जन-जन तक पहुंचाने में मदद के लिए समुदाय से मदद मांगी।

क्या हम पर्याप्त देखभाल करते हैं?

एक तीसरा कारण यह है कि कुछ डेवलपर्स ऐसे नहीं हैं जो इस मामले को लटकाते हैं और वास्तव में इतनी परवाह नहीं करते हैं कि वे प्रयास का समर्थन करने के लिए अतिरिक्त मील जाएंगे। ज्यादातर मामलों में, रिक्त स्थान-बनाम-टैब संघर्ष एक व्यावसायिक अवरोधक नहीं है, इसलिए इस मुद्दे के पीछे बहुत अधिक ड्राइव नहीं है।

यदि आप इसे चाहते हैं, तो आपको इसके लिए लड़ना होगा। जो ओपन-सोर्स सॉफ्टवेयर में उल्लेखनीय है। और अगर आप इनमें से काफी बदल जाते हैं, तो बंद-स्रोत वाले को अपने कुछ उपयोगकर्ता नाम खोने का जोखिम उठाना होगा, अगर यह कभी इतना छोटा हिस्सा है।

इसलिए, यदि आप इसे चाहते हैं, तो निक को हाथ दें।


(बंद विषय) मुझे अक्सर आश्चर्य होता है कि अन्य "यह कितना अच्छा है, लेकिन बहुत मामूली है" इस तरह की विशेषताएं कभी भी विज़ुअल स्टूडियो जैसे उत्पादों में बनाती हैं। ऐसा लगता है कि टीम में किसी को सिर्फ व्यक्तिगत कारणों से इसे लागू करने का समय मिला है। उदाहरण के लिए, दृश्य स्टूडियो में एक समय में कई लाइनों में टाइप करने के बारे में सोचें ; यह दसियों हज़ार लोगों की तरह नहीं है, जिन्होंने इसके लिए कहा है, लेकिन मुझे यह पसंद है।
रोमन स्टार्कोव

3
@romkyns: कई चीजों के लिए, यह गेट्स पर चिल्लाते हुए या तो एक शांत अंदरूनी या एक हजार आवाजें लेता है।
हेयर स्टाइल

35

कई बार मुझे अपने शब्दों के स्थान को नियंत्रित करने वाले कुछ छिपे हुए स्वचालित नियम के बिना दस्तावेज़ को प्राप्त करने के लिए शब्द प्रोसेसर के साथ लड़ना पड़ा है। मैं यह जानने की कोशिश नहीं करना चाहता कि संपादक उन शब्दों को रखने पर जोर क्यों दे रहा है।


11
न ही मैं इस भावना के साथ पूरी तरह से सहानुभूति रखता हूं, क्योंकि इस तरह के नियम मुझे भी निराश करते हैं। लेकिन यह दो तरह से अलग है। एक: अभी टैबस्टॉप की तरह, यदि आप नहीं चाहते हैं तो आपको उनका उपयोग करने की आवश्यकता नहीं है। यदि आप उनका उपयोग करते हैं तो आप अपने सहकर्मियों के पाठ को अकेला छोड़ सकते हैं। दो: लोचदार टैबस्टॉप में छिपे हुए नियम नहीं हैं, लेकिन स्पष्ट रूप से स्पष्ट हैं। व्यवहार पूरी तरह से स्वाभाविक है - शायद पारंपरिक टैबस्टॉप से ​​भी अधिक प्राकृतिक, जो कुछ मनमाने ढंग से होता है, आमतौर पर अप्रासंगिक, पाठ के भीतर स्थिति। यही कारण है कि कोई भी अब इंडेंटेशन के अलावा किसी भी चीज के लिए टैबस्टॉप का उपयोग नहीं करता है।
टिमवी

10
@ टिमीवी: प्रश्न कमियां सूचीबद्ध करने का था। मैंने किया।
mhoran_psprep

14
यह जीआईएफ से स्पष्ट नहीं हो सकता है, लेकिन इसमें शामिल एकमात्र अनुमान यह है कि जब आप "टीएबी" दबाते हैं, तो जो कुछ भी आता है वह ठीक से लंबवत संरेखित होगा। यह वर्ड प्रोसेसर की तरह कुछ भी नहीं है। बस मेरे द्वारा पोस्ट किए गए लिंक पर वास्तविक इंटरैक्टिव डेमो का प्रयास करें, और आप देखेंगे कि यह कितना स्वाभाविक है।
रोमन स्टार्कोव

3
@mhoran_psprep: काफी अच्छा है, मैं आपके इनपुट की सराहना करता हूं। मुझे लगता है कि हम प्रश्न की विभिन्न व्याख्याओं को देख रहे थे। आप फीचर का उपयोग करके अपने आप में कमियां सूचीबद्ध कर रहे हैं, जबकि मुझे लगा कि यह फीचर को पेश करने की कमियां हैं (यानी इसे उपलब्ध कराना और अनिवार्य नहीं )।
टिवी

27

यह पहली बार है जब मैंने उन लोगों के बारे में सुना है। सुनिश्चित नहीं हैं कि वे एक अच्छे विचार हैं, लेकिन वे बहुत कम उपयोग करते हैं क्योंकि हमारे पास उपकरण (जैसे इंडेंट) हैं जो स्वचालित रूप से पहले से ही कोड को प्रारूपित करते हैं।

क्या होता है जब मैं आपके चतुर लोचदार टैब को vim में खोलता हूं और इसे संपादित करता हूं? क्या टैब स्वचालित रूप से साफ हो जाता है या क्या आप गड़बड़ से बचे हैं?

मुख्य कमियां, जैसा कि मैं देख रहा हूं कि वे संभवतः विवर्तन, संस्करण नियंत्रण, और संपादकों के साथ संगत नहीं हैं जो उनका समर्थन नहीं करते हैं। हो सकता है कि उन्हें समर्थन देने के लिए बहुत सारे कोड संशोधन हों और "कोड को स्वरूपित करने के लिए एक और टैब चीज़" की तुलना में अधिक महत्वपूर्ण चीजें हों। आखिरकार, हम सभी का उपयोग कर सकते हैं indentजो उपरोक्त सभी करता है यदि स्मृति कार्य करती है।


9
क्या पिछड़ा-सोच वाला रवैया। चलो कोई प्रगति नहीं है क्योंकि लोगों के पसंदीदा पुराने, पुराने उपकरण अभी तक सामना नहीं कर सकते हैं ! (विडंबना जाहिर है, जा रहा है कि इन उपकरणों (जैसे vim के रूप में) खुला स्रोत है, इसलिए यदि यह वास्तव में आप के लिए महत्वपूर्ण थे हैं, तो आप कर सकता है (और शायद चाहिए ) यह करने के लिए लोचदार tabstop समर्थन जोड़ने)
Timwi

14
@ टिमीवी: आप जो बिंदु बना रहे थे, उसे आप बहुत याद कर रहे हैं। क्या होता है जब आपकी कोड फ़ाइल को किसी ऐसी चीज से पार्स किया जाता है जो लोचदार टैबस्टॉप के बारे में नहीं जानता है? क्या आप गड़बड़ करते हैं या वे सामना कर सकते हैं? संस्करण नियंत्रण और भिन्नता के बारे में क्या? बस इच्छा है कि सभी उपकरण $ सुविधा का समर्थन करते हैं, भले ही वे उपकरण खुले स्रोत हों।
सरदारथियन

14
@ टिमवी: आप मानते हैं कि हर कोई लोचदार टैबस्टॉप को उतना ही भयानक पाता है जितना आपको लगता है कि वे हैं। यह सच नहीं हो सकता है।
सरदारथियन

7
@ सरदारथियन सही है। क्या होता है जब मुझे अपने * निक्स सर्वर को रिमोट में रखना पड़ता है जिसमें कोई विन्डो सिस्टम नहीं होता है और कुछ कोड की जांच वीम / एमएसीएस / पिको / जो भी हो, करने की आवश्यकता होती है? यदि कोई तंत्र है तो यह पठनीय है कि यह ठीक होगा ... अन्यथा यह एक बुरा सपना होगा। मुझे लोचदार टैब का लाभ दिखाई नहीं दे रहा है जो वैसे भी फायदेमंद है। मैं पहले से ही अपने कोड को यह देखने के लिए स्वचालित कर सकता हूं कि यह मेरे द्वारा उपयोग किए जाने वाले आईडीई में कैसे होना चाहिए।
रिग

7
संस्करण नियंत्रण बिंदु एक अच्छा है - मुझे नहीं लगता कि लोग एक संपादक की सराहना करने जा रहे हैं जो चुपचाप कोड में टिप्पणियों के प्लेसमेंट / प्रारूप को बदलना शुरू कर देते हैं, कोड से दूर मनमाने ढंग से कोड को संशोधित कर रहे हैं (ओपी के एनिमेटेड में मजेंटा अनुभाग देखें) gif)। यह खेलने के लिए एक संदर्भ कार्यान्वयन के लिए उपयोगी होगा, लेकिन जो मैं अब तक देखता हूं वह उल्लेखनीय नहीं है - emacs पहले से ही बहुत कुछ करता है, बस एक जोड़े के साथ अतिरिक्त कीस्ट्रोक्स (जो यकीनन एक अच्छी बात है)।
mcmcc

13

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

उसके बाद, आप निश्चित रूप से फ़ंक्शन तर्कों (और मापदंडों) को संरेखित करने और असाइनमेंट की लंबी सूचियों का उपयोग कर सकते हैं।

लेकिन पूर्व के लिए मैं केवल एक अतिरिक्त स्तर तक सभी तर्कों पर जोर देता हूं और यह मेरे साथ पूरी तरह से ठीक काम करता है:

void foo(
    int x,
    int y,
    string z
)

और मुझे यह बदलने की कोई आवश्यकता नहीं दिख रही है।

और असाइनमेंट संरेखित करने के लिए, मैं ऐसा नहीं करता। मैं असाइनमेंट के आसपास सिंगल स्पेस देता हूं, बस। मैं बहुत सारे असाइनमेंट को एक साथ नहीं करने देता हूं, इसलिए शायद ही कोई पठनीयता का मामला हो।

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

यदि कोई संपादक उन्हें लागू करता है, तो मैं अभी भी उनका उपयोग नहीं करूंगा।


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

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

1
@romkyns ने कहा कि, ये समस्याएं हल करने योग्य हैं (या शायद हल करने के लिए, प्रोग्रामिंग के लिए आनुपातिक फ़ॉन्ट के साथ)। लेकिन मैं अभी भी वास्तव में आवश्यकता को नहीं देखता हूं।
कोनराड रुडोल्फ

13

एक दोष यह है कि यह काम नहीं करता है यदि आप लाइनों के एक समूह पर संरेखण चाहते हैं और फिर अगले पर इंडेंटेशन करते हैं, क्योंकि यह समूह आसन्न रेखाओं के टैब को रोकता है।

def foo( bar,
         xyzzy ):
         wibble() # Too much indentation

मैं क्या चाहता था:

def foo( bar,
         xyzzy ):
    wibble()

घुंघराले-ब्रेस भाषाओं के लिए यह एक समस्या से कम हो सकता है, जैसा कि आप आम तौर पर अपनी खुद की लाइन (जैसे एनीमेशन) पर शुरुआती ब्रेस लगाकर इसे हल कर सकते हैं, लेकिन व्हाट्सएप-संवेदी भाषाओं के लिए, यह जल्दी से एक दर्द बन जाता है, और आप रिक्त स्थान का उपयोग करने के लिए वापस गिरते हैं।


माना। निक का कार्यान्वयन पायथन जैसी भाषाओं के लिए बहुत अच्छी तरह से काम नहीं करता है।
रोमन स्टार्कोव

3
यह काम क्यों नहीं करेगा? यह एक मौलिक सीमा नहीं है, एल्गोरिथ्म को बस भाषा-जागरूक होना चाहिए। लेकिन कुछ हद तक यह आज भी सच है, उदाहरण के लिए विम भाषा के आधार पर विभिन्न इंडेंटेशन नियमों को परिभाषित करता है। यह पायथन इंडेंटेशन को आसानी से समायोजित कर सकता है।
कोनराड रुडोल्फ

1
@KonradRudolph नहीं, वे नहीं कर सकते। लोचदार टैबस्टॉप का आरेख एक साथ पाठ के स्वचालित रूप से इंडेंट / अनइंडेंट समूहों की क्षमता है। एक सरल उदाहरण एक "अगर" कथन का अंत है: आप कोशिश करते हैं और संयुक्त राष्ट्र से अप्रत्यक्ष हैं क्योंकि आप बयान से बाहर निकल रहे हैं, लेकिन "स्मार्ट" लोचदार टैबटॉप्स तय करते हैं कि आप लाइन या दो से ऊपर भी इंडेंट करना चाहते हैं, इत्यादि। और आगे ... और अगर आपको स्पष्ट रूप से एक साथ समूह पाठ करना है, तो - बिंदु क्या है? यह अधिक काम है कि खुद को ठीक करने की तुलना में ...
इज़काता

1
@Izkata Unindenting मैन्युअल रूप से (चाहिए) बस वर्तमान समूह को समाप्त करेगी। आप लोचदार टैब को मैन्युअल रूप से रोकने के साथ इंडेंटेशन को कभी क्यों नियंत्रित करेंगे? आप ऐसा नहीं करेंगे, इसलिए एल्गोरिथ्म जानता है कि जब आप इसे करते हैं, तो यह ब्लॉक को समाप्त करने के लिए है, न कि उपरोक्त ब्लॉक को इंडेंट करने के लिए।
कोनराड रुडोल्फ

1
ओह, अच्छी बात है। हम्म ... शायद आप दलीलों को दोहरा सकते हैं? तो फिर wibble()केवल एक ही इंडेंटेशन होगा और इसलिए फ़ंक्शन तर्कों के साथ गठबंधन नहीं किया जाएगा?
Ajedi32

12

हम केवल ऊर्ध्वाधर टैब चरित्र (VT, ASCII 11) को लोचदार टैबस्टॉप के उपयोग को इंगित करने के लिए क्यों नहीं बनाते हैं? यह किसी भी मुख्यधारा की प्रोग्रामिंग भाषा में कोई उद्देश्य नहीं रखता है, फिर भी उन सभी को AFAIK में वैध व्हाट्सएप के रूप में रखा गया है।

इसका मतलब यह होगा कि लोचदार टैबस्टॉप का उपयोग अब एक बाहरी कन्वेंशन नहीं है (उदाहरण के लिए "इस फाइल को लोचदार टैब के साथ स्वरूपित किया गया था, कृपया उन्हें चालू करें") लेकिन आप जिस मामले के आधार पर किसी मामले का चयन करते हैं।

मौजूदा पाठ संपादक आमतौर पर एक ऊर्ध्वाधर टैब के स्थान पर एक ग्लिफ़ या एकल स्थान प्रदर्शित करते हैं। यह आदर्श नहीं है, लेकिन भुगतान करने के लिए एक छोटी सी कीमत, आईएमओ।


10

पाठ संपादकों के अधिकांश IDE में लागू नहीं होने के कारण उनका उल्लेख नहीं किया गया है; वे एक परियोजना में थोड़ा वास्तविक उपयोग की एक नवीनता है।

पंच कार्ड के दिनों से प्रोग्रामिंग को अंजाम देने के लिए रिक्त स्थान का उपयोग किया गया है। टैब्स साथ आए और किसी ने स्पष्ट रूप से सोचा कि वे एक अच्छा विचार थे (वे गलत थे: पी)।

उन दिनों में जहां अधिकांश आधुनिक संपादक टैब को स्वचालित रूप से रिक्त स्थान में बदल सकते हैं ... वे काफी व्यर्थ हैं।

किसी अन्य चीज़ को टैविअल के रूप में टैब्स के रूप में डील करने के लिए एक और टूल इंस्टॉल करने के बाद बनाम स्पेस निश्चित रूप से मेरे लिए अपील नहीं करता है, और मुझे नहीं लगता कि यह मेरे अधिकांश सहयोगियों के लिए होगा।


मैंने टिप्पणियों को मंजूरी दे दी है क्योंकि वे अपमान में उतर रहे थे।
ChrisF

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

"अभी तक एक और उपकरण स्थापित करने के बाद ..." एक अच्छा पर्याप्त तर्क नहीं है ... जैसे कि पर्याप्त उपकरण पहले से ही उपयोग नहीं किए जा रहे हैं।
मिलिंद आर

@MilindR आप इसे एक अच्छा पर्याप्त तर्क मानते हैं या नहीं, यही कारण है कि (तीन साल पहले के समय में) मुझे इसमें कोई दिलचस्पी नहीं होगी। वहाँ बहुत सारे उपकरण का उपयोग किया जा रहा है जो कुछ उपयोगी करते हैं एक और जोड़ने का कारण नहीं है, वास्तव में, आपके वातावरण में कुछ भी नहीं जोड़ता है।
TZHX

इस तरह के रवैये के कारण MS जैसी कंपनियाँ उपयोगकर्ताओं को नए UXes में बाध्य करने का निर्णय लेती हैं ... मुझे लगता है कि यदि फ्लॉपीज़ - CD संक्रमण में समान रवैया लागू किया गया तो क्या होगा।
मिलिंद आर

4

मुझे लगता है कि अगर IDEs ने उन्हें (Microsoft!) का समर्थन किया तो वे बहुत उपयोग करेंगे। एक बार जब लोगों ने पाया कि वे अपने फूलों को थप्पड़ मार सकते हैं और उन्हें अच्छी तरह से पठनीय है, तो वे करेंगे। आप स्रोत कोड में अचानक अधिक टिप्पणियाँ जोड़ सकते हैं (जो केवल एक अच्छी बात हो सकती है)।

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

नुकसान: यह आपके स्रोत को खराब कर सकता है यदि रेखाओं का एक गुच्छा ऐसा दिखता है जैसे वे बदले गए थे जब वास्तव में केवल 1 को संशोधित किया गया था (यदि संपादक ने फाइल को रिक्त स्थान में परिवर्तित टैब के साथ सहेजा है)। या, यदि लोचदार टैब को एकल वर्ण (या अधिक संभावना, 2 टैबस्टॉप) के साथ लागू किया गया था, तो संपादक के बाहर अपने स्रोत को देखने से बुरा लग सकता है।

मुझे लगता है कि मुझे यह विचार पसंद है, हालांकि एक पंक्ति के अंत में 'टैब टैब' टिप्पणी ब्लॉक को लोचदार बनाता है और बाद में सभी टिप्पणियों (जो डबल-टैब रिक्ति है) के अनुसार लाइनों को ऊपर उठाता है।


3

यहां बताया गया है कि मैं इसे कैसे देखता हूं: यदि अधिकांश लोकप्रिय उपकरण पहले से ही लोचदार टैबस्टॉप का समर्थन करते हैं, तो कई लोग उनका उपयोग करेंगे। वही vi के नेविगेट / संपादन मोड के साथ, सिंटैक्स हाइलाइटिंग के साथ, और बाद में Intellisense के साथ हुआ। प्रत्येक मामले में, स्थापित ज्ञान यह था कि यह उपयोगी नहीं है या इसकी आवश्यकता नहीं है, लेकिन इसे लागू किया गया और इसे हटा दिया गया।

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

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

मैं उन अंतर मुद्दों की सराहना करता हूं, जिनका दूसरों ने उल्लेख किया है, लेकिन उनके बावजूद, निश्चित रूप से ऐसी टीमें (मेरी जैसी) होंगी जो बिना किसी हिचकिचाहट के इसे अपनाएंगे। बाहरी उपकरण जैसे कि अलग करना, विलय करना आदि शुरू में इसका समर्थन नहीं करेंगे, लेकिन हम विक्रेताओं को इस सुविधा को शामिल करने के लिए प्रोत्साहित करने के लिए अपनी ओर से करेंगे। इस तरह हमेशा प्रगति हुई है। एक अस्थायी संक्रमण अवधि के लिए कुछ दर्द की आवश्यकता होती है, लेकिन अंत में, यह इसके लायक है।


C vs C ++ तर्क थोड़ा गुमराह प्रतीत होता है। हालांकि यह सच हो सकता है कि यह "कुछ लोगों" के लिए मामला है (जैसा कि आपने सही कहा), स्थिति के आधार पर सी या सी + + पर चिपकाने के स्पष्ट कारण हैं। डिफ़ॉल्ट सेटिंग में C ++ रनटाइम का आकार उनमें से एक है।
17:13

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

@ हाइलम: प्रतिक्रिया के लिए धन्यवाद। मैंने C / C ++ का संदर्भ निकाल दिया है।
टिमवी

@JonPurdy: प्रतिक्रिया के लिए धन्यवाद। मैंने C / C ++ का संदर्भ निकाल दिया है।
टिमवी

2

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

कुल मिलाकर मुझे लगता है कि यह एक अच्छा विचार है, लेकिन व्यक्तिगत रूप से, मैं इसे पसंद नहीं करूंगा।


1

मैंने इलास्टिक टैबस्टॉप के जेईडिट के कार्यान्वयन की कोशिश की, जो प्रोग्रामिंग भाषाओं के साथ आश्चर्यजनक रूप से अच्छी तरह से काम करता है जिसके साथ मैं परिचित हूं (मुख्य रूप से HTML / XML और C- जैसी भाषाएँ)। पाइथन कोड के साथ, हालांकि, यह बताया गया है कि इसका प्रतिपादन कैसे किया जाता है (टैब के स्थान पर उपयोग की जाने वाली रिक्तियाँ यह बताती हैं कि चीजें कैसे संरेखित होती हैं):

def foo(x):
             '''<1 tab before the docstring.
No tab       <tab
No tab       <tab
             <tab  <another tab
             <tab  <another tab
             <tab'''
             if 1 or 2:    #<Tab before this comment
                           yield True

पायथन जैसी भाषा के लिए, जो रिक्ति पर निर्भर करती है, यह एक डील-ब्रेकर है जब तक आप लोचदार टैबस्टॉप द्वारा प्रदान की गई कार्यक्षमता को अक्षम नहीं करते। यदि आप विकल्प का नाम जानते हैं और इसे कैसे निष्क्रिय करना चाहते हैं, तो विम और एमएसीएस जैसे संपादक अधिकांश प्रकार की कार्यक्षमता को सरल बनाते हैं, लेकिन ऊपर की तरह कोड के लिए इस कार्यक्षमता को अक्षम करने की आवश्यकता होगी।

यह कहा जा रहा है, यह x86 एएसएम, सी, सी ++, गो, एक्सएमएल, एचटीएमएल और अन्य लोगों के लिए बहुत अच्छा है जो व्हाट्सएप पर इतना भरोसा नहीं करते हैं:

import (
    "fmt"    // We love formatting functions.
    "io"     // Because I/O is useful.
    "os"     // Can't open a file without os.Open!
)

type Foo struct {
    Field1              int          // This is properly aligned
    ReallyLongField2    string       // with this.
    privateField        io.Reader    // Elastic tabstops are great for Go.
}

मैं कहूंगा कि लिस्प बोलियों जैसे कि स्कीम के अपने स्वयं के सम्मेलन हैं जो लोचदार टैबस्टॉप को "बदसूरत" कोड प्रदान करेंगे। अगर मैं 2 कॉलम के कन्वेंशन से मिलान करने और असामान्य स्थानों (किसी फ़ंक्शन और उसके तर्क के बीच) में टैबस्टॉप सम्मिलित करने के लिए अपनी टैबस्टॉप सेटिंग्स बदलता हूं:

(let loop ((n 1))
  (if  (> n 10)
        '()
        (cons  n
               (loop (+ n 1)))))

बनाम अधिक पठनीय:

(let loop ((n 1))
  (if (> n 10)
      '()
      (cons n
            (loop (+ n 1)))))

दी, यह पायथन उदाहरण के रूप में बुरा नहीं है, लेकिन यह निश्चित रूप से कोड की पठनीयता को कम करता है। जब मैं C # या C ++ जैसी किसी चीज़ में कोडिंग करते समय कार्यक्षमता का बहुत आनंद लेता हूं, तो मैं कार्यक्षमता को घृणा करता हूं जब पायथन या स्कीम जैसी भाषा में कोडिंग करना जहां व्हाट्सएप कार्यात्मक और / या नेत्रहीन सहायक है। इलास्टिक टैबस्टॉप विशेष रूप से एक अलग इंडेंटेशन यूटिलिटी की आवश्यकता के बिना सहायक होने के लिए बनाए गए थे, लेकिन स्पष्ट रूप से यह सभी प्रोग्रामिंग भाषाओं के लिए नहीं है।


0

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

आप टिप्पणी को संरेखित करने के लिए Emacs भी प्राप्त कर सकते हैं, बहुत परेशानी के बिना, लेकिन AFAIK कोई भी नहीं है लेकिन आप कभी भी ऐसा चाहते हैं।


2
मैं केवल आपके अंतिम वाक्य को ट्रोलिंग के रूप में व्याख्या कर सकता हूं, क्योंकि स्पष्ट रूप से कम से कम एक अन्य व्यक्ति यह चाहता था कि यह एक अच्छी तरह से बहस वाले पृष्ठ, जावा कार्यान्वयन और एक जीआईएफ बनाने के लिए बुरी तरह से पर्याप्त है, यह दिखाने के लिए कि यह क्यों अच्छा है। यदि आप उत्तरों के माध्यम से पढ़ते हैं, तो आप पाएंगे कि निक अकेले भी नहीं हैं। ओह रुको, यहाँ भी देखो
रोमन स्टार्कोव

वैसे, Emacs फिर से इंडेंट wilmaकरता है जैसे कि आप संपादन करते हैं, जैसे कि फ़ंक्शन नाम की लंबाई बदलना? यदि ऐसा होता है, तो यह काफी हद तक करीब है कि लोचदार टैबस्टॉप क्या करते हैं।
रोमन स्टार्कोव

@romkyns: मेरा मतलब ट्रोलिंग से नहीं था, मेरा मतलब सिर्फ इतना था कि मैंने टिप्पणी की उस शैली को कभी EMACS में इंडेंट करते हुए नहीं देखा था। आम तौर पर EMACS आपके द्वारा टाइप की गई कई लाइनों को फिर से इंडेंट नहीं करता है, लेकिन इसे भी बदला जा सकता है।
केविन क्लाइन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.