پیاده سازی زبان برنامه نویسی

بندانگشتی|ارجاع سریع به سوئیچ های خط فرمان Tiny C Compiler 0.9.23 در پلتفرم ویندوز

= پیاده سازی زبان برنامه نویسی =
در برنامه نویسی پیاده سازی زبان برنامه نویسی یک سیستمی برای اجرای برنامه های کامپیوتر هست.

به طور کلی دو راه برای پیاده سازی زبان برنامه نویسی هست:

interpretation : برنامه ما به طور مستقیم توسط یک مفسر خوانده میشود و برنامه را اجرا میکند.

compilation : برنامه توسط یک کامپایلر خوانده میشود که ان برنامه را به زبان دیگری ترجمه میکند مانند بایت کد یا کد ماشین.

کد برنامه ای که ترجمه شده است یا به طور مستقیم توسط سخت افزار اجرا میشد یا به عنوان ورودی برای یک مفسر یاکامپایلر دیگر استفاده میشود.

## مفسر(Interpreter)
یک مفسر از دو قسمت تشکیل شده هست: یک تجزیه کننده و یک ارزیاب.

بعد از اینکه یک برنامه توسط یک مفسر خوانده شود توسط تجزیه کننده پردازش میشود. تجزیه کننده برنامه را به عناصر متفاوت ان زبان تجزیه میکند و ان را به فرم یک نمودار درختی تجزیه تبدیل میکند.

ارزیاب از این نمودار درختی تجزیه استفاده میکند تا برنامه را اجرا کند.

### ماشین مجازی
یک ماشین مجازی نوع خاصی از مفسر هست که بایت کد را تفسیر میکند.

بایت کد یک کد سطح پایین قابل حمل است که مشابه کد ماشین هست که اکثرا به جای ماشین فیزیکی روی یک ماشین مجازی اجرا میشود.

برای استفاده بهتر اکثر زبان های برنامه نویسی مانند جاوا، پایتون و سی شارپ قبل از تفسیر به بایت کد ترجمه میشود .

#### کامپایلر آنی(just-in-time compiler)
برخی از ماشین های مجازی شامل یک کامپایلر آنی(JIT) هستند برای اینکه اجرای بایت کد ها بهبود یابد. درهنگامی که بایت کد توسط ماشین مجازی اجرا میشود اگر کامپایلر آنی متوجه تکرار قسمتی از بایت کد شود ان قسمت را به کد ماشین ترجمه میکند. کامپایلر آنی کد ماشین را در حافظه دخیره میکند که ماشین مجازی بتواند از ان استفاده کند.

کامپایلر های آنی در تلاشند که بین زمان زیاد ترجمه شدن کد و زمان اجرای سریع کد تعادل ایجاد کنند.

## کامپایلر(compiler)
یک کامپایلر برنامه‌ای را که به زبانی نوشته شده است را به زبان دیگری ترجمه می‌کند. بیشتر کامپایلرها به سه مرحله تقسیم می‌شوند: فرانت اند، بهینه‌سازی و بک اند. فرانت اند مسئول درک برنامه است. این اطمینان حاصل می‌کند که برنامه معتبر است و آن را به یک نمایش میانی، یک ساختار داده‌ای که توسط کامپایلر برای نمایش برنامه استفاده می‌شود، تبدیل می‌کند. بهینه‌سازی نماینده میانی بهبود می‌بخشد تا سرعت افزایش یابد یا اندازه فایل اجرایی کمتر شود که در نهایت توسط کامپایلر تولید می‌شود. بک اند نمایش میانی بهبود یافته را به زبان خروجی کامپایلر تبدیل می‌کند.

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

ترکیب‌های مختلفی از تفسیر و کامپایل ممکن است و در بسیاری از پیاده‌سازی‌های زبان‌های برنامه‌نویسی مدرن، عناصری از هر دو وجود دارد. به عنوان مثال، زبان برنامه‌نویسی Smalltalk به طور سنتی با کامپایل به bytecode پیاده‌سازی می‌شود، که سپس توسط یک ماشین مجازی تفسیر یا کامپایل می‌شود. از آنجایی که bytecode Smalltalk در یک ماشین مجازی اجرا می‌شود، قابل حمل بر روی پلتفرم‌های سخت‌افزاری مختلف است.

## پیاده سازی های متفاوت
زبان های برنامه نویسی میتوانند چندین روش پیاده سازی داشته باشند.

پیاده سازی های متفاوت میتوانند با زبان های متفاوت نوشته شده باشند و هرکدام راه های متفاوت خود را برای تفسیر یا ترجمه کد داشته باشند. به طور مثال پیاده سازی پایتون شامل:

* CPython ، پیاده سازی مرجع پایتون
* IronPython ، پیاده سازی با هدف قرار دادن . NET Framework (نوشته شده در سی شارپ )
* Jython ، پیاده سازی که ماشین مجازی جاوا را هدف قرار می دهد
* PyPy ، پیاده سازی طراحی شده برای سرعت (نوشته شده در RPython)

## منابع

## لینک های بیشتر