در حال بارگزاری ...

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

توسط الهه قنبری
آخرین به روز رسانی سه شنبه 29 مهر 1399

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

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

کامپایلر یک برنامه نرم افزاری است که کدی را که توسط یک برنامه نویس نوشته شده به کد باینری (یا همان کد ماشین) تبدیل می‌کند. این پروسه باعث می‌شود تا کدها توسط CPU تشخیص داده شده و قابل درک و اجرا باشند. به تبدیل کد منبع به کد ماشین ترجمه یا کامپایل (Compile) گفته می‌شود. کامپیوترهای اولیه فاقد کامپایلر بودند، زیرا اکثر برنامه‌ها به صورت زبان اسمبلی نوشته می‌شدند. ولی از زمانیکه برنامه نویسان به استفاده از زبان‌های سطح بالا روی آوردند، کامپایلرها نیز به عرصه کامپیوتر وارد شدند. کامپایلرهای امروزی دارای انواع مختلفی هستند که زبان‌های برنامه نویسی با توجه به حافظه مصرفی، زمان لازم برای اجرا، و همچنین توانایی پلت فرم های خاص در اجرای کد ها و غیره از هر کدام از انها بهره میبرند.در مطلب زیر درباره انواع کامپایلر و چگونگی کار آن‌ها توضیح خواهیم داد.

کامپایلر AOT

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

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

بسیاری از زبان‌های برنامه نویسی مطرح به یک کامپایلر AOT نیاز دارند، از جمله:

  • Fortran
  • Pascal
  • Assembly Language
  • C
  • ++C
  • Swift

درباره کد تفسیر شده (interpreted code) چه می‌دانید؟

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

پیش از زبان‌های برنامه نویسی جاوا و #C، برنامه‌ها یکی از دو روش کامپایل یک جا (AOT compiler) یا کامپایل تفسیری (interpreted) را استفاده می‌کردند.

کامپایلر جاوا

مطالعه بیشتر در لیداوب:

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

جاوا و #C از کامپایلرهای JIT یا just-in-time compilers استفاده می‌کنند. کامپایلرهای JIT ترکیبی از دو روش کامپایل یک جا (AOT compiler) و تفسیری (interpreted) هستند. پس از نوشتن یک برنامه جاوا، کامپایلر JIT به جای تبدیل کد به دستورات قابل اجرا توسط یک پلت فرم خاص، آن را به bytecode تبدیل می‌کند. bytecode از پلت فرم‌ها مستقل است و می‌تواند روی هر پلت فرمی که از جاوا پشتیبانی می‌کند، ارسال و اجرا شود. بدیهی است که در این حالت برنامه در دو مرحله ترجمه می‌شود. به طور مشابهی#C هم از کامپایلر JIT استفاده می‌کند، که بخش Common Language Runtime اجرای تمام برنامه‌های NET. را مدیریت می‌کند. هر پلت فرمی یک کامپایلر JIT دارد که در مرحله دوم بایت، کدها را ترجمه می‌کند. تا زمانی که تبدیل بایت کدها برای پلت فرم قابل فهم باشد، برنامه اجرا می‌شود.

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

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

  • کامپایلر JIT با دانستن مشخصات پلت فرم هدف برنامه را اجرا می کند و مجددا عمل کامپایل بایت کدها را انجام می دهد. JIT عملکرد بهتری را ارایه می دهد، زیرا که کد را به پلت فرم فعلی هدایت می کند، هر چند زمان بیشتری نسبت به کامپایلر AOT نیاز خواهد داشت.

برای مطالعه بهترین مقالات تخصصی در زمینه طراحی سایت و برنامه نویسی می‌توانید مقالات ما در لیداوب را مطالعه نمایید.

دیدگاه ها

دیدگاه ها : 0


متاسفانه فقط اعضای سایت قادر به ثبت دیدگاه هستند

رایگان

اشتراک گذاری در
سورس خرید و فروش ارزهای دیجیتال
ثبت امتیاز
1.5 (13 رای)

   لطفا صبر کنید ...