वर्षों पहले, मैंने अप्लेसॉफ्ट बेसिक सीखा। स्ट्रिंग को हमेशा $
प्रत्यय दिया गया था और सरणियों का प्रत्यय था %
। भाषा कैसे काम करती है। तुमने कुछ देखा, तुम्हें पता था कि यह क्या था। मैंने कभी यह समझने के लिए दुभाषिया में बहुत ज्यादा देरी नहीं की कि यह मामला या डिजाइन के फैसले क्यों थे।
Php में sigil अपने perl प्रभाव (जो इससे प्रभावित था awk
और sh
) से आता है। Perl में sigil बहुत अधिक है जितना $
कि यह कई अलग-अलग प्रकारों की पहचान कर सकता है:
$
अदिश
@
सूची
%
हैश
&
codeblock
*
typeglob
सर्जन यह पहचानता है कि आप जिस प्रतीक तालिका संरचना को देख रहे हैं उसका क्या हिस्सा है। पर्दे के पीछे, फ़ू के लिए प्रतीक तालिका प्रविष्टि ( *foo
टाइपग्लोब के माध्यम से पहुँचा ) में वह सब कुछ है जो एक फ़ू हो सकता है। नहीं है $foo
, @foo
, %foo
, प्रारूप foo
, &foo
, filehandle foo, आदि ...
यह एक दूसरे के लिए एक चर का उपनाम बनाने की भी अनुमति देता है:
#!/usr/bin/perl
$foo = "foo";
@qux = (1,2);
*bar = \$foo;
*bar = \@qux;
print "$bar @bar\n";
यह प्रिंट foo 1 2
- पर्ल में, यह वही है जो सिगल्स वास्तव में हैं, न कि आपको ऐसा करना चाहिए बल्कि यह है कि पर्दे के पीछे यह है कि वे करते हैं।
सिगिल्स पठनीयता के लिए बहुत अधिक नहीं हैं, बल्कि इसलिए कि कोई व्यक्ति नाम स्थान में टकराव के बिना $foo
और @foo
बिना किसी दूसरे से टकराए (अन्य भाषाओं की तुलना में जहां दोनों नहीं हो सकता है int foo; int[] foo;
)
पठनीयता के लिए सिगल्स एक ऐसी चीज है जिसे किसी भी भाषा के भाग के रूप में सीखा जाता है - वाक्य रचना को पढ़ना। आप पहचानकर्ता का हिस्सा बनने के लिए, काल्पनिक रूप से, स्वयं प्रकार को लागू कर सकते हैं।
की तर्ज पर lex में कुछ:
typeChar [is]
capLetter [A-Z]
letter [a-z]
digit [0-9]
%%
{typeChar}{capLetter}(letter}|{digit})* { prientif("iddentifier");}
%%
और तब आपके पास जैसे कोड हो सकता है
iFoo = 42;
sFoo = "a string";
iBar = iFoo * 2;
मैं यह नहीं कह रहा हूं कि यह एक अच्छा विचार है, बल्कि यह है कि कोई ऐसा व्यक्ति जो भाषा का आदी है, वह इसे मूल रूप से पढ़ सकेगा और सोच सकेगा कि यह पठनीयता को बढ़ाता है जबकि कोई ऐसा व्यक्ति जो भाषा से परिचित नहीं है, यह सोच सकता है कि यह सिर्फ जोड़ता है भाषा को शोर का एक गुच्छा।
हालांकि, इस तरह से परिभाषित भाषा के साथ काम करने के बाद, मैं शायद इसे बिना परेशानी के पढ़ सकता था।
कुछ लोग उन्हें पसंद करते हैं, कुछ लोग नहीं। इस पर बहस करने वाले विभिन्न मंचों में महान पवित्र युद्ध होते हैं और यह सच में उबलता है कि आपने उनका कितना उपयोग किया है।
गैर-प्रोग्रामर जो सिगिल का उपयोग करता है और जिसने पहले कभी प्रोग्राम नहीं किया है, उनके लिए एक नई भाषा डिज़ाइन कर सकता है, उनके बारे में कभी भी कोई शिकायत नहीं करेगा। दूसरी ओर, आप उन्हें भाषा के हिस्से के रूप में नहीं ले सकते हैं और फिर रूबी या पर्ल प्रोग्रामर को शिकायत करते हैं कि वे कुछ महत्वपूर्ण जानकारी को याद कर रहे हैं।
यह वास्तव में कोई फर्क नहीं पड़ता। इससे कोई फर्क नहीं पड़ता कि कैसे आप भाषा का उपयोग करते हैं या नहीं तो सिगिल कैसे फिट होगा। क्या आप करने में सक्षम होना चाहते हैं "123 $foo 456"
या आपको करना चाहिए "123 " + foo + " 456"
? यहीं पर निर्णय होना चाहिए।