برمجةمقالات

هل يجب على المبرمج ان يفهم الهاردوير ؟

مافيش لغة برمجة هتقربك من الهاردوير بروز الجملة دي فى دماغك وقربك من الهاردوير مش هيفيد بحاجة فهمك لكيفية عمل مكونات الكمبيوتر الداخلية مع بعض بشكل منطقى هو ده المهم بشكل منطقى وليس بشكل فزيائي logical not physical

يعني ايه الكلام ده
يعني تركيب شريحة الميمورى فى حد ذاته والشرائح الألكترونية اللى عليها وكل pin فى الشريحة دي متوصل بأيه علشان ايه ومين فى ال Pins دي Inputs ومين outputs ومين power
ده مايخصناش كمبرمجين
شكل الـ processor من جوة وطريقة تصميمه وكيفية طباعته على رقائق السيلكون
ده مايخصناش كمبرمجينblack and white computer tower

دي حاجات ممكن تقرأ عنها او تشوفلها فديوهات كنوع من انواع زيادة المعرفة العلمية عندك .. حاجة كدة nice to have

الى يخصنا هو الكلام المنطقى اللى بيوصف طريقة عمل الحاجات دي بشكل مجرد
يعني: “الميمورى عندها مخازن للبيانات وكل مخزن له عنوان” دي جملة بتوصف بشكل مجرد .. ماقلناش المخزن ده شكله ايه بالظبط فى الشريحة ولا العنوان ده عبارة عن ايه بالظبط

اما: “الميمورى عبارة عن دائرة كهربائية عليها microchips مكونة من logic gates متنوعة على رأسها And-Or gated Latch متصلة لتكوين register قد ييصل حجمه الى 64bit
وشريحة الذاكرة الواحدة تحتوي على عدة registers فى شكل اعمده ويتم التعامل مع كل latch فى كل register وفقاً لموقعه برقم العمود رقم الصف (زى الأكسيل كدة)
مضاف اليها مكون يدعى multiplexer وهو المسؤل عن الوصول الى عناوين كل ال registers فى الذاكرة”
الفقرة الطويلة دي تعتبر الوصف الفزيائي للى بيحصل فى الميمورى
والكلام ده مايخصناش فى حاجة كمبرمجين
او خليني اقولك بشكل أدق .. ده مايخصش كل المبرمجين ان مكنتش هتكتب compiler مثلاُ فده كلام مايخصكش.
وفى توصيف فزيائي قد يكون اعقد من كدة .. بس انا ماعرفوش.

الكلام الـ logical هو اللى محتاجين نفهمه ويعتبر اساسيات علشان تعرف انت بتبرمج مين
الكلام ال physical اللى محتاج يدرسه ويفهمه حد هيكون مسؤل عن تصنيع او برمجة المكونات دي بنفسه

وبالمناسبة كدة الكود اللى انت بتكتبه المسؤل عن تنفيذه هو الـ CPU
يعنى اياً كان اللغة اللى بتكتبها لما بتكتب instruction ليها علاقة بالميمورى فالـ instruction دي بتروح للـ CPU وهو ينفذها
عايز تحط داتا فى الميمورى .. البروسيسور هو اللى بيحطها .. عايز تمسح من الميموري .. البروسيسور هو اللى بيمسح
انت يا صديقي مالكش access على الميمورى مباشرة

وبعدين لو انت عايز تقرب من الهاردوير .. او بلاش انت .. لو حد مصمم انك لازم تقرب من الهاردوير علشان تبقى تنين مجنح .. تقرب لغاية فين بالظبط. ؟!
طب تعالى كدة نقرب مع بعض
تسمع عن الـ Boolean Algebra
ده بمنتهى البساطة نوع من الرياضيات خاص بالنظام الثنائي فقط والعمليات على رقمين فقط وهم صفر وواحد
وهو مشتق اساساً من علم المنطق واللى انا مش فاكر اى تفاصيل عن تاريخه غير ان كان بيعبر عن علاقات بين قيمتين وهم حقيقي وغير حقيقي
ده اساس عمل ال digital computers اللى احنا نعرفها النهاردة واللى تختلف عن مكنة الان تورنج اللى كانت انالوج
حد ابن حلال خد الجبر البولي ده وقدر يصمم دوائر كهربائية معتمد عليه فى الفكرة متكونة من شوية ترانزستورز .. وشوية diodes وطبعاً resistors
وبما ان الدوائر الكهربائية دي مابتفهمش يعنى ايه صفر ويعني ايه واحد فاحنا قلنا الترانزستور اللى مابيخرجش كهرباء ده كأنه صفر واللى بيخرج كهرباء كأنه واحد.
والموضوع كبر ولمينا شوية دوائر مع بعض وبقى عندنا logic gates ودي فيها عائلات كتير اهمهم And و Or
وال logic gates دي هى روح واساس اى microcontroller احنا نعرفه النهاردة

انا بقرب معاك من الهاردوير اهو اما نشوف أخرتنا ايه

وال microcontroller ده اللى هو الـ CPU بتاع الكمبيوتر .. وباقى المكونات برضه .. اى chip بقى.
تمام كدة
عايزين بقى نخلى الـ CPU ده يعملنا شوية حسابات .. اه تمام هو جواه logic unites كتير زي ما قلنا وكل unite بتقدر تعمل حسبه معينه
عايزه يجمع رقمين تمام فى unite للكلام ده اديها الرقمين بس وهى هتطلعلك النتيجة
طب اديها الرقمين ازاى؟ واخد النتيجة فين؟
هتديهاله بالطريقة اللى بيفهمها .. ترانزستور مابيطلعش كهرباء وترانزستور بيطلع كهرباء .. صفر وواحد يا هندسة.
ازاى طيب؟
بسيطة هتحول اى رقم عشري الى رقم ثنائي الأول
رقم زي 90 لما تحوله ثنائي هيبقى 1011010
بس يا سيدي اتفضل اتعامل
افتح المانويل بتاع البروسيور هتلاقى قائمة الـ instructions اللى بيقدر ينفذها اتفضل اتعامل
افتح المانويل ياعم التنين مالك هنجت ليه
صعبه مش كدة
ماشى نسهلهالك .. مافى واحد ابن حلال اخترع لغة برمجة اسمها Assembly
ودي علشان التنانين الصغيرين اللى زيك
بتكتب فيها شوية أوامر غالباً من 3 او 4 حروف انجليزي وبعدين اللغة بتحول الأوامر دي مع البيانات اللى انت مدخلها للأصفار والوحايد او بمعنى تانى بتحولها للغة الأله
اللفة اللى بتفهمها الأله
واللأسمبلي غالباً هتلاقيها فى اى instructions manual لأى microcontroller او CPU
والمانول ده انت تستخدمه لما تكون بتكتب compiler بنفسك.
وبعدين جه واحد ابن حلال اكتر وقالك الأسمبلي دي بتاخد من المبرمجين وقت كبير علشان تعمل حاجة صغيرة
خلينا نعمل لغة تسهل الموضوع أكتر من كدة.. وظهرت لغات زي Fortran ودي كانت اريح فى الكتابة والتعليمات فيها كانت اطول من ال3 حروف بتاعة الأسمبلي
وبرضه اللغة بتحول الكود بتاعك للغة الألة .. وده شىء مافيش منه مفر .. هى اساساً لغة الألة هى لغة الأساس بقى لو هنتكلم صح .. وكل اللغات التانية اتوجدت علشان تتناسب مع طبيعة المخ البشري
وطبعاً احنا لغاية النهاردة فى لغات جديدة بتظهر
انت عارف ان الـ C ظهرت فى السبعينات؟! والأسمبلي ظهرت فى الأربعينات! وفى الفترة الزمنية اللى بينهم ظهرت لغات ((ناجحة)) كتير؟!
واللى خلى الـ C لغة مميزة هو ان ها اتعملت علشان يتكتب بيها نظام تشغيل Unix
وانت عارف ان Linux كان محاولة لتقليد Unix فاتكتب بيها هو كمان!
بس يا سيدى وفجأة العالم كله بيلف ويدور حوالين الـ C
زى مابيحصل النهاردة مع الـ Javascript

اطب حنا ماوقفناش عند ال C ليه؟ ايه اللى خلى الناس تخترع لغات تانية جديدة ويصدعونا بيها.
تعددت الأسباب .. بس خليني اقولك على سبب وهو تطور هندسة البرمجيات .. تطور الفكر البرمجي نفسة
حاجة زي ال OOP .. كانت محتاجة تجديد فى اللغات المتاحة علشان تستوعبها .. وده لأن الموضوع مابقاش مجرد برمجة CPU زي زمان .. لأ ده احنا بدأنا نتعامل مع data structures متقدمة
تقصد ان الـ C مش متواكبة مع تطورات صناعة البرمجيات؟!
بص لو قلت أه ففى 3 مليون شاب متحمس هيفهموا انى بغلط فى الـ C وهيعتبروني ملحد. ولو قلت لأ مش هتبقى أجابة سليمة .. فبلاش الأسئلة الوجودية دي.

سبب تانى لظهور الـ high level languages هو ظهور انوع كتير من ال CPUs وكل نوع وله التعليمات بتاعته
وده كان بيؤدي اللى ان ال compiler بتاع اللغة لازم يبقى فاهم كل CPU منهم بيشتغل ازاى علشان يقدر يطلعله لغة الة سليمة
وده كان حوار مقرف للمبرمجين.
بألأضافة الى تعدد انظمة التشغيل اللى برضه محتاجة تعليمات فى الكود بشكل مختلف لكل نظام منهم
فظهرت عندنا اللغات اللى هدفها فى الحياة انك تكتب كود مرة واحدة ومالكش دعوة هو هيـ run على انهى processor او انهى نظام تشغيل
اللغة هتحوله للغة وسيطة وبعدين اللغة الوسيطة هيتم تحويلها للغة الألة الخاصة بكل بروسيسور حسب الطلب.
الله … انتوا بتبعدونا عن الهاردوير كدة يا جماعة
ياعم وانت كنت قربت اساساً انت طول عمرك بعيد

المهم علشان البوست طول منى اوى وانا مكنتش متوقع ولازم اوقف كتابة لغاية كدة ان مكنتش تحسن علاقتك بالميموري وتقرب منها أوى وتتعودوا على بعض يبقى انت مش …. اه .. لا .. ده بوست بجد مش هزار .. معلش.

زر الذهاب إلى الأعلى