10 पॉइंट द्वारा ffdd270 2022-06-23 | 1 टिप्पणियां | WhatsApp पर शेयर करें

V प्रोग्रामिंग भाषा रिव्यू


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

  • रखरखाव के लिए अनुकूल, सरल भाषा।
    • यह एक व्यक्तिपरक दावा है।
    • N/A

सुरक्षा

  • null नहीं।
    • V भाषा में null pointer (V reference) को compiler error या warning के बिना बनाया जा सकता है।
    • असमर्थित.
  • undefined value नहीं।
    • uninitialized memory को compiler error या warning के बिना पढ़ा जा सकता है।
    • असमर्थित.
  • undefined behavior नहीं।
    • V compiler ने UB के 3 अलग-अलग रूप लिखने से नहीं रोका। UB होता है।
    • असमर्थित.
  • variable shadowing नहीं (जब अलग नाम-स्थान में एक ही नाम बनता है और नाम छिप जाता है)।
    • local variable को shadow नहीं किया जा सका।
    • असमर्थित.
  • bounds check।
    • कुछ बुनियादी जाँचें हैं, लेकिन उन्हें मामूली तरीके से bypass किया जा सकता है।
    • चेतावनी.
  • constant variables डिफ़ॉल्ट हैं।
    • variables अर्थपूर्ण अर्थ में constant नहीं हैं। mut घोषित variable को constant reference असाइन करने के बाद variable बदलने पर मूल constant variable भी आसानी से बदल सकता है।
    • असमर्थित.
  • pure functions डिफ़ॉल्ट हैं।
    • यह दावा pure की परिभाषा को impurity के अर्थ में फिर से परिभाषित कर देता है, इसलिए यह अर्थहीन हो जाता है।
    • (लेखक ने बताया कि I/O functions का समर्थन स्वाभाविक रूप से impure होता है। दस्तावेज़ में कहा गया था कि I/O functions को छोड़कर बाकी सभी functions pure हैं, लेकिन लेखक का कहना है कि जिस क्षण वे I/O functions को कॉल कर सकते हैं, वे pure नहीं रह जाते। इसलिए लगता है कि दावे का अर्थ ही धुंधला हो जाता है। मुख्य लेख में एक हास्यास्पद उदाहरण भी है जिसमें pure functions impure values निकालते हैं।)
    • असमर्थित.
  • constant structs डिफ़ॉल्ट हैं।
    • ऊपर पहले ही दिखाया जा चुका है कि constant variables को bypass किया जा सकता है।
    • असमर्थित.
  • Option और उसके result values के लिए अनिवार्य error check।
    • विज्ञापन के अनुसार काम करता है.
  • Sum types (type MyType = string | int जैसे syntax)।
    • Sum Types आम तौर पर काम करते हुए लगते हैं, लेकिन internal implementation की समस्याएँ हैं। (type को दो और बार बनाने से V भाषा में मना किए गए references को Sum Types के रूप में इस्तेमाल करना संभव हो जाता है।)
    • चेतावनी.
  • genericization (generics)
    • बुनियादी implementation मौजूद है, लेकिन यह बहुत bug से भरी हुई है और इसके द्वारा ज़ोर देकर बताए गए safety तथा compiler performance से पूरी तरह कटी हुई लगती है।
    • असमर्थित.
  • global variables नहीं।
    • V, globally shared state बनाने या बदलने को किसी भी अर्थपूर्ण तरीके से नहीं रोकता।
    • असमर्थित.

प्रदर्शन

  • C जितनी तेज़ (V का मुख्य backend compiler इंसानों द्वारा पढ़े जा सकने वाले C भाषा कोड पर आधारित है)
    • V के performance दावे सत्यापित नहीं लगते।
    • असमर्थित.
  • बिना अतिरिक्त लागत के C interoperability
    • विज्ञापन के अनुसार काम करता है.
  • न्यूनतम allocation
    • यह एक व्यक्तिपरक दावा है।
    • N/A. (लेखक ने दिखाया कि int घोषित करने वाला V कोड जब C भाषा में अनुवादित होता है, तो C भाषा की ओर से int का malloc होना परिणाम में दिखाई देता है।)
  • runtime reflection के बिना built-in serialization
    • विज्ञापन के अनुसार काम करता है.
  • बिना किसी dependency के native binaries में compile होता है।
    • ऐसा लगता है कि V अभी तक इस दावे को पूरी तरह हासिल नहीं कर पाया है, लेकिन सामान्य विचार के स्तर पर इतना सच है कि V प्रोग्राम अपेक्षाकृत self-contained और छोटे होते हैं।
    • चेतावनी.

तेज़ compilation

  • V प्रति सेकंड 10 लाख lines, और प्रति CPU core compile करता है।
    • V compiler दावे किए गए प्रदर्शन के स्तर के आसपास भी नहीं पहुँचा। (V compiler benchmark साइट पर भी यह लगभग 2 लाख V lines compile करता है।)
    • असमर्थित.
  • V, V में लिखा गया है, और 1 सेकंड से कम में खुद को compile कर सकता है।
    • विज्ञापन के अनुसार काम करता है.
  • अभिनव memory management
    • V के दावे मज़बूती से समर्थित नहीं हैं, और वर्तमान implementation को अभिनव नहीं कहा जा सकता।
    • असमर्थित

1 टिप्पणियां

 
ffdd270 2022-06-23

असल में यह व्यापक रूप से जाना जाता है कि V अभी काफी दूर है, लेकिन यह लेख उस दूरी को साबित करने की प्रक्रिया को अच्छी तरह दर्ज करता है। सूची में से अपनी रुचि की चीज़ चुनें, फिर बस उसे साबित करने वाले हिस्से को एक बार देख लें।