26-03-2020، 9:30
(آخرین ویرایش در این ارسال: 26-03-2020، 9:31، توسط The moon.
دلیل ویرایش: افزودن تصویر/
)
قصد داریم به سادگی تفاوت میان زبانهای کامپایلری و زبانهای مفسری را بیان کنیم.
کامپایلر
اگر تجربهی کار کردن با زبانهایی مثل سی یا سیپلاسپلاس را داشته باشید، میدانید که پس از نوشتن کد منبع، برای اجرا باید آن را کامپایل کنید. زمانی که یک کد به زبان سی را کامپایل میکنید، کامپایلر سی از روی کد منبع شما، یک فایل شیٔ (Object file) درست میکند که ترجمهی کد شما به زبان ماشین است. (همان فایل با پسوند o که تولید میشود) این فایل ترجمهی کدمنبع به زبان ماشین است. سپس برای اجرا کافیست فایل ترجمهشده را اجرا کنید.
پس در این جا متوجه شدیم که یک کامپایلر در ابتدا کل کد منبع را میگیرد و آن را به کد ماشین ترجمه میکند.
مفسر
هنگام استفاده از زبانهای مفسری مثل پایتون، مرحلهی کامپایل کد منبع وجود ندارد. پس از نوشتن کد برنامهنویس آن را اجرا میکند و مفسر خط به خط برنامه را به کد ماشین تبدیل میکند و اجرا میکند. توجه شود که مرحلهی کامپایل در این جا وجود ندارد. برنامه یک خط از کد را میخواند، به کد ماشین تبدیل میکند، سپس آن را اجرا میکند هنگامی که این خط در حال اجراست مفسر خط بعدی را به زبان ماشین ترجمه میکند تا مجددا ترجمهی آن را برای اجرا آماده کند.
مقایسه
سرعت
در زبانهای کامپایلری فقط یک بار کد به زبان ماشین ترجمه میشود و پس از آن میتوان بارها آن را اجرا کرد. در زبانهای مفسری اما برای هر بار اجرا پروسهی خط به خط ترجمه کردن کد به زبان ماشین وجود دارد. به همین خاطر زبانهای کامپایلری از زبانهای مفسری سریعتر هستند.
سهولت
از آن جا که زبانهای مفسری خط به خط کد منبع را به زبان ماشین ترجمه میکنند برای برنامهنویسان تازهکار مناسبتر هستند. برنامهنویس تازه کار میتواند خط به خط خطاهای کد خود را تصحیح کند.
دسترسی
برای اجرای کدهای نوشتهشده به زبانهای مفسری نیاز به مفسر آن کد روی سیستم داریم. برای اجرا کدهای نوشتهشده به زبانهای کامپایلری تنها نیاز به فایل کامپایل شدهی کد داریم. (البته در صورتی این کد قابل اجراست که روی ماشین با سیستمعامل مشابه اجرا شود.)
برای مثال برای اجرای کدهای نوشتهشده به زبان پایتون باید مفسر پایتون را در سیستمعامل موردنظر داشته باشید. اما برای اجرای یک برنامه به زبان سی تنها کافیست یک بار کد را کامپایل کند سپس فایل کامپایل شده را روی سیستمعامل مورد نظر برده و اجرا کنید.
کامپایلر
اگر تجربهی کار کردن با زبانهایی مثل سی یا سیپلاسپلاس را داشته باشید، میدانید که پس از نوشتن کد منبع، برای اجرا باید آن را کامپایل کنید. زمانی که یک کد به زبان سی را کامپایل میکنید، کامپایلر سی از روی کد منبع شما، یک فایل شیٔ (Object file) درست میکند که ترجمهی کد شما به زبان ماشین است. (همان فایل با پسوند o که تولید میشود) این فایل ترجمهی کدمنبع به زبان ماشین است. سپس برای اجرا کافیست فایل ترجمهشده را اجرا کنید.
پس در این جا متوجه شدیم که یک کامپایلر در ابتدا کل کد منبع را میگیرد و آن را به کد ماشین ترجمه میکند.
مفسر
هنگام استفاده از زبانهای مفسری مثل پایتون، مرحلهی کامپایل کد منبع وجود ندارد. پس از نوشتن کد برنامهنویس آن را اجرا میکند و مفسر خط به خط برنامه را به کد ماشین تبدیل میکند و اجرا میکند. توجه شود که مرحلهی کامپایل در این جا وجود ندارد. برنامه یک خط از کد را میخواند، به کد ماشین تبدیل میکند، سپس آن را اجرا میکند هنگامی که این خط در حال اجراست مفسر خط بعدی را به زبان ماشین ترجمه میکند تا مجددا ترجمهی آن را برای اجرا آماده کند.
مقایسه
سرعت
در زبانهای کامپایلری فقط یک بار کد به زبان ماشین ترجمه میشود و پس از آن میتوان بارها آن را اجرا کرد. در زبانهای مفسری اما برای هر بار اجرا پروسهی خط به خط ترجمه کردن کد به زبان ماشین وجود دارد. به همین خاطر زبانهای کامپایلری از زبانهای مفسری سریعتر هستند.
سهولت
از آن جا که زبانهای مفسری خط به خط کد منبع را به زبان ماشین ترجمه میکنند برای برنامهنویسان تازهکار مناسبتر هستند. برنامهنویس تازه کار میتواند خط به خط خطاهای کد خود را تصحیح کند.
دسترسی
برای اجرای کدهای نوشتهشده به زبانهای مفسری نیاز به مفسر آن کد روی سیستم داریم. برای اجرا کدهای نوشتهشده به زبانهای کامپایلری تنها نیاز به فایل کامپایل شدهی کد داریم. (البته در صورتی این کد قابل اجراست که روی ماشین با سیستمعامل مشابه اجرا شود.)
برای مثال برای اجرای کدهای نوشتهشده به زبان پایتون باید مفسر پایتون را در سیستمعامل موردنظر داشته باشید. اما برای اجرای یک برنامه به زبان سی تنها کافیست یک بار کد را کامپایل کند سپس فایل کامپایل شده را روی سیستمعامل مورد نظر برده و اجرا کنید.
source: virgool.io