E (programming language)
ای محفوظ تقسیم شدہ کمپیوٹنگ کے لیے ایک آبجیکٹ پر مبنی پروگرامنگ زبان ہے، جسے 1997 میں الیکٹرک کمیونٹیز میں مارک ایس ملر، ڈین بورنسٹین، ڈگلس کرک فورڈ، چپ مارننگ اسٹار اور دیگر نے تخلیق کیا تھا۔ ای بنیادی طور پر ہم آہنگی والی زبان جول اور اوریجنل-ای سے نکلا ہے، جو محفوظ تقسیم شدہ پروگرامنگ کے لیے جاوا میں توسیع کا ایک مجموعہ ہے۔ ای جاوا جیسی نحو کے ساتھ پیغام پر مبنی حساب کو جوڑتا ہے۔ ایونٹ لوپس اور وعدوں پر مبنی ایک ہم آہنگی ماڈل اس بات کو یقینی بناتا ہے کہ تعطل کبھی نہیں ہو سکتا۔ فلسفہ ای زبان کمپیوٹر سیکیورٹی اور محفوظ کمپیوٹنگ کے لیے ڈیزائن کی گئی ہے۔ یہ بنیادی طور پر آبجیکٹ پر مبنی کمپیوٹنگ ماڈل کی سختی سے پابندی کے ذریعے انجام دیا جاتا ہے، جس کی خالص شکل میں ایسی خصوصیات ہیں جو محفوظ کمپیوٹنگ کی حمایت کرتی ہیں۔ ای زبان اور اس کی معیاری لائبریری پروگرامرز کو محفوظ سافٹ ویئر بنانے میں مدد کرنے اور سافٹ ویئر کے اجزاء کو تعاون کرنے کے قابل بنانے کے لیے پوری صلاحیت پر مبنی ڈیزائن کے فلسفے کو استعمال کرتی ہے چاہے وہ ایک دوسرے پر مکمل اعتماد نہ کریں۔ ای میں، آبجیکٹ حوالہ جات صلاحیتوں کے طور پر کام کرتے ہیں، اس لیے صلاحیتیں کوئی کمپیوٹیشنل یا تصوراتی اوور ہیڈ لاگت کا اضافہ نہیں کرتی ہیں۔ زبان کا نحو اس طرح ڈیزائن کیا گیا ہے کہ لوگوں کے لیے حفاظتی خامیوں کا آڈٹ کرنا آسان ہو۔ مثال کے طور پر، لیکسیکل اسکوپنگ کوڈ کی مقدار کو محدود کرتی ہے جس کی جانچ کسی دیئے گئے متغیر پر اس کے اثرات کے لیے کی جانی چاہیے۔ ایک اور مثال کے طور پر، زبان موازنہ کے لیے = = آپریٹر اور تفویض کے لیے: = آپریٹر کا استعمال کرتی ہے۔ الجھن کے امکان سے بچنے کے لیے، کوئی = آپریٹر نہیں ہے۔ کمپیوٹیشنل ماڈل E میں، تمام اقدار آبجیکٹ ہیں اور کمپیوٹیشن آبجیکٹ کو پیغامات بھیج کر انجام دی جاتی ہے۔ ہر شے کا تعلق ایک ویٹ (ایک عمل کے مترادف) سے ہے۔ ہر ویٹ میں عمل درآمد کا ایک دھاگہ، ایک اسٹیک فریم، اور ایونٹ کی قطار ہوتی ہے۔ تقسیم شدہ پروگرامنگ صرف دور دراز اشیاء (دیگر وٹس میں موجود اشیاء) کو پیغامات بھیجنے کا معاملہ ہے۔ دور دراز پارٹیوں کے ساتھ تمام مواصلات کو ای رن ٹائم کے ذریعے خفیہ کیا جاتا ہے۔ پہنچنے والے پیغامات کو ویٹ کی تقریب کی قطار میں رکھا جاتا ہے۔ ویٹ کا ایونٹ لوپ آنے والے پیغامات کو آمد کی ترتیب میں ایک ایک کر کے پروسیس کرتا ہے۔ ای کے پاس پیغامات بھیجنے کے دو طریقے ہیں: ایک فوری کال اور ایک حتمی بھیج۔ فوری کال ایک غیر موجودہ زبان میں ایک عام فنکشن یا میتھڈ کال کی طرح ہوتی ہے: بھیجنے والا اس وقت تک انتظار کرتا ہے جب تک کہ رسیور ختم نہ ہو جائے اور ویلیو واپس نہ کرے۔ ایک حتمی بھیج ایک پیغام بھیجتا ہے جب کہ ایک پلیس ہولڈر کو اس نتیجے کے لیے پیش کرتا ہے جسے وعدہ کہا جاتا ہے۔ بھیجنے والا وعدہ کے ساتھ فورا آگے بڑھتا ہے۔ بعد میں، جب کوئی وصول کنندہ ختم کرتا ہے اور نتیجہ دیتا ہے، تو وعدہ نتیجہ میں حل ہوجاتا ہے۔ چونکہ دور دراز اشیاء کے ساتھ بات چیت کرتے وقت صرف حتمی بھیجنے کی اجازت ہوتی ہے، اس لیے ڈیڈ لاک نہیں ہو سکتے۔ تقسیم شدہ نظاموں میں، وعدہ میکانزم نیٹ ورک تاخیر کی وجہ سے ہونے والی تاخیر کو بھی کم کرتا ہے۔ نحو اور مثالیں ای کا نحو جاوا سے زیادہ ملتا جلتا ہے، حالانکہ یہ ازگر اور پاسکل سے بھی کچھ مشابہت رکھتا ہے۔ متغیرات متحرک طور پر ٹائپ کیے جاتے ہیں اور لفظی طور پر دائرہ کار میں ہوتے ہیں۔ جاوا یا ازگر کے برعکس، تاہم، ای مکمل طور پر تاثرات پر مشتمل ہے۔ یہاں ایک انتہائی آسان ای پروگرام ہے: پرنٹ ایل این ("ہیلو، ورلڈ!") یہاں کسی نمبر کے فیکٹوریئل کو کمپیوٹ کرنے کے لیے ایک ریکرسو فنکشن ہے، جو ای میں لکھا گیا ہے۔ افعال کی وضاحت مطلوبہ الفاظ کا استعمال کرتے ہوئے کی جاتی ہے۔ ڈیف فیکٹوریئل (n: int): انٹی {اگر (n = = 1) {ریٹرن 1} بصورت دیگر اگر (n> 0) {ریٹرن n * فیکٹوریئل (n-1)} بصورت دیگر {تھرو ("غلط دلیل سے فیکٹوریئل:" + n)}} پہلی سطر میں، ایک گارڈ ہے جو فنکشن کی دلیل اور نتیجہ کو محدود کرتا ہے۔ گارڈ ٹائپ ڈیکلریشن جیسی چیز نہیں ہے ؛ گارڈ اختیاری ہوتے ہیں اور رکاوٹوں کی وضاحت کر سکتے ہیں۔ پہلا اس بات کو یقینی بناتا ہے کہ فنکشن کے باڈی کو صرف ایک انٹیجر آرگیومنٹ کو ہینڈل کرنا ہوگا۔ مندرجہ بالا دوسرے کے بغیر، فنکشن قدر واپس کرنے کے قابل نہیں ہوگا۔ سامنے یہ دیکھنے کے قابل ہونا کہ معلومات فنکشن سے باہر نکل جاتی ہیں سیکیورٹی آڈیٹنگ کے لیے مددگار ہے۔ چونکہ ای کا مقصد محفوظ تعاون کی حمایت کرنا ہے، اس لیے ای پروگراموں کے لیے مستند مثال ٹکسال ہے، جو ای کی صرف چند لائنوں میں ایک سادہ الیکٹرانک منی سسٹم ہے۔ درج ذیل کوڈ ایک فنکشن کی وضاحت کرتا ہے جو ٹکسال بناتا ہے، جہاں ہر ٹکسال کی اپنی کرنسی ہوتی ہے۔ ہر ٹکسال ایسا پرس بنا سکتا ہے جس میں اس کی کرنسی ہو، اور ایک ہی کرنسی کے دو پرس کا کوئی بھی ہولڈر محفوظ طریقے سے پرس کے درمیان رقم منتقل کر سکتا ہے۔ سورس کوڈ کی فوری جانچ پڑتال سے، ایک ای پروگرامر آسانی سے اس بات کی تصدیق کر سکتا ہے کہ صرف ٹکسال گردش میں موجود رقم کو تبدیل کر سکتے ہیں، کہ پیسہ صرف بنایا جا سکتا ہے اور تباہ نہیں کیا جا سکتا، کہ ٹکسال صرف اپنی کرنسی سے پیسہ بنا سکتے ہیں، اور یہ کہ صرف پرس کا ہولڈر ہی اپنا بیلنس تبدیل کر سکتا ہے۔ ڈیف میک منٹ (نام): کوئی بھی {ڈیف [سیلر، غیر فروخت کنندہ]: = میک برانڈ پیئر (نام) ڈیف منٹ {بنانے کے لیے (ور بیلنس: (انٹ> = 0)): کوئی بھی {ڈیف ڈیکر (رقم: (0.balance)): کالعدم {بیلنس-= رقم} ڈیف پرس {حاصل کرنے کے لیے بیلنس (): انٹ {ریٹرن بیلنس} سے اسپراؤٹ (): کوئی بھی {ریٹرن mint.makePurse (0)} حاصل کرنے کے لیے ڈیکر (): کوئی بھی {ریٹرن sealer.seal (ڈیکر)} جمع کرنے کے لیے (رقم: انٹ، src): کالعدم {unsealer.unseal (src.getDecr (رقم) (رقم) بیلنس اس مثال میں گارڈ کے تاثرات اس بات کی وضاحت کرتے ہیں کہ قدر کی رکاوٹ (جیسا کہ یا میں) کی وضاحت کیسے کی جائے۔ ٹکسال کی مثال ایک بلٹ ان میکانزم کا استعمال کرتی ہے جسے سیلر کہا جاتا ہے۔ فنکشن دو متعلقہ اشیاء، ایک سیلر اور ایک غیر سیلر، اس طرح بناتا ہے کہ سیلر کسی باکس میں کسی شے کو سیل کر سکتا ہے اور غیر سیلر واحد شے ہے جو باکس کے مندرجات کو دوبارہ حاصل کر سکتی ہے۔ پیسے کی اس مثال کی مزید تفصیلی وضاحت کے لیے ای ویب سائٹ دیکھیں۔ آبجیکٹ کیپیبلٹی ماڈل بھی دیکھیں حوالہ جات بیرونی روابط سمورتی پروگرامنگ زبانیں آبجیکٹ پر مبنی پروگرامنگ زبانیں جے وی ایم پروگرامنگ زبانیں محفوظ پروگرامنگ زبانیں متحرک پروگرامنگ زبانیں متحرک طور پر ٹائپ شدہ پروگرامنگ زبانیں پروگرامنگ زبانیں اعلی سطحی پروگرامنگ زبانیں پروگرامنگ زبانیں 1997 کے سافٹ ویئر میں تخلیق کی گئیں