Web Development Code
6.33K subscribers
389 photos
55 videos
132 files
201 links
قناة خاصه بتطوير الويب
ونشر مشاريع الويب
وكل مايخص الويب
الادمن : @Noureldin13
#Html
#Css
#Bootstrap
#JavaScript
#ReactJs
#Php
#NodeJs
#Mysql
#MongoDB
Buy ads: https://telega.io/c/codedevelopment

جروب المناقشة :
@codedevchat
Download Telegram
المره اللي فاتت اتكلمنا عن ال node js
------------------------------------

أول حاجه هنتكلم عنها النهارده هوا ايه اصلا تعريف الjavascript دي و اللي يمكن كتير سمع عنه قبل كده و التعريف ده هوا: JavaScript is single threaded, non-blocking, asynchronous and concurrent programming language
ايه بقى الكلام ده🤔🤔
تعال نشوف مع بعض واحدة واحدة كدا🧐
أول حاجه بيقول انها لغة single-threaded يعني ايه
دي هل ده يعني ان js مش بتستخدم مفهوم الmulti-threaded خالص؟؟🤔🤔
في الحقيقة لا مش زي ما حضرتك فاكر كدا خالص بس قبل ما نقول مش زي ما حضرتك فاكر ليه ممكن الاول ننزل نشوف الdiagram اللي تحت ده وده مثال بس مش أكتر بيوضحلنا ازاي الjs دي اصلا بتشتغل مع الv8 في google chrome

@codedevelopment
ايه ده بقى؟ أول حاجه في الصوره هنا باين عندنا في الجزء اللي ع الشمال حاجه اسمها الcall stack وحاجه تانيه اسمها الmemory heap وبالنسبه لوظيفة ال memory heap فهيا ببساطة مسؤوله في الأساس عن تخزين كل الداتا للبرنامج اللي شغال عندي يعني اي variables عندي بتتخزن فيه وده ببساطة جدا أما بقى ال call stack فده اللي هنتكلم عنه شويه وده اللي يهمنا عشان نفهم أكتر الjs دي بتشتغل ازاي أول حاجه لازم نعرف أن الcall stack ده السبب في كلمة الsingle- threaded اللي فوق ده وده يعتبر هوا الmain thread اللي بيقوم بعمل call للfunctions اللي عندي في البرنامج ازاي تعال نشوف بمثال زي الصورة اللي تحت كدا
نبدأ نشوف ازاي الcall stack بيتعامل مع الكود البسيط ده…… أول حاجه الcall stack بيبدأ يمشي في الكود بالترتيب وبيقابل أول function واللي هيا console.log(“start”) ويبدأ ينفذها و بيكون شكل الstack في الوقت ده زي الصورة اللي جاية كدا
و بعد ما بيتم تنفيذ الfunction دي الcall stack بيرجع فاضي تاني زي الصورة اللي جاية كدا
بعدها يبدأ يشوف الcall اللي بعدها واللي هيبقى في السطر اللي قبل الأخير اللي فيه sayHelloWorld ويبدأ يجيبها عنده في الstack زي الصورة اللي جاية كدا
بعدها يبدأ في تنفيذ الfunction دي ويتفاجئ ان فيها call لfunction تانيه اللي هيا console.log فيبدأ يجيبها تاني في الstack ويبقى المنظر زي الصورة اللي جاية كدا
وبعد ما ينفذها يبدأ يشيل الfunction دي من الstack عشان يرجع الشكل اللي في الصورة اللي جاية كدا
وبعدها يلاقي ان الfunction اللي اسمها sayHelloWorld دي خلصت تنفيذ فيبدأ يشيلها ويرجع بالشكل اللي تحت كدا
وطبعا نفس الكلام اللي فوق هيحصل مع اخر سطر وهيكرر نفس الموضوع تاني
طيب كل ده كلام هايف جدا ومش شايفين فيه أي صعوبه ولا يستاهل إن حد يتكلم عنه أصلا….
فعلا عندك حق بس لازم نفهم كل ده الأول عشان مبني عليه حاجات اصعب شويه قدام وده اللي هنبدأ نتكلم عنه من المره الجايه
Web Development Code
فهمتوا حاجه .
الي اختارو مفهمناش حاجه يقولوا مفهموش اي.
ليه ارقام العناصر في المصفوفة بتبدأ من صفر ؟

في البداية بس حابب اقول ان في لغات برمجة الرقم فيهم بيبدأ من 1 مش 0
طيب ايه الفرق وليه اللغات الحديثة كلها بتبدأ من 0 مش 1
عشان نفهم السبب لازم نعرف ازاي الكمبيوتر بيخزن المصفوفة

احنا عارفين ان الذاكرة بتتكون من مجموعة اماكن وكل مكان بيكون له عنوان معين اقدر من خلاله اتعامل مع المكان دا
لو انا عندي متغير كالآتي
x = 5
ف هنا الكمبيوتر هيروح في مكان ما في الذاكرة (وليكن عنوانه 100) ويحفظ جواه القيمة 5 ويبقى x دا عبارة عن اسم مستعار لعنوان المكان دا
يعني لما اقول x ف انا اقصد القيمة اللي جوا العنوان 100

طيب لو عندي مصفوفة ؟
a = [5,6,7,.....]
هنا الكمبيوتر بيروح يدور في الذاكرة على مجموعة اماكن جنب بعض تناسب عدد عناصر المصفوفة
ولنفترض انه لقى الاماكن دي من اول العنوان 200
هيبدأ يخرن عناصر المصفوفة في كلا من
200, 201, 202, ..........
طيب ازاي الكمبيوتر هيعرف ان المصفوفة a عناصرها موجودة من اول العنوان 200 ؟
الكمبيوتر بدور على مكان تاني فاضي (وليكن مثلا عنوانه 300) ويخزن جواه عنوان اول عنصر في المصفوفة (اللي هو 200) ويبقى اسم المصفوفة عبارة عن اسم مستعار للمكان دا
يعني لما اقول a ف انا اقصد القيمة اللي جوا العنوان 300
طيب لما اقول a[i] ؟
دي هنا بتترجم ل a+i
يعني هات القيمة اللي جوا a وزود عليها الرقم i ويبقى دا العنوان الجديد اللي عايز القيمة اللي جواه
يعني
a[2] = 200+2 = 202
طيب لو عايز اول عنصر في المصفوفة ؟
اول عنصر عنوانه 200 ودا القيمة اللي موجودة جوا a فبالتالي مش محتاج ازود حاجة (او بمعنى اخر انا بزود 0)
200 = 200+0 = a[0]
يعني ممكن اقول ان رقم العنصر دا بيدل على عدد الخطوات اللي محتاج امشيها من اول عنصر لحد ما اوصل للعنصر اللي انا عايزه
وعشان كدا ارقام العناصر بتبدأ من صفر

طيب اللغات اللي بتبدأ من 1 نظامها ايه ؟
بتكون معادلتها
a[i] = a+i-1
يعني محتاج اعمل عملية زيادة عشان اجيب العنصر اللي عايزه

طب يا عم دي عملية واحدة مش هتفرق في حاجة
هقولك انت في البرنامج بتاعك مش هتعمل مصفوفة واحدة وتجيب عنصر واحد
وكمان العملية دي بتترجم لمحموعة عمليات اصغر عشان المعالج ينفذها
فتخيل عدد العمليات اللي هنوفرها عالمعالج لما بس نبدأ من صفر
Thanks for 1.6k🔥
السلام عليكم…

النهارده هنكمل اللي بدأنا نتكلم عنه المرة اللي فاتت عن إزاي الjs عموما شغاله وبتنفذ الكود واتكلمنا بشكل بسيط عن الmemory heap و الcall stack وادينا مثال بسيط جدا عشان نعرف اساسيات الcall stack بيشتغل ازاي وهنكمل النهارده بإذن الله على اللي بدأناه المره اللي فاتت وهنبدأ اننا ندي مثال تاني بس قبل ما نبدأ ندي المثال هنرجع نشوف تاني الdiagram اللي بيوضحلنا طريقة عمل الjs في google chrome browsers
في ال diagram الي قدامنا ده احنا اتكلمنا شويه عن ال call stack وال memory heap بس فيه كذا حاجه لسه متكلمناش عنها والي هيا ال web api's وال event loop وال call stack queue
طبب اي دول بقي ولا لزمتهم ايه...
بص اول حاجه احنا هندي مثال بكود بسط بعد ما نشوف ال output ومنه هنبدأ شرح ازاي ال run time بينفذ الكود نبدا بالمثال الجاي..
ده الكود الي هنكلم عليه ..
ده الناتج الي طلع من تنفيذ الكود..
اي ده بقي ؟؟
مش مفروض كلمه time out ده تتطبع تالت سطر لي بقت اخر سطر ؟؟
ومش مفروض كلمه end تبقي اخر سطر تتطبع؟؟

تعالوا نشوف كدا مع بعض اي الي حصل...

اولا كدا ده نفس الكود بتاع المره الي فاتت بس فيه زياده الي هيا فانكشن ال setTimeout
نبدا نشوف بقي اي الي حصل دلوقتي...
اول حاجه ال call stack هتبقي بالمنظر ده فاضيه عادي جداا...
بعدها هيبدا ينفذ اول حاجه الي هو طباعه كلمه start كما موضح فالصورة وبعد تنفيذها بيطلع برا ال call stack عشان يرجع فاضي زي الصور الي قبلها