Gohar's Academy

معلم و فریلنسر

Gohar's Academy

معلم و فریلنسر

طبقه بندی موضوعی

هر شنبه یک اصطلاح کامپیوتر (20 آبان 1402)

شنبه, ۲۰ آبان ۱۴۰۲، ۰۱:۴۸ ب.ظ

Compile Time  & Run Time 

می دانیم زبان کامپیوتر 0 و 1 هست. زمان کامپایل به زمانی گفته می شود که کد یا برنامه کامپیوتری که نوشته شده است به زبان ماشین (قابل فهم برای CPU) ترجمه می شود که این کار توسط کامپایلر انجام می گیرد.

compile time

در هنگام ترجمه به زبان ماشین قواعد زبانی (Syntax)  و معنایی (Symantic) زبان برنامه نویسی چک می شود. 

درنتیجه خطاهایی که در زمان کامپایل توسط کامپایلر صادر می شود بر دو نوع است: 

  • Syntax Error

  • Semantic Error

 

برای مشاهده Abstract Syntax Tree اینجا کلیک کنید.

 

و چنانچه کد برنامه خطاهای بالا را نداشته باشد «کد منبع» از آن ساخته می شود. در زبان های C و Java به آن «کد کلاس» یا «کد شی» نیز می گویند. در این زبان ها سپس Linker منابع موردنیاز در برنامه را به object code اضافه می کند و کد باینری binary code ساخته می شود. سپس loader در حافظه برای کدهای باینری حافظه اختصاص می دهد. به binary code اصطلاح executable file نیز می گویند. 

compiler-linker-loader  

سپس فایل اجرایی توسط سیستم عامل اجرا می شود. به زمان اجرای برنامه runtime  و به خطاهایی که در این زمان رخ می دهد runtime error گفته می شود. 

خطاهای اجرایی توسط کامپایلر تشخیص داده نمی شود. یکی از رایج ترین خطاهای زمان اجرا خطای Zero Devision است. 

در حالت کلی خطاهای برنامه به شکل زیر دسته بندی می شود:

ErrorsTime

برگردیم به compile time smiley

به طور مثال چه دستوراتی بر روی زمان کامپایل تأثیر می گذارد؟ 

در پردازش متن و فرمت بندی متن در زبان هایی از خانواده C استفاده از مکانیزم های مختلف بررسی شده است. نمودار زیر مقایسه زمان کامپایل بین روش های مختلف در زبان C برای Formatting String است. 

compile-time-print-formatted-C

 

تابع های inline در زبان ++C دستور compile time است.

دستورات define# در ++C یک دستور compile time است.

در سبک برنامه نویسی شی گرایی نیز تابع ها از نظر زمان کامپایل و زمان اجرا به صورت زیر دسته بندی می شوند:


Polymorphism-compile-time

 

چرا دانستن این موارد کاربردی است؟

گاهی بهتر است دستوراتی که سربار اضافی زمان اجرا دارند را به گونه ای تغییر دهیم که  در زمان کامپایل انجام شوند و بدین شکل سرعت برنامه در اجرا و حافظه موردنیاز را افزایش یابد. ازطرفی تسلط برنامه نویس بر متغیرها و مقادیر مورداستفاده در زمان کامپایل بیشتر است و امکان چک کردن آنچه که در برنامه رخ میدهد بیشتر است و می تواند از خطاهای متعدد زمان اجرا جلوگیری کنید. 

 

 

 

  • its gohar

نظرات  (۰)

هیچ نظری هنوز ثبت نشده است
ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
تجدید کد امنیتی