1 00:00:00,000 --> 00:00:02,440 [Powered by Google Translate] [Nedēļa 7] 2 00:00:02,440 --> 00:00:04,730 [David J. Malan - Hārvarda] 3 00:00:04,730 --> 00:00:07,490 [Tas ir CS50. - CS50.TV] 4 00:00:07,490 --> 00:00:12,280 Labi. Laipni lūdzam atpakaļ. Tas ir CS50, un tas ir sākums 7 nedēļas. 5 00:00:12,280 --> 00:00:14,690 Pāris maz paziņojumiem: 6 00:00:14,690 --> 00:00:18,150 Pset5 tagad notiek, vai drīz jābūt, 7 00:00:18,150 --> 00:00:21,590 un ļaujiet man teikt, pavisam godīgi, tas mēdz būt starp daudz grūtāks 8 00:00:21,590 --> 00:00:24,460 Kursa problēma kopas, tāpēc ļaujiet man pieminēt šo tagad 9 00:00:24,460 --> 00:00:28,190 tāpēc, ka šonedēļ vairāk nekā jebkad agrāk, jums nav jāgaida, kamēr, teiksim, trešdien naktī 10 00:00:28,190 --> 00:00:29,920 vai ceturtdiena nakts nirt iekšā 11 00:00:29,920 --> 00:00:32,369 Tas noteikti interesants PSET. Mēs uzskatām, ka ir jautri. 12 00:00:32,369 --> 00:00:36,110 Ja jums tiešām saņemt to pilnīgi pareizi un tad var apstrīdēt tā saukto Big Board, 13 00:00:36,110 --> 00:00:39,830 jums ir iespēja saskaņot wits ar dažiem kursa darbinieku 14 00:00:39,830 --> 00:00:41,620 un daži no jūsu klasesbiedriem. 15 00:00:41,620 --> 00:00:44,670 Kas Big padome ir, kad jums ir jūsu pareizrakstības pārbaudītājs darba, 16 00:00:44,670 --> 00:00:48,860 jūs varēsiet doties uz cs50.net pēc darbības komandu, 17 00:00:48,860 --> 00:00:52,430 tīri izvēlos, un tad daudz laika un RAM apjomu un vairāk 18 00:00:52,430 --> 00:00:56,130 ka esat izmantojis savā īstenošanā tiks izstādīti šeit par kursu mājas lapā. 19 00:00:56,130 --> 00:00:59,740 Jūs pamanīsiet, ka viss ķekars no šiem ļaudīm šeit ir uzskaitīti kā darbinieku 20 00:00:59,740 --> 00:01:04,220 jo vairāk nekā nedēļas nogalē, darbinieki domāja, ka būtu jautri, lai mēģinātu pārspēt viens otru. 21 00:01:04,220 --> 00:01:07,390 Lai saprastu, ka mērķis ir nevis pārspēt personālu. 22 00:01:07,390 --> 00:01:09,790 Pat es esmu tikai šeit ir 13 numuru. 23 00:01:09,790 --> 00:01:13,790 Tīri izvēlos, bet tas ir iespēja redzēt, cik maz atmiņa 24 00:01:13,790 --> 00:01:16,790 un cik maz CPU sekundes jūs varat izmantot vis-vis kādu no saviem klasesbiedriem. 25 00:01:16,790 --> 00:01:20,540 >> Un es ņemšu uzņemt, ka Kevins Michael Schmid 26 00:01:20,540 --> 00:01:23,750 Šobrīd numuru 1 stāvoklī, viens no TFS, 27 00:01:23,750 --> 00:01:28,120 Tas ir īstenošana, kas mēs saucam nav iespējams 28 00:01:28,120 --> 00:01:32,700 ņemot vērā, ka viņš, izmantojot gandrīz 0 RAM un gandrīz 0 sekundes iekraušanai. 29 00:01:32,700 --> 00:01:35,670 Tāpēc mēs rūpējamies par Kevin bezsaistē. [Smiekli] 30 00:01:35,670 --> 00:01:40,950 Ir dažas prasmes, kas Kevins ir nākusi uz testu šeit. 31 00:01:40,950 --> 00:01:45,280 Viena no lietām, ko mēs domājam, ka mēs gribētu darīt pārāk tagad CS50x ir nedēļa notiek, 32 00:01:45,280 --> 00:01:49,520 un jums puiši ir tik daudz daļu no šī eksperimenta, jo šie studenti ir. 33 00:01:49,520 --> 00:01:53,720 Mēs esam lūdza tos kā daļu no savas pset0, kas bija līdzīgi iesniegt Scratch projektu 34 00:01:53,720 --> 00:01:58,280 interese uz tiem - spēle, interaktīva mākslas, animācijas, vai tamlīdzīgi - 35 00:01:58,280 --> 00:02:03,700 1 - līdz 2 minūšu video, ja viņi vēlētos, sakot hello uz pasauli un kas viņi patiesībā ir. 36 00:02:03,700 --> 00:02:06,780 Es domāju, ka man dalīties ar jums tikai pāris video, kas ir iesniegti līdz šim 37 00:02:06,780 --> 00:02:10,759 jo mums, uz darbiniekiem vismaz, tas tiešām ir bijis aizraujošs 38 00:02:10,759 --> 00:02:14,220 un iedvesmojoši redzēt šos cilvēkus no visas pasaules - valstīm visā pasaulē - 39 00:02:14,220 --> 00:02:18,160 tuning, visas lietas, ar datorzinātņu kursu internetā, 40 00:02:18,160 --> 00:02:20,410 vai tas ir tāpēc, ka viņi vēlas turpināt savu studijas, 41 00:02:20,410 --> 00:02:22,300 viņi vēlas veikt savu karjeru jaunā virzienā, 42 00:02:22,300 --> 00:02:24,390 viņi vēlas, lai aizpildītu nepilnības savām zināšanām, 43 00:02:24,390 --> 00:02:27,190 tāpēc daži no pašu iemeslu dēļ, kas jums puiši varbūt ir bijuši šeit. 44 00:02:27,190 --> 00:02:31,090 >> Tāpēc es jums vienu šādu students šeit. Jūs varētu paaugstināt skaļumu tikai mazliet. 45 00:02:31,090 --> 00:02:35,520 Te ir viena no mūsu studentu 1 minūtes iesniegumus. 46 00:02:35,520 --> 00:02:40,380 Sveiki, pasaule. Es esmu students inženierzinātnēs šeit Malagā, Spānijā. 47 00:02:40,380 --> 00:02:45,840 Es esmu sajūsmā par šo tiešsaistes kursu, jo es mīlu datorzinātnes, es tiešām, 48 00:02:45,840 --> 00:02:48,880 un es patiesi novērtējam, ka man, lai to izpētītu. 49 00:02:48,880 --> 00:02:51,940 Un fakts, ka es varētu mācīties pats visu no jums, puiši do 50 00:02:51,940 --> 00:02:57,040 bet tā vietā, jo Hārvarda Es esmu Malagā, kā awesome tas ir? 51 00:02:57,040 --> 00:03:02,040 Nu, es esmu Fernando, un tas ir CS50. Redzēt jūs puiši. 52 00:03:02,040 --> 00:03:07,100 [Smiekli] citu klipu mēs īpaši patīk, jūs atradīsiet, ka šis kungs ir angļu valoda nav tik spēcīga. 53 00:03:07,100 --> 00:03:11,520 Tā izskatās, ka viņš bija tas mašīna iztulkot, tāpēc tulkojumi paši mazliet nepilnīga, 54 00:03:11,520 --> 00:03:15,790 bet tas bija viens no mūsu izlasei līdz šim, kā arī. 55 00:03:25,080 --> 00:03:29,980 [♪ ♪] 56 00:03:29,980 --> 00:03:32,370 Sveiki, pasaule. [Runā japāņu] 57 00:03:32,370 --> 00:03:39,830 [Man ir sveicināt japāņu valodā, jo mana angļu valoda ir ļoti ticama.] 58 00:03:39,830 --> 00:03:45,380 [Man ir sniegusi ziņu jums no pilsētas Gifu, Japāna.] 59 00:03:45,380 --> 00:03:49,820 [Es varētu būt students pirmo reizi 20 gadu laikā, jo var redzēt.] 60 00:03:49,820 --> 00:03:54,640 [Es esmu ļoti pateicīgs Harvard University, kas man deva šo iespēju un EDX.] 61 00:03:54,640 --> 00:04:01,510 [Golfs ir ģitāra, un mans mīļākais lieta darbojas.] [Smiekli] 62 00:04:01,510 --> 00:04:05,750 [♪ ♪] 63 00:04:05,750 --> 00:04:10,790 [Kāpēc jūs domājat, ka es centos apmeklēt cs50x.] 64 00:04:10,790 --> 00:04:14,990 [Harvard University, tas ir mans ilgojas.] 65 00:04:14,990 --> 00:04:19,740 [Īpaši, ja es esmu tālu klātbūtne dzīvoja Japānā.] 66 00:04:19,740 --> 00:04:26,680 [Es gribēju izmēģināt uzreiz informēti par šāda EDX kad.] 67 00:04:26,680 --> 00:04:32,500 [Vai tu domā, lai jums nav saistīts ar vecumu mācību I] 68 00:04:32,500 --> 00:04:38,350 [CS50 ir mana ilgojas. Mans vārds ir Kazu, un tas ir CS50.] 69 00:04:38,350 --> 00:04:43,090 [♪ ♪] [aplausi un uzmundrinoša] 70 00:04:43,090 --> 00:04:49,220 Vēl viens mūsu favorīts bija šis iesniegums šeit no kāda. 71 00:04:51,070 --> 00:04:55,380 [♪ ♪] [Malan] Google to, ja jūs esat pazīstami ar šo même. 72 00:04:55,380 --> 00:05:01,480 >> Un tad visbeidzot, pāris citiem, ka got norīkoti ka varbūt uzvarēt glītu balvu. 73 00:05:01,480 --> 00:05:06,820 [Studenti] AAW! >> [Malan] Mums būs klausīties. Tas ir īss, tāpēc klausīties cieši. 74 00:05:08,580 --> 00:05:11,150 [Sieviete skaļrunis] Kāds ir Jūsu vārds? >> Louie. 75 00:05:11,150 --> 00:05:16,120 [Sieviete skaļrunis] Kas tas ir? >> [Kaķenīte] CS50. [Smiekli] 76 00:05:16,120 --> 00:05:19,510 [Malan] Viņš 2 ņem, lai gan. 77 00:05:19,510 --> 00:05:22,240 Šeit mēs ejam, pēdējā. 78 00:05:23,030 --> 00:05:26,980 Mans vārds ir Louie, un tas ir CS50. 79 00:05:26,980 --> 00:05:30,250 [Smiekli] Šis tad ir CS50x. 80 00:05:30,250 --> 00:05:33,230 Paldies visiem tiem no jums, bet pēc kopā mājās 81 00:05:33,230 --> 00:05:35,620 kurš ir partaking līdz šim. 82 00:05:35,620 --> 00:05:39,510 Šodien, mēs secinām mūsu diskusiju par datu struktūru, 83 00:05:39,510 --> 00:05:41,160 vismaz daži no visbūtiskākā, 84 00:05:41,160 --> 00:05:44,760 un tad mēs turpinātu mūsu sarunu par HTML un web programmēšanu. 85 00:05:44,760 --> 00:05:48,520 Patiesi, mēs esam pavadījuši pēdējo dažas septiņas nedēļas apskatot plānošanas pamatiem - 86 00:05:48,520 --> 00:05:50,450 algoritmi, datu struktūras, un tamlīdzīgi - 87 00:05:50,450 --> 00:05:53,050 un C, kā jūs varētu būt pieredzējuši līdz šim, 88 00:05:53,050 --> 00:05:57,060 ne vienmēr ir visvairāk pieejamu valodu 89 00:05:57,060 --> 00:05:59,090 ar ko īsteno dažus no šīm idejām. 90 00:05:59,090 --> 00:06:01,880 Un tā sākas šonedēļ un nākamnedēļ, un tad tālāk, 91 00:06:01,880 --> 00:06:07,110 mēs beidzot varētu pāriet no C, kas parasti pazīstams kā diezgan zema līmeņa valoda, 92 00:06:07,110 --> 00:06:11,190 līdz lietas augstākā līmenī, starp tiem PHP, JavaScript un tamlīdzīgi, 93 00:06:11,190 --> 00:06:14,850 ko mēs redzēsim izmantos to pašu pieredzi, kas mēs esam iemācījušies pēdējo nedēļu, 94 00:06:14,850 --> 00:06:19,430 bet jūs atradīsiet, ka deklarējot lietas, piemēram masīvu un hash tabulas un meklēšanu un kārtošanu 95 00:06:19,430 --> 00:06:23,370 kļuvis tik daudz vieglāk, jo valodas paši mēs sāktu lietot 96 00:06:23,370 --> 00:06:25,290 kļūs spēcīgāks. 97 00:06:25,290 --> 00:06:27,410 Bet vispirms, pieteikumu koku. 98 00:06:27,410 --> 00:06:30,240 Tas ir ļoti bieži šajās dienās, ir nepieciešams, lai saspiestu informāciju. 99 00:06:30,240 --> 00:06:34,770 Kādā kontekstā jūs vēlaties saspiest kādu digitālās informācijas? 100 00:06:37,190 --> 00:06:39,670 >> Yeah. >> [Students] Ja jums ir nepieciešams, lai to nosūtītu tīmeklī. 101 00:06:39,670 --> 00:06:41,450 Jā, ja vēlaties nosūtīt kaut tīmeklī. 102 00:06:41,450 --> 00:06:44,950 Ja jūs vēlaties, lai lejupielādētu lielu failu, tas ir ideāli, ja kāds no otras puses beigām 103 00:06:44,950 --> 00:06:48,760 ir saspiests šo failu, izmantojot zip formātā vai kaut kas tamlīdzīgs 104 00:06:48,760 --> 00:06:53,760 lai jūs sūtāt mazāk bitus nekā citkārt jānosūta. 105 00:06:53,760 --> 00:06:55,500 Tātad, kā jūs saspiest informāciju? 106 00:06:55,500 --> 00:07:00,540 Tas viss vārīties uz leju, lai, izmantojot mazāk bitus nekā paredz noklusējuma. 107 00:07:00,540 --> 00:07:03,220 Bet tas ir sava veida ziņkārīgs lieta, jo domāju, ka atpakaļ uz nedēļām 0 un 1 108 00:07:03,220 --> 00:07:07,370 kad mēs runājām par ASCII un binārā un mēs runājām par ASCII jo īpaši 109 00:07:07,370 --> 00:07:10,690 kā, izmantojot 8 bitus pārstāvēt alfabēta burti 110 00:07:10,690 --> 00:07:16,120 tāpēc, ka vēstule ir pārstāvēta ar 65 mazie ir numurs 97 111 00:07:16,120 --> 00:07:21,210 un tomēr jūs pārstāvat 65 vai 97, jūs izmantojat 7 vai 8 biti. 112 00:07:21,210 --> 00:07:24,120 Bet nozveju, ka ir dažas angļu alfabēta burti 113 00:07:24,120 --> 00:07:26,230 kas nav tik populārs kā citi. 114 00:07:26,230 --> 00:07:31,600 Z ir ne visi, ka tautas, Q nav tik populārs, bet A un E ir super populāra. 115 00:07:31,600 --> 00:07:37,280 Un vēl par visiem šiem burtiem, pēc noklusējuma pasaule izmanto to pašu bitu skaitu, tikai 8. 116 00:07:37,280 --> 00:07:42,690 Tāpēc nav tā bijis gudrāk, ja tā vietā, izmantojot 8 bitus katram vēstuli, 117 00:07:42,690 --> 00:07:47,440 pat visvairāk reti izmanto, piemēram, Q un Z, 118 00:07:47,440 --> 00:07:51,910 Ko darīt, ja mēs lieto mazāk bitus A un E un S un populārākajiem burti 119 00:07:51,910 --> 00:07:55,000 un izmanto vairāk bitus mazāk populāri burtiem, 120 00:07:55,000 --> 00:07:57,770 Ideja ir pieņemsim optimizēt par kopīgo lietu, 121 00:07:57,770 --> 00:08:01,160 kas ir tēma datorzinātnēs, cenšoties optimizēt to, kas notiek varētu notikt visvairāk 122 00:08:01,160 --> 00:08:05,310 un pavadīt nedaudz vairāk laika, mazliet vairāk vietas par lietām, kas, jā, varētu notikt 123 00:08:05,310 --> 00:08:07,680 bet ne vienmēr tik bieži. 124 00:08:07,680 --> 00:08:09,330 Tāpēc pieņemsim ņemt piemēru. 125 00:08:09,330 --> 00:08:12,610 >> Pieņemsim, ka mēs vēlamies, lai kodētu informāciju godīgi efektīvi. 126 00:08:12,610 --> 00:08:15,090 Jums varētu būt pieaudzis līdz zinot nedaudz kaut ko par Morzes kodu, 127 00:08:15,090 --> 00:08:17,450 un izredzes ir jūs nezināt faktisko kodu, 128 00:08:17,450 --> 00:08:21,750 bet jūs varētu atgādināt, ka tas ir vismaz šajā sērijā punktiem un defises. 129 00:08:21,750 --> 00:08:26,640 Tas ir diezgan efektīvs kodēšana, un paziņojums, ka populārākais vēstule - piemēram, e - 130 00:08:26,640 --> 00:08:28,980 izmanto īsākā pīkstieni. 131 00:08:28,980 --> 00:08:31,740 Morzes kods ir visu par pīkstienu-pīkstienu-pīkstienu-pīkstienu-pīkstienu-pīkstienu un turot toņus 132 00:08:31,740 --> 00:08:34,799 nu uz īsu laiku vai ilgstoši. 133 00:08:34,799 --> 00:08:40,330 E, kā apzīmē ar dot, ir super īss pīkstiens, tikai pīkstiens, un kas varētu pārstāvēt E. 134 00:08:40,330 --> 00:08:43,960 Savukārt, T būtu ilgāks pīkstiens, tāpat pīkstienu [paildzina skaņa], 135 00:08:43,960 --> 00:08:45,710 un kas varētu pārstāvēt T. 136 00:08:45,710 --> 00:08:48,840 Bet tas joprojām ir diezgan īss, jo, gluži pretēji, ja paskatās Z, 137 00:08:48,840 --> 00:08:52,690 izteikt Z jūs varētu doties pīkstiens, pīkstiens [ilgāk skaņa], pīkstiens, pīkstiens [īsāks skaņa]. 138 00:08:52,690 --> 00:08:55,360 Tātad tas ir garāks, jo tas ir mazāk izplatīta. 139 00:08:55,360 --> 00:08:58,150 Bet gotcha šeit ir, ka Morzes kods ir mazliet kļūdaina 140 00:08:58,150 --> 00:09:00,610 jo tas nav uzreiz decodable. 141 00:09:00,610 --> 00:09:07,350 Piemēram, pieņemsim, ka jūs dzirdat par kādu beigām stiepļu pīkstiens [īss], pīkstiens [gara]. 142 00:09:07,350 --> 00:09:12,480 Ko ziņu gan es tikai saņemt? Punkts un domuzīme. Ko tas pārstāv? 143 00:09:12,480 --> 00:09:15,330 [Students] A. >> [Malan] Varbūt. 144 00:09:15,330 --> 00:09:18,270 Tas varētu būt arī E seko T. 145 00:09:18,270 --> 00:09:23,390 Citiem vārdiem sakot, Morzes kodu, lai gan tas piesaista šis princips optimizēt stūra lietu, 146 00:09:23,390 --> 00:09:26,250 tas nav aizdot sevi tūlītēju atkodējamību. 147 00:09:26,250 --> 00:09:29,850 Tas ir, cilvēka, kurš ir dzirdes vai saņem šos punktus un domuzīmes 148 00:09:29,850 --> 00:09:34,540 ir kaut izdomāt, kur pārtraukumi ir starp burtiem, 149 00:09:34,540 --> 00:09:39,660 jo, ja jūs nezināt, kur šie pārtraukumi ir, jūs varētu sajaukt par ET vai otrādi. 150 00:09:39,660 --> 00:09:43,880 >> Tātad, ko jūs varētu darīt? Jo Morzes kodu jūs varētu tikai pauze starp katru no burtiem. 151 00:09:43,880 --> 00:09:47,660 Bet pauzēm ir veida counter visai punktu paātrinātu lietas uz augšu. 152 00:09:47,660 --> 00:09:52,880 Tātad, ko tad, ja tā vietā mēs nāca klajā ar kodu, kur nebija tas slikta situācija 153 00:09:52,880 --> 00:09:56,570 kur E ir priedēklis, piemēram, no - 154 00:09:56,570 --> 00:10:00,020 citiem vārdiem sakot, ja mēs varētu pārliecināties, ka modeļiem joprojām ir īss tautas vēstulēm 155 00:10:00,020 --> 00:10:04,850 ilgi mazāk populāri burtiem, bet tur nav iespējams sajaukt? 156 00:10:04,850 --> 00:10:08,930 Ar nosaukumu Huffman Vīrietis gadiem izgudroja šo shēmu sauc Huffman kodēšana 157 00:10:08,930 --> 00:10:12,390 ka faktiski piesaista viens no datu struktūrām, mēs esam pavadīja daudz laika runājot par 158 00:10:12,390 --> 00:10:16,560 pagājušā nedēļā, ka koku, binārie koki konkrētāk - 159 00:10:16,560 --> 00:10:19,710 binārs koks nozīmē, ka tā ir ne vairāk kā 2 bērni. 160 00:10:19,710 --> 00:10:22,720 Tā ir varbūt kreiso bērnu, varbūt pareizo bērnu, un tas arī viss. 161 00:10:22,720 --> 00:10:26,510 Tik domāju, tikai dēļ diskusiju ka kāds vēlas, lai nosūtītu ziņu 162 00:10:26,510 --> 00:10:31,270 ka izskatās šādi. Tas ir pilnīgs absurds, bet tas sastāv no kā, BS, Cs, Ds, un Es. 163 00:10:31,270 --> 00:10:34,890 Un, ja jūs tiešām saskaitīt visus kā, BS, Cs, Ds, un Es 164 00:10:34,890 --> 00:10:36,870 un tad sadalīt kopējo skaitu vēstuļu, 165 00:10:36,870 --> 00:10:42,710 Šī maz diagramma šeit saka, ka 45% no burtiem ir Es, 20% ir kā, 166 00:10:42,710 --> 00:10:45,010 10% Bs, un tā tālāk. 167 00:10:45,010 --> 00:10:47,330 Tātad, citiem vārdiem sakot, pieņemsim, ka citēts virkne tur 168 00:10:47,330 --> 00:10:49,080 ir tikai daži ziņu, ka jūs vēlaties nosūtīt. 169 00:10:49,080 --> 00:10:52,180 Tas notiek, ir absurds tikai tā mēs varam izmantot kā dažus burtus iespējas, 170 00:10:52,180 --> 00:10:55,220 bet tas tiešām tā, ka E joprojām ir populārākais, 171 00:10:55,220 --> 00:11:01,450 un B un C ir vismazāk populārs, vismaz no šiem 5 alfabēta burtiem. 172 00:11:01,450 --> 00:11:04,040 Tātad, kā mēs varam iet par nāk klajā ar kodējumu, 173 00:11:04,040 --> 00:11:08,430 bināro kodējumu, modelis 0s un 1s par katru no šīm vēstulēm 174 00:11:08,430 --> 00:11:14,820 tādā veidā, ka E ir īss raksts un varbūt B un C ir nedaudz garāks modeļus, 175 00:11:14,820 --> 00:11:19,270 atkal, doma ir, ka mēs vēlamies izmantot mazāk bitus lielāko daļu laika 176 00:11:19,270 --> 00:11:21,790 un vairāk bitu tikai reizi brītiņa. 177 00:11:21,790 --> 00:11:26,070 Saskaņā ar Huffman kodēšana, jūs varat izveidot meža koku. 178 00:11:26,070 --> 00:11:31,190 Tur ir sava veida stāsts līniju šeit, kas ietver koku un arī veidot tos procesu. 179 00:11:31,190 --> 00:11:32,420 Sāksim. 180 00:11:32,420 --> 00:11:36,140 >> Es ierosinu, ka jūs sākat ar šo mežu, tā teikt, no 5 kokiem, 181 00:11:36,140 --> 00:11:38,260 no kuriem katrs ir diezgan stulba koks. 182 00:11:38,260 --> 00:11:42,800 Koks sastāv no tikai vienu mezglu, kas šeit pārstāv apli. 183 00:11:42,800 --> 00:11:45,310 Tāpēc katra no šīm lietām varētu būt C struct 184 00:11:45,310 --> 00:11:50,200 un iekšpusē no C struct varētu būt pludiņš pārstāv frekvenču skaits 185 00:11:50,200 --> 00:11:52,510 un tad varbūt CHAR pārstāv vēstuli. 186 00:11:52,510 --> 00:11:56,470 Tāpēc domāju par šiem punktiem, kā tikai jebkuru veco C struct bet, tagad, augstāku līmeni. 187 00:11:56,470 --> 00:12:01,230 Tas ir mežs 5 kokiem, katrs no kuriem ir tikai viena mezglā. 188 00:12:01,230 --> 00:12:06,830 Kas Huffman piedāvātais tas, ka mēs sākam apvienot šos kokus 189 00:12:06,830 --> 00:12:11,140 kas ir mazākais frekvenču skaitu savos nedaudz lielāks koku 190 00:12:11,140 --> 00:12:13,490 , savienojot tos ar jaunu saknes mezgla. 191 00:12:13,490 --> 00:12:17,560 Tātad starp burtiem šeit, pamanīsiet, ka ērtības labad es esam sakārtoti tos no kreisās uz labo, 192 00:12:17,560 --> 00:12:21,420 lai gan tas nav obligāti nepieciešams, un paziņojums, ka vismazākais mezgliem 193 00:12:21,420 --> 00:12:23,930 Pašlaik 10% un 10%. 194 00:12:23,930 --> 00:12:28,940 Tā Huffman ierosināts, ka mēs apvienot tās 2 vismazākās mezglus jaunā koku 195 00:12:28,940 --> 00:12:34,450 ieviešot jaunu vecāku mezglu un pēc tam sniedz šā mātes kreiso bērnu un labo bērnu 196 00:12:34,450 --> 00:12:37,720 kur B ir patvaļīgi kreisi un C ir patvaļīgi tiesības. 197 00:12:37,720 --> 00:12:41,590 Un tad Huffman ierosināja, pieņemsim tagad tikai domā par kreisā bērna 198 00:12:41,590 --> 00:12:44,790 vienā no šiem kokiem vienmēr kā attēlot ar 0 199 00:12:44,790 --> 00:12:47,890 un tiesības bērns vienmēr, kā to pārstāv numuru 1. 200 00:12:47,890 --> 00:12:50,680 >> Tas nav svarīgi, ja jūs uzsist viņiem tik ilgi, cik jūs esat konsekventi. 201 00:12:50,680 --> 00:12:54,650 Tāpēc tagad mums ir četri koki šajā mežā. 202 00:12:54,650 --> 00:12:58,050 Un es saku 4 jo tagad koks pa kreisi - 203 00:12:58,050 --> 00:13:00,570 un tas nav tik daudz koku, kas nozīmē, ka tā aug šādā veidā, 204 00:13:00,570 --> 00:13:05,170 tas ir vairāk kā ģimenes koku, kur tagad 0.2 veida mātes divu bērnu - 205 00:13:05,170 --> 00:13:07,930 pamanīt, ka šo vecāku mēs esam izstrādāts 0.2. 206 00:13:07,930 --> 00:13:13,370 Mēs esam pievienojuši frekvenču skaitu par diviem bērniem un ņemot vērā jauno mezglu kopējā summa. 207 00:13:13,370 --> 00:13:15,310 Tātad tagad mēs vienkārši atkārtot šo procesu. 208 00:13:15,310 --> 00:13:19,490 Atrast divi mazākie mezglu un pēc tam pievienoties tos jaunu koku 209 00:13:19,490 --> 00:13:21,380 un atkārtojiet šo procesu. 210 00:13:21,380 --> 00:13:26,390 Tieši tagad mums ir dažas kandidāti, 20%, 15%, un vēl 20%. 211 00:13:26,390 --> 00:13:29,780 Šajā gadījumā mums ir jālauž kaklasaiti. Mēs varam darīt to patvaļīgi. 212 00:13:29,780 --> 00:13:31,540 Mums tikai vajadzētu darīt to konsekventi. 213 00:13:31,540 --> 00:13:33,760 Šajā gadījumā, es patvaļīgi iet ar vienu pa kreisi, 214 00:13:33,760 --> 00:13:39,880 un es tagad apvienot 20% un 15%, lai dotu man jaunu mātes sauc 35%, 215 00:13:39,880 --> 00:13:46,310 kura kreisais bērns ir 0, kuras tiesības bērns ir 1, un tagad mums ir tikai trīs kokus mežā. 216 00:13:46,310 --> 00:13:47,960 Jūs varat varbūt redzēt, kur tas notiek. 217 00:13:47,960 --> 00:13:51,150 Ja mēs atkārtot šo pāris reizes, mēs ejam, lai ir tikai viena lielāka koku, 218 00:13:51,150 --> 00:13:53,900 visi kura malas ir marķēti ar 0s un 1s. 219 00:13:53,900 --> 00:13:55,710 Darīsim to vēlreiz. 220 00:13:55,710 --> 00:14:02,600 35% ir, ka koks ir saknes. 20% un 45%, tāpēc mēs esam gatavojas apvienot 35% un 20%. 221 00:14:02,600 --> 00:14:05,610 Tagad mums ir šis koks šeit. Mēs pievienot tos kopā, mums ir 55%. 222 00:14:05,610 --> 00:14:07,910 Tagad tur ir tikai divi koki mežā. 223 00:14:07,910 --> 00:14:11,900 Mēs šo vienu pēdējo reizi, un, cerams, matemātiski visi frekvences saskaitīt 224 00:14:11,900 --> 00:14:15,570 jo viņi ir, jo mēs aprēķināts viņus no get-go, lai pievienotu līdz pat 100%. 225 00:14:15,570 --> 00:14:17,960 Un tagad mums ir viens koks. 226 00:14:17,960 --> 00:14:20,580 Tātad šis ir Huffman kodēšanas koks. 227 00:14:20,580 --> 00:14:24,400 Tā veida ņēma, bet tur nokļūt mutiski, bet realitāte ir ar par cilpu 228 00:14:24,400 --> 00:14:27,620 vai ar rekursīvo funkciju, jūs varētu veidot šī lieta diezgan ātri. 229 00:14:27,620 --> 00:14:32,440 Tāpēc tagad mums ir viens jauns mezglā, un visi šie iekšējo mezglu ir malloc'd, 230 00:14:32,440 --> 00:14:34,690 iespējams, pa ceļam. 231 00:14:34,690 --> 00:14:38,650 Tāpēc tagad augšpusē šo koku mums ir 100%, bet tagad paziņojums mums ir ceļu 232 00:14:38,650 --> 00:14:43,780 No šī jaunā liels-liels-liels-vecvecāki uz visiem liels-liels-liels-mazbērniem 233 00:14:43,780 --> 00:14:45,930 visu ceļu apakšā, lai visi lapām. 234 00:14:45,930 --> 00:14:52,840 >> Ko mēs darīsim tagad ir ierosināt, lai pārstāvētu burta E, 235 00:14:52,840 --> 00:14:55,670 mēs vienkārši izmantot numuru 1. Kāpēc? 236 00:14:55,670 --> 00:15:01,000 Jo, ja mēs traversa šo koku no gala saknes līdz vērtnes pazīstams kā E, 237 00:15:01,000 --> 00:15:06,050 mēs sekojam tikai vienu malu, labo malu, un kas ir marķēti, protams, ir augšējā labajā stūrī 1. 238 00:15:06,050 --> 00:15:11,550 Tātad Ietekme šeit Huffman bija, ka e kodējumu binārā ir vienkārši 1. 239 00:15:11,550 --> 00:15:14,490 Un tas ir diezgan nopelt efektīva. Nevar īsti iegūt kādu mazāks nekā. 240 00:15:14,490 --> 00:15:18,350 Turpretī, ir būs pārstāvētas, ja jūs sekot loģikai, 241 00:15:18,350 --> 00:15:21,610 ar ko modelis bitu vietā? 01. 242 00:15:21,610 --> 00:15:25,500 Tātad, lai nokļūtu, mēs sākam pie saknes un mēs ejam pa kreisi, un tad mēs ejam pa labi, 243 00:15:25,500 --> 00:15:28,580 kas nozīmē, ka mēs sekoja 0 un tad 1. 244 00:15:28,580 --> 00:15:32,810 Tātad mēs pārstāv vēstuli ar modeli 0 un 1. 245 00:15:32,810 --> 00:15:36,010 Un tagad paziņojums mums jau ir īpašums tūlītēja atkodējamību 246 00:15:36,010 --> 00:15:38,090 ka mums nav kas Morzes kodu. 247 00:15:38,090 --> 00:15:42,840 Kaut gan abi šie modeļi ir diezgan īss - E ir 1 bits, ir 2 biti - 248 00:15:42,840 --> 00:15:45,080 paziņojums, ka tās nevar sajaukt vienu vai otru, 249 00:15:45,080 --> 00:15:54,870 jo, ja jūs redzat 1 tas ir got būt E, ja redzat 0, tad 1 tas ir acīmredzami tagad ir A. 250 00:15:54,870 --> 00:15:58,410 Tāpat, kāda ir D? 001. 251 00:15:58,410 --> 00:16:01,440 Kas ir C? 0001. 252 00:16:01,440 --> 00:16:05,320 Un kāda ir B? 0000. 253 00:16:05,320 --> 00:16:09,550 Un atkal, jo visi burti mēs interesējamies par ir pie lapām 254 00:16:09,550 --> 00:16:13,890 un neviens no tiem ir sava veida starpniekiem ceļā no saknēm līdz lapu, 255 00:16:13,890 --> 00:16:18,760 tur nav conflating 2 burtu 'dažādus kodējumus risks 256 00:16:18,760 --> 00:16:22,300 jo visi šie bitu modeļiem ir deterministisko. 257 00:16:22,300 --> 00:16:25,280 0000 vienmēr būs B. 258 00:16:25,280 --> 00:16:29,480 Nav mezglu kaut kur starp, ka jūs varētu sajaukt vienu vēstuli par otru. 259 00:16:29,480 --> 00:16:31,150 Tātad, kāda ir saistība šeit? 260 00:16:31,150 --> 00:16:35,080 >> Vispopulārākais vēstule - šajā gadījumā E - ir gotten visīsākais kodējumu, 261 00:16:35,080 --> 00:16:37,430 Ir gotten nākamo īsāko kodējumu, 262 00:16:37,430 --> 00:16:41,390 un B un C, ko mēs jau zinājām no get-go bija sava veida vismazāk populārs 263 00:16:41,390 --> 00:16:45,390 pie 10% biežumu katram, viņi ir gotten garāko kodējumu. 264 00:16:45,390 --> 00:16:49,410 Un tā, ko tas nozīmē tagad ir tas, ka, ja jūs vēlaties, lai nosūtītu ziņu, ka ir saspiests 265 00:16:49,410 --> 00:16:51,950 internetā vai pa e-pastu vai tamlīdzīgi, 266 00:16:51,950 --> 00:16:56,730 nevis izmantojot standarta ASCII, jūs varat nosūtīt Huffman kodētu ziņu 267 00:16:56,730 --> 00:17:01,720 kurā, ja jūs vēlaties, lai nosūtītu vēstuli E, jūs sūtīt tikai vienu bitu. 268 00:17:01,720 --> 00:17:05,680 Ja jūs vēlaties nosūtīt, jums nosūtīt 2 biti, 01, nevis sūtīt 8 bitus 269 00:17:05,680 --> 00:17:10,190 seko vēl 8 biti sekoja vēl 8 bitu un tā tālāk. 270 00:17:10,190 --> 00:17:11,940 Bet ir gotcha šeit. 271 00:17:11,940 --> 00:17:17,079 Tas nav pietiekami, lai tikai izveidotu šo koku, un tad sākt sūtīt no Alice uz Bob 272 00:17:17,079 --> 00:17:20,010 īsāks mazliet modelis, stīgu no ASCII, 273 00:17:20,010 --> 00:17:23,140 jo Alise ir arī jāinformē Bob par to, ko 274 00:17:23,140 --> 00:17:26,880 ja Bobs būs iespēja lasīt viņas saspiestā ziņu? 275 00:17:26,880 --> 00:17:30,770 [Dzirdams studentu reaģēšanas] >> Kas tas ir? 276 00:17:30,770 --> 00:17:32,310 [Dzirdams studentu reaģēšanas] >> no kāda koks ir. 277 00:17:32,310 --> 00:17:35,160 Vai pat vairāk konkrēti, kādi ir šie kodējumi ir, 278 00:17:35,160 --> 00:17:39,010 jo īpaši tādēļ šajā stāstā mēs veicām spriedums zvanu ir viens punkts. 279 00:17:39,010 --> 00:17:43,640 Atcerieties, ka mums bija izvēlēties patvaļīgi starp 2 dažādiem 20% mezglu? 280 00:17:43,640 --> 00:17:49,800 Tātad, tas nav gadījums, ka Bobs, saņēmējam, var vienkārši rekonstruēt koku par savējo 281 00:17:49,800 --> 00:17:53,390 jo varbūt viņš radīs koku kādreiz tik nedaudz atšķirīgi no Alice. 282 00:17:53,390 --> 00:17:56,670 Turklāt, Bobs nav pat zināt, ko sākotnējais ziņojums ir 283 00:17:56,670 --> 00:18:00,770 jo vienīgais, ko Alise nosūtot viņam, protams, ir saspiests ziņa. 284 00:18:00,770 --> 00:18:05,900 >> Tātad ar kompresijas, piemēram, tas nozveju, ka, jā, Alise var ietaupīt visai daudz bitu 285 00:18:05,900 --> 00:18:09,900 nosūtot 1, lai E un 01 par un tā tālāk, 286 00:18:09,900 --> 00:18:15,180 bet viņa arī ir jāinformē Bob kāda kartēšana ir starp burtiem un biti 287 00:18:15,180 --> 00:18:19,620 jo viņi nevar skaidri atsaukties uz tikai ASCII vairs ja mēs neesam izmantojot ASCII. 288 00:18:19,620 --> 00:18:22,200 Lai viņa varētu vai nu nosūtīt viņam koku kaut kā - 289 00:18:22,200 --> 00:18:26,600 uzrakstiet to, saglabāt to kā bināros datus vai kaut kas tamlīdzīgs - 290 00:18:26,600 --> 00:18:30,280 vai vienkārši nosūtīt viņam nedaudz apkrāptu lapas, Excel failu, kas parāda samērošanai. 291 00:18:30,280 --> 00:18:36,480 Tāpēc kompresijas efektivitāti tiešām paredz, ka ziņas, ka jūs sūtāt 292 00:18:36,480 --> 00:18:40,230 ir diezgan liels, vismaz vidēja lieluma, 293 00:18:40,230 --> 00:18:42,180 jo, ja jūs nosūtot super īsziņu, 294 00:18:42,180 --> 00:18:45,390 ja jūs vienkārši vēlaties nosūtīt ziņu slikti, kas notiek, ir vārds, mēs varam izskaidrot šeit, 295 00:18:45,390 --> 00:18:49,550 B--D, jūs, iespējams, gatavojas izmantot mazāk bitus, 296 00:18:49,550 --> 00:18:53,130 bet nozveju ir, ja jums ir arī jāinformē Bob ko koks ir 297 00:18:53,130 --> 00:18:57,530 vai kādi ir šie kodējumi ir, jūs gatavojas iespējams pārspēj visus ietaupījumus 298 00:18:57,530 --> 00:19:00,110 , kam saspiestus lietas, lai sāktu ar. 299 00:19:00,110 --> 00:19:02,210 Tātad tas faktiski var būt gadījums, ka, ja jūs mēģināt saspiežot 300 00:19:02,210 --> 00:19:05,330 pat ar kaut ko līdzīgu zip vai failu formātus jūs varētu būt pazīstami ar - 301 00:19:05,330 --> 00:19:07,780 diezgan mazi faili, pat tukšas faili - 302 00:19:07,780 --> 00:19:10,930 dažreiz šie faili varētu iegūt lielāku un nav mazāks. 303 00:19:10,930 --> 00:19:14,320 Bet reāli, ka notiek tikai mazu faila izmēru, 304 00:19:14,320 --> 00:19:16,920 tāpēc tas nav gatavojas veikt gigabaitu fails ir 2 gigabaiti; 305 00:19:16,920 --> 00:19:19,480 mēs patiesi runājam bytes vai tikai pāris kilobaiti. 306 00:19:19,480 --> 00:19:22,330 >> Daži, piemēram, zip programmas ir pietiekami gudrs, lai saprastu, ka, 307 00:19:22,330 --> 00:19:24,590 "Jūs esat gatavojas tērēt vairāk bitu saspiežot to." 308 00:19:24,590 --> 00:19:27,460 "Ļaujiet man nav apnikt saspiežot to jums visiem." 309 00:19:27,460 --> 00:19:30,160 Tātad tas ir tikai viens veids, tad no saspiežot teksta formātā. 310 00:19:30,160 --> 00:19:32,300 Mēs varētu ieviest kaut kas līdzīgs šim C. 311 00:19:32,300 --> 00:19:35,370 Piemēram, šeit ir, kā mēs varētu pārstāvēt mezglu šajā kokā 312 00:19:35,370 --> 00:19:39,320 kur mums ir char par simbolu, peldošo vērtība par frekvenci, 313 00:19:39,320 --> 00:19:42,250 un kā mēs esam redzējuši ar citiem mūsu datu struktūras, 2 norādes, 314 00:19:42,250 --> 00:19:47,080 1 kreisajā bērnam, 1 pa labi, nu kas var būt nulle, 315 00:19:47,080 --> 00:19:50,850 bet, ja ne, tas atsaucas uz kreiso bērnu un labo bērnu. 316 00:19:50,850 --> 00:19:55,130 Tātad tas tad ir Huffman kodēšana, un tas ir viens no veidiem, ka jūs varat iet par saspiežot informāciju, 317 00:19:55,130 --> 00:19:57,880 un tas noteikti ir viens no visvairāk viegli īstenot 318 00:19:57,880 --> 00:20:00,830 kontekstā, proti, pagājušās nedēļas datu struktūras, 319 00:20:00,830 --> 00:20:03,250 lai gan pat sarežģītākus algoritmus pastāv 320 00:20:03,250 --> 00:20:08,220 ka var darīt vēl sarežģītākus mutācijām jūsu datiem. 321 00:20:08,220 --> 00:20:11,640 Jebkādi jautājumi, tad uz kokiem, binārā koki, vai teksta kompresijas? 322 00:20:11,640 --> 00:20:15,590 [Students] Vai ir kāds neskaidrības, piemēram, ja [dzirdams] Sadalīts 01, 323 00:20:15,590 --> 00:20:19,160 tad 011 būtu neskaidrs, vai ne? 324 00:20:19,160 --> 00:20:22,730 [Dzirdams] >> Labs jautājums. Neskaidrību. 325 00:20:22,730 --> 00:20:25,940 Ļaujiet man apkopot, atsaucoties uz šo attēlu šeit. 326 00:20:25,940 --> 00:20:29,650 Jo rakstzīmes ir saspiežot, pārstāvniecībās no, 327 00:20:29,650 --> 00:20:32,850 pēc definīcijas šī algoritma vienmēr paliek lapas, 328 00:20:32,850 --> 00:20:41,870 jūs nekad nejauši izmantot to pašu modeli biti par priedēkli vairāku burtu. 329 00:20:41,870 --> 00:20:46,740 Tātad citiem vārdiem sakot, tu esi norūpējies par to izklausās, neskaidrības rodas 330 00:20:46,740 --> 00:20:51,580 kad 001 varētu būt par B sākuma vai no C vai kaut kas tamlīdzīgs sākums. 331 00:20:51,580 --> 00:20:56,780 Bet tas nevar būt tāds gadījums, jo paziņojums, ka visi no alfabēta burtiem mēs kodējumu 332 00:20:56,780 --> 00:20:58,290 ir pie lapām. 333 00:20:58,290 --> 00:21:01,910 >> Neskaidrību var rasties tikai, kā gadījumā Morzes kodu, 334 00:21:01,910 --> 00:21:06,770 ja, piemēram, C bija kaut kur pa ceļam no saknes līdz B. 335 00:21:06,770 --> 00:21:12,290 [Students] labi. Tātad šajā gadījumā, teiksim ir 2 lapas. >> Say ir - Saka, ka atkal. 336 00:21:12,290 --> 00:21:18,760 [Students] Say ir 2 lapas, F un G, un tad G - >> labi. Bet tā nav. 337 00:21:18,760 --> 00:21:23,230 Pati nevar būt lapām F un G, jo šīm vēstulēm F un G 338 00:21:23,230 --> 00:21:27,560 pašas ir atstāj kaut kur uz B kreisi vai E. tiesības 339 00:21:27,560 --> 00:21:28,900 Tātad pēc definīcijas, tiem jābūt lapām. 340 00:21:28,900 --> 00:21:32,940 Pretējā gadījumā tu esi tieši labi, mēs esam nav atrisināta problēma, kas Morse kods saskaras. 341 00:21:32,940 --> 00:21:38,150 Labs jautājums. Citi jautājumi? Labi. 342 00:21:38,150 --> 00:21:42,050 Šis bitu jēdziens, izrādās, mēs esam bija varu visi kopā, ka mēs esam faktiski nav izmantots 343 00:21:42,050 --> 00:21:44,200 kad tas nonāca pie manipulējot šos 0s un 1s. 344 00:21:44,200 --> 00:21:46,600 Mēs jautāja par šo par vienu no senākajiem problēmu kopas: 345 00:21:46,600 --> 00:21:52,340 proti, kā jūs iet par konvertējošā lielais uz mazo vai otrādi? 346 00:21:52,340 --> 00:21:55,460 Vai, vēl konkrētāk, viens no pirmajiem psets jautāja 347 00:21:55,460 --> 00:22:01,090 cik bitus jums tiešām ir uzsist, lai mainītu uz mazo ar vai otrādi? 348 00:22:01,090 --> 00:22:05,580 Lūk ātrs atgādinājums par to, ko 65 un 97 izskatīties bināro. 349 00:22:05,580 --> 00:22:08,060 Un pat tad, ja šis jautājums ir veida izbalējis savā atmiņā, 350 00:22:08,060 --> 00:22:11,290 Jūs varat redzēt atkal šeit, ka, cik daudz biti nepieciešams Pagriezts 351 00:22:11,290 --> 00:22:15,810 mainīt kapitālu uz mazajiem? Tikai viens. 352 00:22:15,810 --> 00:22:19,650 >> Tie atšķiras tikai vienā vietā, trešais mazliet no kreisās puses. 353 00:22:19,650 --> 00:22:24,240 Tā ir 010, maz ir 011. 354 00:22:24,240 --> 00:22:26,250 Tātad kaut kā, mums ir nepieciešams, lai tikai varētu uzsist, ka mazliet, 355 00:22:26,250 --> 00:22:29,410 un mēs pēc tam var kapitalizēt vai mazajiem burtiem. 356 00:22:29,410 --> 00:22:32,720 Mēs esam darījuši agrāk, ko faktiski izmanto, ja apstākļi 357 00:22:32,720 --> 00:22:35,930 un pārbaudīt, ja vēstule ir starp galvaspilsētas A un kapitāla Z, 358 00:22:35,930 --> 00:22:41,480 tad izvadi, piemēram - + 26 vai kaut kas tamlīdzīgs. 359 00:22:41,480 --> 00:22:46,130 Jūs, iespējams, izdarīja aritmētisko izmaiņas no alfabēta burtiem. 360 00:22:46,130 --> 00:22:49,270 Bet ko tad, ja mēs varētu tikai uzsist ka vienu bitu? 361 00:22:49,270 --> 00:22:59,080 Kā jūs varētu iet par ņemot viens baits vērts bitu, 8 bitu piemēram 01.000.001 un 01.100.001? 362 00:22:59,080 --> 00:23:03,170 Ja jums bija tie modeļus bitiem, kā mēs varam iet par maiņu tikai viens no viņiem? 363 00:23:03,170 --> 00:23:07,610 Ko darīt, ja mēs ieviest dzeltenā šeit šo citu modeli bitu? 364 00:23:07,610 --> 00:23:13,420 Ja es padarīt visu dzelteno virknes 0s izņemot vienu mazliet ka es gribu mainīt 365 00:23:13,420 --> 00:23:17,900 un tad es ieviest jaunu operatoru pazīstams kā Bitu līmeņa operatoru - 366 00:23:17,900 --> 00:23:21,210 Bitu līmeņa, kas nozīmē, ka tā darbojas uz atsevišķiem bitiem, 367 00:23:21,210 --> 00:23:25,360 nevis uz visu baitu vai četri baiti visus uzreiz. 368 00:23:25,360 --> 00:23:31,170 Šī vertikālā josla tur dzeltenā liecina, ka būtu, ja mēs ņemtu pārstāvību kapitāla A 369 00:23:31,170 --> 00:23:37,060 un Bitu līmeņa vai tā ar dzelteno secību bitiem? 370 00:23:37,060 --> 00:23:41,300 Citiem vārdiem sakot, domāju, ka atpakaļ pie mūsu diskusijas Būla izteiksmes Scratch un pēc tam C. 371 00:23:41,300 --> 00:23:47,520 >> Doing Būla vai nozīmē, ka, lai būtu patiesība, vai nu pirmā lieta ir, lai būtu patiesība 372 00:23:47,520 --> 00:23:50,700 vai otrā lieta ir, lai būtu patiesība, vai viņi abi ir, lai būtu patiesība, 373 00:23:50,700 --> 00:23:53,270 un tad rezultātā produkcija ir pati patiesība. 374 00:23:53,270 --> 00:24:00,230 Šajā gadījumā šeit, ko mēs varam iegūt, ja mēs ņemtu 0 "vai" ed ar 0? Nepatiesu vai viltus? 375 00:24:00,230 --> 00:24:04,280 Tas joprojām nepatiesa, tāpēc mazie paliek kā gaidīts. 376 00:24:04,280 --> 00:24:07,540 Ko darīt, ja tā vietā mēs 1 vai 0? 377 00:24:07,540 --> 00:24:12,640 Tagad tas paliek 1, bet paziņojums, kas ir aptuveni notikt šeit. 378 00:24:12,640 --> 00:24:18,630 Ja mēs sāktu ar kapitālu A un mēs turpināsim "vai" tā atsevišķās biti kā mēs darām šeit, 379 00:24:18,630 --> 00:24:25,180 0 vai dzeltenā viens dod mums, ko šeit lejā? Tas dod mums 1. 380 00:24:25,180 --> 00:24:35,120 Patiesībā, pieņemsim, ka mēs nezinājām, ko lielais versija maz patiesībā bija. 381 00:24:35,120 --> 00:24:38,270 Iesim darīt. Ļaujiet man pāriet šo atpakaļ vairāk nekā šeit. 382 00:24:38,270 --> 00:24:42,340 Darīsim to atkal. 0 vai 0 dod man 0. 383 00:24:42,340 --> 00:24:45,020 1 vai 0 dod man 1. 384 00:24:45,020 --> 00:24:48,020 0 vai 1 dod man 1. 385 00:24:48,020 --> 00:24:52,880 0 vai 0 dod man 0. Nākamais ir 0, nākamais ir 0, nākamais ir 0. 386 00:24:52,880 --> 00:24:55,660 1 vai 0 dod man 1. 387 00:24:55,660 --> 00:24:59,140 Un, pat ja mēs neesam iepriekš zināt, cik mazie bija, 388 00:24:59,140 --> 00:25:04,770 vienkārši "vai" ing ar šo modeli bitu ka mēs esam šeit izklāstīto dzeltens, 389 00:25:04,770 --> 00:25:09,400 Jūs varat mazo kapitāls, ko flipping, ka mazliet. 390 00:25:09,400 --> 00:25:11,580 Mēs šo izteicienu nedēļas atpakaļ: flipping mazliet. 391 00:25:11,580 --> 00:25:13,710 Kā jūs faktiski darīt programmiski? 392 00:25:13,710 --> 00:25:16,390 Jūs izmantot to, ko parasti sauc par masku, secība bitu 393 00:25:16,390 --> 00:25:19,980 ka šajā gadījumā tikai tā notiek, izskatās šo numuru šeit, 394 00:25:19,980 --> 00:25:22,980 un tad tu "vai" tas kopā, izmantojot šo jauno C operatoru, 395 00:25:22,980 --> 00:25:29,940 nav | |, jūs izmantot vienu | un jūs faktiski saņemt šo atbildi šeit, jo kāpēc? 396 00:25:29,940 --> 00:25:35,120 Tas ir 1s vieta, 2s vieta, 4s, 8s, 16s, 32s. 397 00:25:35,120 --> 00:25:42,280 Tātad izrādās, ka, ja jūs lietojat lielais burts un Bitu līmeņa vai tā ar skaitlim 32, 398 00:25:42,280 --> 00:25:47,520 jo skaitlim 32, kad paskatās uz to kā biti, izskatās, 399 00:25:47,520 --> 00:25:50,860 tas nozīmē, ka jūs varat uzsist mazliet, ka jūs tiešām vēlaties. 400 00:25:50,860 --> 00:25:52,630 Un līdzīgi - un mēs apskatīt kodu tikai brīdi - 401 00:25:52,630 --> 00:25:54,210 pieņemsim, ka mēs vēlamies iet pretējā virzienā. 402 00:25:54,210 --> 00:25:58,210 >> Kā jūs iet no mazo A līdz kapitālam A? Kas mazliet jāmaina? 403 00:25:58,210 --> 00:25:59,820 Tas pats vienu. 404 00:25:59,820 --> 00:26:03,970 Mēs vēlamies mainīt šo trešo mazliet no 1 kādas līdz 0. 405 00:26:03,970 --> 00:26:06,310 Un kā varētu mēs iet par to izdarīt? 406 00:26:06,310 --> 00:26:10,130 Kā mēs izslēgt mazliet? Ar ko modelis bitiem mēs varētu izslēgt mazliet? 407 00:26:11,580 --> 00:26:14,070 Ko darīt, ja mēs veida apgrieziet maskas? 408 00:26:14,070 --> 00:26:17,350 Tā kā pirms, mēs, visa dzeltenā maska ​​0s 409 00:26:17,350 --> 00:26:19,930 izņemot vienu bitu mēs vēlējāmies, lai ieslēgtu, 410 00:26:19,930 --> 00:26:25,580 Ko darīt, ja šajā laikā, mēs visu maska ​​1s izņemot mazliet ka mēs vēlamies, lai izslēgtu 411 00:26:25,580 --> 00:26:28,330 un pēc tam izmantot to, ko operators? 412 00:26:28,330 --> 00:26:30,560 Ko darīt, ja mēs "un" lietas? Pieņemsim to apskatīt. 413 00:26:30,560 --> 00:26:34,880 Ja mēs tagad uzsist uz šo, pieņemsim, ka es atkal izveidot masku ka viss 1s 414 00:26:34,880 --> 00:26:37,650 izņemot vienu bitu, ka es gribu, lai izslēgtu 415 00:26:37,650 --> 00:26:43,860 un tad nevis "vai" balto skaitu līdz augšpusē ar dzelteniem numuriem šeit lejā, 416 00:26:43,860 --> 00:26:46,940 Ko darīt, ja es tā vietā "un" viņiem kopā? To sauc Bitu līmeņa un. 417 00:26:46,940 --> 00:26:49,450 Loģiski, tas ir tas pats, kas boolean un. 418 00:26:49,450 --> 00:26:55,160 Tas dod man 0 & 1 ir 0. Tāpēc viltus un patiesa, ir nepatiesa. 419 00:26:55,160 --> 00:26:58,160 Patiess un patiesi ir taisnība. 420 00:26:58,160 --> 00:27:04,020 Un šeit ir burvju: Patiess un viltus tagad nepatiess, tāpēc mēs esam izslēgts, ka mazliet. 421 00:27:04,020 --> 00:27:06,560 Un tagad no stāsts pārējais ir nedaudz vienkāršs. 422 00:27:06,560 --> 00:27:11,970 Jo maska ​​pārējais ir 1s, tas nav svarīgi, kādi skaitļi ir baltā krāsā. 423 00:27:11,970 --> 00:27:15,580 Kad jūs "un" ar patiesu kaut, jūs neesat gatavojas mainīt savu vērtību. 424 00:27:15,580 --> 00:27:20,200 Ja tā ir taisnība, tas paliks taisnība. Ja tas bija nepatiesa, tas būs viltus. 425 00:27:20,200 --> 00:27:23,190 >> Bet maģija notiek, ja jūs lietojat kaut kas bija taisnība 426 00:27:23,190 --> 00:27:25,430 un tu tad "un" tas ar viltus. 427 00:27:25,430 --> 00:27:30,030 Tas ir sekas izslēgt, ka mazliet. 428 00:27:30,030 --> 00:27:31,980 Tik maz mistisks tur. 429 00:27:31,980 --> 00:27:35,390 Pieņemsim faktiski apskatīt kādu kodu, kas varētu tiešām izskatās vēl noslēpumains, 430 00:27:35,390 --> 00:27:38,220 bet pieņemsim to apskatīt šeit tolower. 431 00:27:38,220 --> 00:27:45,880 Ja es skatos uz tolower, dodoties no kapitāla uz mazo, 432 00:27:45,880 --> 00:27:47,730 pieņemsim redzēt, kā mēs varētu īstenot šo programmu. 433 00:27:47,730 --> 00:27:51,280 Lūk galvenais, un tas neveiks komandrindas argumentus. 434 00:27:51,280 --> 00:27:55,980 Es esmu atzīts rakstzīmju c par vēstuli, ka lietotājs ir gatavojas rakstīt iekšā 435 00:27:55,980 --> 00:28:00,690 Es tad izmantot iepazinušies darīt, kamēr cilpa, lai tikai pārliecinātos, ka lietotājs noteikti dod man kapitālu 436 00:28:00,690 --> 00:28:05,010 vai B vai C. .. Z, lai viņi dod man kaut ko starp un Z. 437 00:28:05,010 --> 00:28:08,580 Un tagad ko es šeit daru? 438 00:28:08,580 --> 00:28:14,870 Es esmu "vai" ing to ar 0x20, bet patiesībā pats kā - 439 00:28:14,870 --> 00:28:19,500 un mēs būsim atpakaļ uz šo brīdi - 32. 440 00:28:19,500 --> 00:28:24,830 Tātad vēlreiz, 32 ir šis modelis bitiem šeit. Kāpēc mēs zinām? 441 00:28:24,830 --> 00:28:26,320 Vienkārši domāju, ka atpakaļ līdz 0 nedēļai. 442 00:28:26,320 --> 00:28:31,010 Tas ir 1s vieta, 2s vieta, 4s, 8s, 16s, 32s vieta. 443 00:28:31,010 --> 00:28:33,470 Tātad šis dzeltenais skaits notiek, ir 32. 444 00:28:33,470 --> 00:28:40,570 Es tad var pieņemt vēstuli kā char šeit, Bitu līmeņa "vai" Tā ar burtiski skaitu 32, 445 00:28:40,570 --> 00:28:45,250 un ko es varu saņemt atpakaļ? Mazo versiju, ka char. 446 00:28:45,250 --> 00:28:48,830 Pirms brīža, lai gan, es pauda tas citā bāzes pierakstā. 447 00:28:48,830 --> 00:28:51,370 Ko tas pārstāv? >> [Students] Heksadecimāla. 448 00:28:51,370 --> 00:28:53,050 [Malan] Tas notiek, lai pārstāvētu heksadecimālo. 449 00:28:53,050 --> 00:28:55,170 Mēs neesam runājuši par sešpadsmitnieku, ka daudz, 450 00:28:55,170 --> 00:28:57,330 bet patiesībā tas ir ērti gadījumos kā šis. 451 00:28:57,330 --> 00:29:01,730 >> Pat ja tas izskatās sarežģītāka un pat ja tas izskatās, piemēram, 20 un ne 32, 452 00:29:01,730 --> 00:29:06,240 izrādās, ka sešpadsmitnieku ir faktiski super ērti notācija 453 00:29:06,240 --> 00:29:10,810 jo heksadecimālā ik pēc 0x cipars - un tas nozīmē, neko; 454 00:29:10,810 --> 00:29:13,960 tas ir tikai cilvēka konvenciju, kas saka šeit nāk sešpadsmitnieku numurs - 455 00:29:13,960 --> 00:29:18,590 Katrs no šiem cipariem, 2 un tad 0, paši var būt pārstāvēta 456 00:29:18,590 --> 00:29:20,800 ar precīzi 4 bitiem. 457 00:29:20,800 --> 00:29:27,840 Tātad, ja mēs to darām, ļaujiet man atvērt teksta redaktoru šeit - dīvaini AutoComplete - 458 00:29:27,840 --> 00:29:35,940 ja mēs mazliet teksta redaktoru šeit, skaits 0x20 nozīmē šeit ir 4 biti, šeit ir vēl 4 biti. 459 00:29:35,940 --> 00:29:38,050 Darīsim rightmost 4 biti pirmās. 460 00:29:38,050 --> 00:29:44,690 0, kad pārstāvēta ar 4 bitiem ir tas, ko? Super viegli. Tikai viss 0s. 461 00:29:44,690 --> 00:29:46,780 Tātad 4 biti kā 0S. 462 00:29:46,780 --> 00:29:53,510 Kā jūs pārstāv 2? Tas ir bijis, bet kopš mēs to darījām, bet tas ir 0100. 463 00:29:53,510 --> 00:29:57,310 Tātad šī ir 1s vieta, tas ir 2s vieta, un tad tas nav svarīgi, ko pārējās vietas ir. 464 00:29:57,310 --> 00:30:00,610 Citiem vārdiem sakot, heksadecimālā jūs varētu teikt 0x20, 465 00:30:00,610 --> 00:30:04,340 bet, ja jūs pēc tam domā par to, kas ir 2, un kā tā tiek pārstāvēta bināro, 466 00:30:04,340 --> 00:30:07,130 kāda ir 0 un kā tā tiek pārstāvēta bināro, 467 00:30:07,130 --> 00:30:10,440 atbildes uz šiem jautājumiem ir tas un tas, attiecīgi. 468 00:30:10,440 --> 00:30:14,380 Tātad 0x20 notiek pārstāvēt šo modeli 8 biti, 469 00:30:14,380 --> 00:30:16,880 kas ir tieši maska, ko mēs vēlējāmies. 470 00:30:16,880 --> 00:30:20,140 Tā tas ir uz šo brīdi tikai intelektuālā īstenošanu, 471 00:30:20,140 --> 00:30:24,520 bet realitāte ir kods, tas ir parasti biežāk rakstīt konstantes kā šis 472 00:30:24,520 --> 00:30:28,360 heksadecimālā jo tad programmētājs var samērā viegli, 473 00:30:28,360 --> 00:30:32,560 pat ja tas prasa kādu papīru un zīmuli, izdomāt, ko lai no bitiem modelis 474 00:30:32,560 --> 00:30:35,960 jo jūs varat ne tikai izteikt 0s un 1s parasti kodu. 475 00:30:35,960 --> 00:30:38,540 Jūs nevarat iet 00.010 un tā tālāk. 476 00:30:38,540 --> 00:30:42,380 >> Jums ir izvēlēties decimālo vai sešpadsmitnieku vai astotnieku vai citas atzīmes. 477 00:30:42,380 --> 00:30:47,540 Lielākā daļa cilvēku ir tendence izvēlēties heksadecimālo vienkārši tā, ka katrs cipars ir 4 biti 478 00:30:47,540 --> 00:30:49,320 un jūs varat darīt šo ātri math. 479 00:30:49,320 --> 00:30:54,990 Un es vilnis savu roku pie toupper, kas ir gandrīz tāds pats, tas izskatās gandrīz identiski. 480 00:30:54,990 --> 00:31:01,900 Toupper notiek lietot nevis vai operatoru, bet gan šis puisis un DF. 481 00:31:01,900 --> 00:31:09,300 Kāda DF pārstāv? DF? Ikviens? >> [Students] 255. 482 00:31:09,300 --> 00:31:12,780 255? Ne 255. Tas būtu kanonus. 483 00:31:12,780 --> 00:31:15,210 Mēs atstāt šo vienu kā nelielu izmantot. 484 00:31:15,210 --> 00:31:23,460 Bet, ja jums iet no 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 un tad to, kas nāk pēc 9? 485 00:31:23,460 --> 00:31:26,510 Mēs esam veida ārpus decimālzīmju cipariem, bet heksadecimālā kas nāk pēc 9? 486 00:31:26,510 --> 00:31:29,510 [Students]. >> Tātad, b, c, d. 487 00:31:29,510 --> 00:31:33,470 Jūs varat izdomāt, no turienes kāda raksts bitu d faktiski pārstāv. 488 00:31:33,470 --> 00:31:38,850 Un, ja mēs to math, mēs redzam, ka maska ​​jūs galu galā kļūst atpakaļ ir identisks tam. 489 00:31:38,850 --> 00:31:45,580 Tas ir f, visi 1s, un tas ir d. Tātad DF pārstāv šo masku. Labi. 490 00:31:45,580 --> 00:31:50,980 Un visbeidzot, kas nav, lai viss skaņu Super, super tehnisku, 491 00:31:50,980 --> 00:31:53,840 bet pieņemsim, ka mēs vēlējāmies uzrakstīt programmu, kas to dara. 492 00:31:53,840 --> 00:31:58,960 Ļaujiet man iet uz priekšu un darīt bināro, kas ir programma failu sauc binary.c. 493 00:31:58,960 --> 00:32:02,050 Un tagad ļaujiet man palaist bināro un man nav negatīvu skaitlim. 494 00:32:02,050 --> 00:32:03,960 Sāksim viegli un tips 0. 495 00:32:03,960 --> 00:32:09,010 Tas tagad ir programma, kas izdrukā skaitlim savā binārā pārstāvību. 496 00:32:09,010 --> 00:32:13,470 Tātad, ja es spēlētu šo spēli atkal un ierakstiet tikai 1, man vajadzētu saņemt 32 bitu pārstāvību 1. 497 00:32:13,470 --> 00:32:15,490 Ja man tas atkal ar 2, man vajadzētu saņemt to. 498 00:32:15,490 --> 00:32:19,310 Ja man 7, man vajadzētu saņemt dažus 1s beigās un tā tālāk. 499 00:32:19,310 --> 00:32:22,740 Izrādās, man pieminu tāpēc ar Bitu līmeņa operācijas 500 00:32:22,740 --> 00:32:25,490 Jūs faktiski var darīt vienu citu lietu, kā arī. 501 00:32:25,490 --> 00:32:29,130 Jūs varat radīt šiem maskas dinamiski. 502 00:32:29,130 --> 00:32:32,800 Veikt apskatīt šo vienu galīgo piemēram, iesaistot Bitu līmeņa operācijas. 503 00:32:32,800 --> 00:32:35,490 Šeit ir pirmā daļa no koda, atgādinās lietotājam par numuru, 504 00:32:35,490 --> 00:32:38,130 un uzstāj, ka jūs varētu man nav negatīvu skaitlim. 505 00:32:38,130 --> 00:32:39,780 Tātad tas ir sava veida vecās skolas sīkumi. 506 00:32:39,780 --> 00:32:41,980 Bet šeit ir kaut kas ir diezgan interesants. 507 00:32:41,980 --> 00:32:44,910 >> Kā es varu iet par drukāšanu skaitli binārā? 508 00:32:44,910 --> 00:32:48,970 Es pirmo atkārtot no kā, ko? 509 00:32:48,970 --> 00:32:52,270 Kas lielums int Raksturīgi, vismaz iekārtu? >> [Students] 4. 510 00:32:52,270 --> 00:32:57,130 Tas ir 4. Tātad 4 * 8 ir 32 - 1 ir 31. 511 00:32:57,130 --> 00:33:02,590 Tātad, ja es esmu sāk skaitīt no 31, kas apzīmē, izrādās, 512 00:33:02,590 --> 00:33:07,630 tikai konceptuāli, tās 31 bitu vai augstākā kārtība mazliet, kas ir šis puisis nekā šeit, 513 00:33:07,630 --> 00:33:09,650 tā kā tas būs bit 0. 514 00:33:09,650 --> 00:33:12,850 Tātad tas ir mazliet 01 ... mazliet 31. 515 00:33:12,850 --> 00:33:14,950 Tātad, kas ir tas kods dara? 516 00:33:14,950 --> 00:33:20,140 Pamanīt šis cilpas, lai gan tas izskatās mistisks, ir tikai atkārtojot no 31 līdz 0. Viss. 517 00:33:20,140 --> 00:33:24,530 Tāpēc interesanti daļa tagad ir jābūt šiem 5 līnijās šeit. 518 00:33:24,530 --> 00:33:28,110 Ievērojiet, ka šajā līnijā es esmu deklarējot mainīgo sauc masku 519 00:33:28,110 --> 00:33:30,790 jāsaskan ar mūsu stāstu par šiem dzelteniem numuriem. 520 00:33:30,790 --> 00:33:32,200 Un tad kāda ir šī dara? 521 00:33:32,200 --> 00:33:35,720 Tas ir vēl viens Bitu līmeņa uzņēmējs mēs esam nav redzējis, visticamāk. 522 00:33:35,720 --> 00:33:38,300 Tas kreisi pāreja operators. 523 00:33:38,300 --> 00:33:40,060 Šis operators dara. 524 00:33:40,060 --> 00:33:44,920 Šeit ir numurs 1, un, ja jūs man atstāja maiņu, Kreisais Shift 525 00:33:44,920 --> 00:33:49,260 Ko jūs domājat, ka ir šādas sekas uz šo individuālo 1? 526 00:33:49,260 --> 00:33:51,290 Burtiski novirzot to pa. 527 00:33:51,290 --> 00:33:57,540 Tātad, ja skaitlis 1 ir tas, ko jums ir pa kreisi, un jūs sākat ar inicializēšanas I līdz 31, 528 00:33:57,540 --> 00:34:03,490 Kas ir tas, ka gatavojas darīt? Tas notiek, lai šo numuru 1 un novirzīt to 31 vietām vairāk nekā šeit. 529 00:34:03,490 --> 00:34:06,210 Un tāpēc, ka acīmredzot neviens cits cipars aiz tā, 530 00:34:06,210 --> 00:34:10,350 tie būs pēc noklusējuma tiek aizstāts ar 0S. 531 00:34:10,350 --> 00:34:15,120 Tātad jūs sākat veic ar numuru 1, kas, protams, izskatās šādi - 532 00:34:15,120 --> 00:34:18,659 un ļaujiet man izdarīt to nekā šeit centrā. 533 00:34:18,659 --> 00:34:22,139 Un tad, kā jūs maiņās lietas pa kreisi, šis puisis būtībā iet šo ceļu. 534 00:34:22,139 --> 00:34:24,659 Bet tiklīdz jūs darīt, 0 izpaužas jāaizpilda 535 00:34:24,659 --> 00:34:28,360 Ja jūs maiņās tā otro reizi, tas iet šo ceļu un citu 0 izpaužas jāaizpilda 536 00:34:28,360 --> 00:34:31,000 >> Jūs novirzīt to vēlreiz un tad vēl 0 izpaužas jāaizpilda 537 00:34:31,000 --> 00:34:37,900 Tātad, ja jūs šo lietu no 1 << i 31 vietām, jūs galu galā kļūst masku 538 00:34:37,900 --> 00:34:42,550 kas ir 32 rakstzīmes, kreisās malas no kuriem viens ir 1, 539 00:34:42,550 --> 00:34:45,199 visu pārējo, kas ir 0. 540 00:34:45,199 --> 00:34:50,880 Un izrādās, kā malā, novirzot numuru pa kreisi, piemēram, tas 541 00:34:50,880 --> 00:34:53,530 arī nejauši, un dažreiz ērti, 542 00:34:53,530 --> 00:34:57,520 ir šādas sekas, ko uz šo numuru? >> [Students] Dubultojot to. 543 00:34:57,520 --> 00:35:00,980 Dubultojot to, jo katrs no kolonnām - 1s vieta, 2s vieta, 4s vieta, 544 00:35:00,980 --> 00:35:05,030 8s vieta, 16s vieta - tās ir bez visa dubultošanu, kā jums iet pa kreisi. 545 00:35:05,030 --> 00:35:09,500 Vai drīzāk, ja jūs novirzīt 1s jūs gatavojas galu galā dubultojot vērtību skaita. 546 00:35:09,500 --> 00:35:12,070 Jūs varat galu galā dara interesantas pārvērtības cipariem 547 00:35:12,070 --> 00:35:15,640 novirzot viss vairāk šādā veidā ar pilnvarām gada 2. 548 00:35:15,640 --> 00:35:17,150 Tātad, kā tas darbojas? 549 00:35:17,150 --> 00:35:22,580 Šis tad dod man masku ka viss 0s izņemot uz 1 no tieši vietā es gribu to, 550 00:35:22,580 --> 00:35:27,920 un tad šī izteiksme, kas tiek nozagts no toupper.c, 551 00:35:27,920 --> 00:35:31,770 ir vienkārši sakot ņemt numuru N, ka lietotājs ierakstījāt, 552 00:35:31,770 --> 00:35:34,730 "Un" tas ar šo masku, un ko jūs gatavojas saņemt? 553 00:35:34,730 --> 00:35:39,200 Jūs gatavojas saņemt 1, ja tur 1 minētajā maskē vietā, 554 00:35:39,200 --> 00:35:41,570 vai jūs gatavojas saņemt 0, ja tur nav. 555 00:35:41,570 --> 00:35:44,370 Un tā tas viss programma neparedz efektīvi tas ir cilpa, 556 00:35:44,370 --> 00:35:48,340 un tas rada maskas ar 1 ir vairāk nekā šeit, tad ar 1 nekā šeit, tad vairāk nekā 1 šeit, 557 00:35:48,340 --> 00:35:52,950 un tas izmanto šo Bitu līmeņa un triks teikt, ir tur 1 bits ir lietotāja ievadi šeit? 558 00:35:52,950 --> 00:35:59,220 >> Vai ir 1 bits ir lietotāja ievadi šeit? Un ja tā, burtiski drukāt 1, cits izdrukāt 0. 559 00:35:59,220 --> 00:36:03,780 Mēs darām to ar Ints tikai tāpēc, ka tāpēc mēs darām 32 bitus, nevis 8, 560 00:36:03,780 --> 00:36:06,900 bet tas, ko mēs esam ieviesuši tad tas ir Bitu līmeņa un šis Bitu līmeņa VAI, 561 00:36:06,900 --> 00:36:10,450 un tas pa kreisi maiņu operators, kas nav bieži briesmīgi noderīgs, 562 00:36:10,450 --> 00:36:12,230 bet izrādās, tie var būt. 563 00:36:12,230 --> 00:36:16,560 Patiesībā, ja jūs pārstāvēt kaut ko līdzīgu masīvs booleans 564 00:36:16,560 --> 00:36:21,260 tikai, lai pārstāvētu patiess vai nepatiess, pieņemsim, ka jūs vēlētos, lai sekotu, vai 565 00:36:21,260 --> 00:36:24,630 istaba pilna ar 300 skolēniem ir klāt, 566 00:36:24,630 --> 00:36:29,420 Jūs varētu deklarēt masīvu tipa 300 izmēra bool lai jūs iegūtu 300 bools, 567 00:36:29,420 --> 00:36:33,090 un jūs varat iestatīt katru patiess, ja kāds ir šeit un viltus citādi. 568 00:36:33,090 --> 00:36:37,550 Kāpēc ir tā, ka šajā datu struktūru reprezentācijas neefektīva? 569 00:36:39,370 --> 00:36:44,800 Kas ir slikti par dizainu šīs datu struktūras, masīvs 300 bools? 570 00:36:46,190 --> 00:36:49,600 Kas ir loģiska, jo patiesībā, zem motora pārsega? 571 00:36:49,600 --> 00:36:52,310 Arī tas ir kaut kas varētu būt pazīstami. 572 00:36:52,310 --> 00:36:53,720 Izrādās, ka nav loģiska. 573 00:36:53,720 --> 00:36:56,620 Atcerieties, mēs veida radīts ka ar cs50.h failu, 574 00:36:56,620 --> 00:36:58,630 kas ietvēra arī standarta bool. 575 00:36:58,630 --> 00:37:00,930 C ir sava veida mēms, lai gan, kad runa ir par bool. 576 00:37:00,930 --> 00:37:04,880 Tas izmanto 8 biti, kas pārstāv katru bool, kas ir pilnīgi izšķērdīgs 577 00:37:04,880 --> 00:37:09,040 jo acīmredzot, cik bitus jums vajag, lai pārstāvētu bool? Tikai 1. 578 00:37:09,040 --> 00:37:13,190 Tātad izrādās, ka, ja jums tagad ir iespēja ar Bitu līmeņa operatoriem 579 00:37:13,190 --> 00:37:17,760 manipulēt atsevišķus bitus pat apkopēja, pat vienā baitā, 580 00:37:17,760 --> 00:37:21,380 izrādās, jums varētu samazināt atmiņas prasīt pārstāvēt kaut ko stulbu 581 00:37:21,380 --> 00:37:25,490 piemēram, ka apmeklētība stila datu struktūru ar koeficientu 8. 582 00:37:25,490 --> 00:37:29,820 Tā vietā, izmantojot astoņi biti pārstāvēt patiess vai nepatiess, jūs varētu burtiski izmantot vienu 583 00:37:29,820 --> 00:37:34,500 izmantojot vienu baitu uz katriem astoņiem skolēniem klasē 584 00:37:34,500 --> 00:37:41,990 un ieslēdzot 0-1 atsevišķiem bitiem, izmantojot šāda veida zema līmeņa trikiem. 585 00:37:43,850 --> 00:37:49,460 Tas patiešām izbeigt enerģijas. Vai ir kādi aptuveni Bitu līmeņa operācijas jautājumi? 586 00:37:49,460 --> 00:37:52,710 >> Yeah. >> [Students] Vai ir ekskluzīvas vai uzņēmējs? 587 00:37:52,710 --> 00:37:56,440 Jā. Ir ekskluzīva vai uzņēmējs, kas izskatās kā šis, ^ burkānu simbols, 588 00:37:56,440 --> 00:38:02,070 kas nozīmē tikai pirmo kaut vai otrā lieta var būt 1 par izejas būtu 1. 589 00:38:02,070 --> 00:38:07,750 Ir arī nav, ~, kas ļaus jums inversiju 0 līdz pat 1 vai otrādi, kā arī. 590 00:38:07,750 --> 00:38:11,600 Un tur ir arī labi maiņu operators, >>, kas ir pretējs tam, ko mēs redzējām. 591 00:38:11,600 --> 00:38:13,850 Labi. Paņemsim lietas tagad, lai augstākā līmenī. 592 00:38:13,850 --> 00:38:16,770 Mēs sākām ar runāt par tekstu un pēc tam saspiežot to 593 00:38:16,770 --> 00:38:19,650 un pārstāv tekstu ar mazākām skaitam bitiem; 594 00:38:19,650 --> 00:38:22,890 Mēs runājām mazliet par to, kā mēs tagad varam sākt manipulēt lietas par Bitu līmeņa līmenī. 595 00:38:22,890 --> 00:38:26,640 Pieņemsim tagad tuvinātu atpakaļ līdz 10,000 pēdas uz pārstāvību 596 00:38:26,640 --> 00:38:29,250 Sarežģītākas lietas, piemēram grafika. 597 00:38:29,250 --> 00:38:32,950 Šeit mums ir ar Vācijas karogu, šeit mums ir viens no Francijas. 598 00:38:32,950 --> 00:38:36,350 Tie varētu būt pārstāvētas failu formātus jūs varētu zināt - GIF, piemēram. 599 00:38:36,350 --> 00:38:40,030 Ja esat kādreiz redzējuši attēlu tīmeklī, kas beidzas. Gif, 600 00:38:40,030 --> 00:38:43,000 Tas ir Grafikas apmaiņas formāts. 601 00:38:43,000 --> 00:38:47,530 Šie divi karogi šeit veida aizdot sevi kompresijas 602 00:38:47,530 --> 00:38:52,050 par ko varbūt acīmredzama iemesla? >> [Dzirdams studentu reaģēšanas] 603 00:38:52,050 --> 00:38:53,440 Tur atkārtošanās daudz, vai ne? 604 00:38:53,440 --> 00:38:57,270 Lai nosūtītu Vācijas karogu, domāt par to kā attēlu uz ekrāna 605 00:38:57,270 --> 00:38:59,030 atpakaļ savā Scratch dienās. 606 00:38:59,030 --> 00:39:02,380 Jūs varētu atgādināt, ka tur ir individuālie pikseļi vai punkti, kas veido attēlu. 607 00:39:02,380 --> 00:39:06,650 >> Tur viss rindu melniem punktiņiem un citas visai rindai melni punktiņi. 608 00:39:06,650 --> 00:39:10,110 Tur rindas, melni punktiņi, ka mēs varētu redzēt, ja mēs patiešām pietuvināto ķekars, 609 00:39:10,110 --> 00:39:13,370 daudz, piemēram, kad mēs pietuvināto par Rob sejā Photoshop. 610 00:39:13,370 --> 00:39:15,500 Tiklīdz mēs saņēmām dziļāk un dziļāk un dziļāk attēlu, 611 00:39:15,500 --> 00:39:19,990 Jums sāka redzēt pixelation, visi kvadrātu, kas sastāv viņa acu šajā lietā. 612 00:39:19,990 --> 00:39:24,130 Pats nodarbojas šeit. Ja mēs pietuvināto diezgan daudz, jūs varētu redzēt atsevišķus punktus. 613 00:39:24,130 --> 00:39:27,110 Nu, tas ir sava veida atkritumu bitiem. 614 00:39:27,110 --> 00:39:32,120 Ja no karoga trešais ir melns un no karoga trešais ir dzeltena un tā tālāk, 615 00:39:32,120 --> 00:39:34,860 kāpēc mēs nevaram kaut saspiest šo karogu? 616 00:39:34,860 --> 00:39:39,560 Un pat Francijas karogu, varētu būt saspiests, lai gan modelis ir nedaudz atšķirīgs. 617 00:39:39,560 --> 00:39:44,120 Izrādās GIF faila formāts ir bezzudumu saspiešanas formāts, 618 00:39:44,120 --> 00:39:48,420 kas nozīmē, ka jūs varat veikt attēlu kas līdzīgs Vācijas karogu šeit, 619 00:39:48,420 --> 00:39:53,540 Jūs varat mest prom daudz no saviem bitiem neupurējot kvalitāti. 620 00:39:53,540 --> 00:39:55,340 Tas ir pretēji kaut ko līdzīgu JPEG, 621 00:39:55,340 --> 00:39:57,050 ar ko lielākā daļa no mums, iespējams, ir vairāk pazīstams. 622 00:39:57,050 --> 00:39:59,000 Facebook fotogrāfijas un Flickr fotogrāfijas un līdzīgi 623 00:39:59,000 --> 00:40:02,200 gandrīz vienmēr ir saglabāti kā JPEG, kad viņi augšupielādēti, 624 00:40:02,200 --> 00:40:08,100 bet JPEG ir zudumiem - zudumiem - formāts, kurā jūs mest prom biti 625 00:40:08,100 --> 00:40:10,430 bet jūs arī mest prom kvalitāti. 626 00:40:10,430 --> 00:40:13,890 Un tā, ja jūs saspiest fotogrāfijas ar Photoshop vai augšupielādēt tos Facebook 627 00:40:13,890 --> 00:40:15,580 vai ņemt tos patiešām crappy tālruni, 628 00:40:15,580 --> 00:40:19,510 Jūs zināt, ka aina sāk kļūt ļoti notraipīti un pixelated, 629 00:40:19,510 --> 00:40:22,290 un tas ir tāpēc tas tiek saspiests ar datoru vai tālruni 630 00:40:22,290 --> 00:40:24,550 ko burtiski throwing informāciju prom. 631 00:40:24,550 --> 00:40:28,500 Bet GIF ir pārsteidzošs, jo tas var izmantot mazāk bitus nekā tas varētu pēc noklusējuma 632 00:40:28,500 --> 00:40:30,750 nezaudējot informāciju. 633 00:40:30,750 --> 00:40:32,410 >> Un tas būtībā dara šādi. 634 00:40:32,410 --> 00:40:38,740 Nevis veikalā, kas atrodas dokumentos, piemēram, BMP būtu RGB trīskāršu melnas, melna, melna, melna, 635 00:40:38,740 --> 00:40:42,570 melna, melna, melna, melna, melna, melna, melna, melna un tā tālāk, 636 00:40:42,570 --> 00:40:45,640 drīzāk, GIF formāts ir gatavojas teikt, "Black" 637 00:40:45,640 --> 00:40:48,330 un tad, "Atkārtojiet šo 100 reizes," vai kaut kas tamlīdzīgs. 638 00:40:48,330 --> 00:40:52,280 "Melnais, atkārtot 100 reizes, melns, atkārtot 100 reizes ..." 639 00:40:52,280 --> 00:40:54,530 "Dzeltenā, atkārtot 100 reizes." 640 00:40:54,530 --> 00:40:57,200 Un tā tas atceras, būtībā, kreisās malas pikseļu 641 00:40:57,200 --> 00:41:02,160 un tad kodē kaut jēdzienu atkārtojot, ka pikseli atkal un atkal. 642 00:41:02,160 --> 00:41:06,110 Tātad gifs tad var saspiest sevi nezaudējot informāciju. 643 00:41:06,110 --> 00:41:09,510 Bet, ja jums bija uzminēt, ja tas ir algoritms, kas Gif izmantošanu, 644 00:41:09,510 --> 00:41:13,180 kura no šīm karogi, pat ja tie izskatās identiska izmēra, 645 00:41:13,180 --> 00:41:19,620 būs mazāka, ja saglabāts uz diska kā GIF? >> [Students] Vācija. 646 00:41:19,620 --> 00:41:21,660 Vācija būs mazāka? Kāpēc? 647 00:41:21,660 --> 00:41:26,620 [Students] Jo jūs to atkārtot daudzas, daudzas reizes horizontāli 648 00:41:26,620 --> 00:41:29,010 un tad jūs atkārtot citu laiku. >> Tieši tā. 649 00:41:29,010 --> 00:41:32,020 Jo cilvēki, kas izgudroja GIF tikai veida patvaļīgi nolēma 650 00:41:32,020 --> 00:41:36,040 ka atkārtošana tiks panākta horizontāli un nav sāniski. 651 00:41:36,040 --> 00:41:40,900 Tur daudz vairāk atkārtojums sāniski šeit Vācijas karogu nekā Francijas karoga. 652 00:41:40,900 --> 00:41:44,430 Tātad, ja mēs faktiski atvērt mapi par manu cieto disku, kas ir šīs gifs, 653 00:41:44,430 --> 00:41:51,920 Jūs faktiski var redzēt, ka Vācijas karogs šeit ir 2 kilobaiti un Francijai ir 4 kilobaiti. 654 00:41:51,920 --> 00:41:54,080 Tas notiek, ir sagadīšanās, ka viens ir divreiz otru, 655 00:41:54,080 --> 00:41:57,960 bet tas patiesībā notiek, ka Francijas karogu ir daudz lielāks. 656 00:41:57,960 --> 00:42:01,250 >> Pat ja mēs runājam šeit par grafikas, paši idejas var piemērot 657 00:42:01,250 --> 00:42:05,150 ne lietas, piemēram, karogu, bet attēlus, kas ir nedaudz sarežģītāka. 658 00:42:05,150 --> 00:42:08,170 Ja esat lietojis priekšstatu par ābolu, protams, tur dublēšanās daudz tur, 659 00:42:08,170 --> 00:42:11,040 lai mēs varētu kaut jāatceras, ka noklusējuma fons ir zils 660 00:42:11,040 --> 00:42:13,230 un nevis, kā labais attēls liecina, 661 00:42:13,230 --> 00:42:16,830 ir jāatceras krāsu katru pikseli šajā attēlā. 662 00:42:16,830 --> 00:42:21,060 Tātad, mēs varam mest biti prom tur, nezaudējot informāciju. 663 00:42:21,060 --> 00:42:23,340 Ābolu joprojām izskatās tieši tāds pats. 664 00:42:23,340 --> 00:42:27,510 Šajā piemērā šeit, jūs varētu redzēt, kas notiek filmā. 665 00:42:27,510 --> 00:42:31,970 Tie ir vecās skolas filmu ruļļus, saskaņā ar ko augšējā attēlā tur 666 00:42:31,970 --> 00:42:36,900 Jums ir RV pagātnes mājā braukšanu un koku. 667 00:42:36,900 --> 00:42:42,130 Un kā tas van diskus pagātnes no kreisās uz labo, ko acīmredzot nav mainās? 668 00:42:42,130 --> 00:42:45,320 Māja nav iet visur, un koks nav iet visur. 669 00:42:45,320 --> 00:42:47,700 Vienīgais, kas ir kustībā, ir van šajā lietā. 670 00:42:47,700 --> 00:42:51,650 Tā kā fons Nemainīgs liecina, ko jūs varat darīt, filmas 671 00:42:51,650 --> 00:42:56,530 ir līdzīgi tikai mest prom informāciju, kas nemainās starp kadriem. 672 00:42:56,530 --> 00:42:58,900 Tas ir parasti sauc par interframe kompresija 673 00:42:58,900 --> 00:43:02,120 kurā, ja tas rāmis izskatās gandrīz identisks šo vienu, 674 00:43:02,120 --> 00:43:05,390 pieņemsim nav apnikt glabāšanai diskā kādu no identisku informāciju 675 00:43:05,390 --> 00:43:09,250 gada šajos starpposma rāmji, pieņemsim tikai izmantot galveno rāmji reizi brītiņa 676 00:43:09,250 --> 00:43:13,420 ka faktiski uzglabāt šo informāciju lieki tāpat kā mazliet veselība pārbaudītu. 677 00:43:13,420 --> 00:43:18,620 >> Savukārt, cita pieeja saspiežot video ir šajā otrajā un zemākas Piemēram šeit, 678 00:43:18,620 --> 00:43:23,970 kur nevis veikalā 30 kadri, kāpēc nav jūs vienkārši glabāt 15 kadriem sekundē vietā? 679 00:43:23,970 --> 00:43:27,070 Nevis filmu veida plūst skaisti, ideāli, 680 00:43:27,070 --> 00:43:30,060 tas varētu izskatīties tas stostīšanās mazliet, mazliet vecs skolā, 681 00:43:30,060 --> 00:43:37,190 bet tīrā ietekme būs izmantot daudz mazāk bitus nekā citādi varētu būt nepieciešams. 682 00:43:37,190 --> 00:43:39,240 Tātad, ja tas pēc tam atstāj mūs? 683 00:43:39,240 --> 00:43:41,700 Tas bija mazliet malā, kur vēl jūs varat doties ar kompresijas. 684 00:43:41,700 --> 00:43:45,140 Lai uzzinātu vairāk par šo, veikt klases, piemēram CS175 šeit. 685 00:43:45,140 --> 00:43:46,990 Lūk otru video piemērs. 686 00:43:46,990 --> 00:43:49,190 Ja bite vienīgais pārvietojas, 687 00:43:49,190 --> 00:43:51,790 Jūs tiešām var mest prom informāciju šajos vidū rāmjos 688 00:43:51,790 --> 00:43:55,260 jo ziedu un debesis, un lapas nav mainās. 689 00:43:55,260 --> 00:43:57,960 Bet pieņemsim tagad apsvērt vienu pēdējo lietu. 690 00:43:57,960 --> 00:44:03,890 Nākamajos 5 minūtēm mēs atstāt C aiz mūžīgi lekciju? Jā. Ne tādā psets, gan. 691 00:44:03,890 --> 00:44:10,210 Pēdējā apmēram C stāsts, un tad mēs to ļoti seksīgas lietiņas 692 00:44:10,210 --> 00:44:13,870 iesaistot HTML un web un Woo-hoo. Labi. 693 00:44:13,870 --> 00:44:16,050 Šeit mēs iet. Tas ir motivācija. 694 00:44:16,050 --> 00:44:20,020 Izrādās visu šo laiku, kad mēs esam rakstīšanas programmu mēs palaist šķindēt. 695 00:44:20,020 --> 00:44:23,890 Un šķindēt, mēs esam teica, jo pirmajā nedēļā diezgan daudz, ņem pirmkodu 696 00:44:23,890 --> 00:44:25,740 un pārvērš to objekta kodu. 697 00:44:25,740 --> 00:44:28,540 Tas aizņem C un pārvērš to 0s un 1s. 698 00:44:28,540 --> 00:44:32,150 Es esmu veida gulējis uz jums uz pāris nedēļām, jo ​​tas nav gluži tik vienkārši. 699 00:44:32,150 --> 00:44:36,750 >> Tur daudz vairāk notiek zem motora pārsega, kad jūs darbināt programmu, piemēram šķindēt. 700 00:44:36,750 --> 00:44:39,560 Faktiski, apkopošanu programmu procesu tiešām var apkopot, 701 00:44:39,560 --> 00:44:42,210 kā jūs varētu atgādināt no Rob s video kompilatori, 702 00:44:42,210 --> 00:44:47,580 šajās 4 soļiem: pirmapstrāde, apkopojot sevi, montāža, un savieno. 703 00:44:47,580 --> 00:44:51,950 Bet mēs klasē un vairums cilvēku pasaulē parasti apkopot visus šos pasākumus 704 00:44:51,950 --> 00:44:54,410 kā tikai "sagatavošanu." 705 00:44:54,410 --> 00:44:58,070 Bet, ja mēs sāktu ar pirmkodu, piemēram, tas, atgādināt tas ir iespējams vienkāršākais C programma 706 00:44:58,070 --> 00:45:03,530 Mēs esam rakstiski līdz šim, atgādināt, ka tad, kad apkopoti tā sāk izskatīties šis. 707 00:45:03,530 --> 00:45:07,310 Bet tur tiešām starpposms, un šie pasākumi ir šādi. 708 00:45:07,310 --> 00:45:10,750 Vispirms tur ir šī lieta pie ļoti top šīs un lielākā daļa no mūsu programmas, 709 00:45:10,750 --> 00:45:13,550 # Ietvert 710 00:45:13,550 --> 00:45:17,210 Kāda # ietvert darīt mums? 711 00:45:17,210 --> 00:45:24,150 Tā diezgan daudz kopijas un pastas saturs stdio.h manā failu, lai kāpēc? 712 00:45:24,150 --> 00:45:27,220 Kāpēc man rūp stdio.h saturu? Kas tur interese? 713 00:45:27,220 --> 00:45:32,310 Printf deklarācija, tā prototips, lai kompilators tad zina, ko es domāju 714 00:45:32,310 --> 00:45:34,900 kad es pieminēt šo funkciju printf. 715 00:45:34,900 --> 00:45:39,390 Tātad soli 1, apkopojot ir pirmapstrāde, kad programma, piemēram, šķindēt 716 00:45:39,390 --> 00:45:43,450 vai kādu palīgs programma, kas šķindēt nāk ar lasa savu kodu augšas uz apakšu, 717 00:45:43,450 --> 00:45:47,740 kreisās uz labo pusi, un jebkurā laikā tas redz # simbolu seko atslēgvārds piemēram ietvertu, 718 00:45:47,740 --> 00:45:53,980 tā veic šo darbību, kopējot un ielīmējot šajā gadījumā stdio.h tos jūsu failu. 719 00:45:53,980 --> 00:45:55,510 Tas ir solis 1. 720 00:45:55,510 --> 00:45:59,620 Tad jums ir daudz lielāka C failu, jo ir milzīgs kopēt, ielīmēt darba, kas ir tikko noticis. 721 00:45:59,620 --> 00:46:01,710 >> 2.solis Tagad apkopošanai. 722 00:46:01,710 --> 00:46:04,880 Bet izrādās, apkopojot ņem avota kodu, kas izskatās šādi 723 00:46:04,880 --> 00:46:08,160 un pārvērš to par kaut ko, kas izskatās šādi, 724 00:46:08,160 --> 00:46:12,560 kas tiem pazīstami sauc? >> [Students] Asambleja. >> Asambleja valoda. 725 00:46:12,560 --> 00:46:16,700 Tas ir tiešām kaut kas, ja jūs lietojat CS61 jūs pikējošais sīkāk. 726 00:46:16,700 --> 00:46:22,380 Tas ir tikai par tik tuvu, kā jūs varat iegūt rakstot 0s un 1s sevi 727 00:46:22,380 --> 00:46:25,850 bet rakstot lietas tādā veidā, kas joprojām padara vismaz mazliet sajūtu. 728 00:46:25,850 --> 00:46:30,760 Tie ir mašīna instrukcijas, un, ja mēs ritiniet uz leju līdz galvenā funkcija šeit, 729 00:46:30,760 --> 00:46:35,470 pamanīt, ka tur tas ir push norādījums, pārvietot norādījumu, atņemt instrukcija, 730 00:46:35,470 --> 00:46:38,550 zvanīt instrukciju, un tā tālāk. 731 00:46:38,550 --> 00:46:42,930 Kad jūs dzirdat, ka jūsu dators ir Intel iekšā, 732 00:46:42,930 --> 00:46:46,180 Jums ir Intel CPU jūsu Mac vai PC, ko tas nozīmē? 733 00:46:46,180 --> 00:46:51,200 CPU nāk būvēts ar uzņēmumiem, piemēram Intel izprast dažus norādījumus. 734 00:46:51,200 --> 00:46:55,770 Viņiem nav ne jausmas, kādas funkcijas, piemēram, mijmaiņas vai galvenais ir per se, 735 00:46:55,770 --> 00:47:00,060 bet viņi zina, ko ļoti zema līmeņa instrukcijas, piemēram, pievienot, atņemt, push, 736 00:47:00,060 --> 00:47:02,430 pārvietot, zvaniet, un tā tālāk ir. 737 00:47:02,430 --> 00:47:06,170 Tātad, ja jūs sastādīt C kodu montāžas valodā, 738 00:47:06,170 --> 00:47:11,820 Jūsu ļoti lietotājam draudzīgu izskatīgs kods ir pārveidots kaut ko, kas izskatās šādi, 739 00:47:11,820 --> 00:47:21,670 ka burtiski pārvietojas baitu vai 4 baiti ap šādām mazām vienībām un no CPU. 740 00:47:21,670 --> 00:47:26,820 Bet beidzot, kad šķindēt ir gatava uzņemties šo pārstāvību jūsu programmā 741 00:47:26,820 --> 00:47:30,940 uz 0s un 1s, tad solis sauc montāža notiek, 742 00:47:30,940 --> 00:47:33,850 un tas atkal viss notiek acu mirklī, kad darbojas šķindēt. 743 00:47:33,850 --> 00:47:39,300 Mēs sākam šeit, tas izejas failu, piemēram, tas, un tad tas pārvērš to šiem 0s un 1s. 744 00:47:39,300 --> 00:47:42,000 Un, ja jūs vēlaties doties atpakaļ kādā brīdī un faktiski redzēt šo darbībā, 745 00:47:42,000 --> 00:47:48,220 ja es dodos uz hello1.c--tas ir viens no pašiem pirmajiem programmu mēs paskatījās - 746 00:47:48,220 --> 00:47:53,710 Parasti mēs apkopotu to ar šķindēt hello1.c un tas dod mums a.out. 747 00:47:53,710 --> 00:47:59,890 Turpretī, ja jūs tā vietā arī tā-s karogu, ko jūs saņemsiet, ir hello1.s 748 00:47:59,890 --> 00:48:02,750 un jūs faktiski redzēt montāžas valodā. 749 00:48:02,750 --> 00:48:05,750 >> Es esmu to izdarīt uz ļoti īsu programmu, bet, ja jūs iet atpakaļ uz motokross 750 00:48:05,750 --> 00:48:08,740 vai Atgūt vai jebkuru programmu jūs esat rakstiski un tikai no zinātkāri 751 00:48:08,740 --> 00:48:13,240 gribu redzēt, kas tas patiesībā izskatās, kas patiesībā tiek ievadīti CPU, 752 00:48:13,240 --> 00:48:15,700 Jūs varat izmantot ka-S karogu ar šķindēt. 753 00:48:15,700 --> 00:48:17,770 Bet tad visbeidzot, tur ir vēl viens gotcha. 754 00:48:17,770 --> 00:48:21,810 Šeit ir 0s un 1s, kas pārstāv manu ieviešanu sveiki, pasauli. 755 00:48:21,810 --> 00:48:25,530 Bet es kāds cits funkciju manā programmā. 756 00:48:25,530 --> 00:48:28,710 Tātad, pat ja process ir bijis es hello.c, 757 00:48:28,710 --> 00:48:34,280 tas izpaužas apkopoti montāža kodu, un tad tas kļūst samontēt 0s un 1s, 758 00:48:34,280 --> 00:48:37,460 vienīgais 0s un 1s, kas tiek izvadīts šajā brīdī 759 00:48:37,460 --> 00:48:40,270 ir tie, kas izriet no manas kodu. 760 00:48:40,270 --> 00:48:44,400 Bet persona, kas rakstīja printf, viņi apkopo to kodu pirms 20 gadiem 761 00:48:44,400 --> 00:48:47,000 un tas ir tagad uzstādīt kaut uz ierīces, 762 00:48:47,000 --> 00:48:51,610 tāpēc mums kaut kā ir apvienot viņa vai viņas 0s un 1s ar manu 0s un 1s, 763 00:48:51,610 --> 00:48:56,160 un kas dod mums uz 4 un galīgais solis apkopotu, kas pazīstams kā savieno. 764 00:48:56,160 --> 00:48:58,680 Tā kreisajā pusē mums ir tieši tā pati attēlu kā pirms: 765 00:48:58,680 --> 00:49:02,580 hello.c kļūst montāža kods kļūst 0s un 1s. 766 00:49:02,580 --> 00:49:05,960 Bet atceros, ka es izmantoti standarta I / O bibliotēka manā kods, 767 00:49:05,960 --> 00:49:10,350 un tas nozīmē, ka kaut kur uz datora tur failu sauc stdio.c 768 00:49:10,350 --> 00:49:13,980 vai vismaz apkopot variantu, jo kāds pirms dažiem gadiem 769 00:49:13,980 --> 00:49:18,530 apkopoti stdio.c vērā montāžas kodu un tad viss ķekars 0s un 1s. 770 00:49:18,530 --> 00:49:21,130 Tas ir tas, ko sauc par statisku vai dinamisku bibliotēkā. 771 00:49:21,130 --> 00:49:23,350 Tas ir dažas lieta sēž kaut kur ierīci. 772 00:49:23,350 --> 00:49:28,710 >> Bet visbeidzot, man ir jāņem manu 0s un 1s un šīs personas 0s un 1s 773 00:49:28,710 --> 00:49:32,760 un kaut saistīt tos kopā, burtiski apvienot tos 0s un 1s 774 00:49:32,760 --> 00:49:37,900 vienā failu sauc a.out vai hello1 vai kāds man sauc mana programma 775 00:49:37,900 --> 00:49:43,320 lai gala rezultāts ir visas 1s un 0s ka būtu veidojošo manu programmu. 776 00:49:43,320 --> 00:49:45,660 Tātad visu šo laiku šajā pusgadā, kad esat lietojis šķindēt 777 00:49:45,660 --> 00:49:48,750 un vēl nesen darbojas izdarīt, lai palaistu šķindēt, 778 00:49:48,750 --> 00:49:53,580 visi šie soļi ir noticis veida, uzreiz, bet ļoti apzināti. 779 00:49:53,580 --> 00:49:57,830 Un tā, ja jūs turpināt datorzinātnēs, proti CS61, 780 00:49:57,830 --> 00:50:00,850 Tas ir slānis, kas jūs turpināt mizu atpakaļ off tur 781 00:50:00,850 --> 00:50:06,980 runājot par efektivitāti, drošības aspektiem, un šo zemāka līmeņa detaļām, piemēram. 782 00:50:06,980 --> 00:50:09,220 Bet ar to, mēs esam par to, lai atstāt C atpaliek. 783 00:50:09,220 --> 00:50:11,420 Iesim uz priekšu un veikt mūsu 5 minūšu pārtraukumu tagad, 784 00:50:11,420 --> 00:50:14,190 un kad mēs atgriezīsimies: internets. 785 00:50:17,280 --> 00:50:19,170 Labi. Mēs esam atpakaļ. 786 00:50:19,170 --> 00:50:23,590 Tagad mēs sākam mūsu apskatīt ne tikai HTML, jo, kā jūs redzēsiet, 787 00:50:23,590 --> 00:50:26,050 HTML pati par sevi ir faktiski diezgan vienkāršs 788 00:50:26,050 --> 00:50:29,270 bet īsti pie web programmēšanas vispār, tīklu kopumā, 789 00:50:29,270 --> 00:50:31,770 un kā visas šīs tehnoloģijas nāk kopā 790 00:50:31,770 --> 00:50:35,400 lai ļautu mums izveidot daudz sarežģītākus programmas atop internetā 791 00:50:35,400 --> 00:50:38,690 nekā līdz šim, mēs esam spējuši šajos melnā un baltā logiem. 792 00:50:38,690 --> 00:50:42,140 Patiešām, šajā brīdī semestra, pat ja mēs tērēt salīdzinoši mazāk laika 793 00:50:42,140 --> 00:50:46,200 uz PHP, HTML, CSS, JavaScript, SQL un vairāk, 794 00:50:46,200 --> 00:50:48,480 lielākā daļa studentu galu galā dara gala projektus, kas tīmeklī 795 00:50:48,480 --> 00:50:51,230 jo, kā jūs redzēsiet, fona jums tagad ir C 796 00:50:51,230 --> 00:50:54,450 ir ļoti daudz, ko piemēro šīm augstāka līmeņa valodām. 797 00:50:54,450 --> 00:50:56,800 >> Un, kā jūs sākat domāt par savu galīgo projektu, 798 00:50:56,800 --> 00:50:59,940 kas, līdzīgi Problem Set 0, kur tika aicināti 799 00:50:59,940 --> 00:51:02,160 darīt visvairāk kaut procentu jums nulles, 800 00:51:02,160 --> 00:51:05,790 galīgais projekts ir jūsu iespēja veikt savu jaunatklāto zināšanas un gudriem ar C 801 00:51:05,790 --> 00:51:09,850 vai PHP vai JavaScript vai patīk, kas par spin 802 00:51:09,850 --> 00:51:12,330 un izveidot savu pašu gabals programmatūru par pasauli redzēt. 803 00:51:12,330 --> 00:51:17,770 Un sēklām jūs ar idejām, zinu, ka jūs varat doties šeit, projects.cs50.net. 804 00:51:17,770 --> 00:51:21,800 Katru gadu, mēs lūgt idejas no pasniedzējiem un personālam un studentu grupām par Campus 805 00:51:21,800 --> 00:51:27,330 vienkārši iesniegt savas idejas par interesantām lietām, kas varētu atrisināt, izmantojot datorus, 806 00:51:27,330 --> 00:51:29,860 izmantojot tīmekļa vietnes, izmantojot programmatūru. 807 00:51:29,860 --> 00:51:32,360 Tātad, ja jūs cīnās nākt klajā ar ideju par savu, 808 00:51:32,360 --> 00:51:35,790 ar visiem līdzekļiem ritinātu idejas tur no šī gada un pēdējā. 809 00:51:35,790 --> 00:51:39,990 Tas ir pilnīgi labi, lai risinātu projektu, kas ir jārisina pirms tam. 810 00:51:39,990 --> 00:51:44,540 Mēs esam redzējuši daudzus progr redzēt statusu veļas universitātes pilsētiņā, 811 00:51:44,540 --> 00:51:47,000 daudzi progr par navigācijas ēdamzālē izvēlni, 812 00:51:47,000 --> 00:51:49,540 daudzi progr par navigācijas kursu katalogs un tamlīdzīgi. 813 00:51:49,540 --> 00:51:53,680 Un patiešām, nākotnes lekciju un nākotnes semināros, 814 00:51:53,680 --> 00:51:57,750 mēs jūs iepazīstināt ar kādu publiski pieejamā API, gan komerciāli pieejamas 815 00:51:57,750 --> 00:52:02,520 kā arī šeit pieejami no CS50 uz Campus, lai jums ir piekļuve datiem 816 00:52:02,520 --> 00:52:04,910 un tad var darīt interesantas lietas ar to. 817 00:52:04,910 --> 00:52:09,380 Tātad vairāk par galīgajiem projektiem pēc dažām dienām, kad mēs atbrīvot specifikāciju, 818 00:52:09,380 --> 00:52:12,990 bet tagad, zinu, ka jūs varat strādāt solo vai ar vienu vai diviem draugiem 819 00:52:12,990 --> 00:52:16,010 par lielāko jebkuru projektu jūs interesēt. 820 00:52:16,010 --> 00:52:18,080 Interneta. 821 00:52:18,080 --> 00:52:22,300 Jums iet uz priekšu un izraut savu klēpjdatoru, jums iet uz facebook.com pirmo reizi, 822 00:52:22,300 --> 00:52:27,020 tā nav pieteicies nesen, un hit Enter. Kas īsti notiek? 823 00:52:27,020 --> 00:52:30,150 >> Kad jūs hit Enter datorā, viss ķekars soļiem 824 00:52:30,150 --> 00:52:32,600 sākums veida maģiski notiek. 825 00:52:32,600 --> 00:52:35,960 Tātad jūs šeit uz kreisās, web serveri, piemēram, Facebook ir šeit par tiesībām, 826 00:52:35,960 --> 00:52:42,500 un kaut jūs, izmantojot šo valodu sauc HTTP Hiperteksta pārsūtīšanas protokols. 827 00:52:42,500 --> 00:52:46,770 HTTP ir ne programmēšanas valoda. Tas ir vairāk par protokolu. 828 00:52:46,770 --> 00:52:52,310 Tas ir kopums, konvencijām, ka tīmekļa pārlūkprogrammām un web serveri izmanto, ja savstarpēji savienoti. 829 00:52:52,310 --> 00:52:54,360 Un ko tas nozīmē ir šāda. 830 00:52:54,360 --> 00:52:56,790 Līdzīgi kā reālajā pasaulē, mums ir šīs konvencijas 831 00:52:56,790 --> 00:53:00,140 kur, ja jūs satikt kādu cilvēka pirmo reizi, ja jums nav prātā humoring mani šeit, 832 00:53:00,140 --> 00:53:03,980 Es varētu nākt klajā ar jums, saka: "Sveiki, mans vārds ir David." >> Čau, Deivids. Mans vārds ir Sammy. 833 00:53:03,980 --> 00:53:05,770 "Sveiki, Deivids. Mans vārds ir Sammy." 834 00:53:05,770 --> 00:53:08,310 Tāpēc tagad mums ir tikai iesaistīti šāda veida stulbu cilvēku protokolu 835 00:53:08,310 --> 00:53:12,200 ja man ir uzsākusi protokolu, Sammy ir reaģējusi, 836 00:53:12,200 --> 00:53:15,060 Mēs esam sakrata rokās, un darījums ir pabeigts. 837 00:53:15,060 --> 00:53:18,260 HTTP ir ļoti līdzīgs garā. 838 00:53:18,260 --> 00:53:23,350 Ja jūsu tīmekļa pārlūkprogramma pieprasa www.facebook.com, 839 00:53:23,350 --> 00:53:27,020 ko jūsu pārlūkprogramma ir tiešām dara paplašina savu roku, tā teikt, 840 00:53:27,020 --> 00:53:29,960 ar serveri un tas tai nosūtot īsziņu. 841 00:53:29,960 --> 00:53:34,220 Un šī ziņa ir parasti kaut kas līdzīgs get - ko jūs vēlaties, lai saņemtu? - 842 00:53:34,220 --> 00:53:38,740 atnesiet man mājas lapā, kas parasti apzīmē ar vienu slīpsvītru beigās URL. 843 00:53:38,740 --> 00:53:43,790 Un tikai, lai jūs zināt, kādā valodā es runāju, es pārlūkprogramma esmu dodas uz jums pastāstīt 844 00:53:43,790 --> 00:53:46,930 ka es runāju HTTP versiju 1.1, 845 00:53:46,930 --> 00:53:51,980 Un arī labs pasākums, es esmu dodas uz jums, ka uzņēmēja, ka es gribu mājas lapā 846 00:53:51,980 --> 00:53:54,120 ir facebook.com. 847 00:53:54,120 --> 00:53:57,730 Raksturīgi, interneta pārlūku, unbeknownst jums, cilvēku, 848 00:53:57,730 --> 00:54:03,350 nosūta šo ziņojumu visā internetā, ja jūs vienkārši ierakstiet www.facebook.com, 849 00:54:03,350 --> 00:54:05,370 >> Ievadīt, savā pārlūkprogrammā. 850 00:54:05,370 --> 00:54:07,300 Un ko tas Facebook atbildēt ar? 851 00:54:07,300 --> 00:54:12,540 Tas reaģē ar dažiem līdzīgi izskata mistisks detaļas, bet arī daudz ko citu. 852 00:54:12,540 --> 00:54:14,310 Ļaujiet man iet uz priekšu, lai Facebook mājas lapā šeit. 853 00:54:14,310 --> 00:54:17,480 Tas ir ekrāns, kas lielākā daļa no mums, iespējams, nekad redzēt, ja jums palikt pieteicies visu laiku, 854 00:54:17,480 --> 00:54:19,830 bet tas ir tiešām viņu mājas lapā. 855 00:54:19,830 --> 00:54:24,150 Ja mēs to darām Chrome, ievērosiet, ka jūs varat uzvilkt šos maz konteksta izvēlnes. 856 00:54:24,150 --> 00:54:26,980 Izmantojot Chrome, vai uz Mac OS, Windows, Linux, vai tamlīdzīgi, 857 00:54:26,980 --> 00:54:31,840 ja jums kontrolēt klikšķis vai kreiso klikšķi, jūs varat parasti pull up izvēlnes, kas izskatās šādi, 858 00:54:31,840 --> 00:54:35,870 kur dažas iespējas sagaidīt, no kuriem viens ir Skatīt lapas avotu. 859 00:54:35,870 --> 00:54:39,920 Jūs varat arī parasti nokļūt uz šīm lietām, dodoties uz izvēlni Skats un papētījis. 860 00:54:39,920 --> 00:54:42,750 Piemēram, šeit zem View, Izstrādātājs ir tas pats. 861 00:54:42,750 --> 00:54:45,780 Es iešu uz priekšu un apskatīt View Page Source. 862 00:54:45,780 --> 00:54:50,800 Ko jūs redzat ir HTML ka Marks ir rakstījis pārstāvēt facebook.com. 863 00:54:50,800 --> 00:54:55,910 Tas ir pilnīgs haoss šeit, bet mēs redzam, ka tas padara mazliet lielāka jēga pirms ilgi. 864 00:54:55,910 --> 00:54:59,840 Bet ir daži modeļi šeit. Ļaujiet man ritiniet uz leju, lai stuff kā šis. 865 00:54:59,840 --> 00:55:05,730 Tas ir grūti cilvēka lasīt, bet paziņo, ka tur ir šis modelis leņķveida iekavās 866 00:55:05,730 --> 00:55:10,360 ar atslēgvārdiem, piemēram, iespēju, atslēgvārdi vērtība, dažos kotētām stīgas. 867 00:55:10,360 --> 00:55:15,660 Tas ir, ja, kad jūs pierakstījies par ļoti pirmo reizi, noteiktajā ko jūsu dzimšanas gads ir. 868 00:55:15,660 --> 00:55:19,020 Ka nolaižamā izvēlne dzimšanas gadiem kaut kodēts šeit 869 00:55:19,020 --> 00:55:23,870 Šajā valodā sauc par HTML, hiperteksta iezīmēšanas valoda. 870 00:55:23,870 --> 00:55:27,730 Citiem vārdiem sakot, ja jūsu pārlūkprogramma pieprasa tīmekļa lapu, 871 00:55:27,730 --> 00:55:30,610 tā runā šo konvenciju sauc HTTP. 872 00:55:30,610 --> 00:55:35,170 Bet ko facebook.com atbildēt uz šo lūgumu ar? 873 00:55:35,170 --> 00:55:38,260 >> Tas reaģē ar kādu no šiem noslēpumains ziņojumiem, kā mēs redzēsim pēc brīža. 874 00:55:38,260 --> 00:55:43,760 Bet lielākā daļa no tās atbildes ir formā HTML, hiperteksta iezīmēšanas valoda. 875 00:55:43,760 --> 00:55:47,170 Tas ir faktiskais valoda, kurā mājas lapā ir rakstīts. 876 00:55:47,170 --> 00:55:52,030 Un ko interneta pārlūks tiešām tad ir, saņemot kaut ko, kas izskatās šādi, 877 00:55:52,030 --> 00:55:57,120 skan tā augšas uz leju, no kreisās uz labo, un jebkurā laikā pēc saviem viens no šiem leņķveida iekavās 878 00:55:57,120 --> 00:56:03,370 seko atslēgvārds, piemēram, iespēja, tas parāda, ka iezīmēšanas valodu atbilstošā veidā. 879 00:56:03,370 --> 00:56:06,820 Šajā gadījumā tas varētu parādīt nolaižamo izvēlni gadus. 880 00:56:06,820 --> 00:56:09,240 Bet atkal, tas ir pilnīgs haoss, lai apskatīt. 881 00:56:09,240 --> 00:56:16,630 Tas nav tāpēc, ka Facebook izstrādātājiem izpausties 0 par 5 par stilu, piemēram. 882 00:56:16,630 --> 00:56:20,190 Tas ir tāpēc, ka lielākā daļa no koda, ka viņi rakstīt ir, faktiski, raksta skaisti, 883 00:56:20,190 --> 00:56:22,450 labi komentēja, labi atkāpi, un līdzīgi, 884 00:56:22,450 --> 00:56:26,080 Bet, protams, mašīnas, datori, pārlūkprogrammām tiešām nedod nopelt 885 00:56:26,080 --> 00:56:27,890 vai jūsu kods ir labi veidoti. 886 00:56:27,890 --> 00:56:33,100 Un patiesībā, tas ir pilnīgi izšķērdīgi hit Tab taustiņu visus šos laikus 887 00:56:33,100 --> 00:56:37,650 un likt komentārus visiem visā jūsu kodu un izvēlēties patiešām aprakstošus mainīgo nosaukumi 888 00:56:37,650 --> 00:56:42,340 jo, ja pārlūkprogramma nav aprūpi, visi jūs darāt beigās, dienā ir izšķērdēt baiti. 889 00:56:42,340 --> 00:56:46,660 >> Tātad izrādās, ko vairums mājas lapām darīt ir kaut pirmkoda facebook.com, 890 00:56:46,660 --> 00:56:49,550 par cs50.net un visiem šiem citām mājas lapām internetā 891 00:56:49,550 --> 00:56:53,730 parasti labi uzrakstīts un labi komentēja un labi izrobota un līdzīgi, 892 00:56:53,730 --> 00:56:59,270 Parasti pirms vietne ir likts uz internetu, kods ir minified, 893 00:56:59,270 --> 00:57:02,970 kuru HTML un CSS - kaut kas cits, mēs drīz redzēt - 894 00:57:02,970 --> 00:57:05,960 JavaScript kodu, mēs drīz redzēt ir saspiests, 895 00:57:05,960 --> 00:57:09,250 kad ilgi mainīgo nosaukumi kļūst X un Y un Z, 896 00:57:09,250 --> 00:57:13,900 un visu šo atstarpi, kas padara viss izskatās tik lasāms viss izmet 897 00:57:13,900 --> 00:57:17,700 jo, ja jūs domājat par to šādā veidā, Facebook kļūst miljardu lapā hits dienā - 898 00:57:17,700 --> 00:57:21,670 kaut traks piemēram, ka - tā darīt, ja programmētājs vienkārši būt anālais 899 00:57:21,670 --> 00:57:26,660 hit starpdevējs vienu papildus laiku tikai līdz ievilkumu kādu rindiņu kodu kādreiz tik daudz? 900 00:57:26,660 --> 00:57:29,500 Kas Ietekme ja Facebook konservi ka atstarpes 901 00:57:29,500 --> 00:57:32,880 visās baitu tie nosūta atpakaļ uz cilvēkiem internetā? 902 00:57:32,880 --> 00:57:36,400 Hitting starpdevējs reizi dod jums papildus baitu failā. 903 00:57:36,400 --> 00:57:39,730 Un, ja viens miljards cilvēku, tad turpināt lejupielādēt mājas lapā, kas dienā, 904 00:57:39,730 --> 00:57:42,060 cik daudz vairāk datu esat pārraida internetā? 905 00:57:42,060 --> 00:57:45,200 Gigabaitu nesaprotamu iemeslu dēļ. 906 00:57:45,200 --> 00:57:48,510 Un piešķirts, par daudz mājas lapas tas nav tik pielāgojamiem jautājums, 907 00:57:48,510 --> 00:57:51,030 bet Facebook, Google, lai dažas no populārākajām mājas lapām 908 00:57:51,030 --> 00:57:54,860 tur ir liels stimuls, finansiāli, lai padarītu jūsu kods izskatās haoss 909 00:57:54,860 --> 00:57:58,980 tāpēc, ka jūs izmantojat kā daži baiti iespējas papildus tam saspiežot to 910 00:57:58,980 --> 00:58:01,500 izmantojot kaut ko līdzīgu zip, algoritms sauc gzip, 911 00:58:01,500 --> 00:58:04,250 ka pārlūks automātiski. Bet tas ir šausmīgi. 912 00:58:04,250 --> 00:58:08,060 Mēs nekad uzzināt kaut ko par citu cilvēku mājas lapas, un to, kā veidot web lapas 913 00:58:08,060 --> 00:58:09,680 ja mums ir jāskatās uz to, kā šis. 914 00:58:09,680 --> 00:58:13,620 >> Tāpēc par laimi, pārlūkprogrammas kā Chrome un IE un Firefox šajās dienās 915 00:58:13,620 --> 00:58:16,450 parasti nāk ar iebūvētu izstrādātāja rīkiem. 916 00:58:16,450 --> 00:58:21,730 Patiesībā, ja man iet uz leju šeit Pārbaudiet elements vai, ja es dodos apskatīt, Developer, 917 00:58:21,730 --> 00:58:25,220 un iet uz izstrādātāju rīki skaidri, 918 00:58:25,220 --> 00:58:27,640 šis apakšā mana ekrāna logs tagad izlec. 919 00:58:27,640 --> 00:58:31,230 Tas nedaudz biedējoša sākumā, jo tur ir par svešiem cilnēm daudz šeit, 920 00:58:31,230 --> 00:58:34,510 bet, ja es noklikšķiniet uz Elements visu ceļu apakšā pa kreisi, 921 00:58:34,510 --> 00:58:38,810 Chrome ir acīmredzami diezgan gudrs. Tā zina, kā interpretēt visu kodu. 922 00:58:38,810 --> 00:58:42,320 Un tā, kādi Chrome tas ir tas attīra visas Facebook HTML. 923 00:58:42,320 --> 00:58:45,680 Kaut gan tur nav atstarpes tur, tur nav atkāpes tur, 924 00:58:45,680 --> 00:58:51,120 tagad paziņojums, ka es varētu sākt, lai virzītos šo mājas lapu visu vēl hierarhiski. 925 00:58:51,120 --> 00:58:56,910 Izrādās, ka katrs interneta lapā rakstīts valodā sauc HTML5 vajadzētu sākt ar šo, 926 00:58:56,910 --> 00:59:03,980 Šī DOCTYPE deklarāciju, lai runāt: 927 00:59:03,980 --> 00:59:07,840 Tas ir sava veida gaismas un pelēks tur, bet tas ir ļoti pirmajā rindā kodu šajā failā, 928 00:59:07,840 --> 00:59:12,080 un ka tikai stāsta pārlūku, "Hei, šeit nāk daži HTML5 Te nāk mājas lapā.". 929 00:59:12,080 --> 00:59:18,490 Pirmais atklātais kronšteins tālāk kas notiek, ir tas pats, atvērta iekava HTML tagu, 930 00:59:18,490 --> 00:59:22,320 un tad, ja es ienirt dziļāk - šīs bultas ir pilnīgi bezjēdzīga; 931 00:59:22,320 --> 00:59:25,140 tie ir tikai prezentācijas labad, tie nav reāli failā - 932 00:59:25,140 --> 00:59:30,300 pamanīt, ka iekšpuses Facebook HTML tagu, kaut kas sākas ar atvērtu kronšteinu 933 00:59:30,300 --> 00:59:32,910 un tad ir vārds sauc tag. 934 00:59:32,910 --> 00:59:38,610 Tātad iekšā HTML tagu acīmredzot galva tagu un ķermeņa tag. 935 00:59:38,610 --> 00:59:41,930 Iekšpusē no galvas tag tagad ir viss haoss Facebook 936 00:59:41,930 --> 00:59:45,620 jo tie ir daudz metadatu un citas lietas, par mārketingu un reklāmu. 937 00:59:45,620 --> 00:59:50,600 >> Bet, ja mēs ritinātu uz leju, uz leju, uz leju, uz leju, pieņemsim redzēt, kur tas ir. Šeit tā ir. 938 00:59:50,600 --> 00:59:52,210 Tas viens ir vismaz nedaudz pazīstami. 939 00:59:52,210 --> 00:59:55,990 Nosaukums Facebook mājas lapā, ja jūs kādreiz skatīties cilnē jūsu virsrakstjoslas, 940 00:59:55,990 --> 00:59:59,060 ir Laipni lūdzam Facebook - Pieteikties, Reģistrēties vai Uzzini vairāk. 941 00:59:59,060 --> 01:00:01,110 Tas, ko jūs varētu redzēt Chrome virsrakstjoslā, 942 01:00:01,110 --> 01:00:03,100 un tas, kā tas ir pārstāvēta kodu. 943 01:00:03,100 --> 01:00:08,090 Ja mēs ignorēt viss pārējais galvā, lielākā daļa no mājas lapas iekšām ir organismā, 944 01:00:08,090 --> 01:00:10,940 un izrādās, ka Facebook kods ir gatavojas izskatās sarežģītāka 945 01:00:10,940 --> 01:00:14,540 kā vairums lietas mēs rakstīt sākotnēji tikai tāpēc, ka tas ir bijis izveidojusies gadu gaitā, 946 01:00:14,540 --> 01:00:17,260 bet tur viss daudz skriptu tagiem, JavaScript kodu, 947 01:00:17,260 --> 01:00:18,870 kas padara tīmekļa vietne ir ļoti interaktīva: 948 01:00:18,870 --> 01:00:22,330 redzot statusa atjauninājumus uzreiz valodās, piemēram, JavaScript. 949 01:00:22,330 --> 01:00:25,270 Tur ir kaut ko sauc div, kas ir sadalījums lapā. 950 01:00:25,270 --> 01:00:27,940 Bet, pirms mēs nokļūt šajā detaļām, pieņemsim mēģināt tālinātu 951 01:00:27,940 --> 01:00:31,920 un apskatīt vienkāršāku versiju Facebook 1,0, lai runāt. 952 01:00:31,920 --> 01:00:34,740 Šeit ir sveiki, pasaules interneta lapas. 953 01:00:34,740 --> 01:00:37,370 Tā ir, ka DOCTYPE deklarāciju ļoti top 954 01:00:37,370 --> 01:00:40,280 kas ir nedaudz atšķiras no viss pārējais. 955 01:00:40,280 --> 01:00:46,130 Nekas cits mums rakstīt mājas lapā gatavojas sākt ar 01:00:48,880 un izņemot kaut ko sauc komentārus HTML. 957 01:00:48,880 --> 01:00:53,000 Bet lielākā daļa, viss kas mājas lapā ir atvērta kronšteinu, atslēgvārda, tuvu kronšteins. 958 01:00:53,000 --> 01:00:56,220 >> Šajā gadījumā jūs varat redzēt vienkāršākais interneta lapas iespējams. 959 01:00:56,220 --> 01:01:00,260 HTML tags satur galvas tagu un tā satur ķermeņa tag, 960 01:01:00,260 --> 01:01:04,580 bet paziņo, ka tur ir tas sākuma un apstāšanās tagus jēdziens. 961 01:01:04,580 --> 01:01:11,360 Tas ir sākums tagu HTML, tas ir tuvu tag vai beigu tags. 962 01:01:11,360 --> 01:01:15,400 Ievērojiet, ka viņi veida pretstati tādā nozīmē, ka tuvu tag vai beigu tags 963 01:01:15,400 --> 01:01:20,030 ir šī priekšu slīpsvītra iekšpusē sevi. 964 01:01:20,030 --> 01:01:23,540 Tikmēr, tur atvērtas virsas tags šeit un cieša galvas tagu šeit. 965 01:01:23,540 --> 01:01:26,880 >> Ir atvērts virsraksts un cieša nosaukums tag šeit. 966 01:01:26,880 --> 01:01:29,850 Tas, ka es esmu likts titulu vienā rindā, tīri patvaļīgu. 967 01:01:29,850 --> 01:01:33,760 Tas tikai izskatījās kā tas būtu fit labi vienā rindā, tāpēc man nav apnikt hitting Enter pāris reizes. 968 01:01:33,760 --> 01:01:38,200 Tikmēr, ķermenis man bija ievilkumā tikai lai kādreiz tik skaidra. 969 01:01:38,200 --> 01:01:41,050 Ievērojiet, ka HTML ir diezgan muļķīgi valodā. 970 01:01:41,050 --> 01:01:43,410 Faktiski, atpakaļ dienā pirms bija WYSIWYG redaktori 971 01:01:43,410 --> 01:01:46,770 un Microsoft Word, kur jūs varat teikt: "Padari šo drosmīgs, padarīt šo slīprakstu," 972 01:01:46,770 --> 01:01:50,850 jūs tiešām rakstīt maz komandas esejas 20 + gadiem 973 01:01:50,850 --> 01:01:55,740 kurā jūs teiktu, "Start padarot šo tekstu treknrakstā Pietura padarot šo tekstu treknrakstā.". 974 01:01:55,740 --> 01:01:59,010 "Sāciet Šis teksts kursīvā Pietura padarot šis teksts kursīvā.". 975 01:01:59,010 --> 01:02:01,850 >> Tas, ko HTML vai kāda iezīmēšanas valoda ir. 976 01:02:01,850 --> 01:02:05,530 Šis pirmais tag saka: "Hei, pārlūku. Te nāk mazliet HTML." 977 01:02:05,530 --> 01:02:09,880 Nākamais tag saka: "Hei, pārlūku. Te nāk galvu, iesākums manas mājas lapā." 978 01:02:09,880 --> 01:02:11,650 "Hei, pārlūka. Te nāk titulu." 979 01:02:11,650 --> 01:02:15,880 Un tad vairāk nekā šeit, "Hei, pārlūku. Tas ir tas par titulu." 980 01:02:15,880 --> 01:02:20,000 Tātad tas ir, kā pārlūkprogramma zina vairs parādītu vairāk rakstzīmes, nekā sveiki, pasaule 981 01:02:20,000 --> 01:02:21,860 nosaukuma joslā. 982 01:02:21,860 --> 01:02:23,640 Tikmēr, šis saka: "Tas ir tas uz galvas." 983 01:02:23,640 --> 01:02:28,340 Šis saka: "Te nāk ķermeņa Šeit ir aktuālā ķermeņa." - Burtiski, vārdi sveiki, pasaule. 984 01:02:28,340 --> 01:02:33,190 Un tas saka šeit, "Tas ir tas, lai ķermeni Tas ir tas par HTML.". 985 01:02:33,190 --> 01:02:34,640 Tātad pārlūkprogrammas ir diezgan muļķīgi. 986 01:02:34,640 --> 01:02:39,920 Viņi vienkārši lasīt šito augšas uz apakšu, no kreisās uz labo un darīt tieši to, ko viņi ir teicis darīt. 987 01:02:39,920 --> 01:02:41,860 Pieņemsim patiesībā darīt nedaudz piemēru šeit. 988 01:02:41,860 --> 01:02:46,240 Ļaujiet man atvērt vienkāršāko programmu par manu Mac šeit, proti TextEdit. 989 01:02:46,240 --> 01:02:48,220 Uz Windows jūs varētu izmantot notepad.exe. 990 01:02:48,220 --> 01:02:50,520 Bet tas ir viss, kas jums nepieciešams, lai sāktu īstenot mājas lapas. 991 01:02:50,520 --> 01:02:53,730 Es iešu uz priekšu un vienkārši nokopēt un ielīmēt šo kodu šajā failā. 992 01:02:53,730 --> 01:02:57,210 Es iešu uz priekšu un saglabājiet to uz mana galda, 993 01:02:57,210 --> 01:03:01,220 un es esmu gatavojas, lai saglabātu to kā hello.html, 994 01:03:01,220 --> 01:03:03,840 un tagad fails ir nosaukts hello.html. 995 01:03:03,840 --> 01:03:05,690 Šeit tas ir uz mana galda. 996 01:03:05,690 --> 01:03:11,130 Ļaujiet man tagad iet uz pārlūku un velciet failu pārlūkā. 997 01:03:11,130 --> 01:03:14,060 Un voila, šeit ir mana pirmā mājas lapā. 998 01:03:14,060 --> 01:03:17,340 Ievērojat, ka tab nosaukums ir sveiki, pasaule kā vienu nosaukumu tag, 999 01:03:17,340 --> 01:03:20,040 un paziņojums, ka sveiki, pasaule ir iestāde manā mājas lapā, 1000 01:03:20,040 --> 01:03:22,190 un bildināt-hoo, es esmu par internetu. 1001 01:03:22,190 --> 01:03:24,700 >> Es neesmu īsti, pareizi, jo tas fails nav internetā. 1002 01:03:24,700 --> 01:03:28,330 Tas notiek, ir uz manu vietējo cieto disku tajā konkrētā ceļa. 1003 01:03:28,330 --> 01:03:32,720 Bet ideja ir tāda pati. Viss, kas mums tagad ir vajadzīgs web serveri, uz kuru augšupielādēt to. 1004 01:03:32,720 --> 01:03:37,410 Bet vispirms pieņemsim faktiski ieviest nedaudz vairāk sarežģītību un nedaudz vairāk stilizācija. 1005 01:03:37,410 --> 01:03:39,890 Tas ir vienkāršs, ja garlaicīgi, web lapas. 1006 01:03:39,890 --> 01:03:41,990 Izrādās, ka ir arī citi veidi, tags mēs varam izmantot. 1007 01:03:41,990 --> 01:03:45,530 Piemēram, šeit dzeltenā es esmu ieviesusi 2 jaunas tagus. 1008 01:03:45,530 --> 01:03:49,630 Mēs ne spēlēt daudz ar šīm šodien, bet paziņo, ka saikne tagu 1009 01:03:49,630 --> 01:03:52,520 kaut izskatās atšķiras no visu pārējo. 1010 01:03:52,520 --> 01:03:55,370 Saikne tag ņem to, ko sauc atribūti, 1011 01:03:55,370 --> 01:03:59,770 un atribūts ir kaut kas maina uzvedību tag. 1012 01:03:59,770 --> 01:04:03,840 Šajā gadījumā tas nav labākā izvēle vārdiem, saite, jo tas ir sava veida bezjēdzīga, 1013 01:04:03,840 --> 01:04:11,590 bet šo saiti tagu saka, būtībā ietver failu ar nosaukumu styles.css iekšā manā mājas lapā. 1014 01:04:11,590 --> 01:04:15,400 Jūs varat domāt par to kā analogs C ir # ietvert direktīvu. 1015 01:04:15,400 --> 01:04:19,650 Styles.css atsaucas uz citu valodu, vispār, ka mēs nevarēsim spēlēt ar šodien, 1016 01:04:19,650 --> 01:04:23,790 bet tas ir par estētiku: fonta izmēru, krāsu, polsterējums, līdzinājums, uzcenojumi, 1017 01:04:23,790 --> 01:04:26,040 un visi šāda veida estētikas detaļām. 1018 01:04:26,040 --> 01:04:28,820 Tikmēr, skripts tag ir funkcionāli līdzīgi, 1019 01:04:28,820 --> 01:04:33,140 bet nevis ietilpst CSS, ka valoda, tā ietver citu valodu, JavaScript. 1020 01:04:33,140 --> 01:04:37,810 Tātad citiem vārdiem sakot, ar šiem 2 tagiem es vēlāk viņam būs iespēja rakstīt savu mājas lapu 1021 01:04:37,810 --> 01:04:41,490 bet arī ieraut kods, kas es vai kāds cits ir rakstījis 1022 01:04:41,490 --> 01:04:44,350 lai mēs varētu stāvēt uz citu cilvēku pleciem, mēs varam prakse labu dizainu, 1023 01:04:44,350 --> 01:04:46,120 faktorings veic kopīgu kodu. 1024 01:04:46,120 --> 01:04:49,090 Ja man 10 dažādas mājas lapas, tas nozīmē, ka daži no maniem estētikas 1025 01:04:49,090 --> 01:04:52,490 var ņemt ārā, līdzīgi # ietvert atsevišķā failā. 1026 01:04:52,490 --> 01:04:54,420 Tāpēc mēs esam iegūt tur. 1027 01:04:54,420 --> 01:04:57,180 Bet pieņemsim patiesībā vispirms darīt kaut ko interesantu ar šo failu. 1028 01:04:57,180 --> 01:05:01,110 >> Atkal, tas ir tikai TextEdit. Es neesmu tehniski internetā vēl, bet mēs tur nokļūt. 1029 01:05:01,110 --> 01:05:04,910 Es gribētu, lai sveiki, pasaule nedaudz drosmīgāki nekā tas ir. 1030 01:05:04,910 --> 01:05:10,890 Tātad sveiki, pieņemsim patvaļīgi teikt par drosmīgu. 1031 01:05:10,890 --> 01:05:15,910 Atkal, stāsts ir tāds pats: Sveiki, komats, sākt padarot šo drosmīgs, 1032 01:05:15,910 --> 01:05:19,730 tad pasaule kļūst treknrakstā, un tas nozīmē apturēt drukāšanu tas treknrakstā. 1033 01:05:19,730 --> 01:05:24,020 Ļaujiet man iet uz priekšu un saglabāt manu failu, dodieties atpakaļ uz Chrome, es ņemšu tuvināt tikai tā mēs varam redzēt labāk, 1034 01:05:24,020 --> 01:05:27,870 un pārlādēt, un jūs redzēsiet, ka pasaule tagad ir treknrakstā. 1035 01:05:27,870 --> 01:05:31,810 Web ir visu par hipersaitēm, tāpēc pieņemsim iet uz priekšu un darīt: 1036 01:05:31,810 --> 01:05:38,550 mana mīļākā mājas lapa ir, teiksim, youtube.com. 1037 01:05:38,550 --> 01:05:43,810 Saglabāt, pārlādēt. Labi. Ir pāris problēmas tagad Līdztekus hideousness mājas lapā. 1038 01:05:43,810 --> 01:05:47,310 1, es esmu diezgan pārliecināts, ka es hit Enter šeit. Un es to darīju. 1039 01:05:47,310 --> 01:05:51,590 Es ne tikai hit Enter, es arī atkāpi, praktizē to, ko mēs esam sludināja par stilu, 1040 01:05:51,590 --> 01:05:54,930 bet mana ir tieši blakus pasaulei. 1041 01:05:54,930 --> 01:05:58,410 Tātad, kāpēc tas ir? Pārlūkprogrammas darīt tikai to, ko jums pateikt viņiem darīt. 1042 01:05:58,410 --> 01:06:04,010 Es neesmu teicis pārlūku, "Break līnijas šeit ievietot punkts pārtraukuma šeit.". 1043 01:06:04,010 --> 01:06:07,820 Tātad pārlūku, tas nav svarīgi, ja es hit atpakaļ 30 reizes, 1044 01:06:07,820 --> 01:06:10,820 tas joprojām gatavojas nodot savas tiesības blakus pasaulei. 1045 01:06:10,820 --> 01:06:15,930 Ko es tiešām ir jādara, šeit ir teikt kaut ko līdzīgu
, ievietotu rindiņas pārtraukumu. 1046 01:06:15,930 --> 01:06:17,940 >> Un tiešām, līnija pārtraukums ir veida dīvaini lieta 1047 01:06:17,940 --> 01:06:21,650 jo jūs nevarat tiešām sāk pārvietojas uz citu līniju, tad kaut ko darīt, 1048 01:06:21,650 --> 01:06:25,380 un tad apstāties uz jaunu rindu. Tas ir sava veida atomu darbību. 1049 01:06:25,380 --> 01:06:28,140 Jūs vai nu to, vai jums nav. Jūs hit Enter, vai jums nav. 1050 01:06:28,140 --> 01:06:33,390 Tātad br ir mazliet atšķirīgu tagu, un tāpēc man ir nepieciešams, lai sakārtotu gan no atvērt un aizvērt 1051 01:06:33,390 --> 01:06:35,230 visu uzreiz. 1052 01:06:35,230 --> 01:06:37,500 Par to sintakse ir šis. 1053 01:06:37,500 --> 01:06:41,760 Tehniski, jūs varētu darīt kaut kas līdzīgs šim dažās HTML versijas, 1054 01:06:41,760 --> 01:06:45,600 bet tas ir tikai stulba, jo tur nav iemesls, lai sāktu un apturētu kaut 1055 01:06:45,600 --> 01:06:48,420 ja jūs varat, nevis darīt to visu uzreiz. 1056 01:06:48,420 --> 01:06:52,310 Saprast, ka HTML5 nav strikti nepieciešama šo slīpsvītru, 1057 01:06:52,310 --> 01:06:55,410 lai jūs redzēsiet mācību grāmatas un tiešsaistes resursus, kas nav tā, 1058 01:06:55,410 --> 01:06:59,780 bet labs pasākums pieņemsim praktizēt simetriju, ka mēs esam redzējuši līdz šim. 1059 01:06:59,780 --> 01:07:02,870 Tas nozīmē, ka tag ir gan atvērta un slēgta. 1060 01:07:02,870 --> 01:07:05,220 Tāpēc tagad ļaujiet man saglabāt manu failu, iet atpakaļ šeit. 1061 01:07:05,220 --> 01:07:10,240 Labi, tā tas sāk izskatīties labāk, izņemot Web es zinu ir veida klikšķināmos, 1062 01:07:10,240 --> 01:07:13,610 un vēl YouTube šeit, šķiet, nav radīt neko. 1063 01:07:13,610 --> 01:07:17,560 Tas ir tāpēc, ka, lai gan tas izskatās saiti, pārlūkprogramma nezina, ka par sevi, 1064 01:07:17,560 --> 01:07:20,670 tāpēc man ir pateikt pārlūku, ka tas ir saikne. 1065 01:07:20,670 --> 01:07:22,620 >> Veids, kā to izdarīt, ir izmantot enkura tagu: 1066 01:07:22,620 --> 01:07:26,770 01:07:35,900 = "Http://www.youtube.com"> 1068 01:07:35,900 --> 01:07:38,490 un ļaujiet man pāriet tas uz jaunu rindu tieši tāpēc nedaudz vairāk lasāms, 1069 01:07:38,490 --> 01:07:40,060 un es ņemšu sarauties burtu lielumu. 1070 01:07:40,060 --> 01:07:43,890 Es esmu darīts vēl? Nē Ir būs šis dalījums. 1071 01:07:43,890 --> 01:07:46,760 Šis tags, enkuru tag, patiešām ņem atribūtu, 1072 01:07:46,760 --> 01:07:52,900 kas maina savu uzvedību, un šī atribūta vērtība ir acīmredzami YouTube URL. 1073 01:07:52,900 --> 01:07:56,380 Bet paziņojums dihotomiju, ka tikai tāpēc, ka ir URL jūs gatavojas, 1074 01:07:56,380 --> 01:08:01,020 tas nenozīmē, ka ir jābūt vārdu, ka jūs uzsverot un izveidojot saikni. 1075 01:08:01,020 --> 01:08:03,960 Drīzāk, ka var būt kaut kas līdzīgs šim. 1076 01:08:03,960 --> 01:08:10,870 Tāpēc man jāsaka pārtraukt padarītu šo vārdu hipersaiti, izmantojot ciešu enkura tagu. 1077 01:08:10,870 --> 01:08:12,650 Paziņojums Es to nedaru. 1078 01:08:12,650 --> 01:08:15,890 1, tas būtu vienkārši atkritumi ikvienam laikā, un tas nav nepieciešams. 1079 01:08:15,890 --> 01:08:19,290 >> Lai aizvērtu tagu, jūs tikai pieminēt vārdu tag atkal. 1080 01:08:19,290 --> 01:08:21,800 Jums nav pieminēt kādu no atribūtiem. 1081 01:08:21,800 --> 01:08:26,189 Tāpēc pieņemsim ietaupīt, ka iet atpakaļ. Labi, voila, tagad tas ir zilā un hipersaitēm. 1082 01:08:26,189 --> 01:08:29,430 Ja es noklikšķiniet uz tā, es tiešām iet uz YouTube. 1083 01:08:29,430 --> 01:08:32,529 Tātad, pat ja mana web lapa nav internetā, tas ir vismaz HTML, 1084 01:08:32,529 --> 01:08:37,930 un ja mēs ļausim internets panākt, mēs faktiski galu galā šeit youtube.com. 1085 01:08:37,930 --> 01:08:40,670 Un es varētu doties atpakaļ un šeit ir mana mājas lapa. Bet nepamanīt. 1086 01:08:40,670 --> 01:08:43,120 Ja esat kādreiz gotten surogātpasta vai pikšķerēšanas uzbrukumu, 1087 01:08:43,120 --> 01:08:45,850 Tagad jums ir iespēja jau pēc piecām minūtēm darīt pats. 1088 01:08:45,850 --> 01:08:50,920 Mēs varam doties šeit un darīt kaut ko līdzīgu www.badguy.com 1089 01:08:50,920 --> 01:08:59,319 vai kāds paviršs mājas lapa ir, un tad jūs varat teikt pārbaudīt savu PayPal kontu. 1090 01:08:59,319 --> 01:09:04,840 [Smiekli] Un tagad tas ir gatavojas doties uz badguy.com, ko es neesmu gatavojas klikšķiniet uz 1091 01:09:04,840 --> 01:09:08,000 jo man nav ne jausmas, kur tas ved. [Smiekli] 1092 01:09:08,000 --> 01:09:10,859 >> Bet tagad mums ir iespēja tiešām galu galā tur. 1093 01:09:10,859 --> 01:09:12,640 Tātad mēs esam tiešām tikai sāk saskrāpēt virsmu. 1094 01:09:12,640 --> 01:09:15,830 Mēs esam ne programmēšanas per se, mēs rakstiski valodu. 1095 01:09:15,830 --> 01:09:18,569 Bet, tiklīdz mēs noapaļot savu leksiku HTML, 1096 01:09:18,569 --> 01:09:21,520 mēs ieviest PHP, faktiskā programmēšanas valodu 1097 01:09:21,520 --> 01:09:26,859 kas ļaus mums radīt HTML automātiski, ģenerēt CSS automātiski, 1098 01:09:26,859 --> 01:09:29,430 lai mēs varētu sākt trešdien ieviest, teiksim, 1099 01:09:29,430 --> 01:09:31,700 mūsu pašu meklētājprogrammu un vairāk. 1100 01:09:31,700 --> 01:09:34,770 Bet vairāk par to pēc pāris dienām. Mēs redzēsim jūs tam. 1101 01:09:34,870 --> 01:09:39,000 >> [CS50.TV]