Sigil (computer programming)
کمپیوٹر پروگرامنگ میں، سگیل () ایک علامت ہے جو متغیر نام سے منسلک ہوتی ہے، جو متغیر کے ڈیٹا ٹائپ یا دائرہ کار کو ظاہر کرتی ہے، عام طور پر ایک سابقہ، جیسا کہ $فو میں، جہاں $سگیل ہے۔ سگیل، لاطینی سگیلم سے، جس کا مطلب ہے "چھوٹی علامت"، کا مطلب ہے ایک علامت یا تصویر جس کے بارے میں خیال کیا جاتا ہے کہ وہ جادوئی طاقت رکھتی ہے۔ سگلز کو مختلف خصوصیات یا طرز عمل کے حامل نیم اسپیس کو الگ کرنے اور ان کی حد بندی کرنے کے لیے استعمال کیا جا سکتا ہے۔ تاریخی سیاق و سباق سگلز کے استعمال کو بیسک پروگرامنگ زبان نے مقبول بنایا۔ بیسک میں سگیل کی سب سے مشہور مثال تمام تاروں کے ناموں کے ساتھ منسلک ڈالر کا نشان ("$") ہے۔ نتیجتا، امریکہ سے باہر کے پروگرامر "ڈالر" کے بجائے "سٹرنگ" کے طور پر $کا تلفظ کرتے ہیں۔ بہت سی بنیادی بولیاں انٹیجرز اور فلوٹنگ پوائنٹ نمبروں اور ان کی درستگی، اور بعض اوقات دیگر اقسام کو بھی ظاہر کرنے کے لیے دیگر سگلز (جیسے "%") کا استعمال کرتی ہیں۔ لیری وال نے اپنی پرل پروگرامنگ زبان کے لیے شیل اسکرپٹنگ کے سگلز کے استعمال کو اپنایا۔ پرل میں، سگلز باریک دانے والے ڈیٹا کی اقسام جیسے سٹرنگز اور انٹیجرز کی وضاحت نہیں کرتے ہیں، بلکہ اسکیلرز کے زیادہ عام زمرے (سابقہ "$" کا استعمال کرتے ہوئے)، صف ("@" کا استعمال کرتے ہوئے)، ہیش ("%" کا استعمال کرتے ہوئے)، اور سبروٹینز ("&" کا استعمال کرتے ہوئے) کی وضاحت کرتے ہیں۔ راکو متغیرات کے دائرہ کار کی نشاندہی کرنے کے لیے ثانوی سگلز، یا ٹہنیوں کا بھی استعمال کرتا ہے۔ راکو میں ٹہنیوں کی نمایاں مثالوں میں "" (کیریٹ) شامل ہے، جو خود ساختہ رسمی پیرامیٹرز ("پلیس ہولڈر متغیرات") کے ساتھ استعمال ہوتا ہے، اور ""۔ "، آبجیکٹ ایٹریبیوٹ ایکسیسروں (یعنی مثال متغیر) کے ساتھ استعمال ہوتا ہے۔ سیگل کا استعمال کچھ زبانوں میں CLIPS میں، اسکیلر متغیرات کو "؟" کے ساتھ پیش کیا جاتا ہے۔ سیگل، جبکہ ملٹی فیلڈ (مثال کے طور پر، 1-سطح کی فہرست) متغیرات کو "$?" کے ساتھ پیش کیا جاتا ہے۔ کامن لیسپ میں، خصوصی متغیرات (متحرک دائرہ کار کے ساتھ) عام طور پر * سے گھیرے ہوتے ہیں جسے "ایرمف کنونشن" کہا جاتا ہے۔ اگرچہ یہ صرف روایت ہے، اور نافذ نہیں کیا گیا ہے، زبان خود اس عمل کو اپناتی ہے (مثال کے طور پر، * معیاری-پیداوار *)۔ اسی طرح، کچھ پروگرامر مستقلات کو + سے گھیر لیتے ہیں۔ CycL میں، متغیرات کو "?" کے ساتھ پیش کیا جاتا ہے۔ سگیل۔ اسی طرح، مستقل ناموں کو "#$" (تلفظ "ہیش-ڈالر") کے ساتھ پیش کیا جاتا ہے۔ ایلکسیر میں، سگلز کو "~" علامت کے ذریعے فراہم کیا جاتا ہے، اس کے بعد سگیل کی قسم کو ظاہر کرنے کے لیے ایک خط، اور پھر حد بندی۔ مثال کے طور پر، ~ r (فو) "فو" کا باقاعدہ اظہار ہے۔ دیگر سگلز میں سٹرنگ کے لیے ~ s اور تاریخوں کے لیے ~ D شامل ہیں۔ پروگرامر اپنے سگیل بھی بنا سکتے ہیں۔ خفیہ انٹرکل میں، متغیر ایک 16 بٹ انٹیجر شناخت کنندہ ہوتے ہیں جو "" کے ساتھ پہلے سے منسلک ہوتے ہیں۔ (جسے "اسپاٹ" کہا جاتا ہے) 16 بٹ ویلیوز کے لیے، ":" (جسے "ٹو اسپاٹ" کہا جاتا ہے) 32 بٹ ویلیوز کے لیے، "(" ٹیل ") 16 بٹ ویلیوز کی صفوں کے لیے اور" ؛ "(" ہائبرڈ ") 32 بٹ ویلیوز کی صفوں کے لیے۔ بعد میں سی ایل سی-انٹرکل نے ایک متغیر کے لیے "@" ("بھنور") شامل کیا جس میں کوئی قدر نہیں ہو سکتی (کلاسوں کے لیے استعمال کیا جاتا ہے) اور "_" ایک ترمیم شدہ مرتب کو ذخیرہ کرنے کے لیے استعمال ہوتا ہے۔ میپر (عرف بی آئی ایس) میں، نامزد متغیرات کو "<" کے ساتھ پیش کیا جاتا ہے اور ">" کے ساتھ منسلک کیا جاتا ہے کیونکہ سٹرنگ یا کردار کی اقدار کو حوالہ جات کی ضرورت نہیں ہوتی ہے۔ ایم آئی آر سی اسکرپٹ میں، شناخت کاروں کے پاس "$" سگیل ہوتا ہے، جبکہ تمام متغیرات میں "%" کا سابقہ ہوتا ہے (مقامی یا عالمی متغیرات یا ڈیٹا کی قسم سے قطع نظر)۔ بائنری متغیرات کو "&" سے پہلے لگایا جاتا ہے۔ ایم یو ایم پی ایس پروگرامنگ زبان میں، "$" اندرونی فنکشن کے ناموں اور "خصوصی متغیر ناموں" (عمل درآمد کی حالت تک رسائی کے لیے بلٹ ان متغیرات) سے پہلے ہوتا ہے۔ "$Z" غیر معیاری اندرونی فنکشن ناموں سے پہلے آتا ہے۔ "$$" بیرونی فنکشن کے ناموں سے پہلے آتا ہے۔ معمولات (طریقہ کار، ذیلی معمولات، افعال کے لیے استعمال ہوتے ہیں) اور عالمی متغیرات (ڈیٹا بیس اسٹوریج) کو کیریٹ (^) کے ذریعے پیش کیا جاتا ہے۔ آخری عالمی متغیر ذیلی درخت کو بالواسطہ طور پر کیریٹ اور آخری سبسکرپٹ کے ذریعے حوالہ دیا جا سکتا ہے ؛ اسے "ننگی حوالہ" کہا جاتا ہے۔ نظام بھر میں معمولات اور عالمی متغیرات (بعض مشترکہ ڈیٹا بیس (ڈیٹا بیس) میں محفوظ) کو% کے ساتھ پیش کیا جاتا ہے ؛ ان کو "فیصد معمولات" اور "فیصد گلوبل" کہا جاتا ہے۔ آبجیکٹیو-سی میں، "@" سے پہلے والے سٹرنگ لیٹرلز آبجیکٹ ٹائپ این ایس ایس ٹرینگ کی مثالیں ہیں یا، چونکہ کلانگ v3.1/LLVM v4.0، NSNumber، NSArray یا NSDictionary۔ سابقہ @کلیدی الفاظ کے انٹرفیس، نفاذ، اور کلاس کی تعریفوں کے ڈھانچے کو ظاہر کرنے کے لیے اختتام پر بھی استعمال ہوتا ہے۔ کلاس کے اعلانات اور تعریفوں کے اندر بھی،-کا سابقہ ممبر کے طریقوں اور متغیرات کی نشاندہی کرنے کے لیے استعمال ہوتا ہے، جبکہ سابقہ + کلاس عناصر کی نشاندہی کرتا ہے۔ پی ایچ پی زبان میں، جو بڑی حد تک پرل سے متاثر تھی، "$" کسی بھی متغیر نام سے پہلے آتا ہے۔ جن ناموں کو اس سے پہلے نہیں لگایا جاتا ہے انہیں مستقل، افعال یا کلاس کے نام (یا انٹرفیس یا خاصیت کے نام، جو کلاسوں کے طور پر ایک ہی نیم اسپیس کا اشتراک کرتے ہیں) سمجھا جاتا ہے۔ پائلٹ بفرز (سٹرنگ متغیرات) کے لیے "$"، انٹیجر متغیرات کے لیے "#"، اور پروگرام لیبلز کے لیے "*" استعمال کرتا ہے۔ پائیتھن ڈیکوریٹرز کے استعمال کے لیے "@" پریفیکس استعمال کرتا ہے، جسے پائی نحو کہا جاتا ہے، اور "پرائیویٹ" صفات کے لیے "_ _" پریفیکس، جسے ڈنڈر کہا جاتا ہے۔ روبی میں، عام متغیرات میں سگلز کی کمی ہوتی ہے، لیکن "$" کو عالمی متغیرات سے پہلے لگایا جاتا ہے، "@" کو مثال متغیرات سے پہلے لگایا جاتا ہے، اور "@@" کو کلاس متغیرات سے پہلے لگایا جاتا ہے۔ روبی (سختی سے روایتی) لاحقہ سگلز کی بھی اجازت دیتی ہے: "؟" کسی پیش گوئی کے طریقہ کار کی طرف اشارہ کرتا ہے جو کسی بولین یا سچائی یا جھوٹی قیمت کو واپس کرتا ہے، اور "!" اس بات کی نشاندہی کرتا ہے کہ طریقہ کار کا ممکنہ طور پر غیر متوقع اثر پڑ سکتا ہے اور اسے احتیاط سے سنبھالنے کی ضرورت ہے۔ اسکیم میں، روایت کے مطابق، ان طریقہ کار کے نام جو ہمیشہ بولین ویلیو واپس کرتے ہیں عام طور پر "؟" میں ختم ہوتے ہیں۔ اسی طرح، ان طریقہ کار کے نام جو اقدار کو پہلے سے مختص کردہ اسکیم آبجیکٹ (جیسے جوڑے، ویکٹر، یا سٹرنگ) کے حصوں میں محفوظ کرتے ہیں، عام طور پر "!" میں ختم ہوتے ہیں۔ معیاری ایم ایل ایک متغیر پر سابقہ سگیل "" کا استعمال کرتا ہے جو ایک قسم کی طرف اشارہ کرتا ہے۔ اگر سگیل کو دوگنا کیا جاتا ہے، تو اس سے مراد ایک ایسی قسم ہے جس کے لیے مساوات کی وضاحت کی گئی ہے۔ "" حرف متغیر کے اندر یا آخر میں بھی ظاہر ہو سکتا ہے، ایسی صورت میں اس کا کوئی خاص معنی نہیں ہے۔ ٹرانزیکٹ-ایس کیو ایل میں، "@" مقامی متغیر یا پیرامیٹر کے نام سے پہلے ہوتا ہے۔ سسٹم فنکشنز (جنہیں پہلے گلوبل متغیر کے نام سے جانا جاتا تھا) کو "@@" سابقہ سے ممتاز کیا جاتا ہے۔ عارضی ٹیبلز کے دائرہ کار کو سابقہ "#" نامزد مقامی اور "##" نامزد عالمی سے ظاہر کیا جاتا ہے۔ ونڈوز پاور شیل میں، جو جزوی طور پر یونکس شیلز اور پرل سے متاثر تھا، متغیر ناموں کو "$" سگیل سے پہلے لگایا جاتا ہے۔ ایکس ایس ایل ٹی میں، متغیرات اور پیرامیٹرز کے استعمال میں ایک سرکردہ "$" سگیل ہوتا ہے، حالانکہ جب <xsl: प्यारم> یا <xsl: متغیر> میں "نام" کی خاصیت کے ساتھ بیان کیا جاتا ہے، تو سگیل شامل نہیں ہوتا ہے۔ XSLT سے متعلق، XQuery تعریف اور استعمال دونوں میں "$" سگیل فارم کا استعمال کرتا ہے۔ ایم ای ایل میں متغیر ناموں کو افعال، کمانڈز اور دیگر شناخت کاروں سے ممتاز کرنے کے لیے "$" سے پہلے لگایا جاتا ہے۔ اسی طرح کے مظاہر شیل اسکرپٹنگ متغیرات یونکس شیل اسکرپٹنگ میں اور میک فائلز جیسی افادیت میں، "$" ایک یونری آپریٹر ہے جو متغیر کے نام کو اس کے مندرجات میں ترجمہ کرتا ہے۔ اگرچہ یہ سگیل کی طرح لگ سکتا ہے، لیکن یہ مناسب طریقے سے لیکسیکل انڈیریشن کے لیے ایک یونیری آپریٹر ہے، جو کہ سی میں پوائنٹرز کے لیے * ڈیریفرینس آپریٹر کی طرح ہے، جیسا کہ اس حقیقت سے قابل توجہ ہے کہ متغیر کو تفویض کرتے وقت ڈالر کا نشان چھوڑ دیا جاتا ہے۔ شناخت کنونشن فورٹرن میں سگلز کا استعمال نہیں کیا جاتا ہے، لیکن I، J، K، L، M اور N حروف سے شروع ہونے والے تمام متغیرات پہلے سے طے شدہ عدد ہیں۔ فورٹرن دستاویزات اس کا حوالہ "مضمر ٹائپنگ" کے طور پر دیتی ہیں۔ کسی بھی متغیر کو کسی بھی قسم کے ساتھ ظاہر کرنے کی اجازت دینے کے لیے واضح ٹائپنگ بھی دستیاب ہے۔ مختلف پروگرامنگ زبانیں بشمول پرولاگ، ہاسکل، روبی اور گو ایک بڑے حرف سے شروع ہونے والے شناخت کاروں کو چھوٹے حرف سے شروع ہونے والے شناخت کاروں سے مختلف طریقے سے پیش کرتی ہیں، یہ عمل سگلز کے استعمال سے متعلق ہے۔ اسٹروپنگ دراصل اسٹروپنگ کی ایک شکل ہے، مائیکروسافٹ کے. NET کامن لینگویج انفراسٹرکچر (CLI) میں بہت سی زبانوں کے استعمال کے لیے متغیرات کو مختلف زبان میں استعمال کرنے کا ایک طریقہ درکار ہوتا ہے جو کالنگ زبان میں مطلوبہ الفاظ ہو سکتے ہیں۔ یہ بعض اوقات پریفیکس کے ذریعے کیا جاتا ہے۔ سی #میں، کسی بھی متغیر نام کو "@" کے ساتھ پیش کیا جا سکتا ہے۔ یہ بنیادی طور پر متغیر ناموں کے استعمال کی اجازت دینے کے لیے استعمال ہوتا ہے جو بصورت دیگر مطلوبہ الفاظ سے متصادم ہوں گے۔ اسی طرح VB.Net میں نام کو مربع بریکٹ میں جوڑ کر حاصل کیا جاتا ہے، جیسا کہ [آخر] میں ہوتا ہے۔ "@" پریفیکس کو سٹرنگ لیٹرلز پر بھی لاگو کیا جا سکتا ہے ؛ نیچے لفظی افیکس دیکھیں۔ سگلز سے متعلق ہنگری کی علامت ہنگری کی علامت ہے، جو متغیرات کے لیے ایک نام کا رواج ہے جو متغیر نام کے ساتھ بعض حروف تہجی کے سابقہ حروف کو جوڑ کر متغیر قسم کی وضاحت کرتا ہے۔ سگلز کے برعکس، تاہم، ہنگری کے اشارے مرتب کرنے والے کو کوئی معلومات فراہم نہیں کرتے ہیں ؛ اس طرح، متغیرات کے لیے واضح اقسام کو بے کار طریقے سے متعین کیا جانا چاہیے (جب تک کہ ٹائپ انفریشن والی زبان کا استعمال نہ کیا جائے)۔ چونکہ زیادہ تر معیاری مرتب پریفیکس کے استعمال کو نافذ نہیں کرتے ہیں، اس سے خارج ہونے کی اجازت ملتی ہے اور کوڈ کو حادثاتی غلط استعمال کی وجہ سے الجھن کا شکار بھی بناتا ہے۔ جبکہ سگلز کا اطلاق ناموں (شناخت کاروں) پر ہوتا ہے، اسی طرح کے سابقہ اور لاحقہ کا اطلاق لفظی، خاص طور پر انٹیجر لیٹرلز اور سٹرنگ لیٹرلز پر کیا جا سکتا ہے، جس میں یہ واضح کیا جاتا ہے کہ لفظی کا اندازہ کیسے کیا جانا چاہیے، یا یہ کس قسم کا ڈیٹا ہے۔ مثال کے طور پر، 0x10ULL قیمت 16 کا اندازہ C + + میں غیر دستخط شدہ طویل عدد کے طور پر کرتا ہے: 0x سابقہ ہیکساڈیسیمل کی نشاندہی کرتا ہے، جبکہ لاحقہ ULL غیر دستخط شدہ طویل کی نشاندہی کرتا ہے۔ اسی طرح، پریفیکس اکثر خام سٹرنگ کی نشاندہی کرنے کے لیے استعمال ہوتے ہیں، جیسے کہ ازگر میں r "C:\ونڈوز"، جو سٹرنگ کی نمائندگی کرتا ہے جس کی قیمت C:\ونڈوز ہے ؛ ایک فرار شدہ سٹرنگ کے طور پر اسے "C:\\ ونڈوز" کے طور پر لکھا جائے گا۔ چونکہ یہ کسی شناخت کنندہ (نام) کے نحو یا الفاظ کے بجائے لفظی الفاظ (قدر) کو متاثر کرتا ہے، اس لیے یہ نہ تو ٹپکنا (شناخت کنندہ نحو) ہے اور نہ ہی سگیل (شناخت کنندہ الفاظ)، بلکہ یہ نحو کے لحاظ سے یکساں ہے۔ جاوا اینوٹیشن جاوا اینوٹیشن جیسے @Override اور @Deprecated کا موازنہ کریں۔ الجھن بعض صورتوں میں ایک ہی نحو کو الگ الگ مقاصد کے لیے استعمال کیا جا سکتا ہے، جو الجھن کا سبب بن سکتا ہے۔ مثال کے طور پر، سی #میں، "@" سابقہ یا تو ٹپکنے کے لیے استعمال کیا جا سکتا ہے (مخصوص الفاظ کو شناخت کاروں کے طور پر استعمال کرنے کی اجازت دینے کے لیے)، یا لفظی کے سابقہ کے طور پر (خام تار کی نشاندہی کرنے کے لیے) ؛ اس معاملے میں نہ تو استعمال سگیل ہے، کیونکہ یہ شناخت کاروں کے نحو یا لفظی الفاظ کو متاثر کرتا ہے، نہ کہ شناخت کاروں کے الفاظ کو۔ ڈیلیمیٹر سورس کوڈ ٹوکن حوالہ جات سورس کوڈ متغیر (کمپیوٹر سائنس) نامی کنونشن بھی دیکھیں۔