زبان مفسری و زبان کامپایلری چیست؟ این دو زبان چه تفاوتی با یکدیگر دارند؟ زمان مفسری به هیچ وجه به سیستم عامل وابسته نیست، اما برعکس آن زبان کامپایلری وابسته به سیستم عامل می باشد. کدها در زبان مفسری در اجرای هر برنامه ای ترجمه می شوند که در سیستم های عاملی مختلف قابل اجرا می باشند، اما خروجی در زبان کامپایلری دقیقاً در داخل همان سیستم عامل اجرا می شود که در آن جا کامپایل شده باشد. پس می توان گفت که دو زبان مفسری و زبان کامپایلری کاملاً با یک دیگر متفاوت هستند و نمی توان آن دو را یکی دانست. در این مقاله به بررسی زبان مفسری و زبان کامپایلری می پردازیم.
آشنایی با زبان مفسری و زبان کامپایلری
برای آن که بهتر به تفاوت بین دو زبان مفسری و زبان کامپایلری پی ببرید و به طور کامل با آن ها آشنایی پیدا کنید، هر دو را به صورت جداگانه بررسی می کنیم:
-
آشنایی با زبان مفسری
زبان های مفسری جز زبان هایی می باشند که کدهای برنامه نویسی در آن ها به طور خط به خط به وسیله یک مفسر اجرا خواهد شد، به این ترتیب که مفسر ابتدا کد برنامه ریزی را به دست می آورد و سپس خطوط آن را به ترتیب تفسیر می کند تا برای کامپیوتر زبان قابل درکی باشد. به همین دلیل است که زبان های مفسری هیچ نیازی به کامپایل کردن کدهای برنامه نویسی ندارند، اما در عوض اجرا کردن این کدها به طوری که در فایل متنی آن ذخیره شده باشد، انجام می شود. زبان های مفسری جهت اجرا کردن کدهای برنامه نویسی خودشان به کامپایل کردن نیاز ندارند و مفسرهای مخصوص می توانند در هر زبانی آن را به طور خط به خط تفسیر کنند و همین عدم نیاز به فرایند کامپایل کردن این زبان ها قابلیت تست برنامه و توسعه دادن آن ها را به خوبی افزایش می دهد، علاوه بر آن، چون کدها به طور متنی ذخیره می شوند، بنابراین این زبان ها نیز قابلیت نگه داری بالا و خوانایی خوبی دارند.
- نحوه عملکرد زبان مفسری
عملکرد زبان مفسری دو مرحله کلی را شامل می شود که در مرحله نخست آن برنامه به صورت کلی از قبل به این زبان تحویل داده می شود، سپس در قسمت دوم برنامه ابتدا توسط کاربر تایپ شده و در نهایت به وسیله مفسر اجرا خواهد شد. در این نوع از زبان حتماً برنامه های ارائه شده به طور خط به خط تفسیر و خوانده می شوند، یعنی هر خط به صورت جداگانه و به تنهایی قابل ترجمه و اجرا می باشد.
در هر خط آن ابتدا مفسر سینتکس را مورد بررسی قرار داده و مطمئن می شود که هیچ گونه خطایی در داخل برنامه وجود ندارد، پس از آن این خط را به طور کاملاً مستقل و جداگانه ای اجرا می کند. به این ترتیب اگر خطایی در خطها وجود داشته باشد، مفسر به طور خودکار آن ها را نمایش می دهد
عدم وجود فرایند کامپایلی در این نوع از زبان موجب می شود که اجرای آن به طور خط به خط بوده و به علت همین ویژگی اجرای برنامه در داخل زبان مفسری آهسته تر و کندتر از اجرا در زبان کامپایلری باشد، از طرفی چون این زبان برای اجرا به مفسر نیاز دارد، بنابراین پردازش های اضافی و مصرف حافظه مورد نیاز می باشد.
مزایای زبان مفسری
مزیت های زیر جزو ویژگی های خوب زبان مفسری محسوب می شوند که عبارتند از:
- سهولت جهت نوشتن کد
نوشتن کد در زبان مفسری به دانش کامپیوتری بسیار عمیق نیاز ندارد و تنها برای اجرا کردن کد کافی است که مفسر بر روی زبان مورد نظر نصب شده باشد.
- اجرای سریع کد
در این زمان کد پس از تایپ کردن بلافاصله اجرا می شود، به همین دلیل مدت زمان کم تری نسبت به زبان کامپایلری برای اجرای کد نیاز دارد.
- امکانات خوب دیباگینگ
در زبان مفسری از آن جایی که دستورات به صورت لحظه ای اجرا می شوند، بنابراین امکانات دیباگینگ نیز کارآمدتر خواهند بود.
معایب زبان مفسری
در کنار کلیه مزیت ها و ویژگی های مثبتی که برای زبان مفسری بیان می شود، این زبان معایب زیر را نیز دارد:
کندی در اجرای کد
کد منبع قابل دیدن
نیاز به نصب مفسر
امکان ایجاد خطا
- آشنایی با زبان کامپایلری
روش اجرا کردن کدها مهم ترین و اصلی ترین وجه تمایز در بین دو زبان کامپایلری و مفسری می باشد. در واقع زبان کامپایلری زبانی می باشد که کد منبع آن به وسیله کامپایلر قابل ترجمه به کد اجرایی می باشد. در این زبان کامپایلر با استفاده کردن از الگوریتم های مشخص و خاصی کد منبع را به طور کاملی تبدیل به کد اجرایی می کند، در ادامه نیز این کد اجرایی وارد سیستم های عامل شده و در نهایت به اجرا درمی آید.
در زبان کامپایلری پیش از اجرای برنامه حتماً باید کامپایلر کد منبع مورد نظر را به کد ماشینی ترجمه کند. چون کد ماشینی برای کلیه پردازنده ها قابل فهم می باشد و به صورت مستقیم نیز می تواند به اجرا در بیاید. کد اجرایی به نصب رانتایم نیازی ندارد و حتی عملکرد آن نیز در مقایسه با زبان مفسری بهینه تر است، با این وجود ایجاد تغییرات در کدهای منبع به کامپایل مجدد و تولید کردن مجدد کد اجرایی نیازمند است.
نحوه عملکرد زبان کامپایلری
نحوه عملکرد در زبان کامپایلری به این ترتیب است که کدهای منبع که توسط برنامه نویس نوشته می شوند، به عنوان نوعی ورودی به دست کامپایلر داده می شوند، در ادامه این روند کامپایلر کدهای منبع را ابتدا دریافت کرده، سپس به بررسی آن ها پرداخته تا آن ها را به زبان ماشین و زبان سطح پایین تبدیل کند.
مزیت های زبان کامپایلری
زبان کامپایلری از مزیت های زیادی برخوردار است که نمونه هایی از آن به شرح زیر می باشند:
- سرعت اجرای برنامه
چون در زبان کامپایلری در برنامه تبدیل به کد ماشینی می شود، بنابراین طی فرایند کامپایل دارای سرعت بالاتری نسبت به زبان مفسری می باشد.
- بهینه سازی
برنامه کامپایلر در این زبان به طور خودکاری دارای قابلیت بهینه سازی کدها می باشد، به همین دلیل کدی که معمولاً به وسیله کامپایلر ایجاد می شود سرعت اجرای داده ها را افزایش داده و بهینه تر می باشد.
- کشف خطاهای زمان کامپایل
در زبان کامپایلری معمولاً خطاهای برنامه ای طی فرایند کامپایل مورد شناسایی قرار گرفته و به کاربر اعلام می شوند، یعنی با استفاده کردن از این زبان می توان کلیه خطاهای برنامه را در هنگام توسعه دادن آن شناسایی کرده و نسبت برطرف نمودن آن ها اقدام کرد.
- پایداری بالا
کد کامپایل شده ذخیره می شود، به همین دلیل است که به صورت فایل های اجرایی کلیه این برنامه ها با پایداری خوب و بالاتری قابل اجرا می باشند، به این معنا که تغییرات ایجاد شده در نرم افزار موجب بروز خطای بیش تر نخواهد شد.
معایب زبان کامپایلری
زبان کامپایلری نیز مانند زبان مفسری با وجود مزیت های فراوان خود نواقصی را نیز دارد که عبارتند از:
دشواری در اجرای برنامه با پلتفرم های مختلف
برای اجرا کردن برنامه کامپایل شده حتماً باید برنامه مورد نظر را برای هر کدام از سیستم ها به صورت مجزا کامپایل کنید، که این موضوع موجب خواهد شد که اجرای برنامه ها برای پلتفرم های متفاوت دشوار باشد.
زمان کامپایل بیش تر
برخلاف زبان مفسری زبان کامپایلی معمولاً زمان بیش تری جهت کامپایل کردن برنامه های خود نیاز دارد که این موضوع احتمال دارد موجب تاخیر در روند اجرای این برنامه ها باشد.
عدم قابلیت اجرا کردن برنامه ها در حین کامپایل
در زبان کامپایلری حتماً باید برنامه مورد نظر در همان ابتدای کار کامپایل شود و سپس به اجرا در بیاید، موضوع موجب میشود امکان اجرا کردن برنامهها در حین کامپایل وجود نداشته باشد و در برخی مواقع نیز ایجاد مشکل کند.
کد نویسی برای کلیه برنامه نویسان
در این زمان کد نویسی برای کلیه برنامه نویسان امکان دارد پیچیدهتر و سختتر باشد که این موضوع موجب افزایش یافتن هزینهها و همچنین توسعه برنامهها خواهد شد.
مشکلات امنیتی
برنامههایی که کامپایل شدهاند، معمولاً به صورت اجرایی و باینری در دسترس میباشد، به همین دلیل نیز امکان دارد برخی مشکلات امنیتی به وجود بیاید که البته این مشکلات در برنامه و زبان مفسری به آسانی قابل حل میباشند.
شباهتهای زبان مفسری و کامپایلری
موارد زیر جز شباهتهای بین زبان مفسری و کامپایلری هستند:
هر دو زبان این اجازه را به کاربر میدهند تا بتواند برنامه خودش را در داخل یک زبان خاص و ویژه بنویسد و سپس آن را برای رایانه به یک زبان قابل فهم ترجمه کند.
هر دو زبان ساختارهای کنترلی کاملاً مشابهی دارند که شامل شرطیها، حلقهها و توابع میباشد.
در هر دو زبان برنامههای نوشته شده بر روی سیستمهای عامل متفاوت قابل اجرا است.
هر دو زبان جهت تولید کردن برنامهها با سرعت اجرایی و کارایی بالا طراحی شدهاند.
هر دو زبان جهت ایجاد کردن برنامههای پیچیده و بزرگ مورد استفاده قرار میگیرند.
هر دو زبان به هنگام نوشتن کدهای بهینه و درست قادر هستند نتایج کاملاً مشابهی را جهت اجرای برنامهها پیدا کنند.
تفاوتهای زبان مفسری و کامپایلری
موارد زیر جز تفاوتهای بین دو زبان مفسری و کامپایلری هستند:
روشهای اجرا
سرعت اجرا
اشکال زدایی
پرتاب های استثنا