درواقع اگر پروژه شما بزرگ و بزرگتر بشه، زمان بیشتری طول میکشه یا اطلاح compile time شما زیاد میشه. حالا هرخروجی که قراره گرفته بشه. به فرض exe یا dll یا so که فرمت فایل اجرایی در سیستم عامل لینوکس هستش.
حالا چالش این اینجاست که برنامه نویس ها دنبال راهی بودن که چطوری میتونیم اپلیکشن رو بنویسیم که به قطعات کوچیکتر تبدیل بشه و در زمان کامپایل در کدوم در قسمت خودش کامپایل بشه.
برای اینکه این موضوع رو بیشتر درک کنیم فک کنید شرکت ماکروسافت میخواد سیستم عامل ویندوز10 رو یه تغییر کوچیکی روی رنگ یه دکمه در داخل تنظیمات control panel بده. پس از تغییر ظاهر یا رنگ مرحله بعدی باید compile بشه کداش.
در واقع اونها (ماکروسافت)مجبورند 4 گیگ سورس ویندوز 10 رو دوباره کامپایل کنید و خروجی بگیرن.
این موضوع کلافه کننده میشه. ایده بهترش اینه برنامه به بخش های کوچیکتری تبدیل بشه و قسمت کوچیکی از برنامه که تغییر نکرده کامپایل نشه. (اگر تغییر نکرده بود)