مترجم زبان برنامه نویسی
برنامه نویسان دستورات خود را به وسیله زبان های برنامه نویسی به کامپیوتر میدهند. برخی از این زبان ها به طور مستقیم برای کامپیوتر قابل درک هستند,ولی برخی دیگر باید از چند مرحله ترجمه عبور کنند تا برای کامپیوتر قابل درک شوند.به نرم افزارهایی که دستورات نوشته شده برنامه نویسان را برای کامپیوتر قابل درک میکنند، مترجم زبان برنامه نویسی یا Programming language translator گفته میشود.
از مترجم زبان برنامه نویسی برای تبدیل زبان های برنامه نویسی مختلف به کدهای معادل ماشین که برای کامپیوتر قابل درک هستند استفاده می شود.
انواع مترجم زبان برنامه نویسی
به طور عمده سه نوع مترجم زبان برنامه نویسی وجود دارد:
- اسمبلر (Assembler)
- کامپایلر (Compiler)
- مفسر (interpreter)
در این مقاله ضمن معرفی انواع مترجم زبان برنامه نویسی، به تفاوت ها و شباهت های مهم میان آن ها نیز میپردازیم.
اسمبلر(Assembler)
اوایل، برنامه نویسی به زبان ماشین کاری دشوار,کند و خسته کننده بود.به همین دلیل برنامه نویسان شروع کردند به استفاده از زبانی که به جای هر دستور عددی از یک دستور مخفف چند حرفی استفاده میکرد. این دستورات اساس زبان اسمبلی (Assembly language) را تشکیل دادند. اما این دستورات(با وجود ساده تر بودن برای انسان) برای کامپیوتر قابل درک نبودند,بنابراین برنامه هایی موسوم به اسمبلر توسعه داده شدند تا این دستورات را به زبان ماشین ترجمه کنند.
کامپایلر(Compiler)
اختراع زبان اسمبلی باعث رشد گسترده کاربرد کامپیوتر شد,ولی برنامه نویسان همچنان مجبور بودند برای ساده ترین کار ها تعداد زیادی دستورالعمل بنویسند.برای سرعت دادن به فرایند برنامه نویسی زبان های سطح-بالا(High-level language) توسعه داده شدند,زبان هایی که هر دستور ان معادل تعداد زیادی دستور زبان اسمبلی یا زبان ماشین است. برای ترجمه برنامه هایی که به زبان سطح-بالا نوشته شده اند,به نرم افزار هایی موسوم به کامپایلر نیاز داریم. کامپایلر دستورات برنامه نوشته شده به زبان سطح-بالا را به زبان ماشین تبدیل میکند.زبان های سطح بالا نزدیکی زیادی به زبان انسان دارند و در ان ها از نماد های ریاضی متداول استفاده میشود. از دیدگاه برنامه نویسان زبان های سطح بالا بر زبان های ماشین و اسمبلی ترجیح دارند.
مفسر(Interpreter)
کامپایل کردن یک برنامه سطح-بالا به زبان ماشین(به ویژه برای برنامه های بزرگ) فرایندی طولانی و وقت گیراست به همین دلیل زبان های برنامه نویسی و نرم افزار هایی توسعه داده شدند که برنامه های نوشته شده را بدون نیاز به کامپایل کردن به طور مستقیم اجرا میکنند. این قبیل زبان ها, زبان های تفسیری و نرم افزارهای اجرا کننده آن ها به مفسر معروف هستند.مفسر دستورات برنامه سطح-بالا را به صورت تک به تک به زبان ماشین ترجمه کرده و اجرا میکند.زبان های اسکریپت نویسی(scripting language) از جمله جاوا اسکریپت و پی اچ پی توسط مفسر اجرا میشوند.
تفاوت ها و شباهت های میان کامپایلر,مفسر و اسمبلر
در این قسمت تفاوت ها و شباهت های مهم میان اسمبلر,کامپایلر و مفسر را از قبیل سرعت زمان اجرا,طریقه ی اسکن کردن کد و غیره را در جدول زیر بررسی میکنیم.
— | اسمبر | مفسر | کامپایلر |
---|---|---|---|
وظیفه ی مترجم | اسمبلر فقط برنامه های نوشته شده به زبان اسمبلی را به کد ماشین تبدیل میکند | مفسر نیز کد مورد نظر را به زبان ماشین تبدیل میکند | کامپایلر کد نوشته شده به زبان سطح بالا را به کد ماشین تبدیل میکند. |
اسکن کردن کد | اسمبلر اول کد مورد نظر را به کد شیً (object code) تبدیل میکند سپس آن را به زبان ماشین تبدیل میکند | مفسربرنامه را خط به خط به کد ماشین معادل ترجمه میکند | کامپایلر قبل از اینکه بخواهد کد مورد نظر را به زبان ماشین تبدیل کند کل برنامه را اسکن میکند |
خطایابی کد | اول خطاها را تشخیص میدهد و بعد از تصحیح آنها مرحله بعد شروع میشود | خط به خط خطا را تشخیص میدهد و اسکن را تا رفع خطای خط بعدی متوقف میکند | گزارش کامل خطا را پس از کل اسکن میدهد |
سرعت زمان اجرا | بیشتر از کامپایلر زمان میبرد | یک مفسر زمان اجرای بیشتری نسبت به کامپایلر دارد | سرعت بیشتری در زمان اجرا دارد یعنی زمان اجرای آن کمتر از مفسر است |
تولید کد میانی بعد از اسکن | تولید کد شی میانی (object code)وجود دارد | هیچ کد میانی تولید نمیشود | هیچ کد میانی تولید نمیشود |
زبان های کاربر | GAS, GNU | Python, Perl, VB, PostScript, LISP | C, C#, Java, C++ |