Charm (programming language)
چارم ایک کمپیوٹر پروگرامنگ زبان ہے جو 1990 کی دہائی کے اوائل میں تیار کی گئی تھی جس میں اپنی کچھ منفرد خصوصیات کے علاوہ آر ٹی ایل/2، پاسکل اور سی زبانوں سے مماثلت ہے۔ چارم زبان کی تعریف ایک سیاق و سباق سے پاک گرائمر کے ذریعہ کی گئی ہے جو کہ ریکرسو ڈیسنٹ پارسر کے ذریعہ کارروائی کے قابل ہے جیسا کہ مرتب ڈیزائن پر بنیادی کتابوں میں بیان کیا گیا ہے۔ ایکورن کے آر آئی ایس سی او ایس پلیٹ فارم کے لیے ایک مرتب، اسمبلر اور لنکر سمیت چارم ٹولز کا ایک سیٹ دستیاب کرایا گیا تھا۔ آر آئی ایس سی او ایس پلیٹ فارمز کے لیے دوبارہ کام کی گئی دلکشی کا بعد میں آرکائیو میگزین میں جائزہ لیا گیا۔ چارم کو مزید ای بک پروگرامنگ ان چارم آن دی راسبیری پائی میں بیان کیا گیا ہے۔ بیکس-نور شکل میں چارم گرامر کی تعریف کے ساتھ ساتھ چارم تعمیرات کی وضاحتی مثالوں کی وضاحت چارم زبان کے صفحہ پر کی گئی ہے۔ زبان بلاک اسٹرکچرڈ ہے، جس میں ہر بلاک کو زبان کے مطلوبہ الفاظ کے ذریعے متعارف کرایا جاتا ہے جو بلاک میں انجام دیے جانے والے آپریشن کی وضاحت کرتا ہے۔ ،، (تکرار)، (انتخاب)۔ ہر بلاک کو {اور} حد بندی سے منسلک کیا جاتا ہے۔ مزید برآں بلاک کے اندر زبان کی لائنیں عام طور پر وضاحت کے لیے اشارہ کی جاتی ہیں، حالانکہ اس کی ضرورت نہیں ہے کیونکہ سفید جگہ کو نظر انداز کر دیا جاتا ہے۔ گرامری طور پر مطابقت رکھنے والا ہر متن قابل عمل کوڈ اور متعلقہ ڈیٹا کے مجموعے کی نمائندگی کرتا ہے جسے چارم ٹول سیٹ کے ذریعے ایک جزو کے طور پر استعمال کیا جا سکتا ہے جب کسی پروگرام کو اسمبل کیا جاتا ہے جسے آپریٹنگ سسٹم کے تحت چلایا جا سکتا ہے جو ڈیٹا پروسیسنگ جیسے مفید کام کرنے کے لیے فراہم کردہ خدمات کا استعمال کرتا ہے یا گرافیکل یوزر انٹرفیس (جی یو آئی) کے ذریعے صارفین کے ساتھ بات چیت کرتا ہے۔ ڈیٹا ٹائپز چارم ایک مضبوطی سے ٹائپ کی گئی زبان ہے، لیکن عددی اور فلوٹنگ پوائنٹ ٹائپز کے درمیان کچھ مضمر تبادلوں کی اجازت دیتی ہے۔ مندرجہ ذیل بنیادی متغیر اقسام کی حمایت کی جاتی ہے:-انٹیجرز-حروف-بولین ویلیوز (یا)-فلوٹنگ پوائنٹ نمبر ایک ہی قسم کے ڈیٹا ایگریگیٹس کو کلیدی لفظ کا استعمال کرتے ہوئے اعلان اور مستحکم طور پر شروع کیا جا سکتا ہے، اور یہ کثیر جہتی ہو سکتے ہیں۔ کلیدی لفظ کا استعمال کرتے ہوئے مختلف اقسام کے مجموعوں کا اعلان کیا جا سکتا ہے، اور اس طرح کے اعلامیے کے لیے یہ قابل اجازت ہے کہ وہ ریکارڈ فیلڈز کی وضاحت کرے جو اسٹوریج الاٹمنٹ کے لحاظ سے ایک دوسرے کو اوورلے کرتے ہیں۔ ماڈیول جامد اور متحرک ڈیٹا اراکین کا مرکب بھی جمع کر سکتے ہیں۔ ریکارڈز اور ماڈیولز دونوں کی مثالیں (صرف متحرک مواد) اسٹیک پر، یا آپریٹر کے ذریعے ڈھیر پر فوری طور پر ظاہر کی جا سکتی ہیں۔ ماڈیولز C + + زبان کی طرح وسائل کو جاری کرنے کے لیے متحرک ڈیٹا اور متعلقہ ڈی کنسٹرکٹر طریقہ کار کو شروع کرنے کے لیے ایک کنسٹرکٹر طریقہ کار کی بھی وضاحت کر سکتے ہیں۔ ماڈیول کے دائرہ کار میں ڈیٹا یا طریقہ کار کا حوالہ کلیدی لفظ کا استعمال کرتے ہوئے حتمی اطلاق کے لیے عالمی بنایا جا سکتا ہے۔ اگر کوئی ماڈیول کسی دوسرے چارم ماڈیول سے کسی طریقہ کار یا ڈیٹا کا حوالہ دینا چاہتا ہے، تو وہ مطلوبہ الفاظ کا استعمال کرتے ہوئے ایسا کرتا ہے۔ ماڈیولز میں مثال پر مبنی ممبر متغیرات ہو سکتے ہیں جو مضمر پہلے پیرامیٹر پوائنٹر کے ذریعے مطلوبہ الفاظ کے ساتھ اعلان کردہ طریقہ کار کے ذریعے قابل رسائی ہیں۔ کلیدی لفظ کا استعمال کرتے ہوئے ڈیٹا کی تعمیر اور طریقہ کار کا حوالہ دیا جا سکتا ہے۔ کلیدی لفظ کا استعمال کرتے ہوئے ان کا حوالہ ہٹایا جا سکتا ہے۔ حوالہ متغیرات کا استعمال کرتے وقت، موازنہ آپریٹرز یہ جانچنے کے لیے دستیاب ہوتے ہیں کہ آیا دو حوالہ متغیر اعداد و شمار کی ایک ہی شے (: =:) کا حوالہ دیتے ہیں یا آیا وہ جس ڈیٹا کی طرف اشارہ کرتے ہیں وہ ایک ہی (=) ہے۔ مثال چارم میں لکھا گیا اصل کلاسک ہیلو ورلڈ پروگرام ہے: ایکسٹ پروک رائٹ _ سٹرنگ (ریف ایرے چار) ؛ ماڈیول ہیلو ؛ اینٹ پروک اسٹارٹ () ؛ رائٹ _ سٹرنگ ("ہیلو ورلڈ") ؛ اینڈ _ پروک ؛ اینڈ _ ماڈیول ؛ اور ارتقائی نحو زبان کی تبدیلیوں کے بعد مساوی تازہ ترین ورژن ہے: درآمد lib.Out ؛ ماڈیول ہیلو {ایکسپورٹ پروک ~ اسٹارٹ () {Out.vdu.str ("ہیلو ورلڈ")۔ این ایل () ؛} ٹول سیٹ کے نفاذ سے توقع کی جاتی ہے کہ وہ چارم سورس کوڈ اور اسمبلر سورس کوڈ سے آبجیکٹ فائلیں بنانے کے لیے ایک مرتب اور ایک اسمبلر فراہم کرے گا، جسے پھر لائبریری اور رن ٹائم سپورٹ فائلوں کے ساتھ مل کر ایک قابل عمل پروگرام تیار کرنے کے لیے منسلک کیا جا سکتا ہے۔ لکھنے کے وقت صرف ایک چارم ٹول سیٹ انسٹالیشن ڈاؤن لوڈ کے لیے (مفت) دستیاب ہے۔ ٹولز خود چارم زبان میں لکھے گئے ہیں، اور سورس کوڈ جی این یو جنرل پبلک لائسنس کی شرائط کے تحت دستیاب ہے۔ وہ آر آئی ایس سی او ایس پی سیز اور اے آر ایم سی پی یوز (جیسے راسبیری پائی) والے پلیٹ فارمز اور آر آئی ایس سی او ایس کے ایمولیٹرز پر چلتے ہیں جو ونڈوز یا لینکس پلیٹ فارمز (جیسے آر پی سی ایمو) پر ہوسٹ کیے جاتے ہیں۔ ہارڈ ویئر کی مدد سے ڈبل صحت سے متعلق فلوٹنگ پوائنٹ آپریشنز کے لیے کوڈ جنریشن کو اے آر ایم چپس پر مبنی پلیٹ فارمز کے لیے سپورٹ کیا جاتا ہے جو وی ایف پی ورژن 2 کوپروسیسر فن تعمیر کو سپورٹ کرتے ہیں۔ کمپائلر چارم کمپائلر ایک ریکرسو ڈیسنٹ سنگل پاس کمپائلر ہے جو فارم کے نتیجے کے چار گنا پیدا کرنے کے لیے چارم سورس کوڈ کو تجزیہ کرتا ہے: = lhs op rhs ایک انٹرمیڈیٹ زبان میں جو ریاضی، منطقی اور کنٹرول آپریشنز کے بہاؤ کی حمایت کرتا ہے۔ ڈیٹا کو عارضی طور پر محفوظ کیا جاتا ہے جو مرتب کے پچھلے سرے پر رجسٹر اور میموری کے مقامات کو تفویض کیا جاتا ہے۔ اس وقت دو پچھلے سرے موجود ہیں، ایک موٹرولا 68000 اسمبلی زبان پیدا کرتا ہے، اور دوسرا اے آر ایم فن تعمیر پیدا کرتا ہے۔ ہیلو ورلڈ کی مثال سے چوگنی آؤٹ پٹ یہ ہے: پیرم ایل 1 $کال رائٹ _ سٹرنگ [پروک (ریف ایرے چار) وایڈ] اور اسمبلر آؤٹ پٹ یہ ہے: سٹرنگ "ہیلو" ایکس ڈیف _ اسٹارٹ الائن _ اسٹارٹ ایکس ریف _ رائٹ _ سٹرنگ ایس ٹی ایم ایف ڈی ایس پی!، {آر پی} ایڈ آر 0، _ ایل 1 $بل _ رائٹ _ سٹرنگ ایل ڈی ایم ایف ڈی ایس پی!، {پی سی} ایڈریس الائن _ ایل 1 $سٹرنگ "ہیلو ورلڈ" ڈائریکٹ اینڈ چارم کی حالیہ ریلیزز میں، آئی/او کے طریقہ کار کو ان کے اپنے ماڈیولز ان اور آؤٹ میں تقسیم کیا گیا ہے۔ دیگر معیاری لائبریری کے طریقہ کار کو ریکارڈ کے ایک سیٹ میں منظم کیا جاتا ہے جس میں طریقہ کار کے حوالہ جات کو فیلڈز کے طور پر رکھا جاتا ہے۔ اس تنظیم نو کے حصے کے طور پر، رائٹ _ سٹرنگ طریقہ کار کو اب رن ٹائم لائبریری ماڈیول آؤٹ کے ذریعے جامد ممبر ریفرنس. vdu کے ذریعے طریقہ کار کے طور پر استعمال کیا جاتا ہے۔ ہیلو ورلڈ کی مثال میں رائٹ _ سٹرنگ ("ہیلو ورلڈ") Out.vdu.str ("ہیلو ورلڈ") بن جاتا ہے۔ اسمبلر انسٹرکشن نیمونکس، ڈیٹا ڈیکلریشنز اور ہدایات کو قبول کرتا ہے اور ایک آبجیکٹ فائل بناتا ہے جس میں ٹارگٹ پروسیسر کے سی پی یو کے ذریعے آسانی سے قابل فہم معلومات ہوتی ہیں، خاص طور پر بائنری میں کوڈ شدہ کوڈ ہدایات میں۔ لنکر ون اور ایک قابل عمل پروگرام بنانے کے لیے منسلک چارم ماڈیولز میں سے صرف ایک میں دستخطوں میں سے کسی ایک سے ملنے والا طریقہ کار ہونا چاہیے: ایکسپورٹ پروک ~ اسٹارٹ () ایکسپورٹ پروک ~ اسٹارٹ (انٹ آرگسی، ریف ایرے ریف ایرے چار آرگوی) یہ سی اور جاوا زبانوں میں مرکزی فنکشن کے مترادف ہے۔ یہاں آرگ سی کمانڈ لائن پر منتقل ہونے والے پیرامیٹرز کی تعداد پر مشتمل ہے اور آرگ وی آرگ سی + 1 سٹرنگز (ایک سٹرنگ فی پوزیشنل پیرامیٹر ترتیب میں اور ایک اختتامی نیل) کی صف کا حوالہ پر مشتمل ہے۔ اس کے علاوہ، ماڈیولز میں اختیاری طور پر اسٹیٹک اسٹارٹ اپ اور شٹ ڈاؤن کے طریقہ کار شامل ہو سکتے ہیں جو پروگرام اسٹارٹ اپ اور شٹ ڈاؤن کے دوران طلب کیے جاتے ہیں جو دستخطوں سے میل کھاتے ہیں: ایکسپورٹ پروک ~ اسٹارٹ اپ () ایکسپورٹ پروک ~ شٹ ڈاؤن () لنک کرنے والا پروگرام کو انجام دینے کے لیے آپریٹنگ سسٹم کے لیے درکار ہیڈر کی کوئی بھی ضروری معلومات شامل کرتا ہے، اور اس بات کو یقینی بناتا ہے کہ رن ٹائم لائبریری اسمبلر سپورٹ کوڈ چل رہا ہے جو رن ٹائم ماحول (ڈیٹا اور اسٹیک پوائنٹرز) کو ترتیب دیتا ہے اور ایپلی کیشن کے اسٹارٹ پروسیجر کو کنٹرول منتقل کرتا ہے۔ ایک نقشہ فائل جو عالمی ڈیٹا اور کوڈ حوالہ جات کے ساتھ پروگرام بنانے کے لیے منسلک تمام ماڈیولز کے نام دکھاتی ہے اختیاری طور پر تیار کی جاتی ہے جسے ڈیبگرز اور پروفائلرز استعمال کر سکتے ہیں۔ حوالہ جات بیرونی روابط چارم فار آر آئی ایس سی او ایس رسک پی سی ایمولیٹر اے آر ایم انفارمیشن سینٹر پروگرامنگ لینگوئجز آر آئی ایس سی او ایس پروگرامنگ ٹولز مثال کوڈ کے ساتھ مضامین