🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۳ سیداحمد بنی کمالی
فرق ران تایم و کامپایل تایم
جامعه فلاتر ایجاد شده در ۰۴ آبان ۱۴۰۱

سلام فرق کامپایل تایم با ران تایم رو لطفا به زبان ساده بگید.

زمانی که کاربر اپلیکیشن رو باز میکنه این مفهوم چطور خودش رو نشون میده؟

آیا میشه گفت که کامپایل تایم همون زمانی هست که اندروید استودیو داره پروژه رو بیلد میکنه و ران تایم همون زمانی هست که کدها عملکرد خودشون رو نشون میدن؟

سلام

کامپایل تایم زمانی هست که هنوز برنامه شده اجرا نشده و شما درحال نوشتن کد هستید. مثلا شما به یک متغیر String یک مقدار int می‌دید، یا بجای Text می‌نویسید Taxt یا.. و کد به شما ارور نشون میده.

ران تایم مربوط به زمان اجرای کد هست، مثلا وقتی که از لیست استفاده می‌کنید و خطای index می‌گیرید و عملکرد نرم افزار متوقف میشه.

این دو منبع توضیحات خوبی ارائه دادند:

اگر سوالی بود، بفرمایید

یلدا محصلی ۰۴ آبان ۱۴۰۱، ۱۰:۳۹

البته چیزی که من فهمیدم اینه که کامپایل تایم زمان تبدیل کدهای نوشته شده به کدهای قابل فهمیدن برای مفسر هست، و مفهوم ران تایم زمانی هست که اون کد در حال اجرا شدن هست.


در کل احساس می‌کنم بحث const رو درست نفهمیدم

زمانی که در کانستراکچر تعریف میشه یا پشت متغیر

و

جدا از بحث کامپایل تایم و ران تایم کلا چه مزیتی داره ؟


متغیر final در ران تایم اجرا میشه. ولی بود و نبودش چه فرقی داره؟ و همچنین کلمه const

همچنین می‌خوام محدویت هایی که ایجاد میکنن رو هم بفهمم

اگه مربوط به performance هست لطفا کامل توضیح بدید.

اگه استاد یه جلسه رو کامل درباره این بحث به صورت تخصصی بذارن خیلی خوب میشه

ممنون

سیداحمد بنی کمالی ۰۵ آبان ۱۴۰۱، ۱۹:۳۱

const زمانی استفاده میشه که مقدار اون متغیر در زمان کامپایل مشخص باشه. مثلا مقدار DateTime.now() در زمان ران تایم مشخص میشه و نمیتونه const باشه که برای بهینگی میتونه کمک کننده باشه، باعث میشه یک بار ازش ساخته بشه و مثلا هنگام rebuild شدن از همون نمونه قبلی استفاده بشه و رم بیهوده اشغال نشه. این مقاله برای دو سال پیش هست اما خالی از لطف نیست.

درمورد final و const، شما به راحتی می‌تونید در یک کلاس متغیر final تعریف کنید. اما در صورتی که بخواهید در یک کلاس متغیر const داشته باشید، حتما باید static هم باشه وگرنه با compile error مواجه میشید. مورد دیگه اینکه اگر شما یک لیست final داشته باشید، محتوای اون final نیست. اما یک لیستِ const این طور نیست و هیچ تغییری نمیشه روی اون اعمال کرد. این مثال رو اجرا کنید بهتر متوجه خواهید شد.

  final list1 = [1,3];
  list1.add(6);
 
  const list2 = [1,2];
  list2.add(5);

در این زمینه صحبت بسیار هست و در یک تاپیک گنجانده نمیشه. امیدوارم تا حدی رفع ابهام شده باشه.

مقاله2

بهترین پاسخ
یلدا محصلی ۰۷ آبان ۱۴۰۱، ۰۸:۴۹