- अतीत में Ada development environment में code formatting की समस्या पहले ही हल की जा चुकी थी
- डेवलपर DIANA intermediate representation (IR) के रूप में code के साथ काम करते थे, और हर कोई अपनी पसंद की pretty-printing settings के साथ उसे देखता था
- आज भी linter या formatting policy जैसी चीज़ों के कारण बार-बार होने वाली अक्षमता और बहस मौजूद है
- उस समय Rational R1000 workstation ने एक नवोन्मेषी development environment और सुविधाएँ प्रदान कीं
- code formatting समस्या में एक पीढ़ी पहले के तरीके को देखकर आज की development practices में बदलाव के लिए विचार प्रस्तुत किया गया है
कोड formatting बहस – 1980 के दशक का समाधान
- लेखक अपने हाई स्कूल के समय Ada compiler पर काम करने वाले computer science शिक्षक Mr. Paige के साथ हुए अनुभव का ज़िक्र करता है
- 2016 में linter tool setup को लेकर असुविधा जताते हुए जब उसने पूछा, “हमें अब भी ऐसी समस्या क्यों झेलनी पड़ती है?”, तब उसे बताया गया कि यह समस्या 40 से अधिक साल पहले ही हल हो चुकी थी
Ada और DIANA का आगमन
- Ada डेवलपर्स text source code को store करने के बजाय, DIANA(Descriptive Intermediate Attributed Notation for Ada) नामक intermediate representation का उपयोग करते थे
- हर डेवलपर अपनी pretty-printing settings के साथ source को अपनी पसंद के तरीके से देख सकता था
- formatting बहस या linter issues मौजूद नहीं थे, और editor में program tree को सीधे संशोधित किया जा सकता था (यह आधुनिक projectional editing के समान है)
Rational R1000 – अग्रणी development environment
- Rational R1000 workstation में incremental compilation, static analysis, version control, debugging जैसी कई उन्नत सुविधाएँ अंतर्निहित थीं
- इसका उपयोग DoD जैसे सरकारी प्रोजेक्ट, International Space Station (ISS), F-22 fighter jet जैसे महत्वपूर्ण software development में हुआ, और इसने UML के जन्म में भी योगदान दिया
- Grady Booch के अनुसार, R1000 एक DIANA-आधारित machine थी जो source code को store नहीं करती थी, बल्कि केवल DIANA tree की pretty-printing का उपयोग करती थी
DIANA-आधारित development के लाभ
- formatting बहस, linter setup, या editor environment को एक जैसा रखने की आवश्यकता नहीं थी
- hardware acceleration के कारण incremental compilation, आसान refactoring, तेज integration जैसी चीज़ों के साथ एक नवोन्मेषी development experience मिलता था
- इसने development efficiency और बड़े systems पर काम करने की क्षमता पर महत्वपूर्ण प्रभाव डाला
आज के लिए संकेत
- hardware-accelerated compilation अब कम महत्वपूर्ण है, लेकिन formatting समस्या का समाधान अब भी अपर्याप्त है
- मुख्यधारा का तरीका projectional editing या live environment नहीं है, लेकिन अतीत के दृष्टिकोण की तरह ज़्यादा दक्ष और कम विवाद वाले development practices को अपनाने पर विचार करने का समय है
संदर्भ सामग्री
- लेखक ने इस विषय की जाँच करते समय R1000 से जुड़ी विभिन्न documents और technical reports का हवाला दिया है
4 टिप्पणियां
मेरी जानकारी में, shared code को एक unified setting के ज़रिए अपने-आप format करने की सुविधा पहले से है, और कंपनियाँ भी इसका काफी इस्तेमाल करती हैं।
मुझे लगता है कि मुद्दा auto formatting नहीं है, बल्कि यह धारणा है कि कोई खास formatting श्रेष्ठ है, या फिर अपनी formatting छोड़कर किसी अनजान formatting के अनुरूप ढलने की प्रक्रिया ही अनावश्यक है। तर्क यह है कि formatting से बंधे बिना किसी intermediate representation को सहेज लिया जाए, और फिर user अपनी सुविधा के अनुसार उसे pretty-print कर सके।
मेरा कहना यह था कि automatic formatting के ज़रिए, बीच की किसी अभिव्यक्ति के बिना भी, मौजूदा भाषाओं में वही काम किया जा सकता है, लेकिन लगता है कि मेरी व्याख्या पर्याप्त नहीं थी।
Hacker News राय
char* a, b, भी गलतफ़हमी पैदा कर सकती है; इसलिए ऐसी style से बचना चाहिए।shouldऔरunnecessaryजैसे शब्दों का संदर्भ समझना बेहतर होगा।=के आधार पर align करना, या indentation बढ़ाकर structure की गहराई को उभारना—ये सब अलग-अलग choices हैं। अगर values पर ज़ोर देना हो तो numbers को right-align किया जा सकता है; अगर structure पर ज़ोर देना हो तो member variables को align करके readability बढ़ाई जा सकती है। लेखक code के किस पहलू पर ज़ोर देना चाहता है, यह अलग हो सकता है। तर्क यह है कि ऐसी जानकारी अतिरिक्त metadata के बिना AST से निकाली नहीं जा सकती।setValue([bar, glob], 1)जैसा रूप, या style override के लिए comment syntax आदि।