इतनी भाषाओं के लिए पहचानकर्ता नामों में $ क्यों है?


15

बहुत सारी स्क्रिप्टिंग भाषाएं जैसे पर्ल, अक्क, बैश, पीएचपी, आदि पहचानकर्ता नामों से पहले $ साइन का उपयोग करती हैं। मैंने यह देखने की कोशिश की है कि कभी भी संतोषजनक उत्तर क्यों नहीं मिला।


10
संभवतः अधिकांश प्रोग्रामर की व्यावसायिक योजनाओं में अंतिम चरण के कारण - ... लाभ!
Oded

2
एक ही सवाल के बारे में एसओ पर दिलचस्प पोस्ट: पर्ल चर को $,%, @ (sigils) से शुरू करने की आवश्यकता क्यों है
ब्रैड क्रिस्टी

जवाबों:


4

बॉर्न शेल या इसके पूर्ववर्ती संभवतः सम्मेलन का मूल था। $fooशेल एक शेल वैरिएबल या एनवायरनमेंट वैरिएबल को संदर्भित करने के लिए उपयोग करते हैं , जबकि बस fooएक शाब्दिक स्ट्रिंग के रूप में लिया जाता है (जो एक कमांड नाम, एक फ़ाइल नाम या किसी अन्य कमांड को पारित करने के लिए सिर्फ एक शब्द हो सकता है)।

यह संभवतः कम से कम करने की बात है कि आपको कितना टाइप करना है। अधिकांश प्रोग्रामिंग भाषाओं में, आप जो टाइप करते हैं, उनमें से अधिकांश कीवर्ड (एक छोटे से निर्धारित सेट से) और उन चीजों के नाम होते हैं जिन्हें घोषित किया गया है; यह उन लोगों के लिए सिर्फ एक नाम का उपयोग करने के लिए समझ में आता है। स्ट्रिंग के शाब्दिक उद्धरण चिह्नों (एकल या दोहरे) में उन्हें अलग-अलग रूप से परिभाषित करने के लिए संलग्न हैं।

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

अनुगामी $है कि कुछ मूल बातें स्ट्रिंग चर के लिए उपयोग करते हैं (जैसा कि सांख्यिक चर के खिलाफ) शायद ही साथ एक प्रेरणा थी।

$स्केलर वेरिएबल्स के लिए उपयोग करने के लिए पर्ल की पसंद निस्संदेह बॉर्न शेल जैसे गोले से प्रेरित थी, और पर्ल के शुरुआती संस्करणों को आमतौर पर नंगे पासवर्ड स्ट्रिंग स्ट्रिंग के रूप में माना जाता था ( print FOOऔर print "FOO"समतुल्य थे)। नंगे पासवर्ड के इस उपयोग को पर्ल के अधिक आधुनिक संस्करणों में चित्रित किया गया है, लेकिन सिगिल बने हुए हैं, और ज्यादातर विभिन्न प्रकार के चर को अलग करने के लिए उपयोग किए जाते हैं । शायद अगर पर्ल को खरोंच से डिजाइन किया जा रहा था, तो स्केलर वैरिएबल को "खाली सर्जन" द्वारा निरूपित किया जा सकता है, लेकिन ऐसा नहीं हुआ।

(BTW, Awk sigils का उपयोग नहीं करता है। इसमें एक $सिंटैक्स है, लेकिन यह फ़ील्ड संख्याओं को संदर्भित करता है। फ़ील्ड की संख्या NFहै; $NFअंतिम ( NFth) फ़ील्ड है।)



14

चर नाम का एक $ चिन्ह "सिगिल" का एक विशेष मामला है , जो कि BASIC के शुरुआती दिनों में (1964 या इसके बाद) $ का उपयोग स्ट्रिंग चर नामों को दर्शाने के लिए किया गया था। मेरा अनुमान है, क्योंकि यह कुछ प्रतीक का उपयोग करके व्याकरण के बाकी हिस्सों से चर नामों को अलग करने के लिए संकलक को आसान बनाता है, और चूंकि यह BASIC के लिए सामान्य था, इसलिए इसका उपयोग प्रगति पर है। हालांकि, यह केवल एक ही इस्तेमाल नहीं किया गया है।


2
$तार के लिए (और %पूर्णांकों के लिए) बेसिक में एक प्रत्यय के बजाय एक उपसर्ग, (गैर मानक) में कम से कम वेरिएंट के साथ मैं प्रवृत्त किया गया था। ऐसा नहीं है कि यह महत्वपूर्ण है, बेशक - प्रत्यय बनाम उपसर्ग बहुत ही सतही है, कम से कम जहां तक ​​संकलक और शाब्दिक विश्लेषण का संबंध है। पठनीयता के संदर्भ में कुछ मामूली अंतर हो सकता है।
213

BTW - बेसिक में काम करने का एक कारण यह है कि इसमें बहुत ही सीमित प्रकार के प्रकार थे, और कोई उपयोगकर्ता-परिभाषित प्रकार नहीं थे, इसलिए केवल बहुत सीमित सीमा में सिगिल की आवश्यकता थी। पर्ल का उपयोग अलग है - हालांकि मेरे लिए अब एक लंबा समय हो गया है, इसलिए मुझे वास्तव में विवरण याद नहीं है।
213

@ steve314, आप बिलकुल सही हैं A $ = ... इस पर ध्यान देने के लिए धन्यवाद।
दोपहर 01:00 बजे NoChance

5

awk?

कभी-कभी एक सजग कहा जाता है , आमतौर पर इसका उपयोग चर (और अन्य) के नामों को मूल्यों में अनुवाद करने के लिए किया जाता है।


5

यह BASIC में उत्पन्न होता है, जहां $ प्रत्यय एक स्ट्रिंग चर को इंगित करता है, और "स्ट्रिंग" के रूप में भी उच्चारण किया गया था। उदाहरण के लिए, INKEY $ का उच्चारण "कुंजी स्ट्रिंग में" किया गया है।

लेकिन डॉलर पर हस्ताक्षर क्यों? $, स्ट्रिंग के लिए $ थोड़ा सा दिखता है। और विकिपीडिया के अनुसार :

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

(उचित रूप से, कुछ डॉलर के लिए मैं इस प्रकार के रूप में तेली पर है।)


2

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


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