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

in programming •  7 years ago 

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

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

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

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

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

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

nice post thanks for sharing