کامپایلر
مترجم در رایانه / From Wikipedia, the free encyclopedia
همگردان (به انگلیسی: Compiler، /kəmˈpaɪ.lɚ/) یا مترجم برنامه یا مجموعهای از برنامههای رایانهای است که متنی از زبان برنامهنویسی سطح بالا (زبان مبدأ) را به زبانی سطح پایین (زبان مقصد)، مانند زبان اسمبلی یا زبان ماشین، تبدیل میکند. خروجی این برنامه ممکن است برای پردازش شدن توسط برنامه دیگری مانند پیونددهنده مناسب باشد یا پرونده متنی باشد که انسان نیز بتواند آن را بخواند.
برای تأییدپذیری کامل این مقاله به منابع بیشتری نیاز است. |
مهمترین علت استفاده از کامپایلر، ایجاد برنامه اجرایی میباشد. به برنامهای که زبان برنامهنویسی سطح پایین را به بالاتر تبدیل میکند مترجموارون گفته میشود.
ترجمه کامل کد منبع برنامهای از یک زبان سطح بالا به کد شیء، پیش از اجرای برنامه را همگردانی یا کامپایل میگویند.
به بیان ساده، کامپایلر برنامهای است که یک برنامه نوشتهشده در یک زبان خاص ساختیافته را خوانده و آن را به یک برنامه مقصد (Target Language) تبدیل مینماید. در یکی از مهمترین پروسههای این تبدیل، کامپایلر وجود خطا را در برنامه مبدأ اعلام مینماید.
در نخستین نگاه، تنوع کامپایلرها ممکن است به چشم نیاید. تعداد بسیار زیادی زبانهای منبع وجود دارند که دامنه آنها از زبانهای شناختهشده مانند فرترن و پاسکال تا زبانهای خاص منظوره گسترده است. زبانهای مقصد نیز گستردگی متناظر با این زبانها دارند. یک زبان مقصد ممکن است زبان برنامهسازی دیگر یا زبان ماشین یا … باشد.
کامپایلرها به انواع تکگذره، چندگذره، باردهی و اجرا، بهینهساز، غلطیاب و … بسته با عمل انجامشده تقسیم میشوند. علیرغم این تنوع اعمال اساسی که هر کامپایلر بایستی انجام دهد، مشابه هم میباشند.
دانستههای ما دربارهٔ سازمانبندی و نوشتن کامپایلر نسبت به زمانی که اولین کامپایلرها در اوایل دهه ۱۹۵۰ ایجاد شدند، بسیار افزایش یافته است. برآورد تاریخ دقیق ساخت نخستین کامپایلر عمل آسانی نیست، زیرا گروههای متفاوتی نسبت به ساخت کامپایلرها در آن زمان اقدام نمودهاند. اولین کارهایی که در ساخت کامپایلرها انجام شد، تبدیل فرمولهای ریاضی به زبان ماشین بود.
در اواسط دهه ۱۹۵۰ کامپایلرها به عنوان برنامههایی دشوار شناخته شده بودند. اولین کامپایلر فرترن، به عنوان مثال ۱۸ سال زمان برای طراحی صرف کرد. از آن زمان روشهای سیستماتیک برای استفاده از بسیاری اعمال مهم حین عمل کامپایل ابداع شده است. همچنین زبانهای پیادهسازی خوب، محیطهای برنامهنویسی و ابزارهای نرمافزاری مناسب ایجاد شدهاند. با کمک این پیشرفتها یک کامپایلر را میتوان حتی به عنوان پروژه درسی در یک ترم تحصیلی دانشجویی طراحی کرد.