زبان های کامپایلری و مفسری

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

همانطور که خواندید هر برنامه را مجموعه ای از فرمان ها تشکیل میدهد که می تواند جمع و تفریق دو عدد یا ارسال درخواستی به اینترنت باشد. در کل می توان گفت کامپایلر و مفسر وظیفه گرفتن کد هایی که قابلیت خوانده شدن توسط انسان”human-readable” را دارند و آنها را به کدهایی که کامپیوتر”computer-readable” می تواند بخواند(همان زبان ماشین) تبدیل می کنند.

مقایسه کلی

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

خب، این دقیقا یعنی چه؟!!

تصور کنید که یک دستور پخت قرمه سبزی قدیمی به زبان ایتالیایی را بپزید و نوش جان کنید!!

از آنجا که شما به زبان ایتالیایی صحبت نمی کنید، دو راه برای خواندن و انجام دستورالعمل های آن دارید:

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

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

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

زبان های کامپایلری

زبان های کامپایلری مستقیما به زبان ماشین تبدیل می شوند که پردازشگر می تواند آنها را اجرا کند. در نتیجه سرعت و کارآمدی بیشتری برای اجرا در مقایسه با زبان های مفسری دارند.همچنین توسعه دهنده برای کنترل سخت افزار مثل حافظه و استفاده از CPU دستِ بازتَری دارد.

زبان های کامپایری به یک مرحله «ساخت» نیاز دارند و ابتدا باید به طور دستی کامپایل بشوند. شما نیاز دارید که هر بار نیاز به تغییر برنامه داشتید، آن را «بازسازی» کنید.

در همان مثال قرمه سبزی، اگر نویسنده دستور آشپزی تصمیم بگیرد از سبزی های متفاوتی در غذایش استفاده کند، کل دستورالعمل باید دوباره ترجمه شود و برای شما ارسال بشود.

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

سی”C”، سی پلاس پلاس”++C”، روبی”Ruby” و گو “Go” چند زبان کامپایلری هستند.

زبان های مفسری

زبان های مفسری توسط یک برنامه خط به خط خوانده شده و دستورات اجرا می شوند. پس اگر نویسنده بخواهد از سبزی دیگری استفاده کند می تواند بخش مورد نظر را خط بزند و بخش جدید را اضافه کند و دوست شما(مفسر) به محض تغییر کردن دستورالعمل به شما اطلاع می دهد.

دوستان مفسری ما از کامپایلری ها به وضوح کند تر هستند. اما با در نظر گرفتن اجرا شدن در لحظه “just-in-time compilation” این فاصله در سرعت، کوچک به نظر می آید.

پایتون “Python”، پی اچ پی “PHP”، جاوااسکریپت ”JavaScript” چند زبان مفسری هستند.

یک نکته ریز

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

Interpreter vs Compiler

معایب و مزایا

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

زبان های مفسری انعطاف بیشتری دارند و قابلیت های بیشتری مثل سایز کمتر برنامه و داینامیک تایپ(با تایپ های زبان ها در مقاله بعد آشنا می شویم) بودن را در اختیار ما می گذارند. علاوه بر آن با توجه به این نکته که توسط مفسر اجرا می شوند، خود کد نوشته شده به پلتفرم خاصی وابستگی ندارد. ولی از طرف دیگر نبست به زبان های کامپایلری سرعت کمتری را دارند..

رویکرد های ترکیبی

« این بخش برای افرادی که آشنایی بیشتری با برنامه نویسی دارند مناسب است:) »

برخی از زبان ها مانند جاوا و سی شارپ از رویکرد ترکیبی استفاده می کنند. آنها ابتدا در یک bytecode میانی کامپایل می شوند، که سپس توسط یک ماشین مجازی (JVM برای جاوا و CLR برای C#) اجرا می شوند. این سبک اجازه می دهد تا تعادلی بین عملکرد و قابلیت حمل وجود داشته باشد، زیرا bytecode را می توان بر روی هر پلتفرمی که ماشین مجازی مربوط به آن را نصب کرده است اجرا کرد.

شما میتوانید برای اطلاعات بیشتر در مورد این رویکرد ترکیبی از این لینک ها بازدید نمایید:

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

 

دیدگاهی وجود ندارد

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *