Programming language specification
برخی از ویرایشها در این مقاله در چارچوب یک تکلیف دانشگاهی انجام شدهاند. این تکالیف توسط ؟ برای دانشجویان ؟ تعیین شدهاند. |
در محاسبات، یک زبان برنامهنویسی (یا استاندارد یا تعریف)یک محصول مستند است که زبان برنامهنویسی را تعریف میکند به گونهای که کاربران و کسانی که پیاده سازی میکنند بتوانند بر روی برنامههایی که در آن زبان معنا پیدا میکنند، به توافق برسند. مشخصات معمولا دقیق و رسمی هستند، و اصولا توسط پیادهسازی استفاده میشوند، با کاربرانی که به آنها در صورت ابهام اشاره میکنند؛ برای مثال، به خاطر پیچیدگی، مشخصه C + + به طور مکرر توسط کاربران ذکر میشود. مستندات مرتبط شامل یک مرجع زبان برنامهنویسی، که به طور خاص برای کاربران و یک منطق زبان برنامهنویسی در نظر گرفته میشود، که چرایی مشخصاتی که به شکل زیر نوشته شدهاست را توضیح میدهد؛ اینها معمولا نسبت به مشخصات غیر رسمی هستند.
استاندارد سازی[ویرایش]
همه زبانهای برنامهنویسی اصلی فاقد مشخصات خاص هستند و زبانها میتواند برای دههها بدون ویژگی محبوب باشند. یک زبان ممکن است یک یا چند پیادهسازی داشته باشد، که رفتار آن به عنوان یک استاندارد بالفعل عمل میکند، بدون این که این رفتار در مشخصات مستند شده باشد. پرل (از طریق پرل ۵)یک نمونه برجسته از یک زبان بدون ویژگی است، در حالی که PHP تنها در سال ۲۰۱۴ بعد از ۲۰ سال کاربرد دارد. یک زبان ممکن است اجرا شود و سپس مشخصشود، یا مشخصشده و سپس اجرا شود، یا ممکن است با هم توسعه پیدا کنند، که روال معمول امروز است. این به این دلیل است که پیادهسازی و مشخصات، کنترل را بر روی یکدیگر قرار میدهند: نوشتن یک استاندارد مستلزم بیان دقیق رفتار یک پیادهسازی است، و اجرای کنترل که یک استاندارد، عملی، و سازگار است. نوشتن مشخصات قبل از اجرا تا حد زیادی از الگول ۶۸ (۱۹۶۸)، ناشی از مشکلات پیشبینینشده در اجرای زمانی که اجرا به تعویق میافتد، اجتناب شدهاست. با این حال، زبانها هنوز هم گاهی اجرا میشوند و محبوبیت کسب میکنند بدون مشخصات رسمی: یک پیادهسازی برای استفاده ضروری است، در حالی که یک ویژگی مطلوب است اما ضروری نیست (غیر رسمی، "گفتگوهای کد").
فرم ها[ویرایش]
مشخصات زبان برنامه نویسی می تواند چندین فرم داشته باشد شامل موارد زیر است:
- یک تعریف صریح از نحو و معناشناسی زبان. در حالی که سینتکس بطور معمول با استفاده از دستور زبان رسمی مشخص میشود، تعاریف معنایی ممکن است به زبان طبیعی نوشته شوند (به عنوان مثال، رویکرد گرفتهشده برای زبان C)، یا یک معنای رسمی (به عنوان مثال، استاندارد استاندارد و مشخصات طرح). یک مثال قابلتوجه، زبان C است، که بدون ویژگی رسمی محبوبیت کسب کرد، به جای آن که به عنوان بخشی از یک کتاب توصیف شود، زبان برنامهنویسی C (۱۹۷۸)، و تنها بعد از آن رسما در ANSI C استاندارد شد (۱۹۸۹). توصیف رفتار یک کامپایلر (گاهی مترجم)برای زبان (به عنوان مثال، زبان C + + و Fortran). نحو و معناشناسی زبان باید از این توصیف استنباط شود که ممکن است به زبان طبیعی و یا یک زبان رسمی نوشته شود. یک پیادهسازی یا مدل، که در زبان مشخصشده گاهی نوشته میشود(به عنوان مثال، Prolog). نحو و معناشناسی زبان در رفتار مدل به روشنی بیان میشوند.
نحو[ویرایش]
سینتکس یک زبان برنامهنویسی معمولا با استفاده از ترکیبی از دو جز زیر توصیف میشود:
- عبارت منظمی با توصیف واژگان آن ، و
- یک گرامر مستقل از متن که نحوه ترکیب واژگان را برای تشکیل یک برنامه صحیح نحوی توضیح می دهد.
مفاهیم[ویرایش]
Formulating یک زبان برنامهنویسی دقیق، پیچیده، عملی است که حتی برای متخصصان باتجربه، کار دشواری است، و مشخصات حاصله را می توان برای هر کسی غیر از متخصصان دشوار دانست. در زیر برخی از روشهایی که زبان برنامهنویسی را می توان توصیف کرد عبارتند از: همه زبانها حداقل یکی از این روشها را استفاده میکنند و برخی زبانها بیشتر از یک زبان ترکیب میشوند.
- زبان طبیعی : توصیف توسط زبان طبیعی انسان.
- معناشناسی صوری : توصیف توسط ریاضیات .
- پیاده سازی مرجع : شرح توسط برنامه کامپیوتری
- مجموعه تست : توصیف از طریق نمونههایی از برنامهها و رفتارهای مورد انتظار آنها. در حالی که برخی ویژگیهای زبانی از این شکل شروع میشوند، تکامل برخی ویژگیهای زبانی تحتتاثیر معانی یک مجموعه تست قرار گرفتهاست (به عنوان مثال در گذشته ویژگی آدا برای انطباق با رفتار of تست ارزیابی آدا تغییر کردهاست).
زبان طبیعی[ویرایش]
بسیاری از زبانها که به طور گسترده مورد استفاده قرار میگیرند، با استفاده از توصیفات زبان طبیعی از معانی آنها مشخص میشوند. این توصیف معمولا فرم یک راهنمای مرجع برای زبان را به خود میگیرد. این دستورالعملها میتوانند برای صدها صفحه اجرا شوند، به عنوان مثال، نسخه چاپی استاندارد ویژگی زبان جاوا، سوم اد. در حدود ۵۹۶ صفحه است.
عدم دقت زبان طبیعی به عنوان ماشین برای توصیف معناشناسی زبان برنامهنویسی منجر به مشکلاتی با تفسیر مشخصات شود. به عنوان مثال، معناشناسی رشتههای جاوا در زبان انگلیسی مشخص شد و بعدها کشف شد که استاندارد ویژگی، رهنمود کافی برای implementors فراهم نکرده است.
معناشناسی رسمی[ویرایش]
معناشناسی صوری در ریاضیات پایهریزی شدهاست. در نتیجه، آنها میتوانند دقیقتر و کمتر از معانی بیان شده در زبان طبیعی باشند. با این حال، توصیف زبان طبیعی مکمل از معانی اغلب شامل درک کمک از تعاریف رسمی میشود. برای مثال استاندارد ISO برای Modula - ۲ شامل یک تعریف رسمی و هم یک تعریف زبان طبیعی در صفحات مخالف است.
زبانهای برنامهنویسی که معانی آنها به طور رسمی توصیف میشوند میتوانند فواید بسیاری داشته باشند. برای مثال:
- معناشناسی رسمی، اثبات ریاضی صحت برنامه را امکان پذیر می کند.
- معناشناسی رسمی طراحی سیستم های نوع و اثبات درستی آن نوع سیستم ها را تسهیل می کند.
- معناشناسی رسمی می تواند استانداردهای یکنواخت و بدون ابهام را برای پیاده سازی یک زبان ایجاد کند.
پشتیبانی ابزار خودکار میتواند به درک برخی از این مزایا کمک کند. برای مثال، یک قضیه اتوماتیک prover یا قضیه قضیه میتواند اعتماد به نفس یک برنامهنویس (یا طراح زبان)را در درستی اثبات در مورد برنامهها (یا خود زبان)افزایش دهد. قدرت و مقیاس پذیری این ابزارها به طور گستردهای متفاوت است: تایید رسمی کامل از نظر محاسباتی بسیار زیاد است، و ممکن است نیازمند کمک دستی قابلتوجه از یک برنامهنویس است؛ ابزارهای سبکوزن از قبیل چک کردن مدل به منابع کمتری نیاز دارند و بسیاری از کامپایلر ها از کنترلهای نوع استاتیک برای هر برنامهای که گردآوری میکنند استفاده میکنند.
پیاده سازی مرجع[ویرایش]
پیادهسازی مرجع یک پیادهسازی واحد از یک زبان برنامهنویسی شناخته شدهاست. رفتار این عملکرد برای تعریف رفتار مناسب یک برنامه نوشته شده در زبان انجام شدهاست. این رویکرد چندین ویژگی جذاب دارد. اول اینکه، دقیق است و نیازی به تفسیر انسانی ندارد: بحث در مورد مفهوم یک برنامه میتواند به راحتی با اجرای برنامه در پیادهسازی مرجع حل شود (مشروط به اینکه اجرا برای این برنامه اجرا شود)
از سوی دیگر، تعریف معناشناسی زبان از طریق اجرای مرجع نیز دارای چندین مانع بالقوه است. در بین آنها این است که آن محدودیتهای پیادهسازی مرجع با ویژگیهای زبان را نشان میدهد. به عنوان مثال، اگر پیادهسازی مرجع یک اشکال داشته باشد، آنگاه این اشکال باید به عنوان یک رفتار معتبر در نظر گرفته شوند. اشکال دیگر این است که برنامههای نوشته شده در این زبان ممکن است به خصوصیات در اجرای مرجع تکیه کرده، و مانع از قابلیت حمل در کاربردهای مختلف شوند..
با این وجود، چندین زبان با موفقیت از رویکرد اجرای مرجع استفاده کردهاند. برای مثال، مفسر پرل برای تعریف رفتار authoritative برنامههای پرل در نظر گرفته میشود. در مورد پرل، مدل منبع باز توزیع نرمافزار به این حقیقت کمک کردهاست که هیچکس تا به حال اجرای دیگری از زبان را تولید نکرده است، بنابراین موضوعات دخیل در استفاده از یک پیادهسازی مرجع برای تعریف معانی زبانی مورد بحث هستند.
مجموعه تست[ویرایش]
تعریف معنای زبان برنامهنویسی از نظر یک مجموعه تست شامل نوشتن تعدادی از برنامههای نمونه در زبان است و سپس توضیح میدهد که چگونه این برنامهها باید رفتار کنند - شاید با نوشتن خروجیهای صحیح آنها. این برنامهها، به اضافه خروجیهای آنها، "مجموعه تست" زبان نامیده میشوند. سپس هر اجرای زبان صحیح باید دقیقا خروجیهای صحیحی را در برنامههای مجموعه تست تولید کند.
مزیت اصلی این رویکرد برای توصیف معنایی این است که تعیین اینکه آیا پیادهسازی زبان از یک مجموعه تست عبور میکندیاخیر, آسان است.کاربرمیتواندبه سادگی تمام برنامههارا درمجموعه تست اجراکند وخروجیهارا به خروجیهای مورد نظرمقایسه کند.با این حال, هنگامی که خود به تنهایی مورد استفاده قرار میگیرد, رویکرد مجموعه تست دارای اشکالات عمده این میباشد.به عنوان مثال,کاربران میخواهند برنامهها ی خود را اجراکنند, که بخشی از مجموعه تستی نیستند ;در واقع, اجرای زبان که تنها میتواند برنامههایی را درمجموعه تست خودا جرا کند ,تا حد زیادی بیفایده خواهد بود . امایک مجموعه تست, به خودی خود ,توضیح میدهدکه چگونه پیادهسازی زبان باید در هر برنامه نه درمجموعه تست رفتار کند;تعیین این رفتار نیازمند یک برون یابی دربخشimplementorاست ,وممکن استimplementorsمتفاوت با هم مخالفت کنند .علاوه بر این,استفادهاز یک مجموعه تست برای آزمایش رفتار که در نظر گرفته شده یامجاز به غیرقطعی بودن دشوار است.
بنابراین، در عمل معمول، مجموعههای تست تنها در ترکیب با یکی از تکنیکهای استاندارد ویژگی زبان، مانند توصیف زبان طبیعی یا یک پیادهسازی مرجع استفاده میشوند.
همچنین ببینید[ویرایش]
- مرجع زبان برنامه نویسی
لینک های خارجی[ویرایش]
مشخصات زبان[ویرایش]
چند نمونه از مشخصات زبان رسمی یا پیش نویس:
- مشخصات نوشته شده در درجه اول در ریاضیات رسمی:
- تعریف استاندارد ML، ویرایش اصلاح شده - یک تعریف رسمی در سبک معنایی عملیاتی.
- طرح R5RS - یک تعریف رسمی در سبک معنایی معنایی
- مشخصات نوشته شده در درجه اول به زبان طبیعی:
- مشخصات از طریق مجموعه آزمایشی:
یادداشت[ویرایش]
This article "Programming language specification" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:Programming language specification. Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.