1 00:00:07,220 --> 00:00:09,290 نيت هارديسون: في الفيديو الخاص بالنظام الثنائي، بينّا كبف 2 00:00:09,290 --> 00:00:12,540 نمثل الأعداد الصحيحة، من صفر وفوق 3 00:00:12,540 --> 00:00:15,110 فقط باستخدام الأرقام صفر واحد. 4 00:00:15,110 --> 00:00:17,890 في هذا الفيديو، سنستخدم التدوين الثنائي 5 00:00:17,890 --> 00:00:21,160 لتمثيل نصوص, حروف, وما شابه ذلك 6 00:00:21,160 --> 00:00:22,810 >> لماذا نتحمل عناء القيام بذلك؟ 7 00:00:22,810 --> 00:00:25,450 حسنا، في الواقع, إن الحاسوب لا يفهم 8 00:00:25,450 --> 00:00:29,070 الا الأصفار والواحدات, الأرقام الثنائية, لأن هذه 9 00:00:29,070 --> 00:00:32,100 يمكن تمثيلها بسهولة بواسطة الإشارات الكهرومعناطيسية 10 00:00:32,100 --> 00:00:35,040 >> على سبيل المثال، انظر الى ذاكرة الكمبيوتر الخاص بك وكأنها سلسلة 11 00:00:35,040 --> 00:00:37,810 طويلة من المصابيح الكهربائية، كل مصباح فيها 12 00:00:37,810 --> 00:00:40,680 مطفئ يمثل ‘صفر‘, ويمثل ‘واحد‘ 13 00:00:40,680 --> 00:00:42,230 اذا كان مضاءاً 14 00:00:42,230 --> 00:00:44,730 بدلا من استخدام مجموعة من المصابيح الكهربائية، بعض أنواع الذاكرة 15 00:00:44,730 --> 00:00:46,990 الحديثة تفعل ذلك باستخدام مكثفات تحمل شحنة قليلة 16 00:00:46,990 --> 00:00:49,120 لتمثل ‘صفر‘ وشحنة عالية 17 00:00:49,120 --> 00:00:50,780 لتمثل ‘واحد‘ 18 00:00:50,780 --> 00:00:52,510 >> وهناك أساليب أخرى أيضا. 19 00:00:52,510 --> 00:00:55,500 على أية حال، من أجل تخزين أي شيء في الذاكرة، نحن بحاجة 20 00:00:55,500 --> 00:00:57,590 -أولا- الى تحويله إلى شيء قابل للتمثيل 21 00:00:57,590 --> 00:01:00,140 (ماديّا) في الأجهزة الصلبة 22 00:01:00,140 --> 00:01:02,450 لذلك دعونا نفكر كيف يمكننا تمثيل الحروف باستخدام 23 00:01:02,450 --> 00:01:04,230 التدوين الثنائي 24 00:01:04,230 --> 00:01:08,141 في اللغة الإنجليزية، لدينا 26 حرف في الأبجدية، A، 25 00:01:08,141 --> 00:01:12,930 >> B، C، D، وهلم جرا، الى ال Z. يمكننا تعيين لكل واحد من 26 00:01:12,930 --> 00:01:16,650 هذه الحروف عدد، لنفرض من الصفر إلى 25، ومن ثم باستخدام 27 00:01:16,650 --> 00:01:18,880 التدوين الثنائي، يمكننا أن تمثل كل رقم على أنه 28 00:01:18,880 --> 00:01:20,890 سلسلة من الأصفار والواحدات. 29 00:01:20,890 --> 00:01:22,420 هذا ليس سيئا جدا. 30 00:01:22,420 --> 00:01:25,050 مع ذلك، فإن هذا لن يكون كافيا. 31 00:01:25,050 --> 00:01:27,680 مع هذا النظام، لا يمكننا أن نميز بين 32 00:01:27,680 --> 00:01:29,830 الأحرف الكبيرة والصغيرة 33 00:01:29,830 --> 00:01:32,140 إذا كنا نريد جهاز الكمبيوتر الخاص بنا أن يكون قادرا على التفريق بين 34 00:01:32,140 --> 00:01:36,020 الحالتين, اذن فإننا سنحتاج الى 26 عدد اضافي 35 00:01:36,020 --> 00:01:38,700 وماذا عن المسافات، الفواصل، 36 00:01:38,700 --> 00:01:40,390 وعلامات الترقيم الأخرى؟ 37 00:01:40,390 --> 00:01:43,560 >> على لوحة المفاتيح الخاصة بي، عندي 32 زر، بما في ذلك جميع 38 00:01:43,560 --> 00:01:46,800 الأحرف الخاصة مثل ال ^ و ال & 39 00:01:46,800 --> 00:01:49,700 هذا بغض النظر عن الأرقام نفسها من ال 0 الى ال 9 40 00:01:49,700 --> 00:01:51,840 لأننا لا تزال ترغب في كتابة الأرقام بالتمثيل 41 00:01:51,840 --> 00:01:54,840 العشري في الحاسبة, حتى لو كانت الحاسبة لا تفهم 42 00:01:54,840 --> 00:01:57,830 سوى النظام الثنائي 43 00:01:57,830 --> 00:02:00,620 >> وأخيرا، سوف نحتاج لتمثيل حرف مسافة 44 00:02:00,620 --> 00:02:02,450 لكي يعمل الزر الخاص بالمسافة (space) 45 00:02:02,450 --> 00:02:04,920 لذا، فان كيفية تمثيل النص في الكمبيوتر 46 00:02:04,920 --> 00:02:08,400 هي عملية أعقد بقليل مما كنا نعتقد 47 00:02:08,400 --> 00:02:11,710 بالإضافة إلى ذلك، لتفترض اننا كوّنّا بعد ذلك الترميز الخاصة بنا 48 00:02:11,710 --> 00:02:14,560 لتمثيل الحروف كأرقام. 49 00:02:14,560 --> 00:02:17,470 وعملية الترميز هذه ستكون 50 00:02:17,470 --> 00:02:20,630 عشوائية, كما تكلمنا سابقا عن استخدام 51 00:02:20,630 --> 00:02:23,730 الأرقام من الصفر الى 25 لتمثيل الأحرف من A 52 00:02:23,730 --> 00:02:26,850 الى Z. لم لا تستخدم من 10 إلى 35 حتى نتمكن من استعمال 53 00:02:26,850 --> 00:02:29,350 (الصفر الى تسعة) كالأرقام نفسها؟ 54 00:02:29,350 --> 00:02:31,590 >> ليس هناك سبب حقيقي، نحن فقط نختار ما نظنه 55 00:02:31,590 --> 00:02:33,770 الأفضل بالنسبة لنا 56 00:02:33,770 --> 00:02:37,650 في السابق, في بداية الستينات, كانت هذه مشكلة حقيقية. 57 00:02:37,650 --> 00:02:39,370 الشركات المختلفة المصنعة للحاسبات 58 00:02:39,370 --> 00:02:41,910 كانت تستعلم أنظمة ترميز مختلفة، وهذا جعل الاتصال 59 00:02:41,910 --> 00:02:44,340 بين الآلات المختلفة مهمة صعبة للغاية. 60 00:02:44,340 --> 00:02:47,810 المعهد الوطني الأمريكي للمعايير، ANSI، 61 00:02:47,810 --> 00:02:50,210 شكل لجنة لوضع نظام موحد. 62 00:02:50,210 --> 00:02:53,780 وعام 1963، تشأ معيار الترميز الأمريكي لتبادل 63 00:02:53,780 --> 00:02:58,600 المعلومات، المعروف باسم ASCII. 64 00:02:58,600 --> 00:03:01,360 >> لقد صمم ال ASCII على شكل ترميز 7 بت، مما 65 00:03:01,360 --> 00:03:03,800 يعني أن يتم تمثيل كل حرف من خلال مزيج 66 00:03:03,800 --> 00:03:06,070 سبعة ‘أصفار وواحدات‘. 67 00:03:06,070 --> 00:03:09,670 مع تلك القيمتين، صفر أو واحد، لكل 68 00:03:09,670 --> 00:03:14,040 من البتات السبعة، هناك 2 للقوة 7، أو 128 69 00:03:14,040 --> 00:03:16,120 حرف يمكن تمثيلها بنظام 70 00:03:16,120 --> 00:03:18,140 ال ASCII 71 00:03:18,140 --> 00:03:21,480 اذن, 128 حرف يبدوا عددا كبيراً، أليس كذلك؟ 72 00:03:21,480 --> 00:03:24,180 حسناً، تذكر أن هناك 26 حرف صغير 73 00:03:24,180 --> 00:03:29,260 في الإنجليزية، 26 حرف كبير، 10 ارقام، 74 00:03:29,260 --> 00:03:31,470 32 علامة ترقيم وحرف خاص، 75 00:03:31,470 --> 00:03:33,430 وحرف ‘مسافة‘ (space) واحد 76 00:03:33,430 --> 00:03:37,050 >> وهذا يكون مجموعه 95، اذن فإن لدينا 33 حرفا آخر 77 00:03:37,050 --> 00:03:38,400 يمكننا تمثلها. 78 00:03:38,400 --> 00:03:39,900 >> اذن ما الذي تبقى؟ 79 00:03:39,900 --> 00:03:43,130 حسنا، في أيام تطوير ASCII، فإن آلة 80 00:03:43,130 --> 00:03:45,080 المبرقة، والتي هي من آلات الكتابة التي تستخدم 81 00:03:45,080 --> 00:03:48,040 لإرسال رسائل عبر الشبكة، كانت منتشرة على نطاق واسع. 82 00:03:48,040 --> 00:03:50,030 وهذه الآلات كانت تستخدم أحرف إضافية 83 00:03:50,030 --> 00:03:52,890 للسيطرة عليها، على سبيل المثال، لنقل رأس الطباعة 84 00:03:52,890 --> 00:03:57,620 سطر الى الأسفل, زر السطر الجديد, 85 00:03:57,620 --> 00:04:00,440 او للإنتقال الى الهامش الأيسر, زر الانتقال "carriage return" 86 00:04:00,440 --> 00:04:04,890 أو ببساطة مفتاح ال "return"، او عندما نريد العودة مسافة حرف الى الوراء، 87 00:04:04,890 --> 00:04:07,760 زر المسح "backspace", وهكذا 88 00:04:07,760 --> 00:04:10,250 >> هذه الأحرف تسمى أحرف التحكم، وهي 89 00:04:10,250 --> 00:04:12,680 تشكل بقية مجموعة ال ASCII. 90 00:04:12,680 --> 00:04:15,230 لذلك إذا نظرنا إلى جدول ال ASCII، فإننا نلاحظ أول 91 00:04:15,230 --> 00:04:18,800 32 رقما، من الصفر الى 31، محجزوة لأحرف 92 00:04:18,800 --> 00:04:20,200 السيطرة 93 00:04:20,200 --> 00:04:23,420 ولكن قلنا أن هناك 33 حرف من أحرف التحكم 94 00:04:23,420 --> 00:04:24,780 ما الذي حصل؟ 95 00:04:24,780 --> 00:04:29,350 حسنا، رقم صفر و 127، أول رقم وآخر رقم 96 00:04:29,350 --> 00:04:32,560 من مجموعة ال ASCII، لديهما أنماط بتّات (bits) خاصة، جميعها أصفار او جميعها 97 00:04:32,560 --> 00:04:34,710 واحدات ,على التوالي. 98 00:04:34,710 --> 00:04:36,860 >> فقرر مصمموا ال ASCII 99 00:04:36,860 --> 00:04:39,610 الحفاظ على هذه الأرقام لحروف خاصة إضافية، 100 00:04:39,610 --> 00:04:43,310 وهي حرف ال null والحرف DEL. 101 00:04:43,310 --> 00:04:46,340 كان الغرض من الحرفان null وDEL هو تحرير النص المكتوب على الشريط الورقي، 102 00:04:46,340 --> 00:04:48,930 والتي كانت طريقة شائعة في حفظ المعلومات 103 00:04:48,930 --> 00:04:51,850 كان الشريط الورقي مجرد شريط طويل من الورق، وعلى 104 00:04:51,850 --> 00:04:53,760 فترات منتظمة على الشريط، تقوم بعمل 105 00:04:53,760 --> 00:04:55,430 ثقوب لتخزين البيانات. 106 00:04:55,430 --> 00:04:58,720 واعتمادا على عرض الشريط، يكون كل عمود 107 00:04:58,720 --> 00:05:03,186 قادرا على استيعاب خمسة، ستة، سبعة، أو ثمانية بتات. 108 00:05:03,186 --> 00:05:05,930 >> لتمثيل الصفر، فإنك لا تفعل شيئا على الشريط، 109 00:05:05,930 --> 00:05:07,930 مجرد أن تترك مسافة فارغة. 110 00:05:07,930 --> 00:05:10,560 لعمل بت واحد، فإنك تثقب ثقبا. 111 00:05:10,560 --> 00:05:12,980 لكتابة حرف ال null, فانك تترك عمود فارغ 112 00:05:12,980 --> 00:05:14,480 مشيرا الى "أصفار فقط". 113 00:05:14,480 --> 00:05:17,250 ولكتابة DEL فإنك تعمل عمود كامل من الثقوب 114 00:05:17,250 --> 00:05:18,550 في الشريط. 115 00:05:18,550 --> 00:05:21,300 ونتيجة لذلك، يمكنك استخدام حرف DEL لحذف 116 00:05:21,300 --> 00:05:22,440 معلومات. 117 00:05:22,440 --> 00:05:25,060 تخيل إجراء إنتخابات على اوراق الاقتراع مملوءة ومن ثم 118 00:05:25,060 --> 00:05:27,180 ثقب جميع الثقوب غير المثقوبة. 119 00:05:27,180 --> 00:05:29,410 >> فإنك ستبطل الاقتراع لأنه من المستحيل أن 120 00:05:29,410 --> 00:05:31,820 تعرف الأصوات الأصلية. 121 00:05:31,820 --> 00:05:34,720 في حين لا يزال يستخدم الحرف DEL للحذف في زر 122 00:05:34,720 --> 00:05:37,980 الحذف المعاصر (delete) فإن الحرف null اصبح يستعمل الآن 123 00:05:37,980 --> 00:05:40,010 كحرف انهاء في المتسلسلات في لغة C 124 00:05:40,010 --> 00:05:41,990 وبعض اشكال البيانات الآخرى 125 00:05:41,990 --> 00:05:45,140 قد تعرفها بشكل خط مائل وصفر (0\)، 126 00:05:45,140 --> 00:05:47,720 لأننا نمثلها بهذا الشكل في الكتابة. 127 00:05:47,720 --> 00:05:49,580 حسنا, نعود الآن الى جدول ASCII. 128 00:05:49,580 --> 00:05:52,770 بعد أول 32 حرف من أحرف التحكم تأتي ال 95 129 00:05:52,770 --> 00:05:54,280 حرف من أحرف الطباعة 130 00:05:54,280 --> 00:05:55,800 >> هناك بعض القرارات الرائعة الخاصة بالتصميم 131 00:05:55,800 --> 00:05:57,330 و التي تستحق أن نتحدث عنها هنا. 132 00:05:57,330 --> 00:06:00,810 أولا، الأرقام العشرية من الصفر الى التسعة، 133 00:06:00,810 --> 00:06:04,050 تطابق الأرقام من 48 الى 57 (في ال ASCII)، ربما نرى أن 134 00:06:04,050 --> 00:06:06,980 هذا شيئ عادي الى أن ننظر إلى الأرقام 48 الى 57 135 00:06:06,980 --> 00:06:09,080 مكتوبة في التدوين الثنائي. 136 00:06:09,080 --> 00:06:11,530 إذا فعلنا ذلك، فإننا نرى أن الحرف ‘الرقم صفر‘، 137 00:06:11,530 --> 00:06:22,320 يقابل 0110000، الواحد يقابل 0110001، الإثنان 138 00:06:22,320 --> 00:06:26,640 0110010، وهلم جرا. 139 00:06:26,640 --> 00:06:27,950 هل تلاحظ النمط؟ 140 00:06:27,950 --> 00:06:30,170 كل حرف رقمي يكتب بشكله 141 00:06:30,170 --> 00:06:35,170 في التدوين الثنائي, مسبوق ب 011 142 00:06:35,170 --> 00:06:38,820 والآن، تلاحظ أن الأحرف الكبيرة تبدأ من 65، 143 00:06:38,820 --> 00:06:41,310 بالحرف الكبير A، ولكن الأحرف الصغيرة 144 00:06:41,310 --> 00:06:43,010 لا تبدأ حتى ال 97. 145 00:06:43,010 --> 00:06:45,580 يعني أن هناك 32 حرف بينهما. 146 00:06:45,580 --> 00:06:47,000 يبدو هذا غريبا 147 00:06:47,000 --> 00:06:49,500 أنها ليست سوى 26 حرف في الأبجدية. 148 00:06:49,500 --> 00:06:51,410 >> لماذا يتم فصلها هكذا؟ 149 00:06:51,410 --> 00:06:53,960 مرة أخرى، إذا نظرنا إلى تمثيلها في النظام الثنائي، يمكننا 150 00:06:53,960 --> 00:06:55,230 ملاحظة النمط. 151 00:06:55,230 --> 00:07:01,360 الحرف الكبير A يمثل ب 1000001، والحرف الصغير a 152 00:07:01,360 --> 00:07:05,810 يمثل ب 1100001. 153 00:07:05,810 --> 00:07:12,770 ويمثل الحرف الكبير B ب 1000010، و b (الصغيرة) 154 00:07:12,770 --> 00:07:17,280 تمثل ب 1100010. 155 00:07:17,280 --> 00:07:19,440 آتستطيع أن تحدد ما الذي يحدث هنا؟ 156 00:07:19,440 --> 00:07:22,470 البت الثاني من اليسار، مرتبة الاثنين للقوة 157 00:07:22,470 --> 00:07:26,510 الخامسة، مرتبة ال 32، يكون ‘0‘ لكافة الأحرف الكبيرة 158 00:07:26,510 --> 00:07:30,120 و ‘1‘ لكافة الأحرف الصغيرة. 159 00:07:30,120 --> 00:07:33,130 >> وهذا يعني أن التحويل من الأحرف الكبيرة إلى صغيرة، 160 00:07:33,130 --> 00:07:36,000 وبالعكس، هي مسألة قلب قيمة بت واحد. 161 00:07:36,000 --> 00:07:38,380 وهذا يقودنا إلى نهاية جدول ال ASCII. 162 00:07:38,380 --> 00:07:40,700 أيمكنك التفكير في أي شيء قد نسيناه؟ 163 00:07:40,700 --> 00:07:42,510 حسنا، ماذا عن الحرف enye في الإسبانية، أو 164 00:07:42,510 --> 00:07:44,630 الحروف الهجائية اليونانية أو السيريالية؟ 165 00:07:44,630 --> 00:07:46,610 وماذا عن الأحرف الصينية؟ 166 00:07:46,610 --> 00:07:49,050 هناك الكثير من ما قد استبعد من ال ASCII. 167 00:07:49,050 --> 00:07:51,920 على أية حال، فإنه قد تم تطوير معيار قياسي اخر 168 00:07:51,920 --> 00:07:53,040 يسمى يونيكود (unicode) لتمثيل كل هذه 169 00:07:53,040 --> 00:07:54,840 الحروف والكثير غيرها 170 00:07:54,840 --> 00:07:57,040 >> ولكن هذا موضوع لوقت آخر. 171 00:07:57,040 --> 00:07:58,500 اسمي نايت هارديسون 172 00:07:58,500 --> 00:08:00,650 هذا هو CS50.