شروع برنامه نویسی (کامپایلر) و (مفسر)
کامپایلر (compiler):
نوعی نرم افزار است که دستوراتی که برنامه نویس در قالب کد مینویسد را به زبان ماشین تبدیل میکند؛ تا CPU آنها را فهمیده و اجرا کند. سپس با عنوان machine code در دیسک ذخیره خواهد شد. به عمل تبدیل source code به کد ماشین که شامل صفر و یک است، کامپایل کردن یا compilation گفته میشود.
زمانی که این تبدیل صورت میگیرد ممکن است در هنگام build زمان زیادی ببرد اما برنامه خروجی به دلیل اینکه به صورت مستقیم و بدون نیاز به هیچ برنامه واسطی بر روی سیستم کاربر اجرا خواهد شد مصرف رم (RAM) کمتر و سرعت اجرای بالاتری را در پی خواهد داشت.
کامپایلرها در هنگام کامپایل، کل کد را به صورت یکجا مشاهده میکنند در نتیجه علاوه بر اینکه میتوانند کد شما را برای اجرای سریعتر بهینه کنند، میتوانند مشکلات کد شما را به صورت یکجا نمایش دهند ( برنامه بدون حل این مشکلات قابل اجرا نیست)؛ همچنین این امکان وجود ندارد که بتوانید کد برنامه را بدون داشتن کد کامپایل نشده تغییر دهید زیرا کد برنامه به زبان ماشین میباشد.
Interpreter
یکی دیگر از روشهایی که میتوانید کدهایتان را به دستورات قابل اجرا توسط CPU تبدیل کنید، استفاده از مفسر (interpreter) است. این برنامه شامل کد منبع (source code)، کد کامپایل شده (pre-compiled code) و اسکریپتها (scripts) میباشند. این روش کدهای ماشینی را ذخیره نمیکند.
مفسر کد شما را به صورت خط به خط و در لحظه اجرا میکند. پس همواره برای اجرای برنامهها نیاز است مفسر مربوطه بر روی کامپیوتر شخص وجود داشته باشد. آنها یک خط را میخوانند و در صورت وجود مشکل آن را به شما نشان میدهند؛ برای آنکه خط بعد خوانده شود شما باید مشکل موجود در همان خط را برطرف کنید.
یک برنامهی تفسیر شده نسبت به یک برنامهی کامپایل شده بسیار کندتر میباشد؛ زیرا برای اینکه هربار اجرا شود نیاز دارد که دوباره خط به خط کد ها را خوانده و برای CPU ترجمه کند و مقدار زیادی از حجم CPU و Ram کامپیوتر را میگیرد؛ به همین دلیل این برنامهها کندتر هستند.
معروفترین زبانهای مفسری شامل Python، PHP، Perl، MATLAB، Basic Ruby و جاوا اسکریپت هستند.
معروفترین زبانهای کامپایلری++ Pascal، C و جاوا را میتوان نام برد.
بهترین محل استفاده از زبانهای مفسری و کامپایلری:
- زبانهای interpreter:
برای محیطهای وب یا هر کجا که زمان بار گذاری (load) اهمیت دارد مناسب هستند زیرا کامپایل کردن کد، زمان بیشتری میبرد. این موضوع بخاطر آن است که میبایست حتی کدهای کوچکی که بیشتر از یکبار استفاده نشدهاند نیز compile شوند. در این شرایط آن زبان دیگر بهتر عمل میکند. در آن زبان تجزیه و تحلیل به صورت کامل انجام میشود، به خاطر همین زمان زیادی برای کامپایل شدن صرف میشود.
- زبانهای compiler:
برای برنامههایی که مخصوص به یک ماشین خاص هستند و قرار نیست به صورت پورت شده اجرا شوند و نیز
قابلیت انتقال ندارند مناسب تر هستند.
تفاوتهای دو زبان :
- زبانهای مفسری به صورت خط به خط کدها را میخواند و اجرا میکند در حالیکه زبانهای کامپایلری بصورت یکجا کد برنامه را خوانده و آن را هر زمانی که نیاز باشد اجرا میکنند.
- برنامهها در زبان interpreter وابسته به سیستم عامل نیستند و در هر سیستم عاملی قابل اجرا میباشند ولی در compiler برنامهها برای هر سیستم عاملی متفاوت است و باید برای هر نوعی از آن تغییرکد و مجددا کامپایلر شوند.
- برای اجرای یک برنامه مفسری باید interpreter مورد نظر بر روی سیستم عامل حتما نصب باشد ولی برای اجرای یک برنامه کامپایلری نیازی نیست حتما compiler بر روی سیستم عامل باشد. به عنوان مثال برای اجرای کدهایی به زبان پایتون باید همان را در سیستم عاملتان داشته باشید. ولی برای اجرای کدهایی به زبان C، یکبار کامپایل کردن کد آن کافی است، سپس فایل کامپایل شده را روی سیستم عامل اجرا کنید.
- سرعت اجرای برنامههای interpreter بسیار کند و compiler بسیار سریع است.
- پیدا کردن خطاها در در کدهای اجراییه interpreter به علت اجرای خط به خط آسانتر ولی در compiler بخاطر اجرای کامل برنامه مقداری سختتر میباشد.
- Compiler تمامی کدها را بصورت پیش فرض در نظر میگیرد به خاطر همین میتوانند عمل بهینه سازی را انجام دهند تا سرعت کدها را افزایش پیدا کند و در interpreter بخاطر در نظر گرفتن کدها بصورت خطی در بهینه سازی ضعیف هستند.
همانطور که گفتیم این دو برنامه در برنامه نویسی بسیار پرکاربرد هستند. با وجود اینکه هرکدام خصوصیات خاص خود را دارند ولی هر دو یک کار را انجام میدهند. در مقالهی آینده مراحل انجام کامپایلر که بسیار جالب است را برایتان شرح خواهم داد.
اولین نفری باشید که نظر می دهد!