حسنا ، يوم ربيعي جميل هنا في الجامعة ، سأسجل اليوم
في حرم جامعة ستانفورد ، حديقة جميلة والجو جميل ، والطلبة شوية وجايين
موضوع محاضرة اليوم هيكون ما هو السوفتوير ؟
ما هو الكود ؟ كيف يتم تنفيذه على الكمبيوتر ؟
CPUلما اتكلمنا عن الهاردوير في الكمبيوتر ، اتكلمنا عن ال
عقل الكمبيوتر ،، الذي يقوم بتنفيذ ما يسمى
أوامر لفة الآلة
أوامر لغة الآلة بسيطة جدا ،، الأمر الواحد ممكن يكون اضافة رقمين ،، والأمر اللي بعدة ممكن يكون
مقارنة بين رقمين لإيجاد الرقم الأكبر ،، كمثال فيما سبق
لما كنا بنكتب pixel.setRed(10) هذا امر اكثر تعقيدا
منه لو تم كتابته بلغة الآلة
لأنه لو تم كتابته بلغة الآلة سيتم كتابته في خمس او عشر أوامر
بسيطة من اوامر الآلة ،، وعندما يتم تنفيذ هذه الاوامر
واحدا تلو الأخر ،،، يكون لها تأثير تغيير قيمة اللون الأحمر
في البيكسل لـ10 ،، تمام ،، وهنتكلم بالتفصيل عن الموضوع ده بعدين
كيف يتم ذلك التفصيل للأمر ،، أعتقد ان السؤال المناسب الأن هو
ما هو البرنامج ؟ ،، لنلقي نظرة على الجانب الأيمن من هذا الرسم
فالبرنامج هو - وسأستخدم فايرفوكس كمثال
البرنامج يتكون من مجموعة هائلة من الأوامر البسيطة مكتوبة بلغة الآلة ،
ولذلك عندما يتم تشغيل الفايرفوكس على جهازك
هذا يعني انها في مكان ما في الذاكرة RAM هناك مجموعة من الأوامر
وعندما يتم تنفيذ هذه الأوامر فإن الفايفوكس يفعل ما يفعل
مثل حركة مؤشر الكتابة ،، نسخ الروابط ،، الرسم فتح صفحات الويب ،وكل هذه الأشياء
الأوامر المنفردة تكون بسيطة جدا اضافة رقمين مثلا
فكيف يتم من هذه الاوامر البسيطة تنفيذ شئ كبير كحركة مؤشر الكتابة مثلا ؟
ويمكنني ان اقول ان العلاقة بينهما كالعلاقة بين الرمل والتمثال
وهذا معناه ان الأمر الواحد مثل حبة الرمل أي ان الأمر وحده لا معنى له وليس له تأثير
ومثله مثل كل حبات الرمل الأخرى ولكن عند وضعهم مع بعضهم بالشكل الصحيح
تستطيع ان تبني تمثال معقد وبهذه الطريقة تم بناء فايرفوكس
عن طريق هذه الأوامر البسيطة على هذا الأساس فإنه يعمل
CPUعن طريق ال هنا على الجانب الأيسر يتم تنفيذ ما يسمى Fetch Execute cycle
CPUهذا معناه ان ال هتبدأ من هنا مع الأمر الأول
وهتحمل الأمر ده وتنفذه
وهذا الأمر يقوم بجمع رقمين أو أي شئ آخر يقوله الأمر
وعندما ينتهي من تنفيذ الأمر الأول ينتقل للأمر الثاني في قائمة الأوامر
وينفذ هذا الأمر
يقوم بتنفيذ الأوامر في نفس التسلسل
CPUولذلك عندما نقول ان ال تعمل بسرعة 2جيجاهرتز هذا معناه انها تستطيع ان تنفذ 2مليار عمليه في الثانية
من هذه الاوامر الصغيرة وهذه معناه ان هناك مجموعة كبيرة من الأوامر
ولكني سأركز على مجموعة من الأنواع الخاصة للأوامر
كمثال / الأمر الذي يمكنه تغيير ترتيب الأوامر
CPUطبيعي ان ال تقوم بتنفيذ العمليات بالترتيب من اعلى الى اسفل
ولكن دعنا نقول ان الامر الرابع يقول ارجع للأمر الأول ونفذه مرة أخرى
CPUتخيل ماذا سوف تفعل ال ستقوم بتنفيذ الأمر الأول
ثم الثاني ثم الثالث ثم الرابع ثم بعد ذلك ستقوم بتنفيذ الأمر الأول
ثم الثاني ثم الثالث مرة أخرى ثم الثاني ثم الثالث مرة أخرى
يمكنك ان ترى كم عدد المرات التي سوف يتم تنفيذ فيها هذه الاوامر
فقط يمكنك ترتيب الاوامر بطريقة تمكنك من تنفيذ جزء من الكود 500.000 مرة
يمكنك كتابة أمر يرجع ينفذ اوامر اخرى مرة بعد مرة
نوع اخر من الاوامر
امر يمكنه عمل اختبار وعلى اساسه يتخذ قرار
من الممكن ان يتفادى الامر الخامس هنا
وده يوضح معنى جملة if عندك امر يمكنه التحقق من شرط معين
CPUواذا تحقق الشرط يخبر ال لتنتقل إلى هنا
واذا لم يتحقق الشرط سوف تنتقل الى مكان اخر في الكود
لذلك بترتيب الاوامر بطريقة معينة يمكننا الحصول على تأثير
if ما نقول عليه جملة
دعنا نرى كيف يتم تنفيذ البرنامج وكيف نصل لهذا
دعنا نتخيل انك عندك فايرفوكس على فلاشة
او على الهارد
وهنا الرامات وهنا ال CPU
فعندما يكون عندك الفايرفوكس على الهارد اللي هو الفايل
وهنا دعنا نسميه firefox.exe
هذا فقط شكل البرنامج في ويندوز .exe لكي يحافظ على كل شئ بوضوح
الفايل ده firefox.exe يحتوي على العديد من ال bytes بداخله
Bytesوغالبا هذه ال تكون مجموعة الأوامر التي يتكون منها البرنامج
بالاضافة الى مجموعة من الايكونات واشياء اخرى
دعنا نرى ماذا يحدث بعدما نضغط مرتين على Firefox.exe كيف يتم تشغيله ؟
واساسا ما يحدث هو خطوتين اول خطوة بتحصل هي
مجموعة البايتس من الاوامر التي تكفي تقريبا للتشغيل
يتم نسخها الى الرام ، فإنه فقط يتم نسخها يتم وضعها في الرام
CPUحيث تستطيع ال CPUالوصول اليهم ،، ثم الخطوة الثانية تبدأ ال
في تنفيذ الأمر الأول ، يتم التنفيذ هنا ثم تبدأ في تنفيذ الأمر الذي يليه
في سلسلة الاوامر والآن يتم تشغيل الفايرفوكس
هذا يقودنا الى سؤال الا وهو: من يقوم بفعل ذلك بالطريقة الصحيحة؟ من يقوم بتنفيذ كل ذلك بمجرد الضغط مرتين على الفايل؟
من يقوم بتشغيل الفايرفوكس؟ من يقوم بذلك في الحقيقة هو نظام التشغيل Operating System
نظام التشغيل هو مجموعة البرامج الاشرافيه المنظمة
والتي تتعامل مع النظام بالكامل وتنظم التعامل بداخله
نظام التشغيل تحديدا ينظم البرامج المتعددة
وتشغيل وغلق البرامج ، حيث ان الاجهزة الحديثة يمكنها تشغيل برامج متعددة في نفس الوقت
ونظام التشغيل هو من ينظم ذلك
حيث انه يبدأ البرنامج ويعطي جزأ منه للرام لاستخدامه
ربما يعطيه نافذة ليرسمها وكذلك أنظمة التشغيل تحاول عزل البرامج عن بعضها
حيث يكون لكل برنامج الرام الخاصة به حيث لا يمكن العبث بـ ذاكرة برنامج أخر
وهذا يساعد اذا كان البرنامج يحتوى على خطأ Bug
سيكون الخطأ في هذا البرنامج فقط ولن يظهر في برامج أخرى يتم تشغيلها في نفس التوقيت
أو من الممكن ان البرنامج يحاول فعل شئ خطأ في برنامج آخر
نظام التشغيل يحاول فصل كل منهما عن اللآخر وعلى ذلك فإن نظام التشغيل
هو أول شئ يتم تنفيذه على جهازك عند تشغيله
وهو من يظهر هذه النوافذ امامك ويظهرلك محتويات الهارد بتاعك
ومن هنا يمكنك الضغط مرتين او فعل اي شئ آخر
ونظام التشغيل سوف يشغل هذه البرامج لك وهذا في الحقيقة ما تراه
عندما تقوم بتشغيل جهازك المحمول او الكاميرا الرقمية ربما لا تفكر بها ككمبيوتر
ولكنها في الحقيقة كمبيوتر عندما يتم تشغيل الكاميرا لأول مرة
هناك تقريبا عدد من البرامج ربما البرنامج
الذي يأخذ الصور ، والبرنامج الذي يمكنك من تصفح الصور بعد تصويرها
ولذلك عندما يتم تشغيل الكاميرا لأول مرة هناك بعض البرامج الرئيسية
والتي يتم تشغيلها والتي تراها عندما تشغل الكاميرا
وتمكنك من استخدامها أخر شئ
هناك بعض المصطلحات مثل boot, reboot
طول عمري بفكر فيهم بشكل مضحك منين جت التسمية دي بقى
الحقيقة تسميتهم ترجع لموضوع بيضة الفرخة حيث ان الكمبيوتر عندما يتم تشغيله لأول مرة
كيف ينظم نفسه ؟؟
كيف يمكنه تشغيل برنامج ؟ وهذا المصطلح في الحقيقة نكتة قديمة
والنكتة بتقول: لو انت عايز تنط من فوق سور كل اللي محتاج تعمله انك تقلع البووووت بتاعك
وترميه على السور وبعدين تتشعبط فيه وتنط السور ههههههههههه
طبعا واضح انها قصة سخيفة ولكنها مثل
ماهو البرنامج المفروض يبدأ به الكمبيوتر ليتمكن من تشغيل البرامج
فإنه كقصة البيضه والفرخة ولذلك فإن طريقة التشغيل هي
CPUال عندما ترى انها تم غلقها
وانها لابد ان يتم تشغيلها مرة اخرى وان هناك برامج صغيره
والتي يحتوي عليها الكمبيوتر لتشغيله في هذه اللحظة ،، وهذا البرنامج من الممكن
ان يبحث اي جزء من الهاردوير يقوم بتشغيل بعض البرامج البدائية
ثم يقوم بالبحث عن الهارد او فلاشة او
او اي شئ يحتوى على نظام تشغيل ثم يمكنه تشغيل هذا النظام
ثم الكمبيوتر يتمكن من التشغيل بهذه الطريقة ولذلك
هذه العمليه تسمى بوووووت boot up والتي ترجع هذه التسمية الى قصة البوت القديمة
ومن ثم تأتي كلمة rebooting والتي تعني اننا نريد الحصول على حالة جديدة
حيث انه يقوم بغلق النظام والبداية من جديد والآن انت تعلم ذلك