2012-05-22 4 views
6

क्या कम से कम चेक/कम कठोर कोड विश्लेषण विकास पर्यावरण त्रुटि प्रतिक्रिया और प्रोग्रामिंग भाषाओं के लिए स्वत: पूर्णता प्रदान करने के लिए आवश्यक हैं जो मानव-पठनीय वाक्यांशों और शब्दों (यानी पायथन, वीबी.नेट) के बड़े पैमाने पर बनाये गये हैं? यह सी-शैली भाषाओं के विपरीत है, जो कोड संरचना के लिए प्रतीक और विराम चिह्न पर अधिक निर्भर करता है।आईडीई त्रुटि पहचान और ऑटो-पूर्णता भाषा वाक्यविन्यास पर निर्भरता की जटिलता?

+1

"आसान" परिभाषित करने से पहले, जिसे आपने टाला था, कृपया "वर्बोज़" और "terse" को परिभाषित करें। – jason

+2

@ क्लोज मतदाता: यह प्रश्न इस बारे में नहीं है कि वीबी बेहतर है या नहीं #। – GSerg

+0

मेरा अनुमान होगा, यह शब्दशः के बारे में नहीं है; बल्कि, यह इस तथ्य के बारे में है कि सी # में अधिक चीजों की अनुमति है, और इसलिए पार्सर के पास कोड की रेखा को समझने के अधिक तरीके हैं। – GSerg

उत्तर

5

मुझे dozens of language front ends बनाने के लिए अनुभव/जिम्मेदार है।

वर्डी भाषा बनाम विराम चिह्न भाषा आम तौर पर पार्स और सांख्यिकीय विश्लेषण के लिए समान रूप से कठिन होती हैं।

जो लोग किसी भी प्रकार की भाषाओं को परिभाषित करते हैं, वे दशकों से (यानी 1 9 58 से COBOL) सजाने वाले हैं या परिष्कृत भाषाओं (सी ++, स्कैला, रूबी) का निर्माण जटिल वाक्यविन्यास और जटिल नाम संकल्प और प्रकार अनुमान नियमों के साथ करते हैं ; संकलक विक्रेता तब अजीब चीजों को समर्थन देने के लिए या ग्राहक लॉक प्रदान करने के लिए अस्पष्ट वाक्यविन्यास जोड़ने के लिए आगे बढ़ते हैं (उदाहरण के लिए, एमएस "प्रबंधित सी ++", डीएलएल घोषणाएं, आदि)। लुसी परिभाषाओं की तीसरी समस्या है; शीर्ष भाषाओं में उनके काम के बारे में सटीक नियम हो सकते हैं, लेकिन कई भाषाओं में मैला परिभाषाएं हैं (उदाहरण के लिए, PHP) जो अंधेरे कोने के मामलों को बनाता है जिन्हें वास्तविक कार्यान्वयन के साथ दर्दनाक प्रयोग से बाहर निकालना पड़ता है।

सी ++ हमारा सबसे खराब, esp रहा है। सी ++ 11 समिति के साथ चीजों की एक बड़ी हालिया गड़बड़ी कर रही है। हमारे पास पूर्ण सी ++ पार्सर्स हैं, लेकिन फिर भी हमारे सी ++ 98 कार्यान्वयन के शीर्ष पर सी ++ 11 के लिए पूर्ण नाम समाधान पर काम कर रहे हैं। (नाम संकल्प कोड कोड की कुछ 250,000 लाइनें हैं और यह पर्याप्त नहीं है!)।

आईबीएम कोबोल एक करीबी दूसरा है; भाषा सिर्फ विशाल है, और मज़ेदार नाम संकल्प नियमों के सभी प्रकार हैं ("एक अयोग्य नाम किसी विशेष नाम को योग्यता के बिना संदर्भित कर सकता है यदि संदर्भ स्पष्ट है" तो क्या यह नाम इस संदर्भ में एक स्पष्ट संदर्भ है?)।

एक बार जब आप पिछले पार्सिंग और नाम/प्रकार के रिज़ॉल्यूशन प्राप्त कर लेते हैं, तो आप नियंत्रण प्रवाह, डेटा प्रवाह, अंक-विश्लेषण, श्रेणी एनालिसिस, कॉल ग्राफ़ निर्माण, ... जो आम तौर पर उसी प्रयास के बारे में होते हैं पहले चरण; हम इन कार्यों का समर्थन करने वाले वास्तव में अच्छी पुस्तकालयों से कम हो जाते हैं।

पृष्ठभूमि विश्लेषण के रूप में यह सब के साथ, आप स्मार्ट प्रकार के "स्थिर विश्लेषण" करना शुरू कर सकते हैं जो लोग चाहते हैं।

एक अन्य पोस्टर ने नोट किया कि वाक्यविन्यास त्रुटियों से पुनर्प्राप्त करना और (जोर) "सार्थक त्रुटि संदेश उत्पन्न करना जारी रखें"। मैं यह कह सकता हूं "आमेन, भाई" है। जब आपके पास "आंशिक प्रोग्राम" होते हैं तो क्या गलत हो जाता है, इस बारे में चर्चा के लिए यह SO उत्तर https://stackoverflow.com/a/6657974/120163 देखें, जो अनिवार्य रूप से आपको मिलता है जब सिंटैक्स त्रुटि किसी फ़िक्स पर अनुमान लगाती है।

+0

यह वह उत्तर है जिसे मैं ढूंढ रहा था। मैं जो कुछ कह सकता हूं उसके लिए धन्यवाद, यह वास्तव में चुनौतीपूर्ण लगता है। –

+0

एक अच्छी तारीफ, धन्यवाद। ऐसे दिन हैं जिन्हें मैं इस विशेष करियर पसंद पर मुकदमा करता हूं: -} –

संबंधित मुद्दे