ایفل (زبان برنامه‌نویسی)

از ویکی‌پدیا، دانشنامهٔ آزاد
پرش به: ناوبری، جستجو

استاندارد ، زبان برنامه نویسی شی گرا طراحی شده توسط برتراند میر (طرفداران شی گرا و نویسنده از ساخت نرم‌افزار شیء گرا ) و نرم‌افزار Eiffel طراحی شده است .طراحی در این زبان است که به دقت با استفاده از روش برنامه نویسی Eiffel متصل شده است .هر دو بر اساس مجموعه ای از اصول طراحی شده، از جمله توسط قرارداد، جداسازی به دستور پرس و جو ،دسترسی یکنواخت به اصل ، اصل انتخاب ،اصل باز و بسته ، و گزینه عملوند جدایی بسیاری از مفاهیم در ابتدا معرفی شده توسط Eiffel بعد راه خود را به جاوا، C # و زبان های دیگر را ، در بر داشت.ایده های طراحی زبان جدید ، به ویژه از طریق فرایند استانداردسازی صورت پرفت.

1 ویژگی

2 اهداف طراحی

2.1 سابقه و هدف

2.2 پیاده سازی و محیط زیست

2.3 مشخصات فنی و استانداردها

3 syntax و معناشناسی

3.1 ساختار کلی

3.1.1 هدف گذاری

3.1.2 "سلام جهان!"

3.2 طراحی شده توسط پیمان

3.3 از درجه اعتبار ساقط ایمنی

3.4 ویژگی ها، دستورات، و نمایش داده شد

3.5 سربار

عمومی؟ 3.7 اصول ارث

3.8 معوق کلاس ها و ویژگی های

3.9 تغییر نام

3.10 تاپل

3.11 نمایندگی

3.12 هنگامی که روال

3.13 تبدیل

3.14 استثنا دست زدن به

3.15 همزمانی

3.16 اپراتور و syntax براکت، اختصاصی دستورها

3.17 خواص واژگان و syntax

3.18 سبک کنوانسیون

3.19 واسط به ابزار و زبان های دیگر

4 پیوند به بیرون

ویژگی های کلیدی از زبان ایفل عبارتند از: ساختار شی گرا ، برنامه ای است که در آن یک کلاس به عنوان واحد اصلی تجزیه می باشد. طراحی شده توسط قرارداد محکم با ساختارهای زبان های دیگر یکپارچه شده است. مدیریت حافظه خودکار، به طور معمول با جمع آوری زباله اجرا شده است. توارث، از جمله ارث بری چندگانه، تغییر نام، تعریف، ""، عدم انطباق ارث، و مکانیزم های دیگر در نظر گرفته شده را به ارث امن را انتخاب کنید. برنامه نویسی عمومی محدود و غیراجباری یک سیستم نوع یکسان از دست زدن به هر دو ارزش و معانی مرجع که در آن همه نوع شامل انواع پایه مانند INTEGER، مبتنی بر کلاس. نوع دهی استاتیک از درجه اعتبار ساقط ایمنی، یا استاتیک حفاظت در برابر تماس در مراجع تهی، از طریق مکانیسم های پیوست شده نوع در Effel می باشد. عوامل، و یا اشیاء است که محاسبات بسته بندی کردن، از نزدیک حساب دیفرانسیل و انتگرال لامبدا متصل است. هنگامی که روال: روال ارزیابی تنها یک بار، برای به اشتراک گذاری شی و مقدار دهی اولیه غیر متمرکز است. کلید واژه مبتنی بر نحو در زبان الگول / پاسکال سنت اما جدا، تا آنجا که سمی کالن اختیاری هستند، با نحو اپراتور در دسترس برای روال. کوردلی مورد ساده و همزمان برنامه نویسی شی گرا (حرکت شبیه چمچه زنی) را تسهیل ایجاد چندگانه، وسایل نقلیه اعدام همزمان فعال در یک سطح انتزاع بالاتر از جزئیات خاص از این وسایل نقلیه (به عنوان مثال چندین موضوعات بدون مدیریت mutex های خاص).

اهداف طرح Eiffel بر اظهارات اخباری در مورد کد رویه و تلاش برای از بین بردن نیاز به دستورالعمل های حسابداری. Eiffel shuns حقه های برنامه نویسی و یا تکنیک های برنامه نویسی در نظر گرفته شده به عنوان نکات بهینه سازی برای کامپایلر. هدف این است که نه تنها به کد قابل خواندن است، اما همچنین به برنامه نویسان اجازه می دهد تا بر روی جنبه های مهم یک برنامه بدون نیاز به تمرکز در جزئیات پیاده سازی پرداخت. سادگی Eiffel در نظر گرفته شده است برای ترویج پاسخ ساده، توسعه، قابل استفاده مجدد و قابل اعتماد است به مشکلات محاسبات پرداخت. کامپایلرها برای برنامه های کامپیوتری نوشته شده در Eiffel ارائه تکنیک های بهینه سازی گسترده مانند خودکار در پوشش، که به از بین بردن برنامه نویس بخشی از بار بهینه سازی در حالی که تولید کد که کارایی قابل مقایسه است .کد زمینه Eiffel نوشته شده توسط Eiffel نرم‌افزار، یک شرکت تاسیس شده توسط برتراند مایر شد. ساخت نرم‌افزار شیء گرا شامل یک درمان دقیق از مفاهیم و تئوری تکنولوژی شی که منجر به طراحی Eiffel است. Eiffel نوشته شده توسط Eiffel نرم‌افزار، یک شرکت تاسیس شده توسط برتراند مایر شد.ساخت نرم‌افزار شیء گرا شامل یک درمان دقیق از مفاهیم و تئوری تکنولوژی شی که منجر به طراحی Eiffel هدف طراحی پشت زبان ایفل، کتابخانه ها، و روش های برنامه نویسی است که برای فعال کردن برنامه نویسان برای ایجاد ماژول های نرم‌افزار قابل اعتماد، قابل استفاده مجدد. ایفل: وراثت چندگانه، genericity، پلی مورفیسم، یگدیگر، تبدیل نوع امن، و کوواریانس پارامتر پشتیبانی می باشد. مهم ترین ایفل سهم به مهندسی نرم‌افزار طراحی شده توسط قرارداد (DbC)، که در آن اظهارات، پیش شرط، شرایط ارسال، و ویژگیهای کلاس برای کمک به اطمینان از صحت برنامه بدون فدا کردن بهره وری است. طراحی Eiffel در نظریه های برنامه نویسی شی گرا، با نفوذ تنها جزئی از پارادایم دیگر و یا نگرانی برای حمایت از میراث کد. Eiffel به طور رسمی پشتیبانی از انواع داده انتزاعی است. بر اساس طراحی ایفل، یک متن نرم‌افزار باید قادر به تکثیر مستندات طراحی خود را از متن خود را، با استفاده از یک پیاده سازی رسمی از "نوع مقاله داده" است..

پیاده سازی و محیط زیست EiffelStudio یک محیط توسعه یکپارچه موجود در هر دو منبع باز و یا یک مجوز تجاری است. این ارائه می دهد یک محیط شی گرا برای مهندسی نرم‌افزار می باشد. EiffelEnvision یک پلاگین در مایکروسافت ویژوال استودیو است که اجازه می دهد تا به کاربران برای ویرایش، کامپایل، و عیب یابی پروژه های انجام شده Eiffel از درون مایکروسافت ویژوال استودیو IDE. EiffelStudio و EiffelEnvision برای استفاده غیر تجاری رایگان هستند. چهار پیاده سازی منبع باز در دسترس عبارتند از: "ایفل کامپایلر" tecomp، Gobo ایفل، SmartEiffel اجرای GNU، بر اساس نسخه قدیمی تر از زبان و ویژوال ایفل. بسیاری از زبان های برنامه نویسی دیگر ترکیب عناصر برای اولین بار در Eiffel معرفی شده است. Sather، به عنوان مثال، در اصل بر روی Eiffel بر اساس، اما از آن زمان تاکنون انشعاب، و در حال حاضر شامل چندین ویژگی برنامه نویسی تابعی است. آموزش تعاملی زبان آبی، پیشرو از BlueJ، همچنین ایفل مبتنی بر. ابزار رسانه ای اپل شامل Eiffel مبتنی بر زبان رسانه ای اپل است. طراحی Eiffel در نظریه های برنامه نویسی شی گرا، با نفوذ تنها جزئی از پارادایم دیگر و یا نگرانی برای حمایت از میراث کد. Eiffel به طور رسمی پشتیبانی از انواع داده انتزاعی است. بر اساس طراحی ایفل، یک متن نرم‌افزار باید قادر به تکثیر مستندات طراحی خود را از متن خود را، با استفاده از یک پیاده سازی رسمی از "نوع مقاله داده" است.

مشخصات و استانداردها Eiffel تعریف زبان استاندارد بین‌المللی ISO است. تحلیل، طراحی و برنامه نویسی زبان: این استاندارد توسط ECMA بین‌المللی، که برای اولین بار استاندارد در 21 ژوئن سال 2005 به عنوان استاندارد تایید شدوECMA-367، Eiffel توسعه داده شد. در ماه ژوئن سال 2006، ECMA و ISO را تصویب نسخه دوم است. در نوامبر 2006، ISO برای اولین بار منتشر شده که نسخه این استاندارد را می توان یافت . ایفل نرم‌افزار را EiffelStudio 6.1 و "Eiffel کامپایلر" tecomp اجرای برخی از مکانیسم عمده جدید ، خاص، عوامل درون خطی، دستورات assigner، نرم‌افزار Eiffel، "ایفل کامپایلر" tecomp و ایفل، کتابخانه، توسعهدهنده Gobo اند که به اجرای استاندارد متعهد علامت کروشه، ارث، غیر انطباق و انواع فایل های پیوست شده. تیم SmartEiffel دور از این استاندارد را تبدیل و به زبان نسخه خود ، که آنها باور دارند که نزدیک به سبک اصلی Eiffel است. ابزارهای شی گرا کهاعلام نشده ، آیا نسخه های آینده از کامپایلر ایفل خود را منطبق با آن استاندارد ساخته اند. مشخصات Eiffel زبان این استاندارد به نقل از سلف به شرح زیر است : برتراند مایر: Eiffel: زبان، شاگردی هال، چاپ دوم، 1992 (چاپ اول: 1991) برتراند مایر: استاندارد ایفل (ویرایشهای قبل از ورود)، در حال انجام، در حال حاضر 1997-در صفحه ETL3 برتراند مایر، و برتراند مایر: ساخت نرم‌افزار شیء گرا، شاگردی هال: چاپ اول، 1988، چاپ دوم، 1997. برتراند مایر: لمس کلاس: آموزش به برنامه با هدف و قراردادهای اسپرینگر ورلاگ، 2009 ISBN 978-3-540-92144-8 lxiv + 876 صفحه کامل رنگ، چاپ، عکس های رنگی متعدد نسخه فعلی استاندارد را از ژوئن سال 2006 شامل برخی از تناقضات (به عنوان مثال covariant redefinitions) .کمیته ECMA هنوز رتبهدهی نشده است اعلام کرد هر گونه جدول زمانی و جهت در مورد چگونه به حل و فصل تناقضات است.

نحو و معناشناسی

ساختار کلی 

Eiffel "سیستم" و یا "برنامه" مجموعه ای از کلاس ها است. بالاتر از سطح کلاس، Eiffel تعریف خوشه، که در اصل گروهی از کلاس ها، و احتمالاً از subclusters (خوشه های تودرتو). خوشه ها ساختار نحوی زبان، بلکه یک قرارداد استاندارد سازمانی نیست. به طور معمول یک برنامه Eiffel با هر کلاس را در یک فایل جداگانه، و هر خوشه در یک دایرکتوری که شامل فایل های کلاس سازمان یافته است. در این سازمان، subclusters زیرشاخه هستند. به عنوان مثال، تحت کنوانسیون های سازمانی استاندارد و پوشش، XE ممکن است نام یک فایل است که تعریف یک کلاس fh نام Xفراخوانی شود. کلاس شامل ویژگی ها، که شبیه به "روال"، "کاربران"، "ویژگی" و یا "روش" در دیگر زبان های برنامه نویسی شی گرا است. کلاس نیز تعریف ویژگیهای خود را دارد، و حاوی خواص دیگر، از قبیل "یادداشت" بخش اسناد و ابرداده است. ایفل انواع داده استاندارد، از جمله به عنوان عدد صحیح، رشته و آرایه ، خود کلاس هستند. هر سیستم باید یک کلاس تعیین شده به عنوان "ریشه"، با یکی از روش های ایجاد آن به عنوان "روش ریشه" تعیین کند. اجرای سیستم شامل ایجاد یک نمونه از کلاس ریشه و اجرای روش ریشه ای آن است. به طور کلی، انجام این کار ایجاد اشیاء جدید، ویژگی های جدید را فرا می خواند، و به همین ترتیب. Eiffel دارای پنج دستورالعمل اجرایی پایه: تخصیص، ایجاد شی، تماس معمول، شرایط، و تکرار می کند. Eiffel ساختارهای کنترل دقیق در اجرای برنامه نویسی ساخت یافته: هر بلوک دقیقاً یک ورود و دقیقاً یک خروجی دارد. هدف گذاری بر خلاف بسیاری از زبانهای شی گرا، اما مانند اسمالتاک، Eiffel اجازه نمی‌دهد هیچ انتساب به زمینه از اشیاء ، جز در ویژگی های یک شی است که کاربرد عملی اصل پنهان کردن اطلاعات یا انتزاع داده، که نیاز به رابط های رسمی برای داده ها جهش. برای قرار دادن آن در زبان از دیگر زبان های برنامه نویسی شی گرا، تمام زمینه ایفل "private" و "setters" مورد نیاز برای تغییر ارزش ها هستند. نتیجه این است که "setters" می تواند است، و به طور معمول انجام دهید، پیاده سازی ویژگیهای که برای Eiffel فراهم نحو. در حالی که Eiffel دسترسی مستقیم به ویژگی های یک کلاس توسط یک مشتری از کلاس اجازه نمی‌دهد، آن را اجازه می دهد برای تعریف از "فرمان assigner"، مانند: some_attribute: SOME_TYPE assign set_some_attribute

  set_some_attribute (v: VALUE_TYPE)
              -- Set value of some_attribute to `v'.
          do
              some_attribute := v
          end
به طور کلی  اجازه می دهد تا به دنبال چیزی مثل دسترسی مستقیم (به عنوان مثال در نتیجه شکستن اصل پنهان کردن اطلاعات ) ، این عمل خطرناک است که آن را پنهان و یا obfuscatesواقعیت " گذارنده " مورد استفاده قرار گرفته است .در عمل ، بهتر است به خواندن تماس مستقیم بهگذارنده و نه از دلالت بر دسترسی مستقیم به یکی از ویژگی های مانند some_attribute همانطور که در کد مثال بالا دلالت می کند .

feature {NONE} -- Initialization

       default_create
                       -- Initialize a new `zero' decimal instance.
               do
                       make_zero
               end

بر خلاف زبان های دیگر، داشتن مفاهیم "public"، "private" و به همین ترتیب، Eiffel با استفاده از فناوری صادرات به کنترل دقیق تر هدف گذاری بین مشتری و کلاس تامین می کند. علاوه بر این، منطق صادرات استفاده می شود می تواند به طور ایستا توسط کامپایلر، که اجازه می دهد تا تشخیص قبل از دامنه نقض تماس در زمان کامپایل به جای زمان اجرا بررسی می شود. به عنوان مثال (در زیر)، شبیه به "خصوصی" را در زبان های دیگر. در محدوده اعمال این راه به "مجموعه ای از ویژگی های" (به عنوان مثال همه چیز را زیر `ویژگی" کلمه کلیدی برای دو بعدی و یا مجموعه ای از ویژگی های کلید واژه پایان کلاس) را می توان در کلاس نسل با استفاده از کلید واژه "صادرات" تغییر کرد. متناوباً،عدماعلامیه صادرات {X } به معنی { هر } و شبیه به " public" هدف گذاری از زبان های دیگر است . feature -- Constants

در نهایت، هدف گذاری انتخابی می تواند دقیقاً در جهان پروژه ایفل باشد و، مانند هر کلاس کنترل است . در اینجا، کامپایلر به شما این امکان را می دهد که تنها کلاس های ذکر شده بینآکولاد برای دسترسی به ویژگی های موجود در گروه ویژگی (مثلاً اعشاری ، DCM_MA_DECIMAL_PARSER ، DCM_MA_DECIMAL_HANDLER ) استفاده کنید.