کامپایلرها در زبان های برنامه نویسی

compilers in programming languages 1973 کامپایلرها در زبان های برنامه نویسی

کامپایلرها در زبان های برنامه نویسی

کامپایلر خود یک نرم افزار است که با استفاده از یک زبان برنامه نویسی نوشته شده است. وظیفه این نرم افزار این است که کدهای نوشته شده توسط یک برنامه نویس را به زبان ماشین تبدیل کند، یعنی زبان صفر و یک. زیرا CPU فقط زبان صفر و یک را متوجه می شود. در ادامه این مقاله به بررسی کامپایلرها در زبان های برنامه نویسی و نحوه کار آن ها می پردازیم.

کامپایلر چیست؟

کامپایلر نرم افزاری است که وظیفه تبدیل کدهای یک زبان برنامه نویسی به زبان ماشین را بر عهده دارد. به پروسه تبدیل کدها به زبان ماشین کامپایل یا ترجمه گفته می شود. کامپیوترها در اوایل فاقد کامپایلر بودند و دلیل آن هم این بود که اکثر برنامه ها با استفاده از زبان برنامه نویسی اسمبلی نوشته می شدند. زمانی که زبان های برنامه نویسی سطح بالا بوجود آمدند، کامپایلرها هم به جزئی از یک کامپیوتر تبدیل شدند.

کامپایلر AOT

کامپایلر AOT در بسیاری از زبان های برنامه نویسی مورد استفاده قرار می گیرد. روش کار این کامپایلر به شکل کامپایل مقدماتی یا ahead-of-time compilation می باشد، یعنی کل کدها در یک زبان و قبل از رسیدن به سیستم عاملی که قرار است آن ها را اجرا نماید، کامپایل می شوند.

کدام زبان برنامه نویسی از AOT compiler استفاده می‌کند؟

اکثر زبان های مشهور و پر استفاده از یک کامپایلر AOT استفاده می کنند که در زیر چند نمونه از آن ها را مشاهده می کنید:

کد تفسیر شده (interpreted code)

در روش تفسیر کد (interpreted code)، بر خلاف روش کامپایل که کل کد یکجا به کد ماشین تبدیل می شوند، کدهای برنامه خط به خط ترجمه و سپس در صورت نبودن خطا اجرا می شوند. کدهای کامپایل شده سریع تر از کدهای تفسیر شده اجرا می شوند و دلیل آن هم این است که در روش کامپایل کدها فقط یک بار کامپایل می شوند. اما در روش تفسیر کد، هر بار که قصد اجرا برنامه را داشته باشید، باید کدها توسط مفسر تفسیر شوند.

پیش از زبان های برنامه نویسی Java و زبان سی شارپ، نرم افزار ها با استفاده از یکی از دو روش زیر به کد ماشین تبدیل می شدند:

  • کامپایل یکجا (AOT Compiler)
  • کامپایل مفسری (Interpreted)

کدام زبان برنامه نویسی از JIT compiler استفاده می‌کند؟

زبان های برنامه نویسی Java و زبان C# از کامپایلرهای Just-in-Time استفاده می کنند که به اختصار JIT نامیده می شوند. در حقیقت این کامپایلرها مخلوتی از روش کامپایل یکجا و تفسیری می باشد. هنگامی که یک نرم افزار با استفاده از زبان Java نوشته می شود، کامپایلر JIT آن را به bytecode تبدیل می کند. زیرا bytecode مستقل از پلت فرم می باشد و می توان آن را بر روی تمامی پلت فرم هایی که از Java پشتیبانی می کنند، اجرا کرد. بنابراین در این روش، کدهای نوشته شده در دو مرحله به کد ماشین تبدیل می گردند. در زبان C# هم عملکردی مشابه وجود دارد که قسمت CLR اجرای تمامی کدهای .NET را مدیریت  می کند.

مزایا و معایب کامپایلرهای AOT و JIT

  • استفاده از کامپایلر AOT باعث می شود تا سریع ترین زمان راه اندازی را داشته باشیم، مخصوصا هنگامی که بیشتر کدها در زمان راه اندازی اجرا می شوند. برای استفاده از این روش فضا و حافظه دیسک بیشری لازم داریم. از آن جایی که کامپایلر AOT برای یک پلت فرم خاص طراحی نشده است، باید حداقل توانایی پلت فرم ها را در نظر بگیرد.
  • کامپایلر JIT، برنامه را با دانستن مشخصات پلت فرم هدف اجرا می کند و عمل کامپایل را مجددا بر روی بایت کدها انجام می دهد. اگرچه از لحاظ زمانی عملکر کامپایلر JIT از AOT ضعیف تر است اما در پلت فرم های مختلف کامپایلر JIT می تواند عملکرد بهتری را از خود نشان دهد، زیرا کد را به پلت فرم فعلی هدایت می کند.
ثبت نظر
ریفریش کنید!
نظرات کاربران (۰ مورد)

هیچ نظری ثبت نشده است