نيت هارديسون: في الفيديو الخاص بالنظام الثنائي، بينّا كبف نمثل الأعداد الصحيحة، من صفر وفوق فقط باستخدام الأرقام صفر واحد. في هذا الفيديو، سنستخدم التدوين الثنائي لتمثيل نصوص, حروف, وما شابه ذلك لماذا نتحمل عناء القيام بذلك؟ حسنا، في الواقع, إن الحاسوب لا يفهم الا الأصفار والواحدات, الأرقام الثنائية, لأن هذه يمكن تمثيلها بسهولة بواسطة الإشارات الكهرومعناطيسية على سبيل المثال، انظر الى ذاكرة الكمبيوتر الخاص بك وكأنها سلسلة طويلة من المصابيح الكهربائية، كل مصباح فيها مطفئ يمثل ‘صفر‘, ويمثل ‘واحد‘ اذا كان مضاءاً بدلا من استخدام مجموعة من المصابيح الكهربائية، بعض أنواع الذاكرة الحديثة تفعل ذلك باستخدام مكثفات تحمل شحنة قليلة لتمثل ‘صفر‘ وشحنة عالية لتمثل ‘واحد‘ وهناك أساليب أخرى أيضا. على أية حال، من أجل تخزين أي شيء في الذاكرة، نحن بحاجة -أولا- الى تحويله إلى شيء قابل للتمثيل (ماديّا) في الأجهزة الصلبة لذلك دعونا نفكر كيف يمكننا تمثيل الحروف باستخدام التدوين الثنائي في اللغة الإنجليزية، لدينا 26 حرف في الأبجدية، A، B، C، D، وهلم جرا، الى ال Z. يمكننا تعيين لكل واحد من هذه الحروف عدد، لنفرض من الصفر إلى 25، ومن ثم باستخدام التدوين الثنائي، يمكننا أن تمثل كل رقم على أنه سلسلة من الأصفار والواحدات. هذا ليس سيئا جدا. مع ذلك، فإن هذا لن يكون كافيا. مع هذا النظام، لا يمكننا أن نميز بين الأحرف الكبيرة والصغيرة إذا كنا نريد جهاز الكمبيوتر الخاص بنا أن يكون قادرا على التفريق بين الحالتين, اذن فإننا سنحتاج الى 26 عدد اضافي وماذا عن المسافات، الفواصل، وعلامات الترقيم الأخرى؟ على لوحة المفاتيح الخاصة بي، عندي 32 زر، بما في ذلك جميع الأحرف الخاصة مثل ال ^ و ال & هذا بغض النظر عن الأرقام نفسها من ال 0 الى ال 9 لأننا لا تزال ترغب في كتابة الأرقام بالتمثيل العشري في الحاسبة, حتى لو كانت الحاسبة لا تفهم سوى النظام الثنائي وأخيرا، سوف نحتاج لتمثيل حرف مسافة لكي يعمل الزر الخاص بالمسافة (space) لذا، فان كيفية تمثيل النص في الكمبيوتر هي عملية أعقد بقليل مما كنا نعتقد بالإضافة إلى ذلك، لتفترض اننا كوّنّا بعد ذلك الترميز الخاصة بنا لتمثيل الحروف كأرقام. وعملية الترميز هذه ستكون عشوائية, كما تكلمنا سابقا عن استخدام الأرقام من الصفر الى 25 لتمثيل الأحرف من A الى Z. لم لا تستخدم من 10 إلى 35 حتى نتمكن من استعمال (الصفر الى تسعة) كالأرقام نفسها؟ ليس هناك سبب حقيقي، نحن فقط نختار ما نظنه الأفضل بالنسبة لنا في السابق, في بداية الستينات, كانت هذه مشكلة حقيقية. الشركات المختلفة المصنعة للحاسبات كانت تستعلم أنظمة ترميز مختلفة، وهذا جعل الاتصال بين الآلات المختلفة مهمة صعبة للغاية. المعهد الوطني الأمريكي للمعايير، ANSI، شكل لجنة لوضع نظام موحد. وعام 1963، تشأ معيار الترميز الأمريكي لتبادل المعلومات، المعروف باسم ASCII. لقد صمم ال ASCII على شكل ترميز 7 بت، مما يعني أن يتم تمثيل كل حرف من خلال مزيج سبعة ‘أصفار وواحدات‘. مع تلك القيمتين، صفر أو واحد، لكل من البتات السبعة، هناك 2 للقوة 7، أو 128 حرف يمكن تمثيلها بنظام ال ASCII اذن, 128 حرف يبدوا عددا كبيراً، أليس كذلك؟ حسناً، تذكر أن هناك 26 حرف صغير في الإنجليزية، 26 حرف كبير، 10 ارقام، 32 علامة ترقيم وحرف خاص، وحرف ‘مسافة‘ (space) واحد وهذا يكون مجموعه 95، اذن فإن لدينا 33 حرفا آخر يمكننا تمثلها. اذن ما الذي تبقى؟ حسنا، في أيام تطوير ASCII، فإن آلة المبرقة، والتي هي من آلات الكتابة التي تستخدم لإرسال رسائل عبر الشبكة، كانت منتشرة على نطاق واسع. وهذه الآلات كانت تستخدم أحرف إضافية للسيطرة عليها، على سبيل المثال، لنقل رأس الطباعة سطر الى الأسفل, زر السطر الجديد, او للإنتقال الى الهامش الأيسر, زر الانتقال "carriage return" أو ببساطة مفتاح ال "return"، او عندما نريد العودة مسافة حرف الى الوراء، زر المسح "backspace", وهكذا هذه الأحرف تسمى أحرف التحكم، وهي تشكل بقية مجموعة ال ASCII. لذلك إذا نظرنا إلى جدول ال ASCII، فإننا نلاحظ أول 32 رقما، من الصفر الى 31، محجزوة لأحرف السيطرة ولكن قلنا أن هناك 33 حرف من أحرف التحكم ما الذي حصل؟ حسنا، رقم صفر و 127، أول رقم وآخر رقم من مجموعة ال ASCII، لديهما أنماط بتّات (bits) خاصة، جميعها أصفار او جميعها واحدات ,على التوالي. فقرر مصمموا ال ASCII الحفاظ على هذه الأرقام لحروف خاصة إضافية، وهي حرف ال null والحرف DEL. كان الغرض من الحرفان null وDEL هو تحرير النص المكتوب على الشريط الورقي، والتي كانت طريقة شائعة في حفظ المعلومات كان الشريط الورقي مجرد شريط طويل من الورق، وعلى فترات منتظمة على الشريط، تقوم بعمل ثقوب لتخزين البيانات. واعتمادا على عرض الشريط، يكون كل عمود قادرا على استيعاب خمسة، ستة، سبعة، أو ثمانية بتات. لتمثيل الصفر، فإنك لا تفعل شيئا على الشريط، مجرد أن تترك مسافة فارغة. لعمل بت واحد، فإنك تثقب ثقبا. لكتابة حرف ال null, فانك تترك عمود فارغ مشيرا الى "أصفار فقط". ولكتابة DEL فإنك تعمل عمود كامل من الثقوب في الشريط. ونتيجة لذلك، يمكنك استخدام حرف DEL لحذف معلومات. تخيل إجراء إنتخابات على اوراق الاقتراع مملوءة ومن ثم ثقب جميع الثقوب غير المثقوبة. فإنك ستبطل الاقتراع لأنه من المستحيل أن تعرف الأصوات الأصلية. في حين لا يزال يستخدم الحرف DEL للحذف في زر الحذف المعاصر (delete) فإن الحرف null اصبح يستعمل الآن كحرف انهاء في المتسلسلات في لغة C وبعض اشكال البيانات الآخرى قد تعرفها بشكل خط مائل وصفر (0\)، لأننا نمثلها بهذا الشكل في الكتابة. حسنا, نعود الآن الى جدول ASCII. بعد أول 32 حرف من أحرف التحكم تأتي ال 95 حرف من أحرف الطباعة هناك بعض القرارات الرائعة الخاصة بالتصميم و التي تستحق أن نتحدث عنها هنا. أولا، الأرقام العشرية من الصفر الى التسعة، تطابق الأرقام من 48 الى 57 (في ال ASCII)، ربما نرى أن هذا شيئ عادي الى أن ننظر إلى الأرقام 48 الى 57 مكتوبة في التدوين الثنائي. إذا فعلنا ذلك، فإننا نرى أن الحرف ‘الرقم صفر‘، يقابل 0110000، الواحد يقابل 0110001، الإثنان 0110010، وهلم جرا. هل تلاحظ النمط؟ كل حرف رقمي يكتب بشكله في التدوين الثنائي, مسبوق ب 011 والآن، تلاحظ أن الأحرف الكبيرة تبدأ من 65، بالحرف الكبير A، ولكن الأحرف الصغيرة لا تبدأ حتى ال 97. يعني أن هناك 32 حرف بينهما. يبدو هذا غريبا أنها ليست سوى 26 حرف في الأبجدية. لماذا يتم فصلها هكذا؟ مرة أخرى، إذا نظرنا إلى تمثيلها في النظام الثنائي، يمكننا ملاحظة النمط. الحرف الكبير A يمثل ب 1000001، والحرف الصغير a يمثل ب 1100001. ويمثل الحرف الكبير B ب 1000010، و b (الصغيرة) تمثل ب 1100010. آتستطيع أن تحدد ما الذي يحدث هنا؟ البت الثاني من اليسار، مرتبة الاثنين للقوة الخامسة، مرتبة ال 32، يكون ‘0‘ لكافة الأحرف الكبيرة و ‘1‘ لكافة الأحرف الصغيرة. وهذا يعني أن التحويل من الأحرف الكبيرة إلى صغيرة، وبالعكس، هي مسألة قلب قيمة بت واحد. وهذا يقودنا إلى نهاية جدول ال ASCII. أيمكنك التفكير في أي شيء قد نسيناه؟ حسنا، ماذا عن الحرف enye في الإسبانية، أو الحروف الهجائية اليونانية أو السيريالية؟ وماذا عن الأحرف الصينية؟ هناك الكثير من ما قد استبعد من ال ASCII. على أية حال، فإنه قد تم تطوير معيار قياسي اخر يسمى يونيكود (unicode) لتمثيل كل هذه الحروف والكثير غيرها ولكن هذا موضوع لوقت آخر. اسمي نايت هارديسون هذا هو CS50.