الفرق بين compile time initialization
ياريت حد يعرف يشرخلي الفرق بين ال
Compile time initialization و ال run time initialization ؟ وياريت شرح يكون واضح بالتفاصيل.
ساعد بالإجابة
"إن في قضاء حوائج الناس لذة لا يَعرفها إلا من جربها، فافعل الخير مهما استصغرته فإنك لا تدري أي حسنة تدخلك الجنة."
الإجابات (2)
Compile time initialization هي المتغيرات التي يسند لها قيمة قبل بداية البرنامج (Before execute) و تسمى ايضا Static binding .
مثال :
$i = 10;
لاحظ ان المتغير "i" تم اسناد قيمة له , فأصبحت قيمته "10" من قبل بدء تنفيذ البرنامج .
اما Run time initialization فهي المتغيرات التي يسند لها قيمة اثناء تشغيل البرنامج و تسمى ايضا Dynamic binding .
مثال :
for($i = 0; $i<=5; $i++){
$j = $i;
echo $j;
}
في هذا المثال لاحظ ان المغير "i" اخذ قيمته قبل بدء تنفيذ البرنامج , داخل جملة for حيث تم اسناد قيمة "0" للمتغير , بينما المتغير "j" لن يأخذ اي قيمة الا اثناء تنفيذ البرنامج .
بما انك لم تحدد لغة البرمجة فسأفترض انها مشابهه للكوتلن\جافا.
عندما تقوم بكتابة شفرة برمجية في فئة Class ما. وتضغظ على زر التشغيل. اولاً سيقوم الـ IDE بعمل Compiler لشفرتك البرمجية. ثانياً (ثم) بعد نجاح تلك العملية سيقوم بعمل Run لتشغيل شفرتك البرمجية.
اذن الان لدينا زمنان:
- واحد للـ Compiler عندما يحول شفرتك للغة الآلة, يطلق علية بالـ Compiler Time.
- والثاني للـ Run عندما يتم تشغيل شفرتك البرمجية, يطلق علية بالـ RunTime.
المشاكل
- بالنسبة لمشاكل الـ Compiler Time فالمبرمج سيعرفها فوراً بعد الضغظ على زر التشغيل, مشاكل مثل اخطاء في الـ Syntax للكتابة وماشبه ذلك.
- اما بالنسبة لمشاكل الـ RunTime فالمستخدم سيعرفها بعد تشغيل البرنامج وتجربته وابرزها null وقد يغلق البرنامج في وجه المستخدم.
عملية إسناد القيم للمتغيرات Initialization
- بالنسبة الى عملية الـ initialization في الـ Compiler Time فإن المتغيرات تأخد قيمتها عند تحويلها الى لغة الآلة. اي تأخد قيمتها عندما تكتب لها انت قيمتها بنفسك.
val x = 20
- اما بالنسبة الى عملية الـ initialization في الـ Runtime فإن المتغيرات تأخد قيمتها وقت التشغيل لبرنامجك. تخيل انك تريد عمل Loop على متسلسلة اسماء تأتي من API ما ولاتعرف كم عدد عناصرها i عند كتابتك للشفرة البرمجية. في هذه الحالة سنعرف عدد عناصرها i فقط عندما يتم تشغيل البرنامج والآتيان بها من الـ API (ونتمنى ان لاتكون فارغة وان لاتقذف null في وجه المستخدم).
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !