ليه الكمبيوتر بيستخدم النظام الثنائي مش العشري ؟
الكمبيوتر هو عبارة عن مجموعة من الترانزيستورات
الترانزيستور دا عامل زي المفتاح اللي بيتركب في سلك الكهربا عشان ينور او يطفي المصباح
اي ترانزيستور ملوش غير احتمالين
يا اما شغال يا اما مطفي
ف لو انا عايز استخدم الترانزيستورات دي عشان اعبر عن الارقام هعمل ايه ؟
وليكن مثلا عايز اعبر عن الرقم 5
ممكن اشغل 5 ترانزيستورات
او اميز كل ترانزيستور برقم واشغل الترانزيستور اللي رقمه 5
يعني انا كدا محتاج 5 ترانزيستورات عشان امثل رقم 5
طيب لو عايز رقم 9 ؟ محتاج 9
طيب لو عايز رقم 1000 ؟ محتاج 1000
او ممكن اجيب 4 مجموعات كل واحدة تمثل خانة في الرقم وكدا احتاج 36 ترانزيستورات واقدر امثل لحد 9999
وكل اما الرقم يزيد خانة هزود 9 ترانزيستورات للخانة الجديدة
طيب دا بيحصل ليه ؟
لأني اعتبرت كل ترانزيستور بيمثل قيمة واحدة بس
قيمة ملهاش وزن مرتبط بمكان الترانزيستور في المجموعة
لو بصيت مثلا على 3 و 30 و 300 هتلاقي رقم 3 ثابت زي ما هو بس قيمته بتختلف بوزن الخانة اللي هو موجود فيها (احاد وعشرات ومئات)
طب ليه منعملش كدا في الترانزيستورات بتاعتنا ؟
يكون لكل ترانزيستور وزن بيتحدد بمكانه في المجموعة (الخانة اللي موجود فيها)
طيب نعمل دا ازاي
وازاي نحدد وزن الخانة ؟
في النظام العشري هنلاقي اوزان الخانات كالتالي
0, 10, 100, 1000, ......
اللي هي
10^0, 10^1, 10^2, 10^3, .....
الرقم المشترك بينهم هو 10 وكل مرة بنزود الاس
طيب ليه رقم 10 ؟ لإن اي خانة في النظام العشري ليها 10 احتمالات (تشيل ارقام من 0 ل 9)
كلمة السر هنا هي "الاحتمالات"
الترانزيستور له احتمالين بس
ف كدا وزن الخانة اللي بيمثلها هيكون مرتبط برقم 2
2^0, 2^1, 2^2, 2^3, .......
ف لو عندي 5 ترانزيستورات وانا شغلت الترانزيستور رقم 5 ف كدا انا بمثل الرقم
2^4 = 16
مش بس 5
وال 9 خانات اقدر امثل بيهم لحد 511 مش بس 9
وال 36 خانة اللي استخدمتهم عشان امثل لحد 9999 اقدر امثل بيهم لحد اكتر من 137 مليار
شايف الفرق والتوفير في الترانزيستورات كبير ازاي ؟
ومن هنا بدأ الكمبيوتر يعتمد على النظام الثنائي
وفي النهاية عندي ملحوظتين
1- النظام الثنائي موجود من قبل اختراع الكمبيوتر بفترة
2- اول كمبيوتر كهربي (ENIAC) كان بيستخدم النظام العشري
منقول،
الكمبيوتر هو عبارة عن مجموعة من الترانزيستورات
الترانزيستور دا عامل زي المفتاح اللي بيتركب في سلك الكهربا عشان ينور او يطفي المصباح
اي ترانزيستور ملوش غير احتمالين
يا اما شغال يا اما مطفي
ف لو انا عايز استخدم الترانزيستورات دي عشان اعبر عن الارقام هعمل ايه ؟
وليكن مثلا عايز اعبر عن الرقم 5
ممكن اشغل 5 ترانزيستورات
او اميز كل ترانزيستور برقم واشغل الترانزيستور اللي رقمه 5
يعني انا كدا محتاج 5 ترانزيستورات عشان امثل رقم 5
طيب لو عايز رقم 9 ؟ محتاج 9
طيب لو عايز رقم 1000 ؟ محتاج 1000
او ممكن اجيب 4 مجموعات كل واحدة تمثل خانة في الرقم وكدا احتاج 36 ترانزيستورات واقدر امثل لحد 9999
وكل اما الرقم يزيد خانة هزود 9 ترانزيستورات للخانة الجديدة
طيب دا بيحصل ليه ؟
لأني اعتبرت كل ترانزيستور بيمثل قيمة واحدة بس
قيمة ملهاش وزن مرتبط بمكان الترانزيستور في المجموعة
لو بصيت مثلا على 3 و 30 و 300 هتلاقي رقم 3 ثابت زي ما هو بس قيمته بتختلف بوزن الخانة اللي هو موجود فيها (احاد وعشرات ومئات)
طب ليه منعملش كدا في الترانزيستورات بتاعتنا ؟
يكون لكل ترانزيستور وزن بيتحدد بمكانه في المجموعة (الخانة اللي موجود فيها)
طيب نعمل دا ازاي
وازاي نحدد وزن الخانة ؟
في النظام العشري هنلاقي اوزان الخانات كالتالي
0, 10, 100, 1000, ......
اللي هي
10^0, 10^1, 10^2, 10^3, .....
الرقم المشترك بينهم هو 10 وكل مرة بنزود الاس
طيب ليه رقم 10 ؟ لإن اي خانة في النظام العشري ليها 10 احتمالات (تشيل ارقام من 0 ل 9)
كلمة السر هنا هي "الاحتمالات"
الترانزيستور له احتمالين بس
ف كدا وزن الخانة اللي بيمثلها هيكون مرتبط برقم 2
2^0, 2^1, 2^2, 2^3, .......
ف لو عندي 5 ترانزيستورات وانا شغلت الترانزيستور رقم 5 ف كدا انا بمثل الرقم
2^4 = 16
مش بس 5
وال 9 خانات اقدر امثل بيهم لحد 511 مش بس 9
وال 36 خانة اللي استخدمتهم عشان امثل لحد 9999 اقدر امثل بيهم لحد اكتر من 137 مليار
شايف الفرق والتوفير في الترانزيستورات كبير ازاي ؟
ومن هنا بدأ الكمبيوتر يعتمد على النظام الثنائي
وفي النهاية عندي ملحوظتين
1- النظام الثنائي موجود من قبل اختراع الكمبيوتر بفترة
2- اول كمبيوتر كهربي (ENIAC) كان بيستخدم النظام العشري
منقول،
This media is not supported in your browser
VIEW IN TELEGRAM
Shake animation on invalid inputs using HTML & CSS
Link the video to YouTube:
https://youtu.be/_ceLUxczgGw
#CSS
Link the video to YouTube:
https://youtu.be/_ceLUxczgGw
#CSS
Web Development Code
Photo
ايه هيا الNodeJs؟؟
━━━━━━━━━━━━━
أولا قبل ما نعرف ايه هيا الnode مفروض نسأل سؤال أهم وهوا ايه هيا الjavascript اصلا وبتشتغل إزاي ….
أول حاجه javascript هيا في الأساس لغة برمجة اتصممت انها تشتغل في الbrowsers عشان تخلي عملية التصفح تبقى dynamic ونقدر نتحكم اكتر في الصفحات اللي بتتعرض ومن المعروف عن أي لغة برمجة أنها بتحتاج compiler او interpreter عشان يحول اللغة دي لكود يقدر الكمبيوتر يفهمه وينفذه.
فبدأ وباختصار شديد ان من ساعت ظهورها كل browser يحاول ياخد اللغة دي وينفذها بطريقه معينه بحيث تدي أحسن أداء فبالتالي تجربة التصفح في الbrowser تبقى أحسن فالناس تقدر تستخدمها فمثلا mozzila firefox طورت spiderMonkey Engine أما google chrome طور V8 Engine عشان ينافس spiderMonkey وفيه غيرهم كتير طبعا
لحد دلوقتي كلامنا كله على الjavascript إنها لغة خاصه بالbrowser بس وما اقدرش اعملها run في أي مكان غير في الbrowser وكل واحد فيهم عنده الengine بتاعه اللي بينفذ الكود ده بطريقة معينه
بس المهم في الموضوع ده كله هوا الV8 Engine اللي جوجل طورته لgoogle chrome بسبب أدائه اللي كان فارق كتير عن باقي الengines اللي الشركات التانيه طورتها وده اللي خلى الناس تبدأ تفكر ليه ما نبدأش نستخدم اللغة دي بالengine اللي بيدي آداء كويس ده برا الbrowser ونستفيد منه في ان احنا نعمل بيه برامج بيه زي أي لغة تانيه (خلي بالك قولت برامج زي أي لغة تانيه مش مجرد نستخدمه في backend لأن الnode ليها استخدامات كتير غير الbackend )فمن هنا بدأ التفكير في عمل الnode js
━━━━━━━━━━━━━
ايه هيا بقى وعباره عن ايه وبتقدملنا ليه ده اللي هنعرفه المره الجايه..
━━━━━━━━━━━━━
أولا قبل ما نعرف ايه هيا الnode مفروض نسأل سؤال أهم وهوا ايه هيا الjavascript اصلا وبتشتغل إزاي ….
أول حاجه javascript هيا في الأساس لغة برمجة اتصممت انها تشتغل في الbrowsers عشان تخلي عملية التصفح تبقى dynamic ونقدر نتحكم اكتر في الصفحات اللي بتتعرض ومن المعروف عن أي لغة برمجة أنها بتحتاج compiler او interpreter عشان يحول اللغة دي لكود يقدر الكمبيوتر يفهمه وينفذه.
فبدأ وباختصار شديد ان من ساعت ظهورها كل browser يحاول ياخد اللغة دي وينفذها بطريقه معينه بحيث تدي أحسن أداء فبالتالي تجربة التصفح في الbrowser تبقى أحسن فالناس تقدر تستخدمها فمثلا mozzila firefox طورت spiderMonkey Engine أما google chrome طور V8 Engine عشان ينافس spiderMonkey وفيه غيرهم كتير طبعا
لحد دلوقتي كلامنا كله على الjavascript إنها لغة خاصه بالbrowser بس وما اقدرش اعملها run في أي مكان غير في الbrowser وكل واحد فيهم عنده الengine بتاعه اللي بينفذ الكود ده بطريقة معينه
بس المهم في الموضوع ده كله هوا الV8 Engine اللي جوجل طورته لgoogle chrome بسبب أدائه اللي كان فارق كتير عن باقي الengines اللي الشركات التانيه طورتها وده اللي خلى الناس تبدأ تفكر ليه ما نبدأش نستخدم اللغة دي بالengine اللي بيدي آداء كويس ده برا الbrowser ونستفيد منه في ان احنا نعمل بيه برامج بيه زي أي لغة تانيه (خلي بالك قولت برامج زي أي لغة تانيه مش مجرد نستخدمه في backend لأن الnode ليها استخدامات كتير غير الbackend )فمن هنا بدأ التفكير في عمل الnode js
━━━━━━━━━━━━━
ايه هيا بقى وعباره عن ايه وبتقدملنا ليه ده اللي هنعرفه المره الجايه..
المره اللي فاتت اتكلمنا عن ال 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
------------------------------------
أول حاجه هنتكلم عنها النهارده هوا ايه اصلا تعريف ال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 اللي عندي في البرنامج ازاي تعال نشوف بمثال زي الصورة اللي تحت كدا
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
يعني محتاج اعمل عملية زيادة عشان اجيب العنصر اللي عايزه
طب يا عم دي عملية واحدة مش هتفرق في حاجة
هقولك انت في البرنامج بتاعك مش هتعمل مصفوفة واحدة وتجيب عنصر واحد
وكمان العملية دي بتترجم لمحموعة عمليات اصغر عشان المعالج ينفذها
فتخيل عدد العمليات اللي هنوفرها عالمعالج لما بس نبدأ من صفر
في البداية بس حابب اقول ان في لغات برمجة الرقم فيهم بيبدأ من 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
يعني محتاج اعمل عملية زيادة عشان اجيب العنصر اللي عايزه
طب يا عم دي عملية واحدة مش هتفرق في حاجة
هقولك انت في البرنامج بتاعك مش هتعمل مصفوفة واحدة وتجيب عنصر واحد
وكمان العملية دي بتترجم لمحموعة عمليات اصغر عشان المعالج ينفذها
فتخيل عدد العمليات اللي هنوفرها عالمعالج لما بس نبدأ من صفر