E (زبان برنامه نویسی)

از ویکیپدیا، دانشنامه آزاد
رفتن به ناوبری پرش به جستجو
ه
الگوچند پارادایم : شی گرا ، پیام در حال ارسال است
طراحی شده توسطمارک اس میلر
اولین بار ظاهر شد1997
رشته تایپقوی ، پویا
سیستم عاملکراس پلتفرم
مجوزبخش هایی در مجوزهای مختلف رایگان
سایت اینترنتیerights .org
پیاده سازی های عمده
E-on-Java ، E-on-CL
تحت تأثیر قرار گرفته است
Joule ، Original-E ، جاوا
تحت تأثیر قرار گرفته است
تسویه حساب

E یک زبان برنامه نویسی شی گرا برای محاسبات توزیع شده امن است که توسط Mark S. Miller ، [1] Dan Bornstein ، Douglas Crockford ، [2] Chip Morningstar [3] و دیگران در Electric Communities در 1997 ایجاد شده است. E عمدتا از زبان همزمان Joule و از Original-E ، مجموعه ای از برنامه های افزودنی به جاوا برای برنامه نویسی توزیع شده امن. E محاسبات مبتنی بر پیام را با نحو شبیه به جاوا ترکیب می کند. یک مدل همزمانی بر اساس حلقه های رویداد و وعده ها تضمین می کند که بن بست هرگز رخ نمی دهد. [4]

فلسفه [ ویرایش ]

زبان E با محاسبه ایمن در ذهن طراحی شده است. این امر عمدتا با رعایت دقیق مدل محاسبات شی گرا انجام می شود ، که در شکل خالص آن دارای ویژگی هایی است که از محاسبات ایمن پشتیبانی می کند. زبان E و کتابخانه استاندارد آن از فلسفه طراحی مبتنی بر قابلیت استفاده می کنند تا به برنامه نویسان کمک کنند تا نرم افزاری امن بسازند و اجزای نرم افزار را قادر به همکاری کنند ، حتی اگر کاملاً به یکدیگر اعتماد ندارند. در E ، منابع شیء به عنوان قابلیت ها عمل می کنند ، بنابراین قابلیت ها هیچ هزینه سربار محاسباتی یا مفهومی اضافه نمی کنند. نحو زبان طوری طراحی شده است که افراد بتوانند به راحتی نقص های امنیتی را بررسی کنند. به عنوان مثال ، دامنه لغویمقدار کدی را که باید از نظر تأثیرات آن بر یک متغیر معین بررسی شود ، محدود می کند. به عنوان مثال دیگر ، این زبان از عملگر == برای مقایسه و از عملگر : = برای تخصیص استفاده می کند. برای جلوگیری از امکان سردرگمی است، هیچ وجود دارد = اپراتور.

مدل محاسباتی [ ویرایش ]

در E ، همه مقادیر شی هستند و محاسبه با ارسال پیام به اشیاء انجام می شود. هر شی متعلق به یک گودال است (مشابه یک فرایند ). هر گودال دارای یک رشته اجرایی ، یک قاب پشته و یک صف رویداد است. برنامه نویسی توزیع شده فقط ارسال پیام به اشیاء از راه دور (اشیاء در مخازن دیگر) است. تمام ارتباطات با احزاب از راه دور توسط زمان اجرا E رمزگذاری می شود. پیامهای رسیده در صف رویداد Vat قرار می گیرند. حلقه رویداد vat پیامهای دریافتی را یک به یک به ترتیب ورود پردازش می کند.

E دو راه برای ارسال پیام دارد: تماس فوری و ارسال نهایی . یک تماس فوری درست مانند یک عملکرد معمولی یا فراخوانی متدی در یک زبان غیر همزمان است: فرستنده منتظر می ماند تا گیرنده تمام شود و یک مقدار را برگرداند. ارسال نهایی پیام را در حالی تولید می کند که برای نتیجه ای که به آن وعده داده می شود ، متغیرهایی ایجاد شود . فرستنده بلافاصله به قول خود عمل می کند. بعداً ، هنگامی که گیرنده کار را تمام می کند و نتیجه می دهد ، وعده به نتیجه می رسد. از آنجایی که هنگام برقراری ارتباط با اجسام از راه دور فقط ارسال نهایی مجاز است ، بن بست ها امکان پذیر نیست. در سیستم های توزیع شده ، مکانیسم وعده تأخیرهای ناشی از تأخیر شبکه را نیز به حداقل می رساند.

نحو و مثالها [ ویرایش ]

نحو E بیشتر شبیه به جاوا است ، اگرچه شباهت زیادی به پایتون و پاسکال دارد . متغیرها به صورت پویا تایپ شده و از نظر لغوی محدوده بندی شده اند . برخلاف جاوا یا پایتون ، E کاملاً از عبارات تشکیل شده است . در اینجا یک برنامه E بسیار ساده است:

 println ( "سلام ، جهان!" )

در اینجا یک تابع بازگشتی برای محاسبه فاکتوریل یک عدد است که در E. نوشته شده است. توابع با استفاده از کلمه کلیدی def تعریف می شوند .

 def  factorial ( n  : int )  : int  { 
   if  ( n  ==  1 )  { 
     return  1 
   }  else  if  ( n  >  0 )  { 
     return  n  *  factorial ( n - 1 ) 
   }  else  { 
     throw ( "استدلال نامعتبر به factorial:" + ن ) 
   } 
 }

در خط اول ، : int یک محافظ است که استدلال و نتیجه تابع را محدود می کند. یک نگهبان کاملاً مشابه یک اعلامیه نوع نیست. محافظ ها اختیاری هستند و می توانند محدودیت ها را مشخص کنند. اول : int اطمینان می دهد که بدن تابع فقط باید یک استدلال صحیح را اداره کند. بدون دومی : int بالا ، تابع نمی تواند یک مقدار را برگرداند. این که بتوانید از قبل ببینید که اطلاعات از عملکرد خارج می شوند ، برای ممیزی امنیتی مفید است.

از آنجا که E برای حمایت از همکاری ایمن در نظر گرفته شده است ، مثال عادی برنامه های E ، ضرابخانه است ، یک سیستم پول الکترونیکی ساده در چند خط E. واحد پول. هر ضرابخانه می تواند کیف هایی بسازد که ارز خود را در اختیار دارد و هر دارنده دو کیف پول واحد می تواند پول را بین کیف پول ها به طور ایمن انتقال دهد. با بررسی سریع کد منبع ، یک برنامه نویس E می تواند به راحتی تأیید کند که فقط ضرابخانه ها می توانند مقدار پول در گردش را تغییر دهند ، اینکه پول فقط می تواند ایجاد شود و نابود نشود ، که ضرابخانه ها فقط می توانند پول خود را ایجاد کنند و فقط دارنده کیف می تواند تعادل خود را تغییر دهد.

 دف  makeMint ( نام )  : هر  { 
   دف  [ سیلر ،  unsealer ]  : =  makeBrandPair ( نام ) 
   دف  نعناع  { 
     به  makePurse ( VAR  تعادل  :( INT  > =  0 ))  : هر  { 
       دف  decr ( مقدار  :( 0. . تعادل ) )  : void  { 
         balance  -=  amount 
       } 
       def  کیف { 
         به  getBalance ()  : از نوع int  {  بازگشت  تعادل  } 
         به  جوانه ()  : هر  {  بازگشت  نعناع . makePurse ( 0 )  } 
         به  getDecr ()  : هر  {  مهر و موم برگشتی  . مهر و موم ( decr ) } برای واریز ( مقدار : int ، src ) : void { unsealer . مهر و موم کردن 
              
           ( src . getDecr ()) ( مبلغ ) 
           موجودی  +=  مقدار 
         } 
       } 
       کیف برگشتی  } } ضرابخانه برگشتی }
     
   
    
 

اشیاء در E با کلید واژه def تعریف می شوند و در تعریف شیء ، کلمه کلیدی to to هر روش را آغاز می کند. عبارات نگهبان در این مثال نحوه تعیین محدودیت مقدار (مانند : (int> = 0) یا : (0..balance) ) را نشان می دهد.

مثال ضرابخانه از مکانیزم داخلی به نام سیلر استفاده می کند . تابع makeBrandPair دو شی مرتبط با هم ایجاد می کند ، یک سیلر و یک سیلر ، به طوری که سیلر می تواند یک شیء را در یک جعبه مهر و موم کند و سیلر تنها شیئی است که می تواند محتویات جعبه را بازیابی کند. برای توضیح بیشتر در مورد این مثال پول به وب سایت E مراجعه کنید. [5]

همچنین ببینید [ ویرایش ]

مراجع [ ویرایش ]

  1. ^ Handy، Alex (14 نوامبر 2016). "آینده امنیت نرم افزار" . SD Times .
  2. ^ سیبل، پیتر (21 دسامبر 2009). "برنامه نویسان در محل کار: تاملاتی در زمینه برنامه نویسی" . مراجعه کنید صص 95–96.
  3. ^ "تاریخ E" . www.erights.org .
  4. ^ میلر ، مارک اس. تریبل ، ای. دین ؛ شاپیرو ، جاناتان (2005). "همزمانی بین غریبه ها" (PDF) . قابل اعتماد جهانی محاسبات . نکات سخنرانی در علوم کامپیوتر. 3705 : 195–229. doi : 10.1007/11580850_12 . شابک  978-3-540-30007-6به
  5. ^ ریس ، جاناتان ؛ میلر ، مارک (2001). "از اشیاء تا توانایی ها - پول ساده" . erights.org . ERights . بازبینی شده در 8 جولای 2014 . قبل از ارائه مثال ساده زیر از پول مبتنی بر قابلیت ، باید سعی کنیم از سردرگمی این مثال به طور مکرر جلوگیری کنیم. ما پیشنهاد نمی کنیم که از این طریق پول دربیاوریم! یک سیستم پولی مطلوب همچنین باید شرایط ...

پیوندهای خارجی [ ویرایش ]