بعد از اینکه مقالاتی در باره مفسر و کامپایلر داخل سایت قرار دادیم بعضی ها در مورد زبان های مختلفی مثل جاوا سوال پرسیدند مثل اینکه: زبان جاوا مفسری است یا کامپایلری، در این مقاله ابتدا توضیح میدهم مفسر چیست و چه کاربردی دارد و بعد در مورد کامپایلر صحبت می کنم و در آخر میگم زبان جاوا مفسری است یا کامپایلری، پس همراه ما باشید تا جواب این سوال رو دهیم.
مفسر چیست؟
اگر بخواهیم واضح بگویم مفسر در برنامه نویسی چیست؟ مفسر یک برنامه کامپیوتری است که دستورهای نوشته شده در یک زبان برنامه نویسی را اجرا میکند. مفسر در واقع یک زبان برنامه نویسی سطح بالا را به یک زبان قابل فهم برای ماشین تبدیل می کند.
نکته مهم: در زبان های مفسری کد ها به صورت خط به خط تفسیر و اجرا می شوند و در اجرا بعدی برنامه نیز به همین صورت ادامه می یابد.
همینطور که می دانید هر دستگاه کامپیوتری (کامپیوترهای رومیزی، نوت بوک ها، گوشی های هوشمند، تبلت ها و …) از سخت افزار خاصی ساخته شده است که دارای قسمت های مختلفی از جمله پردازنده (Processor) است. حال اگر بخواهید برای این پردازنده برنامه ای بنویسید که این پردازنده کاری را انجام دهد باید دستورات زبان ماشین خاص آن پردازنده را یکجا نوشته و در یک فایل ذخیره کنید و برای اجرا آن فایل را یکباره به پردازنده بدهید تا اجرا کند.
چون نوشتن به زبان ماشین بسیار نیاز به حوصله و وقت دارد و اشکال زدایی (دیباگ) آن نیز کار پر مشقت و وقت گیر است معمولا از سایر زبان ها استفاده می کنند و آن زبان ها را با “برنامه های خاصی” به زبان ماشین تبدیل می کنند.
اگر آن برنامه خاص تبدیل دستورات به زبان ماشین را به جای یکباره و کامل به صورت دستور به دستور انجام دهد و همان لحظه دستور تبدیل شده (فقط و فقط همان دستور را) برای اجرا به پردازنده تحویل دهد و پس از اجرا دوباره دستور بعد را به زبان ماشین تبدیل کند و به پردازنده تحویل دهد و … این ماجرا تا به انتهای دستورات به صورت خط به خط تکرار شود و دستورات زبان ماشین توسط پردازنده فقط اجرا شوند و در فایلی ذخیره نشوند به آن برنامه خاص اینترپرتر یا مفسر می گویند.
توجه: برای درک بهتر و دقیق تر پیشنهاد میکنم مقاله مفسر در برنامه نویسی چیست رو کامل مطالعه کنید.
کامپایلر چیست؟
اگر بخواهیم کامپایلر رو تعریف کنیم و بگیم واقعا کامپایلر چیست باید بگویم مجموعهای از برنامه یا برنامههای کامپیوتری است که متنی از زبان برنامهنویسی سطح بالا (زبان مبدا) را به زبانی سطح پایین (زبان مقصد)، مثل اسمبلی یا زبان سطح ماشین، تبدیل میکند.
به بیان ساده، کامپایلر برنامهای است که یک برنامه نوشته شده در یک زبان خاص ساختیافته را خوانده و آن را به یک برنامه مقصد (Target Language) تبدیل مینماید. در یکی از مهمترین پروسههای این تبدیل، کامپایلر وجود خطا را در برنامه مبدأ اعلام مینماید.
تعریف یکی از دوستان از کامپایلر، کامپایلر برنامهای رایانهای میباشد که بهمنظور انتقال زبانهای برنامهنویسی سطح بالا به زبانهای سطح پایین مانند زبان اسمبلی و زبان ماشین، جهت اجرایی شدن، طراحی وارائهشدهاند، خروجی این نرمافزار برای ماشینهایی مانند رایانه قابل اجرا هست.
توجه: برای درک بهتر و دقیق تر پیشنهاد میکنم مقاله کامپایلر در برنامه نویسی چیست و بررسی انواع کامپایلر رو کامل مطالعه کنید.
زبان جاوا مفسری است یا کامپایلری
تا این لحظه متوجه شدیم مفسر و کامپایلر چیست و چه کاربردی دارند. حالا باید بررسی کنیم زبان جاوا مفسری است یا کامپایلری، یک برنامه جاوا در پایان مراحل توسعه همانند یک زبان کامپایلری کامپایل می شود (به Java bytecode) و در زمان اجرا همانند زبان های مفسری interpret می شود. پس باید گفت زبان جاوا هم مفسری است هم کامپایلر.