بسم الله الرحمن الرحيم نلتقي اليوم في المحاضرة الأولى لمساق مبادئ لغات البرمجة طبعاً هذا البداية حتكون عبارة عن شبطر الأول لعبارة عن مقدمة عامة حول المساق طبعاً احنا حتكون البداية Why am I here؟ ايش السبب اللي احنا موجودين في هذا المساق؟ طبعاً هذا المساق حيعطينا نظرة عامة عن المبادئ الأساسية لتم الاعتماد عليها في بناء لغات البرمجة وبالتالي احنا هنكون قادرين على اختيار لغة البرمجة المناسبة لإنجاز تاسك معينة يعني شو؟ يعني إذا أنا كان بهمني ابني برنامج عبارة عن component وهذا ال component ممكن اعادة استخدامه في اماكن اخرى ممكن نلجأ لحاجة لها علاقة في ال object oriented اللغات المبنية على ال object oriented طيب ايش هي لغات البرمجة طبعا في عدة تعريفات انا هاي جمعتها من اجل التطرق لها طبعاً أول تعريف لغة البرمجة هي برعاً لغة بتم استخدامها لكتابة برنامج طب هذا البرنامج بتكون من مجموعة من التعليمات اللي بتجبر الحاسوب على إذا مهمة معينة إذا في النهاية لغة بتم كتابة فيها عن طريق المبرمج بكتب برنامج هذا البرنامج بتكون من مجموعة من التعليمات اللي بتجبر الحاسوب على إذا مهمة معينة في تعريف اخر ايش هو انه هي عبارة عن artificial language هي عبارة عن لغة ذكية صممت عشان تأدي مهمة محوسبة او algorithm هذا الalgorithm بتم تنفيذه بواسطة الحاسوب يعني احنا بنصمم algorithm هذا الalgorithm في النهاية حيأدي output هذا الoutput بتم انتاجه بواسطة الحاسوب او في تصنيق اخر انه هي عبارة عن لغة وسيطة هي وسيلة الاتصال ما بين البشر كيف هذا الامر بده يتحقق؟ بدي اتحقق انه انا باجي بكتب برنامج. هذا البرنامج بيجي وراي مبرمج اخر بكمل هذا البرنامج. هو طبعا ما صار تواصل بينه وبينه ولكن الكود المكتوب هذا المبرمج قدر يفهمه ويكمل عليه. فهان برضو بيجي مفهوم واعطاء كل اه مبرمج معينة في النهاية بيكونوا البرنامج ككل ككتلة واحدة. بعدين في تعريف اخر ان هو عبارة عن ايه؟ عبارة عن كود برمجي او هي تاسك معينة هاد التاسك بتكون مفهومة من قبل الانسان اللي هو المبرمج وما بين من قبل الماشين اللي هو الحاسوب طيب نيجي هان ايش الاسباب اللي بتخلينا ندرس هذا المصاب طبعا هذه الأسباب مذكورة ذكرها لكن سيتم التضارب بشكل معمق في السلايدات اللاحقة أولها زيادة القدرة لتوليد أفكار جديدة أفكار برمجية جديدة برضو تحسين النوليج المعرفة الـ background التي عند المبرمجة لكي يستطيع يختار لغات برمجة أفضل يعني يستطيع يفاضل بين لغات البرمجة الشغلة الثالثة نقطة الثالثة زيادة القدرة على تعلم لغات برمجة جديدة. النقطة الرابعة هي فهم الأساس اللي أقيمت عليه لغات البرمجة. النقطة الخامسة استخدام أفضل للغة البرمجة. أنا كيف أستخدم لغة البرمجة بشكل أفضل وأستفيد من الفيتشر اللي بتوفرها المزايا اللي بتوفرها القنبونات اللي بتوفرها. بعد هيك النقطة الاخيرة هي نظرة عامة او معرفة عامة حول مفهوم الحوسبة او البرمج. نيجي للنقطة الاولى كيف انا بتزيد القابلية توليد افكار جديدة. اللي بدنا نعرفه هان انه فكر المبرمج دائما مرتبط بماذا قوة لغة البرمجة نستخدمها. يعني كيف؟ يعني لغة البرمجة ايش امكانيتها بتوفر كل مكان المبرمج قوته اكثر؟ يعني تقولي انا بدي استخدم مثلا لغة زي ال-C عشان ابني نظام في عملية انترفيس طبعا هذا الامر مستحيل هو مش مستحيل ممكن تبني النظام في انترفيس بس هذا هيخد معاك جودة كبيرة لكن لو استخدمت لغة برمجة زي ال-Visual Basic بالتأكيد هيكون اسهل بكثير فبالتالي المبرمج بالتالي المبرمج عادة لما يعتمد على لغة البرمجة لغة البرمجة دائما بتكون فيها مصادر معينة يعني feature فيها مجموعة من الcontrol structure زي ال4 وخلافه فيها data structure فيها متغيرات هذا العناصر الأساسية بتشكل لحدود لغة البرمجة وبالتالي إذا المبرمج لازم يكون عنده معرفة في حدود والفيتشر اللي بتوفرها له لغة البرمجة. اذا كان على معرفة شاملة بهذه اللغة البرمجة بالتأكيد هيعرف يستغل لغة البرمجة بشكل اوضح. يعني هان احنا نشوف مثال. هلقيت لو انا بتعرف متغير هذا المتغير ممكن يحتوي على مختلفة. طبعا في لغات البرمج مش موجود هذا الأمر. لكن في C في حاجة اسمها struct. هذا ال struct عبارة عن اه component. هذا ال component ممكن احط ممكن اوضع فيه مجموعة من المتغيرات مختلفة النوع. يعني ممكن يحتوي على عنصر انتيجر عنصر فلوت عنصر عنصر ممكن يكونوا تحت band component وحيد. طبعا هذا الكلام مدام انا عارف انه موجود في سهيل اكيد حيريحني في التعامل باستخدام هذه اللغة ولازم تكون عارف انه هذا الكمبونت ايضا موجود في رغة البيرل في لغة البيرون موجود هذا الأمر لكن تحت حاجة اسمها Associative Array إذا هان كل مكان المبرمج عنده قدرة على معرفة حدود اللغة وملم في الفيتشر اللي بتوفرها اللغة كل مكان أسهل في استخدامه للغة البرمجة بدون صعوبات اتنين تحسين الخلفية العلمية عشان يكون يعني عنده knowledge في اختيار لغة البرمجة المناسب هان بالتأكيد عادة المبرمج يتعلم لغة البرمجة ياما يكون عن طريق كورس تدريبي انتسب اليه ياما عن طريق الجامعة درس كورس كورسين برمجة يصير عنده خلفية حول البرمجة طبعا هذا المعرفة اللي هو اكتسبها بهذا الشكل إذا هو منماش هذا المعرفة حضلها معرفته بس في حدود ما تم استخدامه يعني حيظلهم غير ملم بجميع الفيتشر بتوفرها لغة البرمجة اللي هو اتعلمها أيضا بدا نحكي هن إذا كان المبرمج بوليم بنغاة البرمجة الموجودة هو بالتأكيد قادر على استخدام لغة البرمجة الأنسب لإنجاز طاسك معينة يعني تيجي تقولي أنا أستخدم أعمل نظام له علاقة في الذكاء الاصطناعي خوارزمية الذكاء الاصطناعي هلقيت انا لو قلت لي انا بعرف مع الجافا. بقول لك ماشي ما في مشكلة استخدم الجافا. ولكن في حاجة افضل من الجافا لخوارزمية الدكاء الاصطناعي في البايثون. في المتلاب. اذا كل مكان عندي معرفة في لغات البرمجة انا بالتأكيد هستخدم لغة البرمجة المناسبة لانجاز التاسك. النقطة اللي براها انا قبل شوي ذكرت قلتلك انه ممكن انا استخدم الجافا عشان انجز اللي هو تاسك اللي ها علاقة بالتكالي اصطناع. البايتون بتوفر لك هذه الخوارزميات بشكل هيدن موجود داخل لغة البايتون ضمن بكيجز بس في الجافا مش موجودة طب في هذه الحالة ايش عطر اعمل انا كبير ورمش وحابب استخدم الجافا حطر اروح اعمل سيميوليشن اعمل بناء لهذه الخوارزمية داخل لغة الجافا طبعا في هذا الامر ان اعمل سيميوليشن فيه مخاطرة انه انت اذا منجزتش التاسك بشكل الصحيح تلقائيا ممكن نتائج تتحصلها فانا من البداية اذا كنت ملئم اذا اختار لغة البرمجة الانسب لانجاز التاسك نمرة ثلاثة زيادة القدرة على التعلم لغة برمجة جديدة يا جماعة انك تتعلم لغة برمجة جديدة ليست بامر مستحيل ولكن معتمد على المبرمج نفسه اذا المبرمج حافظ يعني هو تعلم لغة الجابع حفظها حفظ ما فهم الكونسب ده لغة لكل يعني ابدأ اعمل لوب اللوب بعروف فيه stop condition لازم يكون وفيه iteration لازم تلف اذا الشرطين هدول متوفرين فهمتم انا بقدر استخدم اللوب في اي لغة برمجة لكن إذا كنت حافظ حفظ لازم يكون فورلو معناته أنا في هذه الحالة أنا غير قادر أني أروح أستخدم هذا الكونسب في لغة برمجة أخرى فبالتأكيد هان أنه أنا إذا كنت ملم فاهم الكونسب اللي قيمت عليه لغة البرمجة بكون أنا قادر أني آخذ هذا الكونسب أضبطه من لغة أنا تعلمتها للغة جديدة موجودة أنا حابب أتعلم طيب لو اخدنا مثال المثال بيحكينا انه اذا انا اتعلمت في الجامعة مثلا او كورس تدريبي ال object oriented على لغة C++ بالتأكيد حالاتي سهولة جدا اذا انا فاهم مفهوم ال object oriented عبارة عن class هذا ال class فيه encapsulation فيه variable زائد المثل اللي بتجري عمليات على هذه الفاريبل اذا فاهم هذا المفهوم اذا انا فهمته بلغة C++ بالتأكيد انا هكون قادر ان اروح اطبقه في لغة زي لغة الجافا او البرل او الروبي طيب الفهم الأفضل للمبدأ اللي هو قيمة عليه لغة البرمجة. يا جماعة كل لغة برمجة فيها مبدأ وقيمة عليه. يعني جافها قيمة تحت مبدأ الوبجيت أوريانتد. هي برمجة آجت لغة برمجة آجت ضمن مفهوم الوبجيت أوريانتد. ففهم من الأساسي. للمبدأ اللي هو قيمة عليه. داخل لغة البرمجة والمبدأ اللي هو قيمة عليه. او انشأت عليه لغة البرمجة بالتأكيد حيخليني استخدم اللغة بشكل افضل. هان لو اخدنا مثال. مثلا انت في لغة زي لغة الC++ او الجابا في حاجة باسينج باي فاليو. ايش الباسينج باي فاليو? ان اروح اعمل مثل او فانكشن وامررها متغير. في هذه الحالة بنسميها باس باي فاليو. انه انا مررت لهذه المثل قيمة المتغير. داخل الميثود أي تغيير على هذه القيمة لا ينعكس على المتغير الأصل على قيمة المتغير الأصل أنه أنا مررته بس في مفهوم اسمه passing by reference أنه أنا أمرر لهذه الميثود عنوان هذا المتغير مدام أنا مررت عنوان هذا المتغير بدك تعرفه أنه داخل هذا الميثود أي تغيير حيتم التغيير على قيمة المتغير الأصل اللي تم تمرير عنوانه فانا اذا كنت بدي فقط البهمني القيمة اذا حمر الباس باي فاليو اذا انا بهمني ان داخل الميثود اعمل تغيير عقيمة المتغير حستخدم باي باسينج باي ريفرانس فهنفهمنا للمبدأ الاساسي الفرق بين هذا وهذا بالتأكيد هيقودنا لفهم افضل لغات البرمجة الشغلة التالتة اللي بتتطرق لها فهمك فهمك للمبادئ الاساسية او الفيتشار بتوفرها لغة البرمجة اذا انت تخيلت هاد المبادئ او هاد الفيتشار كيف بتتنفذ بالتأكيد هيكون فهمك افضل. يعني كيف? كلنا بنعرف انه انه الداتا تتخزن في الذاكرة في في الحاسوب. لكن في الايام ما اخدتوا اخدتوا حاجة اسم. استخدموا جماعة عبارة عن مخزن last in first out اخر واحد بدخل اول واحد بطلع طب في الفور مش موجود هذا الامر لكن هذا هو visualization انت بتتخيل وتخيل في ذاكرتك اذا انت اتخيلتو اذا انت حتعمل محاكاة لتنفيذ هذا الامر وبالتأكيد حيقودك لفهم لغة البرمجة بشكل افضل النقطة الخامسة Better use languages that are already known يعني استخدام أمثلة لغة في البرمجة اللي أنت أصلاً متعلمها. في هذه المرحلة عادةً لغات البرمجة هي لغات كبيرة، وأنا كمبرمج عادةً بكون خبرة في الفيتشر اللي أنا استخدمته أو تعلمته في هذه اللغة. أي جهل في بعض الفيتشر لغة البرمجة بالتأكيد هيخليني أنا مش قادر أستفيد من لغة البرمجة بشكل أفضل. فهان بدفعنا هذا الامر دراستنا لهذا المصاب انه نفهم المزايا اللي بتوفرها كل لغات البرمج يعني كيف؟ انت بدك تضرب مصفوفتين ضرب المصفوفات يا جماعة هو عبارة عن ايش نمسك صف في المصفوفة الاولى نضربهم في العمود في المصفوفة الثانية لكن لو كنت مستخدم لغة زي المثلا ضرب المصفوفتين عبارة عن مصفوفة الاولى ضرب المصفوفة الثانية هذه الطريقة في اللوب صحيحة موجودة لكن هذه المشكلة موجودة، هذه ستأخذ وقت أطول، هذه ستأخذ وقت أقل، فأنا معرفتي للمزايا التي توفرها أو المشكلة التي توفرها لغة البرمجة بالتأكيد سيقودني إلى استغلال أمثل لغات البرمجة. طبعاً هذه النقطة هي المعرفة العامة حول الحوسبة ولغات البرمجة. هل قد هنان بدنا نطرق لمفهوم ليس كل لغة برمجة مشهورة هي الأفضل ليس كل لغة برمجة مشهورة هي الأفضل طب ايش اللي شهرها؟ شهرها قد يكون اعتماد الجماعات عليها في عملية التعليم قد يكون انه الجيل الموجود من الببرمجين عنده خبرة فيها لكن ما اضطرر وتعلم لغات برمجة تانية فبالتأكيد فبالتأكيد ليس كل لغة برمجة منتشرة تكون هي الافضل. ممكن يكون الافضل اصعب. لهيك ما تم كانت اه تم الاعتماد عليها بشكل اكبر. فبالتأكيد احنا مش شرط نعتمد على لغة البرمجة الأكثر انتشارا في إنجاز داست معين احنا لازم نختار لغة البرمجة الأنسب بما توفره من فيتشارد لإنجاز داست معين طيب لغات البرمجة جماعة لغات البرمجة لها دومين يعني في كل لغة هي مختصة بدمين معين نيجي في عنا ست 6 domains للغات البرمجة أول domain هو scientific application application اللغات البرمجة اللي تستخدم في التطبيقات العلمية والتطبيقات العلمية بشكل خاص هو مجالات زي الفيزياء في محاكاة لعمليات الفيزا البندول وخلافه طبعا هذه اللغات أول لغة ظهرت في سن نهاية 1940 وبداية 1950 ولا زالت تستخدم هي لغة ال Fortran وال Google city هذه النوع من اللغات كانت تركز على العمليات الحسابية اللي هي استخدمت للألقام الفاصل اللي بها فواصل. ومش معقدة هذه اللغات اختمت بموضوع المصففات والماتريسيز المحددات. وبنتتقون من data structure اللي هو الcontrolling زي الif statement وفي عندك loops وselection الموجود. طيب هذه اللغات لا زالت تستخدم الى اليوم في المجالات هذه العلمية. في عنا المجالات التجارية. انت المجالات التجارية هذه اللغات اللي هتكون متعلقة فيها زي الكوبول هتكون هي لغات بالدرجة الاولى بتهتم باصدار التقارير التجارية. طب ايش لازمها غير هيك? لازمها كتابة نص ارقام فواصل اجراء عمليات جمع وطرح وخلالها. إذاً تركيز هذه اللغات هي اللغة الأساسية لهذا الأمر هي الكوبول واللي ظهرت في بداية سنة 1950. في عنا مجال أوسع ظهر ولا زال مستمر هو مجال الذكاء الاصطناعي. طبعاً هذه اللغات ما بتركز بالدرجة الأولى على الكمبيوتشن، هي بتضرر بتركز بالدرجة الأولى على السمبولز، اكثر منه الكمبيوتشن. طبعا ما هي ايش? هادا بالدرجة الاولى هادا لغات زي لغة الليزب البرولوم. لكن هذا المفهوم برضو اختلف. صار فيه في مجال الذكاء الاصطناعي. فظهرت عندي لغات زي البايكون والمتلاب والار. هل يمكن استخدام Java و C؟ لا مشكلة، لكن الإمكانيات المتوفرة في MATLAB و Python و R أكثر من اللغات المتوفرة في C++ و Java في دعمها لخوارزميات الذكاء الاصطناعي في عنا مجال هو Systems Programming، مجال بناء أنظمة التشغيل والأساس لا زال أنظمة التشغيل تستخدم فيها لغة C بالدرجة الأولى لهيك السي ماخده رانك عالي لا زال رانكه عالي بالمقارنة بلغات البرمجة الأخرى في عنا الويب software والmobile applications هذي مجالات جديدة هان هذي المجالات لا يوجد لغة برمجة بتخصصها إلها ولكن عبارة عن hybrid collection يعني استخدموا HTML واستخدموا JavaScript واستخدموا PHP لكن هذي مش لغات البرمجة لغات البرمجة عشان تشتغل جافا والبي اتش بي والأجتام ايه اجتام اه بحاجة لربط مع الجافا. من الاساس. تعالوا للموبايل في عندنا اندرويد استوديو. اندرويد استوديو الاساس الاساس اللي بقوم عليه هو الجافا. فبالتأكيد هذه ما إلها لغات برمجة خاصة فيها ولكن استخدمت لغات برمجة موجودة زي الجابر هذه ستة دومين اللي صنفت إلها لغات البرمجة طيب هل قد نجي تقيم لغات البرمجة؟ أشان أقدر أقارن وقيم أي لغة برمجة هطول على أربع نقاط أساسية Readability إنه البرنامج المكتوب بأي لغة معينة بقدر أقرأ وأفهمه رايتابيليتي ما اواجهش صعوبة انا كمبرمج في كتابة البرنامج. ريليابيليتي الواقعية انه اي تاسك جاعة بلاي انافذه بقدر انا اكتبه باستخدام لغة برمجة بنتيجة لتوفر الفيتشار الموجود ده داخل هذه اللغة. الكوست هي التكلفة. هان في ريديابيليتي طبعا هان هنتطرق لاكثر من موضوع. اولها سهولة اللغة بالتأكيد كل ما كانت اللغة سهلة كل ما اثرت على موضوع الريدابيليتي يعني لغة سهلة في الكتابة سهلة في الفهم بالتأكيد لما يجي اي مبار مش طول على اي برنامج مكتوب باستخدام هذه اللغة بالتأكيد هيجد انه هذا البرنامج سهل ليقرأ وهذا باعتمد على شو؟ انه كل ما كانت لغة البرمجة اكبر بما تحتوي من feature كل ما كان هناك صعوبة اكثر من اللغات الصغيرة بتحتوي على feature قليل. ليش؟ لانه حيكون في بداية الاكثر فبالتأكيد اي مبرمج غير مليم في كل حدود هذه اللغة ممكانيتها بالتأكيد حيوجد صعوبة في فهم البرنامج. تمام، في اين نحن نطرق لموضوع آخر ضمن simplicity؟ انه في بعض اللغات بتوفر لك إمكانية انك تكتب نفس الجملة البرمجية بأكثر من شكل، طبعاً هذا الأمر بأثر سلباً على موضوع readability، يعني count يساوي count زائد واحد، count plus يساوي واحد، count plus plus plus plus count، كلهم نفس المخرج، ولكن إذا أنا كنت مبرمج مش عارف هذه الأشكال، الاربعة بالتأكيد حاجة صعوبة في قراءة الكود المكتوب. ايضا لما تكون نفس العملية. وجود بدان على موقعها لها اكثر من معنى. يعني كيف? تساوي اربعة. يعني خد اربعة عطيها لن تغير كون. في حين if count تساوي 5 هذه مش مقارنة للمقارنة w ساوي لكن هذا الشكل هو نفسه موجود هان لكن هان معناه يختلف عن هان شو معناه هان؟ معناه أعطي 5 لcount صارت قيمة count 5 هان بين الأخوة لازم يكون شرط شرط يعني يا true يا false طبعا هذا الجملة بالجابة غلط ولكن في C++ متاقة طيب ايش هيصير؟ هيصير هيعطي قيمة 5 للcount شو المرجع؟ المرجع هو قيمة integer 5 السبلاس بلاس بفرط الامكانية اذا كان البناء اقواس مرجع قيمة مش صفر معناته هو كأنه الشرط true اذا كان المرجع صفر معناته كأنه الشرط ارجع لي بقيمة false فنفس العملية لكن لها معنيين مختلفين طيب في مفهوم الريدابيليتي هنتطرق ارضو برضو للأورثوغوناليتي اللي هي التعامدية او التقاطعية او الربط او التشابكية. هلجد اي لغة برمجة جماعة فيها مجموعة من البريماتيف داتا تايب اللي هو زي الانتيجر فلوت دابل انت كاركتر. وفيه مجموعة من الرول لدمج هاد العناصر ببعض هالبعض. يعني في عندي عنصر اسمه الريه بس انا بقدر اربطه مع الانتيجر الريه فلوت دابل وكاركتر. موسيقى في عند البوينتر في C++، بوينتر وفينتجر، بوينتر وفلوت، بوينتر ودبل، بوينتر كاركتر، إذاً بقدر أعمل تشابك هان بناتو، هلقيت كل ما كان عملية التشابك الorthogonality متاحة بشكلها الحر، كل ما كانت عملية الreadability لللانجويج أسهل، يعني طالما ما فيش قيود في ربط العناصر ببعضها البعض، كلما كانت عملية الreadability أسهل. يعني مثلا لو قلت لك هذه اللغة بنفعش تحط بوينتر او كراكتر معناته ان المبرمج لما يجي يقرأ البرنامج بتيكون عارف انه بنفعش البوينتر مع الكراكتر وإلا هيجد صعوبة في كتابة اللغة او قراءة البرنامج. ال data types في بعض ال data types كل ما كانت اللغة فيها امكانية لتعريف اي نوع بيانات كل ما كانت اسهل بالتعامل مع اللغة. يعني مثلاً، لغة ما فيهاش البوليون، إيش هتعمل؟ هل جات البوليون بتعرف عنصر تطيل القيمة؟ يا true يا false، واضح، يا true يا false، مش هتقدر تعملوا عملية زائد وطرح وخلاف، عملية computation، لكن لغة زي، من الذاكر أنا أتوقع المثلان ما فيهاش البوليون، أتوقع، مش متأكد، إنه لغة ما فيهاش البوليون، في هذا الحال على الحالة هتضطر تستخدم متغير انتيجر وتعطي له قيمة مثلاً بدي أفرض فرضية 1 للترو، 0 للفولس. طب إنت داخل الكود غلطت وروحت عملية إيش؟ زاد، طرح، ضرب، قسمة، بالتأكيد هيطلع لك نتائج مش صحيحة مش هتعبر عن الأمر الصحيح. وبالتالي لما اجي انا مبرمج وراك اتبع الكود اكيد بالتأكيد مش هفهم انك انت قاصد في true و false طيب نيجي لنقطة اخرى هي syntax considerations syntax تركيبة الجمل طيب في لغزة الفورتران 95 ايش عملها فيها keywords اي لغة برمجة فيها keywords هذه لغة الفورتران اتاحت انك انت تروح تستخدم كرائه keywords زي مثلا زي do and انك انت ممكن تروح تستخدمها كاسماء متغيرات طب انا كمبرمج جاي لقيت do تساوي خمسة وانا بعرف انه do عباره عن keywords داخل هذه اللغه كيف بدي افهم هيك البرنامج؟ بالتأكيد انا لن يكون عملية قراءة البرنامج قراءة سهلة ولا افهم محتوى. ايضا في عند حطارة دائما يا جماعة الكيوورد زي برعا كلمة تدل على المعنى اللي استخدمت اله. اند يعني اند نهاية بلوك او نوب. اند نهاية بلوك كامل. لما انا استخدمها كاسم متغير بالتأكيد لن يكون امر سهل لاي حد ما يفهم هذا برنامج. ناخد مثال. ايضا ايه اسم او متغير انت بتستخدمه في البرنامج اكيد بالتأكيد اله حدود اله سكوب ممكن تستخدمه فيه طيب لو انا عرفت متغير في برنامج عرفت متغير وداخل هذا البرنامج فيه روح اتعرفت نفس المتغير جواها في هذا المتغير حيكون حدوده من بداية المثل لنهايته لكن global variable متاح من بداية تعريفه في البرنامج لنهاية البرنامج ما عدا الميثود اللي بتحتوي على المتغير بنفس الاسم طبعا هذا الكلام لازم اللي يقرأ البرنامج يكون على ما عرف به هذا الامر وإلا حيجد هذا الامر صعب نيجي للمفهوم الثاني اللي هو الRai Tablet سهولة الكتابة طبعا اعيد واكرر عملية سهولة الكتابة معتمدة على لغة البرمجة وامكانياتها. يعني كل ما كانت اللغة اكبر كل ما كانت عملية ايه اصعب في كتابة البرنامج بالتأكيد. لكن ليس العدل انك تيجي تقارن لغتين برمجة في انجاز تسك معين. يعني مثلاً، أنت تروح تقول لي بدي أستخدم الـ C، وأستخدم الـ Visual Basic، لأشان أنجز تاكس، إلها علاقة في الـ Graphical Interface، في حاجة إلها علاقة تعمل شاشات إدخال وإخراج، بالتأكيد أنت ضلبت اللغتين، الـ Visual Basic هي مخصصة لهذا الأمر، لكن الـ C مش مخصصة لهذا الأمر. طيب، في موضوع الـ Rectability، حنضطر للـ Simplicity والـ Orthogonality. Simplicity. كل ما كانت اللغة أصغر، يعني الفيتشر بتقدمها أقل، كل مكان إمكانية أنه يلم المبرمج حدود هذه اللغة، لكن كل ما كانت اللغة أكبر، كل ما كانت الفيتشر أكثر، فبالتالي المبرمج لن يستطيع أنه يلم حدود هذه اللغة، فبالتأكيد حتكون اللغة الكبيرة أصعب في استخدام مكوناتها، نتيجة أنه عدم معرفة المبرمج في جميع إمكانيات. أيضاً المقصود فيها القدرة التعبيرية. القدرة التعبيرية كل ما كانت اللغة بتوفر لك إمكانية أكثر من شكل للتعبير عن نفس الفكرة زي count++ وcount تسوي count++ كل ما كانت هذه اللغة أفضل. في قدرة تعبيرية عالية انا اذا في سهولة في انجاز الطاسك بدل ما اكتب هذه الجملة الطويلة بالتأكيد هذه اللغة اللي بتعطي شكل مختصر بتكون اسهل في عملية الكتابة طيب نيجي للريبيابيليتي اللي هو ايش انه هذه اللغة واقعية اي تسك بدي انجزها بقدر انجزها باللغة المستخدمة طيب اول حاجة يا جماعة عملية انه هاي عملية شو عملية هي بتنفي مرحلتين يا اما يا اما تجي تعمل البرنامج ان البرنامج اشتغل وبدأ يتعامل مع ال هلجت هان كل ما اكتشفنا الاخطاء في الكل ما كانت التكلفة بالتأكيد اقل كيف يعني انت طلب منك برنامج هذا البرنامج انجزت وروح تسلمته للزبون زبون بدأ يشتغل على البرنامج بعد فترة و الشغل هيه لو ظهر بغ هذا البغ ادى لإيقاف البرنامج بالتأكيد المؤسسة هتخسر نتيجة توقف هذا او الزبون هيتعطل نتيجة توقف هذا البرنامج فبالتأكيد كل ما كنت قادر على تحديد الاخطاء في الكمبيلشن تايم كل ما كان تكلفة اقل بكثير منه تكتشف في الاجزيكيوشن تايم اشتركوا في القناة لهيك فيها بعض اللغات ظهر فيها حاجة اسمها exception handling اللي هي التعامل مع الاخطاء اثناء executing time طبعا في لغات زي الادة زي لغة C++ الجابا والC HR وفرت الـ exception handling يعني بيقدر المبرمج يعمل procedure يقدر يتعامل مع الأخطاء الممكن تظهر بالـ runtime لكن لغة زي C مش موجود فيها هاد الأمر فبالتأكيد C استخدامها في مخاطرة عالية جدا الـ analyzing الـ analyzing انك انت تعطي 2 أو 3 أو أكثر من المتغيرات يشيروا لنفس الموقع داخل ذاكرة الحسوب فعلياً هذا موجود عندنا درسناه في مفهوم البوينتر في C++ وأيضاً درسناه في مفهوم اسم المصفوفة في الجابة طبعاً الالايزين يا جماعة هو هان بقلل الريليابيليتي ليش؟ لأنه فعلياً أنت لما بدك تحرر المساحة اللي حاجزها ببوينتر انت حررت الاصل بس فيه حيكون متغيرات اخرى بتشير لنفس المكان ففعليا مش هيتم تحريره لانه فيه اكثر من مكان بشير له او اكثر من variable بشير لهذا الموقع انت حررت الاصل لكن فيه بعض المتغيرات الاخرى لازالت تشير لهذا المكان معناته هذا المكان لن يحرر فبالتالي هذا الامر بيأثر سلبا على الability طبعا علاج انك تروح تدور على كل المتغيرات اللي بتشير لهذا المكان تروح تروح تحذفها كاملة. طيب ايضا هنتطرق لمفهوم readability والwritability سهولة القراءة والكتابة. ها كل ما كانت لغة البرمج أقرب للتفكير المنطقي تبع المبرمج كل ما كانت هذه اللغة هي ايش؟ أكثر انتشار وتعبر عما يدور لدى المبرمج يعني تحقق my former reliability بالتأكيد كل برنامج هو سهل في عملية الكتابة بالتأكيد حيكون إمكانية حدوث الأخطاء أقل. يعني مثلا هلقيت أنت تستخدم الجافا صلى الله عليه وسلم في فصلين ثلاثة. لو قلت لك روح اكتب لي برنامج يعمل لي هالومان. بس يطلع الشاشة هالومان. بالتأكيد حتكتب البرنامج وأتوقع لن يحدث إرور عند أي واحد فيكم. ليش؟ في ممارسة. في حاجة خلت الجافا سهلة بالنسبة لكم. أيضا أي برنامج يكون صعب في عملية القراءة بالتأكيد حيكون صعب في عملية الكتابة أو التعديل عليه اخر مفهوم في المقارنة باللغات البرمجة evaluation هنضطرق له اللي هي عمليات التكلفة طبعا التكلفة عملية التكلفة مرتبطة بأكثر من معيار أول معيار هو تدريب المبرمجين انت اي لغة برمجة؟ يجب أن تجلب المبرمج و تدربه هذه عملية التدريب المبرمجين على لغة البرمجة مكلفة من ناحية وقت وتكلفة أن تشتري لغة البرمجة أن تعلمهم عليها أن تجلب مدرب و خلافه نمرة 2 Writing و Program أن تكتب البرنامج باستخدام هذه اللغة البرمجة هناك تكريف للمبرمج نمرة ثلاثة الـ Compiling Program مرحلة الـ Compilation طبعاً هذه مكلفة اكتشاف الأخطاء في هذه المرحلة مكلفة وهذه عملية الـ Testing مكلفة المرحلة الأخيرة الـ Executing Program مرحلة تنفيذ البرنامج وهنا سنحاول المبرمج يعمل عملية موازنة باكتشاف الأخطاء بمرحلة الكمبيليشن ومنع ظهورها بمرحلات الـ Execution وهذا الأمر ما يكونش بيأثر على سرعة البرنامج أيضاً عملية استخدام لغة البرمجة بعض لغات البرمجة في إلها مواصفات هارد وير وسوفت وير معينة مثلاً لغة البرمجة تقولك أنا باش تغلش مع ويندوز 10 او بتشغل ضمن حدود رام معين. بيدفعش اقل من ايه? هذا بالتأكيد هيحسب من ضمن التكلفة. اكيد النقطة اللي وراها الريليابيلت الواقعية كل لغة برمجة اذا ما كانتش تلبي طموح المبرمج بتحتقيق التاسك اللي هي بيحاول ينفذها باستخدام لغة البرمج يعني ما فيهاش فيتشر تحقق التاسك اللي بده يؤديها المبرمج بالتأكيد هتكون تأثي حيكون تكلفة عالية ليش لانه في هذه الحالة هتطر يعمل سيميوليشن لهذا الفيتشر. اخيرا البنتين نقوم برغم عملية الاستدامة او التعديل على البرنامج طبعا يحسب من ضمن التكليف. في مجموعة من المقاتل الاخرى في عملية ال evaluation غير 4 نقاط هذيك في عنا others ال portability المقصود فيها يا جماعة انو البرنامج المبني في لغة برمجة او لغة البرمجة اللي بنينا عليها البرنامج نقدر نخدها من platform لplatform اخر يعني مثلا الجابا انت برنامج كتبه في الجابا على اليونيكس نفسه بتاخده بتنفذه على الويندوس بدون اي مشكلة هذا الامر مش موجود في السي بلاس بلاس الجينراليتي المقصود فيها انه الابليكيشن او اللغة البرمجة بتوفر لك امكانيات لبرمجة اي نوع من الابليكيشن وهذا زي ما هو موجود في الجافا موبايل ابليكيشن ويب وخلافه بتوفر هذه الخصائص طيب نيجي ايضا هان في عندي لغات البرمجة بتتأثر بحاجتين. الكمبيوتر ارتكتشر اللي هي البنية الجهاز المادية وهان المقصود فيها اللي هو والموموري. وايضا الاساس اللي قيمته عليه لغة البرمجة. يعني مثلا عنا انه قيمة هذه اللغة على مبدأ الوبجيت اورينتد. فهو هنطلع على computer architecture و هنطلع على program design methodology طيب بالنسبة لvan newman architecture المقصود انه في عندي memory و في عندي cpu و في امالية تناقل البيانات ما بين المموري و ما بين ال cpu هاي الشكل الاوضح في عندي ميموري. هاد الميموري شو بتخزن فيها ضمن برنامجك? في بتخزن فيها عندك التعليمات اللي انت غذبها بالاضافة للداتا. في عندك الCPU. الCPU في عندك وحدة حساب والمنطق. وفي عندك الكونترول يونيت. عملية الـ data بتم عملية إيش؟ ضخها من المموري زائد التعليمات إلى CPU تتنفذ المخرج برجع تاني وبتخزن في المموري. طبعاً بعد ما يتخزن في المموري بقدر يعرضوه عن طريق وحدات الإخراج. تمام؟ هاي Von Neumann architecture. على قد مرحلة تنفيذ التعليمات بتكون في هذا السلسل. اول حاجة انشلال البرنامج دائما عند بداية تنفيذ البرنامج يشير الى التعليم الاولى في البرنامج بعد هيك حتستمر ضمن مؤين جلب التعليم من الذاكرة اللي باشر عليها عداد البرنامج بعد هيك انتقال عداد البرنامج ده يشير الى التعليمه اللاعبه بعد هيك تيجي مرحله اللي احنا التعليمه اللي احنا جبناها بعملها ديكود طبعا بفسر شو معناها والاخير اكزيكيوت بعد هيك بنتقل للتعليمه الاخره طبعا هذا السلسله مرت عليكم في مصارف معماريه دي الحسود ضمن سلسله لا نهائيه الى انتهاء تنفيذ البرنامج هالجد اللي احنا بدنا نعرفه انه لغات البرمجه من سنة 1950 او قبل وبدايه 1960 كانت تهتم في جانب الماشين يعني لغات البرمجة كانت أقرب للماشين أقرب منه للإنسان زي لغة البرمجة اللي هي نقول الفورترين وخلاف الفرجانات الأولى بعد هك في لغة 1960 طورت هذا اللغات وأجت في جانب المبرمج وظهرت لغات الستركشر برغرامين structure programming نسميها structure programming اللي هي بكون لها شكل معين في كتابة البرنامج زي ما شفنا لغات زي البرل وخلافه لها شكل مش البرل لغة البرل صحيح في لها شكل معين في كتابة البرنامج أو برولوغ بعد ذلك ظهرت في 1970 في نهايتها هي Process Oriented Languages ظهرت لغات بتعتمد على مبدأ ال Process Oriented يعني ايش ال Process Oriented هي بيانات او لغات فيها method جاهزة معلك مو برامج الا تعطيها البيانات وهي تعطيلك output يعني هم بتركز processing على ال data زي السيميولا 67 بعد هك في البداية منتصف 1980 ظهر concept الobjectoriental ضمن لغات البرمجة طبعا هان الconcept تبقي اعتماده في معظم لغات البرمجة الجديدة كمفهوم اساسي اذا الفرجن اول من اللغات دركزت على الالة كانت اقرب للالة ثمانه الانسان بعد هيك التطوير صار عنده structural programming صار عندنا لغات ضمن أوامر معينة ما علي المبرمج إلا يتبع هذه الأوامر بعد هيك ظهر مفهوم ال process oriented process oriented هي لغات فيها procedure جاهز أنت تعطيها ال data وتعطي لك ال output وأخيرا ظهر عندي مفهوم ال object oriented هل جات في عنده لغات البرمجة صنفت ضمن أربع فئات imperative functional, logic, markup, programming hybrid لو احنا لاحظنا على الاربع مفاهيم ما لقينا ضمن هذه الاربع categories ما لقينا ال object-oriented ليش مش موجودة ال object-oriented؟ لان ال object-oriented موجودة تقريبا في الاربع هذه الفئات هي لا تنتمي الى اي فئة من هذه الفئات الاربع طيب يجي للإمبراتيف الإمبراتيف هاد النوع من اللغات زي C زي Java زي Barrel زي JavaScript زي Visual Basic زي.NET زي C++ بتوفر لك إمكانية تعريف متغيرات والـ Assignment اللي فيها عمليات Processing والـ Iteration Loop تدعم مفهوم الـ Object Oriented موجودة في معظم لغات الـ Visual Programming و Scripting برغامة زي C والـ Java الفانكشنال هذه اللغات بنسميها فانكشنال يعني ايش فيها معين موجود. النوع الثاني هو هي عبارة عن نوع من لغات البرمجة هي عبارة عن بتم تم تمريرها جاهزة. هذه اللغات زي لغة والامال والاف. ايضا في عنا languages هي عبارة عن لغات تهتم في ال rule based يعني ايش اللي له علاقة في ال if statement if كزا then كزا هادي لغة زي لغة لبرولوج الماركة ببرامي هي عبارة عن لغات برمجة انها مش لغات برمجة بالاساس هي عبارة عن خليط في الاساس بحاجة للغة برمجة ترتبط معها عشان تقدر ننجز الابليكيشن زي الاندرويد زي زي زي الـ XSLT والـ GSTL طيب هل جيت أي لغة؟ لازم تعمل عملية trade-off يعني ايش؟ عملية الموازنة بين اكثر من نقطة من هذه المقاط المتضاربة او المتعارض reliability و cost of execution يعني انا بدي استخدم اللغة لتحقق امكانياتي بممتحضروية من feature لكن برضو بدي ادى طول على cost of execution يعني مثلاً هلقيت لغة زي الجافا. لغة زي الجافا انت اجيب توصل لعنصر في مصفوفة. هذا عنصر خارج حدود الاري بالتأكيد هيطلع لك رسالة ايرون. انت بتتعامل مع عنصر خارج حدود المصفوفة. طبعا هذا في قنبلة انتاين. ليش عمله في الكمبيلشن تايم؟ عشان ما يصيرش مشكلة في الإدزيكيوشن تايم وتكون التكلفة أعلى لكن تعال لال-C لغة زي ال-C لو حددت توصل لما عنصر في المصفوفة بعيد عن حدود المليون مرة بعيد بالتأكيد لن تعطيك ال-C رسالة إرور بالتأكيد لن تعطيك ال-C رسالة إرور بالتأكيد لن تعطيك ال-C رسالة إرور لكن لا في الكمبيلشن ولا في الإدزيكيوشن لكن لا في الكمبيلشن ولا في الإدزيكيوشن لكن النتائج اللي حض حصلها بالتأكيد هي نتائج خاطئة هي نتائج خاطئة لكن ال-C لا أحد ينكر انه C والMetalab اصرع بكثير من لغة الجابة. بالتأكيد لليوم انا لازلت بستخدم المتلاب والC في تنفيذ البرامج اللي متعلقة السرعة بالدرجة الاولى متعلقة لها او مطلوبة. عشان هيك الجابة تعتبر لكن كوستها اعلى. costها طبعا execution efficiency for reliability بالتأكيد لكن costها بالتنفيذ وقتها أطول من أو أكبر من C نجد النقطة الأخرى هي readability و writeability سهولة القراءة وسهولة الكتاب طبعا بالتأكيد أي لغة صعبة في الكتابة بالتأكيد ستكون صعبة في القراءة والعكس صحيح فكل ما كانت اللغة أكبر، كل ما كان حدودها أوسع، فبالتأكيد المبرمج مش هيكون عنده إلمان بالـ Feature تاعت اللغة الـ Reliability و الـ Reliability اللي هي سهولة الكتابة والواقعية طيب، فيها انتضارب ما بين الـ Reliability و الـ Reliability في لغات البرمجة مثلاً ال C++ بتوفر لك ال pointer. وهذا بالتأكيد ميزة موجودة في ال C++. لكن هذا يتعارض الوجود ال pointer يتعارض مع مفهوم ال reliability. اللي هو يكون عندك اكثر من عنصر يشير لنفس المكان. انت روح تحدفت عنصر من العناصر لكن ضل الباقي يشير لنفس المكان. بالتأكيد ما تحررتش المماري. هذا القصة طبعا مش موجود البويندر في الجافا عشان يحقق موضوع الرليابيليتي طيب I'll get in build an implementation method فيه الأساس اللي بتقوم عليه لغة البرمجة فيه بيشتغلوا عمر حدث الكمبيليشن فيه عنا بيشتغلوا عمبدأ الانترابشن وفيه بيستخدموا المفهوم الهايبريد اللي بيجمع بين الكمبيلر وما بين الانتربرتر هالجهد الكمبيلشن يا جماعة هذي تستخدمها هي عبارة عن عملية شوية عملية تحويل الكود من لغة البرمجة الى المشهير اللي هي من الى لغة الالة عشان يتنفذ مباشرة على الالة على الكمبيوتر مباشرة طبعا هذه اللغات اللي فيها كومبايلر بالتأكيد هي لغات سريعة جدا. زي السي والكوبل والسي بلس في بلس. وبستخدموها عادة في البرامج الكبيرة. عشان هيك قلنا دائما انظمة التشغيل بيستخدموا لغة زي السي. طبعا عندك هاي البرمشين. هاي لغة الالة. عندك هاي نظام التشغيل. بيشغل على الالة. في عندك الكومبايلر تعالى السي. كومبايلر السيه جماعة ايش بروح بسوي بحول البرنامج المكتوب من هان للغة الالة وينفذ مباشرة على جهاز الحاسوب هذا بالتأكيد اصرع بكثير لكن لغة زي اللغة الجافا لغة الجافا ما بتحول اوتوماتيك ما بتنفذ عالماشين لانج او الماشين اا ماشين لانجوش ايش اللي بسيب بتنفذ على حلقة اسمها جافا. اشان هيك السي هي بلاد فورم انديبندنت. يعني البرنامج المكتوب على السي في اليونيكس لا يمكن تنفيذه على الويندوز وبالعكس. لكن الجافا نتيجة وجود الجافا virtual machine اي برنامج كتبه على الجافا لانه حيتنفذ على الجافا virtual machine بالتأكيد حتنفذه على اليونيكس نفسه حتنفذه على الويندوز طيب شو عملية الكمبيليشن عندك المرحلة الاولى عندك source program برنامج اللي انت كتبه بلغة زي لغة C بتحول لحاجة مرحلة بتيجي لكسيكل اناليسز او انالايزر في عندك سينتاكس آنالايزر في عندك انتر ميديايد جو كود جينيراتر. وفي عندك الكود جينيراتر الاخير بعطينا الكود جينيراتر بعطينا الماشين لانجويج والماشين لانجويج تنفذ على جهاز الحاسوب وهان حيعطيني الناتج. كل مرحلة من هدول نشوف شو بعطينا. نيجي اول مرحلة اللي هو طبعاً هذا اللي بتستخدم الكمبايلر هي عبارة عن لغات. عملية التحويل من اللغة لغة البرمجة إلى لغة المشيل لانجوج بطيئة. لكن عند عملية التنفيذ بعد هي لغات سريعة جداً. الليكسيكل اناليسز في هذه المرحلة بتم تقسيم البرنامج الى يونيتس هاد اليونيتس الى لكسيكل يونيتس يا اما اسماء متغيرات يا اما كلمات محجوزة يا اما اخواس وخلافه وخلافه من الموجود داخل البرنامج وبتم تجاهل جميع الكومنت اللي بحطها المبرمج وبتم تجاهل جميع الكومنت اللي بحطها المبرمج وبتكون ضمن الكود في عنا المرحلة اللي وراها هلقيت قسمنا البرنامج لـ unit عن طريق lexical analyzer تجي مرحلة syntax syntax analysis هي مرحلة بتم توليد الparse tree هان اتوقع درستو في الautomata كيف بتم توليد الparse tree نستخدم lexical unit اللي تم توليده في المرحلة السابقة وتعمل generate للparse tree بهذا الشكل في عنا assignment statement هاد الجملة هي عبارة عن identifier الطرف هذا بساوي expression جملة برمجية يتبعها فاصلة من قطر. هالidentifier هو اسم متغير اسمه x3. ال-expertion هو عبارة عن expression plus expression في قواعد تم الاعتماد عليها عشان يعمل generate للbars3. طبعا ناتج هاد المرحلة هي توليد الbars3. بعد هيك السيماتيك اناليسز هاد السيماتيك اناليسز انا بستخدمها عشان اولد الانتر ميديايد كود في هاد المرحلة بتم فحص البرنامج هل هاد البرنامج في اخطاء بتم فحص هاد البرنامج هل في في اخطاء بتم اكتشافها يعني جمال مكتوبة غلط او خلافه وايضا بتم الدخول ضمن مرحلة ضمن هذه المرحلة مرحلة الابتمايزيشن مرحلة الابتمايزيشن ان انا باخد الكود بحاول اقلل حجم الكود اقلل حجم الكود making smaller and faster or both يعني انا بروح انا بقلل حجم الكود وبجعله اسرع ضمن هذه المرحلة بعد هيك بنعمل عملية الكود جينريشن بروح بحوز الانترمديات كود لماشين لانجويش كود وبعد هيك بتم تنفيذ هذا البرنامج. يعني في هذه المرحلة انا بستلم الكود الاصلي برنامج بروح في هذه المرحلة بتقسم البرنامج الى لكسيكل جونيتس. المخرج هذا باخده وبدخل مرحلة سنتك اناليسز في سنتك اناليسز بروح بولد البارس 3 باخد البارس 3 بروح بولد الانترميديات كود جينريتر اللي هو عن طريقه بروح انا بفحص هادا بفحص هل الكود في اخطاء ولا لا باخد الكود بعمله اوبتيميزيشن بحالة اقلل اقلل عجمه اسرعه طبعا هاد العملية اوبشينال مش بالتأكيد في كل برنامج هتتنفذ بعد هيك باخد الكود هذا الخارج وبحاولو لماشين لانجوج الماشين لانجوج بنفذها اوتوماتيك على جهازك عشان بيعطيني الاوتبوت هلقيت ضمن المراحل ممكن في حاجة اسمها Load Model هلقيت انت بعض الاحيان بحاجة انه يتم دمج اللون كود اللي انت كادمه مع كود السيستم يعني الكود اللي له علاقة في نظام التشغيل لانه انت ضمن كودك هتستغل اوامر نظام التشغيل سواء وحدات الانبوت والاوتبوت في هذا الحاله بتم دمج كودك مع كود النظام زي لما نقول انبوت ضمن الجافر روح نضمن اوامر الانبوت والاوتبوت والسي بلاس بلاس بهذا الامر طيب طبعا يا جماعة ما بين الميموري ما بين ال cpu في عنا باسز وحدات نقل هاد الوحدات النقل برضو بتأثر على سرعة الحاسوب في انجاز العمليات الحسابي طيب عملية الانتبريتر انت ريبريتر يا جماعة مفيش في عملية ترانسليتر يعني انت بتكتب البرنامج في اللغة بتنفس في نفس اللغة مفيش عملية تحويل لماشين لانجوش طبعا هذه العملية بالتأكيد ابطأ من اللغات البرمجة اللي تستخدم interpreter ابطأ بكثير من لغات البرمجة اللي بتستخدم الcompiler طبعا في لغات زي snoople زي lisp زي apple زي php زي javascript هذه اللغات ما بتستخدم compiler بتستخدم interpreter كيف شكل هاي source بتنفذ البرنامج على interpreter ما بتنفذ على الماشين هو حاجة تحاكي اه تحاكي الماشين. يعني انا استعرضت عن تحويل الكود لماشين لانجويش. طبعا هذا اول حاجة من المزايا ان مفيشش تحويل هاد العملية. نحوز الكود من اه برنامج مكتوب باللغة البرمجة الى اه مش موجودة. طبعا هاد العملية ممكن تولد الاخطاء في مرحلة الـRuntime ممكن تكون كبيرة زي انو انا اوصل لعنصر خارج حدود الـArray هادي ما تمش اكتشافها الا اثناء الـRuntime مش في الـCompilation Time عيوبها عيوبها انه فقط هي مخصصة للبرامج الصغيرة ليست مخصصة للبرامج الكبيرة الشغلة الثانية يا جماعة في الكمبايلر اول ما تعمل مرة الكمبايلر بعمل مرة كومبايلشن اي تنفيذ ثاني فيما بعد هو عامل كومبايلشن مرة واحدة مش هيتطار يعمل كومبايلشن مرة اخرى هيمل رن ومرن ورن بدون ما يعمل كومبايلشن لكن في الانتربريتر لا كل مرحلة هيعمل الانترابت للكود وهذا هيوخذ معاها وقت عشان هيك هذه اللغات اللي بتستخدم بالتأكيد ابطئ من اللغات اللي بتستخدم اللي هو الكمبيليشن وايضا هي تستخدم مساحه للصورس كود بالاضافه للسبل تيبول ديورينج انترابتشن طيب، لغات اللي بتستخدم هايبرت، يعني جزء من الانتربريتر وجزء من الكمبايلر. طبعاً هذه اللغات هي اللغات الجديدة، مش اللغات القديمة. طبعاً هذا النوع من اللغات استخدموا الكمبايلر مع الانتربريتر. هان طبعاً في الأنظمة لا ينصح في الأنظمة الكبيرة، هي الأنظمة الصغيرة إلى المتوسطة. طبعا هان استخدموها في ال high language programming to translate to intermediate language بعد هيك بعد ما يتحول الكود ل intermediate language بعد هيك بنعملها interpreter طبعا هذا النوع هو اللغات البرمجة اسرع من interpreter في نفس الوقت ابطع من اللغات المعتمدة على ال compiler من هات اللغات هي ال barrel من هات اللغات هي ال barrel هي الجاوة من هات اللغات الجاوة ايش بصير تاخد الكود بعد هيك بتعمل فيها لكسيكل انالايزر بتحاول بتعطينا لكسيكل يونيت بعد هيك بتعطينا البارس 3 عن طريق السينتكس انالايزر بعد هيك بتروح بتفحص الكود وبتتأكد انه غالي من الاخطار بتعطينا انترميديت كود ما بروحش يتحول لماشيل لانجويج بروح بتنفذ على انترابريتر هان في مرحلة كانت في الكمبايلر هي تحويله لماشين لانجوج هان مفيش مشين لانجوج بتنفذ على الانترابريتر لكن ربنا الله هذه اللغات افضل من اللغات اللي بتحتوي على الكمبايلر ليش هذه اللغات البرتابيليتي تبعتها عالية يعني زي الجافا الجافا البرنامج بتكتبه يونيكس بتاخده اوتوماتيك بتنفذه عويندوس ليش لانه بطل مرتبط بماشين لانجوج بطل هو بحاجة انه يولد الماشين لانجوج اللي مرتبطة بجهاز الماسوب. صار بنفذ على انتربريتر اللي هو عندي في الجابا الجابا فيرتشوال ماشين. فيا لنا لبريد بروسيسور. هاني يا جماعة اخر حاجة عندي موجودة في هذا الشابتر هي عنا عبارة عن شو؟ هي عملية تضمين بعض الكود اللي هو علاقة بالسيستم ضمن كود البرنامج الخاص فينا. اللي متذكر اللغة زي C++ في include. وفيه ديفان وفيه ايضا موجود في الجافة تضمين هذه الاوامر اوامر الامبوت والاوتبوت. هادي عبارة عن شو؟ بجموعة من الاوامر اللي بتم تضمينها على الكود عشان سيستمنا يقدر يتعامل مع وحدات الامبوت والاوتبوت الموجودة داخل نظام الحاسوب. وهيك ان شاء الله خلصنا هذا الشبطر. وإن شاء الله يكون محاضرة مفهومة ونلتقي فيكم في بث مماشر لرد على استفساراتكم والسلام عليكم ورحمة الله