وقتی صحبت از زبانهای برنامهنویسی مختلف میشود، اساساً میتوان آنها را به دو دسته کلی تقسیم نمود: آنهایی که کامپایل میشوند و آنهایی که اینترپریت میگردند به طوری که از جمله زبانهایی که به دستهٔ اول تعلق دارند میتوان جاوا یا سیشارپ را مثال زد و از جمله زبانهایی که تفسیر میشوند هم میتوان به پیاچپی و جاوااسکریپت اشاره کرد. حال در همین راستا در ادامه قصد داریم تا تفاوتهای مابین فرایندهای Compiler با Interpreter را جویا شویم.
Compiler چیست؟
Compiler یک برنامه کامپیوتری است که کدهای یک زبان برنامهنویسی سطح بالا را به کدی خوانا برای ماشین تبدیل میکند. به عبارتی، برنامهای است که کدهای قابل خواندن توسط انسان را به زبانی که پردازندههای کامپیوتر قادر به درک آن باشند (یعنی کدهای باینری یا همان صفر و یک) تبدیل میکند.
یک کامپایلر باید با سینتکس زبان برنامهنویسی که کدهای برنامهٔ مذکور با آن نوشته میشوند آشنایی داشته باشد اما در عین حال باید در نظر داشت که کامپایلر نمیتواند ارورها و خطاهای موجود در برنامه را تصحیح کند و از همین روی اگر خطایی در کدتان وجود داشته باشد، باید تغییراتی را در سینتکس برنامه ایجاد کنید که در غیر این صورت کدتان کامپایل نخواهد شد.
فرآیند کامپایل فرآیندی نسبتاً پیچیده است که طی آن زمان بسیار زیادی صرف تجزیه و تحلیل و ترجمهٔ سورسکد به کدی قابل درک برای کامپیوتر میشود. به طور کلی، کامپایلرها سورسکد را میخوانند و یک کد قابلاجرا در خروجی تحویل میدهند. به عبارت دیگر، سورسکد نرمافزارهایی را که با یک زبان سطح بالا نوشته شدهاند به صفر و یکهایی تبدیل میکند که کامپیوتر قادر به درک آنها باشد. در واقع، کدی را که یک برنامهنویس مینویسد را به فرمتی خوانا برای CPU تبدیل میکند.
Interpreter چیست؟
Interpreter (مُفسِر) یک برنامهٔ کامپیوتری است که هر خط از دستورات یک زبان سطح بالا را به کد ماشین تبدیل میکند. Compiler و Interpreter هر دو کاری یکسان، یعنی تبدیل کدهای زبان سطح بالا به کد ماشین، انجام میدهند اما کامپایلر کد را پیش از اجرای برنامه به کد ماشین تبدیل میکند (یعنی یک فایل اجرایی همچون exe میسازد) در حالی که مفسر کد را حین اجرا به کد ماشین تبدیل میکند.
همانطور که پیش از این گفته شد، اینترپریتر سورسکد را خط به خط در حین اجرا ترجمه میکند به طوری که سورس یک برنامهٔ نوشته شده با زبانی سطح بالا را به طور کامل به زبان ماشین ترجمه میکند و این در حالی است که مفسر اجازه میدهد تا ارزیابی و اصلاح برنامه در حین اجرا (Run-time) صورت پذیرد.
نیاز به توضیح نیست که پروسهٔ اینترپریت زمان نسبتاً کمتری در مقایسه با کامپایل صرف تجزیه و تحلیل و پردازش برنامه میکند اما در عین حال سرعت اجرای برنامه در مقایسه با زبانهایی که کدشان کامپایل میشود، نسبتاً کندتر است.
درآمدی بر زبانهای سطح بالا
زبانهای سطح بالا مانند JAVA ،C++ ،C و غیره بسیار شبیه به زبان انگلیسی هستند که همین امر سبب آسان شدن فرآیند توسعهٔ نرمافزار میشود اما باید پیش از اجرا، به زبان ماشین (صفر و یک) ترجمه شوند و این ترجمه هم یا توسط کامپایلر انجام میگیرد یا اینترپریتر.
زبان ماشین بسیار شبیه به زبان سختافزار بوده و هر سیستم کامپیوتری زبان ماشین مخصوص به خود را دارا است. برنامههای نوشته شده به زبان ماشین از کدهایی مطابق الگوی باینری تشکیل شدهاند (مثلاً 110110) که نشاندهنده عملیات سادهای است که باید توسط کامپیوتر اجرا شود.
در فرآیند کامپایل سورسکد، کد ماشین تولید شده برای پردازندههای متفاوت (مانند AMD ،Intel و یا ARM) فرق میکند و برای اینکه کد تولید شده به اصطلاح پرتابل باشد، سورسکد ابتدا به Object Code تبدیل میشود (Object Code یک کد واسط شبیه به کد ماشین است که برای هیچ پردازندهای قابلخواندن نیست بلکه در زمان اجرا این کد به کد ماشین پلتفرم اصلی تبدیل میشود.)
طراحی اپلیکیشن | طراحی نرم افزار اندروید | طراحی اپلیکیشن ios | طراحی وب سایت | تولید اپلیکیشن اندروید