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