فرق کمپایلر و مفسر چیست؟

in #programming7 years ago

به طور کلی، زبان‌های برنامه‌نویسی به دو دسته‌ی بزرگ تقسیم می‌شوند: زبان‌هایی که کمپایل می‌شوند و زبان‌هایی که تفسیر می‌شوند.

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

عموماً زبان‌هایی که تفسیر می‌شوند، زبان‌های دینامیک هستند، یعنی زبان‌هایی که انواع داده‌ای متغیرها در آن به‌طور مشخص تعیین نمی‌شود و ممکن است در زمان اجرا تغییر کند. بر عکس، زبان‌هایی که دارای کمپایلر هستند، بعضی زبان‌هایی هستند که انواع داده‌ای استاتیک دارند.

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

البته همه‌ی زبان‌هایی که کمپایل می‌شوند به کد ماشین مختص سیستم عامل تبدیل نمی‌شوند. مثلاً در زبان جاوا، وقتی که کد مبدأ برنامه را کمپایل می‌کنید، فایل اجرایی بومی سیستم عامل حاصل نمی‌شود. بلکه بایت‌کد ویژه‌ی ماشین مجازی جاوا حاصل می‌شود. به عبارت دیگر، بایت‌کد حاصل از کمپایل کردن کد مبدأ برنامه‌های جاوا یک کد ماشین ویژه است که باید در درون ماشین مجازی جاوا اجرا شود.

Sort:  

nice post thanks for sharing

Coin Marketplace

STEEM 0.18
TRX 0.16
JST 0.029
BTC 67317.89
ETH 2666.70
USDT 1.00
SBD 2.70