هر شنبه یک اصطلاح کامپیوتر (20 آبان 1402)
Compile Time & Run Time
می دانیم زبان کامپیوتر 0 و 1 هست. زمان کامپایل به زمانی گفته می شود که کد یا برنامه کامپیوتری که نوشته شده است به زبان ماشین (قابل فهم برای CPU) ترجمه می شود که این کار توسط کامپایلر انجام می گیرد.
در هنگام ترجمه به زبان ماشین قواعد زبانی (Syntax) و معنایی (Symantic) زبان برنامه نویسی چک می شود.
درنتیجه خطاهایی که در زمان کامپایل توسط کامپایلر صادر می شود بر دو نوع است:
Syntax Error
Semantic Error
برای مشاهده Abstract Syntax Tree اینجا کلیک کنید.
و چنانچه کد برنامه خطاهای بالا را نداشته باشد «کد منبع» از آن ساخته می شود. در زبان های C و Java به آن «کد کلاس» یا «کد شی» نیز می گویند. در این زبان ها سپس Linker منابع موردنیاز در برنامه را به object code اضافه می کند و کد باینری binary code ساخته می شود. سپس loader در حافظه برای کدهای باینری حافظه اختصاص می دهد. به binary code اصطلاح executable file نیز می گویند.
سپس فایل اجرایی توسط سیستم عامل اجرا می شود. به زمان اجرای برنامه runtime و به خطاهایی که در این زمان رخ می دهد runtime error گفته می شود.
خطاهای اجرایی توسط کامپایلر تشخیص داده نمی شود. یکی از رایج ترین خطاهای زمان اجرا خطای Zero Devision است.
در حالت کلی خطاهای برنامه به شکل زیر دسته بندی می شود:
برگردیم به compile time
به طور مثال چه دستوراتی بر روی زمان کامپایل تأثیر می گذارد؟
در پردازش متن و فرمت بندی متن در زبان هایی از خانواده C استفاده از مکانیزم های مختلف بررسی شده است. نمودار زیر مقایسه زمان کامپایل بین روش های مختلف در زبان C برای Formatting String است.
تابع های inline در زبان ++C دستور compile time است.
دستورات define# در ++C یک دستور compile time است.
در سبک برنامه نویسی شی گرایی نیز تابع ها از نظر زمان کامپایل و زمان اجرا به صورت زیر دسته بندی می شوند:
چرا دانستن این موارد کاربردی است؟
گاهی بهتر است دستوراتی که سربار اضافی زمان اجرا دارند را به گونه ای تغییر دهیم که در زمان کامپایل انجام شوند و بدین شکل سرعت برنامه در اجرا و حافظه موردنیاز را افزایش یابد. ازطرفی تسلط برنامه نویس بر متغیرها و مقادیر مورداستفاده در زمان کامپایل بیشتر است و امکان چک کردن آنچه که در برنامه رخ میدهد بیشتر است و می تواند از خطاهای متعدد زمان اجرا جلوگیری کنید.
- ۰۲/۰۸/۲۰