बहुत सारी स्क्रिप्टिंग भाषाएं जैसे पर्ल, अक्क, बैश, पीएचपी, आदि पहचानकर्ता नामों से पहले $ साइन का उपयोग करती हैं। मैंने यह देखने की कोशिश की है कि कभी भी संतोषजनक उत्तर क्यों नहीं मिला।
बहुत सारी स्क्रिप्टिंग भाषाएं जैसे पर्ल, अक्क, बैश, पीएचपी, आदि पहचानकर्ता नामों से पहले $ साइन का उपयोग करती हैं। मैंने यह देखने की कोशिश की है कि कभी भी संतोषजनक उत्तर क्यों नहीं मिला।
जवाबों:
बॉर्न शेल या इसके पूर्ववर्ती संभवतः सम्मेलन का मूल था। $foo
शेल एक शेल वैरिएबल या एनवायरनमेंट वैरिएबल को संदर्भित करने के लिए उपयोग करते हैं , जबकि बस foo
एक शाब्दिक स्ट्रिंग के रूप में लिया जाता है (जो एक कमांड नाम, एक फ़ाइल नाम या किसी अन्य कमांड को पारित करने के लिए सिर्फ एक शब्द हो सकता है)।
यह संभवतः कम से कम करने की बात है कि आपको कितना टाइप करना है। अधिकांश प्रोग्रामिंग भाषाओं में, आप जो टाइप करते हैं, उनमें से अधिकांश कीवर्ड (एक छोटे से निर्धारित सेट से) और उन चीजों के नाम होते हैं जिन्हें घोषित किया गया है; यह उन लोगों के लिए सिर्फ एक नाम का उपयोग करने के लिए समझ में आता है। स्ट्रिंग के शाब्दिक उद्धरण चिह्नों (एकल या दोहरे) में उन्हें अलग-अलग रूप से परिभाषित करने के लिए संलग्न हैं।
एक इंटरैक्टिव शेल में, आपके द्वारा टाइप की जाने वाली अधिकांश चीजें कमांड नाम और फ़ाइल नाम होने जा रही हैं, इसलिए आपके पास अर्थ के लिए एक अघोषित रूप है। परिवर्तनीय नामों को अक्सर उपयोग नहीं किया जाता है, इसलिए उन्हें पहले $
से अलग करना एक अलग तरीका है।
अनुगामी $
है कि कुछ मूल बातें स्ट्रिंग चर के लिए उपयोग करते हैं (जैसा कि सांख्यिक चर के खिलाफ) शायद ही साथ एक प्रेरणा थी।
$
स्केलर वेरिएबल्स के लिए उपयोग करने के लिए पर्ल की पसंद निस्संदेह बॉर्न शेल जैसे गोले से प्रेरित थी, और पर्ल के शुरुआती संस्करणों को आमतौर पर नंगे पासवर्ड स्ट्रिंग स्ट्रिंग के रूप में माना जाता था ( print FOO
और print "FOO"
समतुल्य थे)। नंगे पासवर्ड के इस उपयोग को पर्ल के अधिक आधुनिक संस्करणों में चित्रित किया गया है, लेकिन सिगिल बने हुए हैं, और ज्यादातर विभिन्न प्रकार के चर को अलग करने के लिए उपयोग किए जाते हैं । शायद अगर पर्ल को खरोंच से डिजाइन किया जा रहा था, तो स्केलर वैरिएबल को "खाली सर्जन" द्वारा निरूपित किया जा सकता है, लेकिन ऐसा नहीं हुआ।
(BTW, Awk sigils का उपयोग नहीं करता है। इसमें एक $
सिंटैक्स है, लेकिन यह फ़ील्ड संख्याओं को संदर्भित करता है। फ़ील्ड की संख्या NF
है; $NF
अंतिम ( NF
th) फ़ील्ड है।)
चर नाम का एक $ चिन्ह "सिगिल" का एक विशेष मामला है , जो कि BASIC के शुरुआती दिनों में (1964 या इसके बाद) $ का उपयोग स्ट्रिंग चर नामों को दर्शाने के लिए किया गया था। मेरा अनुमान है, क्योंकि यह कुछ प्रतीक का उपयोग करके व्याकरण के बाकी हिस्सों से चर नामों को अलग करने के लिए संकलक को आसान बनाता है, और चूंकि यह BASIC के लिए सामान्य था, इसलिए इसका उपयोग प्रगति पर है। हालांकि, यह केवल एक ही इस्तेमाल नहीं किया गया है।
$
तार के लिए (और %
पूर्णांकों के लिए) बेसिक में एक प्रत्यय के बजाय एक उपसर्ग, (गैर मानक) में कम से कम वेरिएंट के साथ मैं प्रवृत्त किया गया था। ऐसा नहीं है कि यह महत्वपूर्ण है, बेशक - प्रत्यय बनाम उपसर्ग बहुत ही सतही है, कम से कम जहां तक संकलक और शाब्दिक विश्लेषण का संबंध है। पठनीयता के संदर्भ में कुछ मामूली अंतर हो सकता है।
यह BASIC में उत्पन्न होता है, जहां $ प्रत्यय एक स्ट्रिंग चर को इंगित करता है, और "स्ट्रिंग" के रूप में भी उच्चारण किया गया था। उदाहरण के लिए, INKEY $ का उच्चारण "कुंजी स्ट्रिंग में" किया गया है।
लेकिन डॉलर पर हस्ताक्षर क्यों? $, स्ट्रिंग के लिए $ थोड़ा सा दिखता है। और विकिपीडिया के अनुसार :
जैसा कि डॉलर चिह्न कुछ प्रतीकों में से एक है, जो एक तरफ, कंप्यूटर चरित्र सेट में लगभग सार्वभौमिक रूप से मौजूद है, लेकिन, दूसरी ओर, कंप्यूटर सॉफ़्टवेयर के भीतर उनके शाब्दिक अर्थ में शायद ही कभी आवश्यकता होती है, कंप्यूटर पर $ चरित्र का उपयोग किया गया है। पैसे के लिए असंबंधित कई उद्देश्यों के लिए।
(उचित रूप से, कुछ डॉलर के लिए मैं इस प्रकार के रूप में तेली पर है।)
क्यों नहीं? एक लेसर लिखना आसान है जो एक पहचानकर्ता को बता सकता है कि यह एक चर (और परिणामस्वरूप पार्सर लिखना आसान है), विशेष रूप से व्याख्या की गई भाषा के लिए। क्यों $
, शायद यह काफी हद तक परंपरा है - एक प्रारंभिक भाषा के रचनाकारों में से एक ने निर्माण का उपयोग करके (बाश? या अधिक संभावना है कि एक पूर्ववर्ती) इसे किसी भी कारण से इस्तेमाल किया और बाद की भाषाओं ने इसे अपनाया।