एक प्रोग्रामिंग भाषा में "एक सुविधा के लिए मूल समर्थन" से क्या मतलब है?


15

मैं कुछ हद तक इस तरह से गया "यूनिकोड के लिए PHP का कोई मूल समर्थन नहीं है"। इसके अलावा, मैंने पढ़ा कि पायथन को यूनिकोड के लिए मूल समर्थन है। अब आप utf8_encode()यूनिकोड में एक स्ट्रिंग को एनकोड करने के लिए PHP में एक फ़ंक्शन को कॉल कर सकते हैं और unicode()एक स्ट्रिंग को यूनिकोड में बदलने के लिए पायथन में एक फ़ंक्शन का उपयोग कर सकते हैं । तो यूनिकोड को मूल रूप से समर्थन करने का क्या मतलब है? साथ ही कुछ भाषाओं में समवर्ती के लिए मूल समर्थन है जबकि कुछ के पास मूल समर्थन नहीं है। तो क्या मतलब है

X भाषा मूल रूप से सुविधा Y का समर्थन करती है


वास्तव में, पायथन 3 मूल रूप से यूनिकोड का समर्थन करता है। जैसा कि 2.7 है।
नौचमेल्स

जवाबों:


16

इसका मतलब है कि किसी दिए गए फीचर का समर्थन करने के लिए, डेवलपर को एक घटक का उपयोग करने की आवश्यकता नहीं है जो भाषा में ही नहीं, एक एक्सटेंशन या तीसरे पक्ष के उत्पाद की तरह एम्बेडेड है।

उदाहरण के लिए, PHP के पास यूनिकोड के लिए कोई मूल समर्थन नहीं है, क्योंकि हर फ़ंक्शन जो PHP में स्ट्रिंग्स के साथ काम करता है, वह यूनिकोड का समर्थन नहीं करता है। उदाहरण के लिए, एक विकल्प प्राप्त करने के लिए, आप उपयोग नहीं कर सकते हैं substr, लेकिन उपयोग करने की आवश्यकता है mb_substr, जिसके लिए मल्टीबाइट स्ट्रिंग एक्सटेंशन का उपयोग करना होगा।

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


1
तो इसके बारे में बस यह है कि क्या घटक भाषा का हिस्सा है या नहीं? मेरा मतलब है कि अगर वे mb_stringPHP के स्रोत में कार्यक्षमता को शामिल करते हैं तो यह देशी हो जाएगा?
लवलेश

1
@ लवलेश: यह इतना आसान नहीं है। यदि वे PHP ट्रंक में एक्सटेंशन को शामिल करते हैं, लेकिन बिना डिफ़ॉल्ट एनकोडिंग को बनाए बिना , मुझे यकीन नहीं है कि यह मूल माना जाएगा। यदि, इसके बजाय, यूनिकोड डिफ़ॉल्ट एनकोडिंग बन जाएगा, जैसा कि C # में है, तो हाँ, यह एक देशी समर्थन होगा।
आर्सेनी मूरज़ेंको

या आप कह सकते हैं कि यह मूल रूप से समर्थित है लेकिन सामान्य नहीं / डिफ़ॉल्ट नहीं है। यह सिर्फ शब्दार्थ है।
ब्लूराजा - डैनी पफ्लुघोटे

2
किसी तरह की स्ट्रिंग को मूल रूप से समर्थन करने के लिए एक भाषा के लिए , मुझे कम से कम यह आवश्यक होगा कि उस तरह के स्ट्रिंग के लिए स्ट्रिंग शाब्दिक के लिए एक सिंटैक्स हो। उदाहरण के लिए, कुछ के s = "Müsliriegel"mb;बजाय ऐसा कुछ होगा s = toMb("Müsliriegel");( जैसे , निश्चित रूप से, सभी भाषाओं द्वारा पूरी तरह से पूरा होता है जो UTF8 को डिफ़ॉल्ट एन्कोडिंग के रूप में उपयोग करते हैं)
user281377

11

"X भाषा मूल रूप से सुविधा Y का समर्थन करती है" का अर्थ है कि आप बिना किसी एक्सटेंशन या किसी अन्य प्रयास के फीचर Y का उपयोग कर सकते हैं। यह सीधे भाषा से ही प्रयोग करने योग्य है।

उदाहरण के लिए आप कह सकते हैं कि,

"सी ++ भाषा मूल रूप से ऑपरेटर ओवरलोडिंग का समर्थन करती है।"

"जावा भाषा मूल रूप से स्वचालित कचरा संग्रह का समर्थन करती है", क्योंकि आपको किसी अन्य पुस्तकालय या उपकरण का उपयोग करने की आवश्यकता नहीं है जो स्वचालित कचरा संग्रह करता है। यह लैंग्वेज (और प्लेटफॉर्म) के साथ आता है।


9

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

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


5

मुझे लगता है कि इस शब्द का दुरुपयोग होगा। किसी भाषा के लिए "मूल" होने के लिए इसके लिए सुविधाओं में निर्मित होने की आवश्यकता है। यूनिकोड की तरह कुछ के लिए मूल समर्थन भाषा में कच्चे प्रकार होते हैं जो किसी तरह यूनिकोड को लागू करते हैं। आमतौर पर हालांकि यह भाषा का हिस्सा नहीं है, लेकिन एक पुस्तकालय का हिस्सा है।

आईएमएचओ कुछ ऐसा कहता है जो भाषा की डिफ़ॉल्ट लाइब्रेरी में दिखाई देता है या नहीं कुछ देशी बनाता है या नहीं।

कुछ उदाहरण:

C ++ में कक्षाओं के लिए मूल समर्थन है। C नहीं करता है। कोई भाषा कीवर्ड या प्रकार की सुविधा नहीं है जो कक्षाओं के लेखन और उपयोग को सक्षम करती है, आपको उन्हें हाथ से कोड करना होगा।

मैं कहूंगा कि C ++ में C की तुलना में कोई देशी स्ट्रिंग प्रकार नहीं है। मानक लाइब्रेरी में एक basic_string टेम्प्लेट है, लेकिन यह भाषा की सुविधा नहीं है।

सी ++ 11 हालांकि वास्तव में यूनिकोड समर्थन को जोड़ देगा क्योंकि नए कीवर्ड और कच्चे प्रकार यूनिकोड मूल्यों के साथ काम करने की सुविधा के लिए भाषा में ही जोड़े गए थे।

आशा है कि मेरे द्वारा देखे गए अंतर को स्पष्ट करता है।


"कच्चे प्रकार" शब्दों का आपका उपयोग मुझे भ्रमित करता है। क्या आप स्पष्ट कर सकते हैं?
जेरेमी हेइलर

पायथन 3 में, सभी स्ट्रिंग्स यूनिकोड हैं (एक अलग bytesप्रकार है), इसलिए मुझे लगता है कि यह कहना उचित है कि पायथन मूल रूप से यूनिकोड का समर्थन करता है।
ब्रेंडन लांग

पाइथन 2 उसी तरह से करता है, जिसमें इसका एक unicodeप्रकार होता है, हालांकि पाइथन 3 की तुलना में इसका उपयोग करना अधिक दर्दनाक है। सी ++ एक अजीब जानवर है, जो कि पुस्तकालयों में आम तौर पर किसी भाषा का हिस्सा होता है।
रोबोट

@ जेरेमीहाइलर: ऐसा प्रतीत होता है कि "कच्चे प्रकार" मौलिक, गैर-समग्र, गैर-पुस्तकालय प्रकार हैं। उदाहरण के लिए, सी करता है एक स्ट्रिंग प्रकार (है char[]), और यहां तक कि स्ट्रिंग शाब्दिक। नहीं सभी "कच्चे प्रकार" उदाहरण के लिए सी में मिलान शाब्दिक, संकेत करने की आवश्यकता नहीं है। ( NULLकेवल में परिवर्तित किया जा सकता है int*)
MSalters

-1

कम से कम व्याख्या या JIT- संकलित भाषाओं में "मूल समर्थन" का अर्थ आमतौर पर कोड होता है जो मूल रूप से precompiled कार्यक्षमता का एक लिंक होता है जो दुभाषिया के नीचे बैठता है।

उदाहरण के लिए, यदि आप Firefox में window.open को सचेत करते हैं, तो आप संभवतः एक ऐसा कार्य देखेंगे, जिसके पारदर्शक "देशी कोड" जैसा कुछ कहेंगे। जबकि सभी संदर्भ दुभाषिया को खिलाए जाते हैं और संदर्भ और कार्यक्षेत्र स्थापित करने के लिए कदम उठाने की आवश्यकता होती है, मूल रूप से कैन्डस को कैश किया जाता है और जाने के लिए तैयार किया जाता है। उदाहरण के लिए window.open, शायद ब्राउज़र के रन-टाइम वातावरण से कुछ कहता है।

यह उन गैर-देशी वस्तुओं और तरीकों से अलग है जिन्हें आपने या किसी और ने लिखा था, क्योंकि उन मामलों में आपके सभी बयानों की व्याख्या / मूल्यांकन करने की आवश्यकता होती है।

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


1
यह भाषा में मूल समर्थन नहीं है; यह पुस्तकालय में मूल समर्थन है।
SLaks

आप किस बिंदु से असहमत हैं? या तो आप मुझे गलत समझ रहे हैं या मैं कुछ मुख्य अवधारणा को नहीं समझ रहा हूं लेकिन यह अस्पष्ट है।
एरिक रेपेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.