1 00:00:00,000 --> 00:00:02,440 [Powered by Google Translate] [Wythnos 7] 2 00:00:02,440 --> 00:00:04,730 [David J. Malan - Harvard University] 3 00:00:04,730 --> 00:00:07,490 [Mae hyn yn CS50. - CS50.TV] 4 00:00:07,490 --> 00:00:12,280 Mae pob hawl. Croeso yn ôl. Mae hyn yn CS50, ac mae hyn yn dechrau wythnos 7. 5 00:00:12,280 --> 00:00:14,690 Mae cwpl o gyhoeddiadau bach: 6 00:00:14,690 --> 00:00:18,150 Pset5 yn awr ar y gweill, neu fydd cyn bo hir, 7 00:00:18,150 --> 00:00:21,590 a gadewch i mi ddweud, yn hollol onest, mae hyn yn tueddu i fod ymhlith y rhai mwyaf heriol 8 00:00:21,590 --> 00:00:24,460 o setiau problem y cwrs, felly gadewch i mi sôn am hyn yn awr 9 00:00:24,460 --> 00:00:28,190 fel bod yr wythnos hon yn fwy nag erioed nad ydych yn aros tan, dyweder, nos Fercher 10 00:00:28,190 --> 00:00:29,920 neu nos Iau i ddeifio i mewn 11 00:00:29,920 --> 00:00:32,369 Mae hyn yn bendant yn pset diddorol. Rydym yn credu ei fod yn hwyl. 12 00:00:32,369 --> 00:00:36,110 Os ydych mewn gwirionedd yn cael ei hollol gywir a gallant wedyn herio'r Bwrdd hyn a elwir yn Big, 13 00:00:36,110 --> 00:00:39,830 bydd gennych gyfle i gyd-fynd tennyn gyda rhai o staff y cwrs 14 00:00:39,830 --> 00:00:41,620 a bydd rhai o'ch cyd-ddisgyblion. 15 00:00:41,620 --> 00:00:44,670 Beth Mae'r Bwrdd Fawr yw yn ôl i chi gael eich gwirydd sillafu gweithio, 16 00:00:44,670 --> 00:00:48,860 byddwch yn gallu mynd i'r cs50.net ar ôl rhedeg gorchymyn, 17 00:00:48,860 --> 00:00:52,430 unig ddewis ymuno, ac wedyn faint o amser a faint o RAM a mwy o 18 00:00:52,430 --> 00:00:56,130 Bydd yr ydych wedi eu defnyddio yn eich weithredu yn cael ei arddangos yma ar dudalen gartref y cwrs. 19 00:00:56,130 --> 00:00:59,740 Byddwch yn sylwi bod criw cyfan o Folks hyn yma yn cael eu rhestru fel staff 20 00:00:59,740 --> 00:01:04,220 ers dros y penwythnos y staff yn meddwl y byddai'n hwyl i geisio gwneud yn well na'r gilydd. 21 00:01:04,220 --> 00:01:07,390 Felly yn sylweddoli nad yw'r nod yma yw gwneud yn well na'r i'r staff. 22 00:01:07,390 --> 00:01:09,790 Hyd yn oed fy mod yn unig yma yn rhif 13. 23 00:01:09,790 --> 00:01:13,790 Unig ddewis ymuno, ond ei fod yn gyfle i weld yn union pa mor RAM ychydig o 24 00:01:13,790 --> 00:01:16,790 a chyn lleied o eiliad CPU gallwch ddefnyddio vis-a-vis rhai o'ch cyd-ddisgyblion. 25 00:01:16,790 --> 00:01:20,540 >> A byddaf yn cyfaddef bod Michael Kevin Schmid, 26 00:01:20,540 --> 00:01:23,750 ar hyn o bryd mewn sefyllfa rhif 1 fel un o'r TFS, 27 00:01:23,750 --> 00:01:28,120 hwn yn gweithredu nad ydym yn galw bosibl 28 00:01:28,120 --> 00:01:32,700 ystyried ei fod wedi defnyddio bron i 0 RAM a bron 0 eiliad ar gyfer llwytho. 29 00:01:32,700 --> 00:01:35,670 Felly, byddwn yn cymryd gofalu am Kevin oddi ar lein. [Chwerthin] 30 00:01:35,670 --> 00:01:40,950 Mae rhai sgiliau fod Kevin yn rhoi i'r prawf yma. 31 00:01:40,950 --> 00:01:45,280 Un o'r pethau yr ydym yn meddwl y bydden ni'n ei wneud yn rhy yn awr CS50x yn wythnos ar y gweill, 32 00:01:45,280 --> 00:01:49,520 ac rydych guys yn gymaint rhan o'r arbrawf hwn gan y myfyrwyr hynny. 33 00:01:49,520 --> 00:01:53,720 Rydym wedi gofyn iddynt fel rhan o'u pset0, a oedd yn debyg i gyflwyno prosiect Scratch 34 00:01:53,720 --> 00:01:58,280 o ddiddordeb iddynt - gêm, yn ddarn o gelf ryngweithiol, animeiddiad, neu bethau tebyg - 35 00:01:58,280 --> 00:02:03,700 1 - fideo i 2-funud, os hoffent, gan ddweud helo wrth y byd a pwy ydynt mewn gwirionedd. 36 00:02:03,700 --> 00:02:06,780 Rwy'n meddwl y byddwn i'n rhannu gyda chi ond ychydig o'r fideos sydd wedi eu cyflwyno hyd yn hyn 37 00:02:06,780 --> 00:02:10,759 oherwydd i ni ar y staff o leiaf 'n sylweddol wedi bod yn gyffrous 38 00:02:10,759 --> 00:02:14,220 ac yn ysbrydoliaeth i weld y Folks o bob cwr o'r byd - o wledydd ledled y byd - 39 00:02:14,220 --> 00:02:18,160 tiwnio i mewn, pob peth, i gyfrifiadur cwrs gwyddoniaeth ar y Rhyngrwyd, 40 00:02:18,160 --> 00:02:20,410 boed hynny am eu bod am barhau â'u hastudiaethau eu hunain, 41 00:02:20,410 --> 00:02:22,300 maent yn awyddus i gymryd eu gyrfaoedd i gyfeiriad newydd, 42 00:02:22,300 --> 00:02:24,390 maent yn awyddus i lenwi bylchau yn eu gwybodaeth eu hunain, 43 00:02:24,390 --> 00:02:27,190 felly mae rhai o'r rhesymau ag yr ydych yn guys efallai wedi bod yma. 44 00:02:27,190 --> 00:02:31,090 >> Felly, yr wyf yn rhoi i chi 1 myfyriwr o'r fath yma. Gallech godi'r gyfrol dim ond ychydig bach. 45 00:02:31,090 --> 00:02:35,520 Dyma un o'n myfyriwr 1-munud cyflwyniadau. 46 00:02:35,520 --> 00:02:40,380 Helo, byd. Rwy'n fyfyriwr o beirianneg ddiwydiannol yma yn Malaga, Sbaen. 47 00:02:40,380 --> 00:02:45,840 Rwy'n edrych ymlaen am y cwrs ar-lein oherwydd fy mod yn caru gwyddoniaeth gyfrifiadurol, Fi 'n sylweddol ei wneud, 48 00:02:45,840 --> 00:02:48,880 ac yr wyf wir yn gwerthfawrogi fy mod yn cael ei archwilio. 49 00:02:48,880 --> 00:02:51,940 Ac mae'r ffaith mod i'n gallu dysgu yr un fath bob un ohonoch guys yn ei wneud 50 00:02:51,940 --> 00:02:57,040 ond yn hytrach na bod yn Harvard Yr wyf yn Malaga, pa mor wych yw hynny? 51 00:02:57,040 --> 00:03:02,040 Wel, yr wyf Fernando, ac mae hyn yn CS50. Welwn ni chi guys. 52 00:03:02,040 --> 00:03:07,100 [Chwerthin] arall clip rydym yn arbennig o hoff, fe welwch nad Saesneg y gwr hwn yw mor gryf. 53 00:03:07,100 --> 00:03:11,520 Mae'n edrych fel ei fod wedi ei beiriant cyfieithu, felly mae'r cyfieithiadau eu hunain yn ychydig yn amherffaith, 54 00:03:11,520 --> 00:03:15,790 ond roedd hyn yn un o'n ffefrynnau hyd yn hyn yn ogystal. 55 00:03:25,080 --> 00:03:29,980 [♪ ♪] 56 00:03:29,980 --> 00:03:32,370 Helo, byd. [Yn siarad yn Siapan] 57 00:03:32,370 --> 00:03:39,830 [Rhaid i mi gyfarch yn Siapan oherwydd bod fy Saesneg yn annibynadwy iawn.] 58 00:03:39,830 --> 00:03:45,380 [Rwyf wedi cyflwyno'r neges i chi gan y ddinas Gifu, Japan.] 59 00:03:45,380 --> 00:03:49,820 [Gallaf fod yn fyfyriwr am y tro cyntaf mewn 20 mlynedd, fel y gellir gweld.] 60 00:03:49,820 --> 00:03:54,640 [Yr wyf yn ddiolchgar iawn i Brifysgol Harvard a roddodd i mi y cyfle hwn ac EDX.] 61 00:03:54,640 --> 00:04:01,510 [Mae golff yn gitâr a fy hoff beth yn rhedeg.] [Chwerthin] 62 00:04:01,510 --> 00:04:05,750 [♪ ♪] 63 00:04:05,750 --> 00:04:10,790 [Pam ydych chi'n meddwl fy mod yn ceisio i fynychu cs50x.] 64 00:04:10,790 --> 00:04:14,990 [Prifysgol Harvard, mae fy hiraeth.] 65 00:04:14,990 --> 00:04:19,740 [Yn enwedig os ydw i'n presenoldeb bell yn byw yn Japan.] 66 00:04:19,740 --> 00:04:26,680 [Roeddwn i eisiau i roi cynnig ar unwaith yn ymwybodol o fodolaeth EDX o'r fath pryd.] 67 00:04:26,680 --> 00:04:32,500 [Peidiwch â ydych yn meddwl fel nad ydych yn berthnasol i oed dysgu I.] 68 00:04:32,500 --> 00:04:38,350 [Cs50 yw fy hiraeth. Fy enw i yw Kazu, ac mae hyn yn cs50.] 69 00:04:38,350 --> 00:04:43,090 [♪ ♪] [gymeradwyaeth a bloeddio] 70 00:04:43,090 --> 00:04:49,220 Ffefryn arall o ni oedd y cyflwyniad yma o rywun. 71 00:04:51,070 --> 00:04:55,380 [♪ ♪] [Malan] Google os ydych yn anghyfarwydd â hyn meme. 72 00:04:55,380 --> 00:05:01,480 >> Ac yna yn olaf, un neu ddau o bobl eraill a gafodd eu postio efallai ennill y wobr annwyl. 73 00:05:01,480 --> 00:05:06,820 [Myfyrwyr] Aww! >> [Malan] Bydd yn rhaid i wrando. Mae hyn yn fyr, felly gwrandewch yn ofalus. 74 00:05:08,580 --> 00:05:11,150 [Siaradwr benywaidd] Beth yw eich enw? >> Louie. 75 00:05:11,150 --> 00:05:16,120 [Siaradwr benywaidd] Beth ydyn nhw? >> [Chwerthin] CS50. [Chwerthin] 76 00:05:16,120 --> 00:05:19,510 [Malan] Gwnaeth 2 yn cymryd, er. 77 00:05:19,510 --> 00:05:22,240 Yma rydym yn mynd, yr olaf. 78 00:05:23,030 --> 00:05:26,980 Fy enw i yw Louie, ac mae hyn yn CS50. 79 00:05:26,980 --> 00:05:30,250 [Chwerthin] Mae hyn wedyn yn CS50x. 80 00:05:30,250 --> 00:05:33,230 Diolch i bawb ohonoch tra'n dilyn ar hyd yn y cartref 81 00:05:33,230 --> 00:05:35,620 sydd wedi bod yn cymryd rhan hyd yma. 82 00:05:35,620 --> 00:05:39,510 Heddiw rydym yn dod i'r casgliad ein trafodaeth o strwythurau data, 83 00:05:39,510 --> 00:05:41,160 o leiaf rai o'r mwyaf sylfaenol, 84 00:05:41,160 --> 00:05:44,760 ac yna rydym yn parhau ein sgwrs am HTML ac ar y we rhaglennu. 85 00:05:44,760 --> 00:05:48,520 Yn wir, rydym wedi gwario y gorffennol mae rhai 7 wythnos yn edrych ar hanfodion rhaglennu - 86 00:05:48,520 --> 00:05:50,450 algorithmau, strwythurau data, ac ati - 87 00:05:50,450 --> 00:05:53,050 a C, oherwydd efallai y byddwch wedi cael profiad hyd yn hyn, 88 00:05:53,050 --> 00:05:57,060 Nid yw anghenraid yr un mwyaf hygyrch o ieithoedd 89 00:05:57,060 --> 00:05:59,090 y mae i weithredu rhai o'r syniadau hynny. 90 00:05:59,090 --> 00:06:01,880 Ac felly yn dechrau yr wythnos hon a'r wythnos nesaf, ac yna y canlynol, 91 00:06:01,880 --> 00:06:07,110 byddwn o'r diwedd yn gallu symud o C, a elwir yn gyffredinol fel iaith gweddol lefel isel, 92 00:06:07,110 --> 00:06:11,190 i bethau lefel uwch, yn eu plith PHP, JavaScript, ac ati, 93 00:06:11,190 --> 00:06:14,850 y byddwn yn gweld tynnu ar yr un gwersi yr ydym wedi dysgu dros yr wythnosau diwethaf, 94 00:06:14,850 --> 00:06:19,430 ond fe welwch fod datgan pethau fel araeau a thablau hash a chwilio a didoli 95 00:06:19,430 --> 00:06:23,370 dod yn gymaint yn haws oherwydd bod yr ieithoedd eu hunain byddwn yn dechrau defnyddio 96 00:06:23,370 --> 00:06:25,290 yn dod yn fwy pwerus. 97 00:06:25,290 --> 00:06:27,410 Ond yn gyntaf, cais o goed. 98 00:06:27,410 --> 00:06:30,240 Mae'n gyffredin iawn y dyddiau hyn i angen i gywasgu gwybodaeth. 99 00:06:30,240 --> 00:06:34,770 Ym mha gyd-destun ydych am ei cywasgu rhyw fath o wybodaeth ddigidol? 100 00:06:37,190 --> 00:06:39,670 >> Yeah. >> [Myfyrwyr] Pan fydd angen i chi ei anfon dros y We. 101 00:06:39,670 --> 00:06:41,450 Yeah, pan fyddwch eisiau anfon rhywbeth dros y We. 102 00:06:41,450 --> 00:06:44,950 Os ydych am i lawrlwytho ffeil fawr, mae'n ddelfrydol os bydd rhywun ar y pen arall 103 00:06:44,950 --> 00:06:48,760 wedi cywasgu y ffeil gan ddefnyddio fformat zip neu rywbeth fel 'na 104 00:06:48,760 --> 00:06:53,760 fel eich bod yn anfon llai o darnau na'r hyn y gellid fel arall gael ei drosglwyddo. 105 00:06:53,760 --> 00:06:55,500 Felly, sut ydych chi'n cywasgu gwybodaeth? 106 00:06:55,500 --> 00:07:00,540 Mae i gyd yn boils i lawr i ddefnyddio darnau llai na'r hyn sy'n ofynnol yn ddiofyn. 107 00:07:00,540 --> 00:07:03,220 Ond mae hyn yn fath o beth rhyfedd oherwydd bod yn meddwl yn ôl i'r wythnos 0 ac 1 108 00:07:03,220 --> 00:07:07,370 pan fyddwn yn siarad am ASCII a deuaidd a buom yn siarad am ASCII yn arbennig 109 00:07:07,370 --> 00:07:10,690 fel gan ddefnyddio 8 did i gynrychioli llythrennau'r wyddor 110 00:07:10,690 --> 00:07:16,120 fel bod y llythyren A yn cael ei gynrychioli gan 65, lythrennau bach a yw nifer 97, 111 00:07:16,120 --> 00:07:21,210 a sut bynnag y ydych yn cynrychioli y 65 neu 97, ydych chi'n defnyddio 7 neu 8 did. 112 00:07:21,210 --> 00:07:24,120 Ond y ddalfa yw bod rhai llythrennau yn yr wyddor Saesneg 113 00:07:24,120 --> 00:07:26,230 nad ydynt mor boblogaidd ag eraill. 114 00:07:26,230 --> 00:07:31,600 Nid Z yw'r cyfan sydd poblogaidd, nid Q yw'r cyfan sydd poblogaidd, ond A ac E yn super poblogaidd. 115 00:07:31,600 --> 00:07:37,280 Ac eto ar gyfer pob un o'r llythyrau hyn, yn ddiofyn yn y byd yn defnyddio'r un nifer o ddarnau, dim ond 8. 116 00:07:37,280 --> 00:07:42,690 Felly, ni fyddai wedi bod yn fwy craff os yn hytrach na gan ddefnyddio 8 did i bob llythyr, 117 00:07:42,690 --> 00:07:47,440 hyd yn oed y mwyaf defnyddio'n aml fel Q a Z, 118 00:07:47,440 --> 00:07:51,910 beth os ydym yn defnyddio darnau llai o A ac E a S a'r llythyrau mwyaf poblogaidd 119 00:07:51,910 --> 00:07:55,000 ac yn defnyddio darnau mwy am y llythyrau yn llai poblogaidd, 120 00:07:55,000 --> 00:07:57,770 y syniad yw gadewch i optimize ar gyfer yr achos cyffredin, 121 00:07:57,770 --> 00:08:01,160 sy'n thema mewn gwyddoniaeth gyfrifiadurol o geisio gwneud y gorau beth sy'n mynd i ddigwydd y rhan fwyaf o 122 00:08:01,160 --> 00:08:05,310 ac yn treulio ychydig mwy o amser, ychydig o le mwy ar y pethau sydd, ie allai, yn digwydd 123 00:08:05,310 --> 00:08:07,680 ond nid o reidrwydd mor aml. 124 00:08:07,680 --> 00:08:09,330 Felly, gadewch i ni gymryd enghraifft. 125 00:08:09,330 --> 00:08:12,610 >> Tybiwch ein bod yn awyddus i amgodio gwybodaeth gymharol effeithiol. 126 00:08:12,610 --> 00:08:15,090 Efallai eich bod wedi tyfu i fyny yn gwybod rhywbeth ychydig am côd Morse, 127 00:08:15,090 --> 00:08:17,450 ac groes yn nad ydych yn gwybod y cod ei hun, 128 00:08:17,450 --> 00:08:21,750 ond efallai y byddwch yn cofio ei fod yn o leiaf y gyfres hon o dotiau a llinellau toriad. 129 00:08:21,750 --> 00:08:26,640 Mae hwn yn codio yn eithaf effeithlon, a rhybudd bod y llythyr mwyaf poblogaidd - er enghraifft, E - 130 00:08:26,640 --> 00:08:28,980 defnyddio byrraf o beeps. 131 00:08:28,980 --> 00:08:31,740 Côd Morse yn ymwneud â Canu-Canu Canu-Canu-Canu-Canu-a chynnal tonau 132 00:08:31,740 --> 00:08:34,799 naill ai am gyfnodau byr o amser neu gyfnodau hir o amser. 133 00:08:34,799 --> 00:08:40,330 E, a nodir gan y dot, yn bîp byr super, dim ond sŵn, ac y byddai yn cynrychioli E. 134 00:08:40,330 --> 00:08:43,960 Ar y llaw arall, byddai T yn bîp hwy, fel beep [yn ymestyn gadarn], 135 00:08:43,960 --> 00:08:45,710 a fyddai'n cynrychioli T. 136 00:08:45,710 --> 00:08:48,840 Ond mae hynny'n dal i fod yn eithaf byr oherwydd, ar y llaw arall, os ydych yn edrych ar Z, 137 00:08:48,840 --> 00:08:52,690 i fynegi Z fyddech yn mynd Canu, beep [hirach sain], Canu, Canu [sain byrrach]. 138 00:08:52,690 --> 00:08:55,360 Felly, bydd yn hwy oherwydd ei fod yn llai cyffredin. 139 00:08:55,360 --> 00:08:58,150 Ond mae'r Gotcha yma yw bod côd Morse yn ychydig yn ddiffygiol 140 00:08:58,150 --> 00:09:00,610 gan nad yw'n syth decodable. 141 00:09:00,610 --> 00:09:07,350 Er enghraifft, mae'n debyg eich bod yn clywed ar rai ddiwedd y Canu wifren [byr], Canu [hir]. 142 00:09:07,350 --> 00:09:12,480 Pa neges oedd Fi jyst ei dderbyn? Mae dot a llinell doriad. Beth mae hynny'n ei gynrychioli? 143 00:09:12,480 --> 00:09:15,330 [Myfyrwyr] A. >> [Malan] Efallai. 144 00:09:15,330 --> 00:09:18,270 Gallai hefyd fod yn E ddilyn gan T. 145 00:09:18,270 --> 00:09:23,390 Mewn geiriau eraill, côd Morse, er ei fod leverages egwyddor hon o wneud y gorau o'r achos gornel, 146 00:09:23,390 --> 00:09:26,250 nad yw'n rhoi benthyg ei hun i decodability ar unwaith. 147 00:09:26,250 --> 00:09:29,850 Hynny yw, y bobl sy'n clywed neu dderbyn y dotiau a llinellau toriad 148 00:09:29,850 --> 00:09:34,540 wedi i rywsut chyfrif i maes lle y gwyliau rhwng llythrennau, 149 00:09:34,540 --> 00:09:39,660 oherwydd os nad ydych yn gwybod lle mae'r gwyliau yn, efallai y byddwch yn drysu A ar gyfer ET neu i'r gwrthwyneb. 150 00:09:39,660 --> 00:09:43,880 >> Felly, beth ydych yn ei wneud? Yn côd Morse gallech oedi rhwng pob un o'r llythyrau. 151 00:09:43,880 --> 00:09:47,660 Ond mae oedi yn fath o groes i'r holl bwynt o oryrru pethau i fyny. 152 00:09:47,660 --> 00:09:52,880 Felly beth os yn hytrach rydym yn dod i fyny gyda cod lle nad oedd y sefyllfa ddrwg 153 00:09:52,880 --> 00:09:56,570 lle mae E yn rhagddodiad, er enghraifft, o A - 154 00:09:56,570 --> 00:10:00,020 mewn geiriau eraill, pe gallem wneud yn siŵr bod y patrymau yn dal byr ar gyfer y llythyrau poblogaidd 155 00:10:00,020 --> 00:10:04,850 hir ar gyfer y llythrennau llai poblogaidd, ond does dim ddryswch posibl? 156 00:10:04,850 --> 00:10:08,930 Mae dyn o'r enw Huffman mlynedd yn ôl ddyfeisiodd y cynllun o'r enw Huffman codio 157 00:10:08,930 --> 00:10:12,390 sydd mewn gwirionedd yn leverages un o'r strwythurau data rydym wedi treulio ychydig o amser yn siarad am 158 00:10:12,390 --> 00:10:16,560 yr wythnos hon ddiwethaf, fod o goed, coed deuaidd yn benodol - 159 00:10:16,560 --> 00:10:19,710 a deuaidd sy'n golygu coeden nad oes ganddo fwy na 2 o blant. 160 00:10:19,710 --> 00:10:22,720 Mae ganddo efallai blentyn chwith, efallai plentyn cywir, a dyna ni. 161 00:10:22,720 --> 00:10:26,510 Felly, mae'n debyg dim ond er mwyn trafod y mae rhywun eisiau anfon neges 162 00:10:26,510 --> 00:10:31,270 sy'n edrych fel hyn. Mae'n nonsens llwyr, ond mae'n cynnwys Fel, B, C, D, ac Es. 163 00:10:31,270 --> 00:10:34,890 Ac os ydych yn cyfrif yr holl Fel, B, C, D, ac Es 164 00:10:34,890 --> 00:10:36,870 ac yna ei rannu â chyfanswm nifer o lythyrau, 165 00:10:36,870 --> 00:10:42,710 y siart bach yma yn dweud bod 45% o'r llythyrau yn Es, 20% yn Fel, 166 00:10:42,710 --> 00:10:45,010 10% Brecwast, ac yn y blaen. 167 00:10:45,010 --> 00:10:47,330 Felly, mewn geiriau eraill, cymryd yn ganiataol bod y llinyn a ddyfynnir yno 168 00:10:47,330 --> 00:10:49,080 yn unig yw rhai neges yr ydych am ei anfon. 169 00:10:49,080 --> 00:10:52,180 Mae'n digwydd yn lol yn union fel y gallwn eu defnyddio fel rhai o'r llythrennau ag y bo modd, 170 00:10:52,180 --> 00:10:55,220 ond mae'n wir yn wir bod E yn parhau i fod y mwyaf poblogaidd, 171 00:10:55,220 --> 00:11:01,450 a B a C yw'r lleiaf poblogaidd, o leiaf un o'r 5 lythrennau'r wyddor. 172 00:11:01,450 --> 00:11:04,040 Felly sut allwn ni fynd ati i ddod o hyd i amgodio, 173 00:11:04,040 --> 00:11:08,430 amgodiad binary, patrwm o 0s a 1s ar gyfer pob un o'r llythyrau hyn 174 00:11:08,430 --> 00:11:14,820 yn y fath ffordd sy'n E yn batrwm byr ac efallai B ac C yn phatrymau ychydig yn hirach, 175 00:11:14,820 --> 00:11:19,270 unwaith eto, y syniad yw ein bod am ddefnyddio darnau llai y rhan fwyaf o'r amser 176 00:11:19,270 --> 00:11:21,790 a darnau mwy dim ond unwaith mewn blwc. 177 00:11:21,790 --> 00:11:26,070 Yn ôl Huffman codio, gallwch greu coedwig o goed. 178 00:11:26,070 --> 00:11:31,190 Mae math o linell stori yma sy'n cynnwys coed a hefyd y broses o adeiladu i fyny. 179 00:11:31,190 --> 00:11:32,420 Gadewch i ni ddechrau. 180 00:11:32,420 --> 00:11:36,140 >> Yr wyf yn cynnig eich bod yn dechrau gyda y goedwig, fel petai, 5 o goed, 181 00:11:36,140 --> 00:11:38,260 pob un ohonynt yn goeden eithaf dwp. 182 00:11:38,260 --> 00:11:42,800 Mae'r goeden yn cynnwys dim ond un nod, a gynrychiolir fel yma gan gylch. 183 00:11:42,800 --> 00:11:45,310 Felly, gallai pob un o'r pethau hyn fod yn strwythur C 184 00:11:45,310 --> 00:11:50,200 a allai tu mewn i'r strwythur C fod yn arnofio yn cynrychioli'r cyfrif amlder 185 00:11:50,200 --> 00:11:52,510 ac yna efallai golosg cynrychioli'r llythyr. 186 00:11:52,510 --> 00:11:56,470 Felly meddyliwch am y nodau fel dim ond unrhyw strwythur C hen, ond, ar hyn o bryd, ar lefel uwch. 187 00:11:56,470 --> 00:12:01,230 Mae hyn yn goedwig 5 o goed, pob un sydd ond yn cael un nod. 188 00:12:01,230 --> 00:12:06,830 Beth Huffman arfaethedig yw ein bod yn dechrau cyfuno y coed hynny 189 00:12:06,830 --> 00:12:11,140 sy'n meddu ar y cyfrifon amlder lleiaf i'r coed ychydig yn fwy 190 00:12:11,140 --> 00:12:13,490 trwy eu cysylltu gyda nod gwraidd newydd. 191 00:12:13,490 --> 00:12:17,560 Felly, ymysg y llythrennau yma, sylwch ar gyfer hwylustod wyf wedi trefnu iddynt o'r chwith i'r dde, 192 00:12:17,560 --> 00:12:21,420 er nad yw hynny'n gwbl angenrheidiol, a rhybudd bod y nodau lleiaf 193 00:12:21,420 --> 00:12:23,930 o bryd mae 10% a 10%. 194 00:12:23,930 --> 00:12:28,940 Felly Huffman cynnig ein bod yn cyfuno hynny 2 nodau lleiaf i mewn i goeden newydd 195 00:12:28,940 --> 00:12:34,450 drwy gyflwyno nod rhiant newydd ac yna rhoi y rhiant i blentyn chwith a dde phlentyn 196 00:12:34,450 --> 00:12:37,720 os yw B yn fympwyol y chwith ac C yn fympwyol y dde. 197 00:12:37,720 --> 00:12:41,590 Ac yna Huffman Cynigir ymhellach y gadewch i ni yn awr yn unig yn meddwl y plentyn chwith 198 00:12:41,590 --> 00:12:44,790 yn un o'r coed hyn bob amser yn cael eu cynrychioli gan 0 199 00:12:44,790 --> 00:12:47,890 a'r plentyn cywir bob amser yn cael eu cynrychioli gan y rhif 1. 200 00:12:47,890 --> 00:12:50,680 >> Nid oes ots os ydych yn eu troi cyn belled â'ch bod yn gyson. 201 00:12:50,680 --> 00:12:54,650 Felly, nawr rydym gael 4 goed yn y goedwig yma. 202 00:12:54,650 --> 00:12:58,050 Ac yr wyf yn dweud 4 oherwydd yn awr y goeden ar y chwith - 203 00:12:58,050 --> 00:13:00,570 ac nid yw'n gymaint coeden yn yr ystyr ei fod yn tyfu y modd hwn, 204 00:13:00,570 --> 00:13:05,170 mae'n fwy fel coeden deuluol lle nawr 0.2 yn fath o riant y 2 o blant - 205 00:13:05,170 --> 00:13:07,930 sylwi bod yn rhiant hwnnw rydym wedi tynnu 0.2. 206 00:13:07,930 --> 00:13:13,370 Rydym wedi ychwanegu y cyfrifon amlder y 2 o blant ac o ystyried y nod newydd yn y swm cyfan. 207 00:13:13,370 --> 00:13:15,310 Felly, nawr rydym yn ailadrodd y broses hon. 208 00:13:15,310 --> 00:13:19,490 Dod o hyd y 2 nodau lleiaf ac yna ymuno â hwy i mewn i goeden newydd 209 00:13:19,490 --> 00:13:21,380 ac yna ailadrodd y broses ymhellach. 210 00:13:21,380 --> 00:13:26,390 Ar hyn o bryd mae gennym ychydig o ymgeiswyr, 20%, 15%, a 20% arall. 211 00:13:26,390 --> 00:13:29,780 Yn yr achos hwn mae'n rhaid i ni dorri'r ddadl. Gallwn wneud hyn yn fympwyol. 212 00:13:29,780 --> 00:13:31,540 Dylem wneud dim ond yn gyson. 213 00:13:31,540 --> 00:13:33,760 Yn yr achos hwn byddaf yn fympwyol yn mynd gyda'r un ar y chwith, 214 00:13:33,760 --> 00:13:39,880 ac yr wyf yn awr cyfuno 20% a'r 15% i roi i mi yn rhiant newydd o'r enw 35%, 215 00:13:39,880 --> 00:13:46,310 y mae ei phlentyn ar y chwith yw 0, y mae ei ddiogel gywir ar 1, ac erbyn hyn mae gennym dim ond 3 goed yn y goedwig. 216 00:13:46,310 --> 00:13:47,960 Gallwch o bosibl weld lle mae hyn yn mynd. 217 00:13:47,960 --> 00:13:51,150 Os byddwn yn ailadrodd y gwaith y cwpl yn fwy, rydym yn mynd i gael coeden dim ond 1 yn fwy, 218 00:13:51,150 --> 00:13:53,900 bob un o'u ymylon yn cael eu labelu gyda 0au ac 1. 219 00:13:53,900 --> 00:13:55,710 Gadewch i ni wneud hynny eto. 220 00:13:55,710 --> 00:14:02,600 35% yw gwraidd y goeden. 20% a 45%, felly rydym yn mynd i uno y 35% a 20%. 221 00:14:02,600 --> 00:14:05,610 Nawr mae gennym y goeden yma. Rydym yn ychwanegu hynny at ei gilydd, mae gennym 55%. 222 00:14:05,610 --> 00:14:07,910 Nawr mae dim ond 2 goed yn y goedwig. 223 00:14:07,910 --> 00:14:11,900 Rydym yn gwneud hyn amser 1 derfynol, a gobeithio fathemategol holl amleddau adio i fyny 224 00:14:11,900 --> 00:14:15,570 oherwydd y dylent ers i ni gyfrifo rhag y get-fynd i ychwanegu hyd at 100%. 225 00:14:15,570 --> 00:14:17,960 Ac yn awr rydym wedi 1 goeden. 226 00:14:17,960 --> 00:14:20,580 Felly, mae hyn yn goeden codio Huffman. 227 00:14:20,580 --> 00:14:24,400 Mae'n fath o Cymerodd beth amser i gyrraedd yno ar lafar, ond y gwir amdani yw gyda gyfer dolen 228 00:14:24,400 --> 00:14:27,620 neu gyda swyddogaeth recursive gallech adeiladu y peth hyn i fyny 'n bert gyflym. 229 00:14:27,620 --> 00:14:32,440 Felly, yn awr rydym wedi 1 nod newydd, a phob un o'r nodau mewnol wedi cael eu malloc'd, 230 00:14:32,440 --> 00:14:34,690 yn ôl pob tebyg, ar hyd y ffordd. 231 00:14:34,690 --> 00:14:38,650 Felly, yn awr ar ben y goeden hon mae gennym 100%, ond nawr yn sylwi gennym lwybr 232 00:14:38,650 --> 00:14:43,780 o'r newydd gor-or-or-nain neu daid i bob un o'r gor-or-or-wyrion 233 00:14:43,780 --> 00:14:45,930 yr holl ffordd ar y gwaelod, i bob un o'r dail. 234 00:14:45,930 --> 00:14:52,840 >> Beth ydym ni'n mynd i'w wneud yn awr yw cynnig er mwyn cynrychioli'r llythyren E, 235 00:14:52,840 --> 00:14:55,670 byddwn yn syml yn defnyddio'r rhif 1. Pam? 236 00:14:55,670 --> 00:15:01,000 Oherwydd os ydym yn croesi goeden hon oddi wrth y gwraidd terfynol i lawr at y ddeilen a elwir yn E, 237 00:15:01,000 --> 00:15:06,050 rydym yn dilyn dim ond 1 ymyl, yr ymyl dde, ac mae hynny'n labelu, wrth gwrs, ar 1 dde uchaf. 238 00:15:06,050 --> 00:15:11,550 Felly, y goblygiadau yma i Huffman oedd y bydd amgodio E yn unig fod deuaidd 1. 239 00:15:11,550 --> 00:15:14,490 A dyna 'n bert damn effeithlon. Methu wir yn cael unrhyw llai na hynny. 240 00:15:14,490 --> 00:15:18,350 Mewn cyferbyniad, A yn mynd i gael eu cynrychioli, os ydych yn dilyn y rhesymeg, 241 00:15:18,350 --> 00:15:21,610 gan yr hyn patrwm o ddarnau yn lle hynny? 01. 242 00:15:21,610 --> 00:15:25,500 Felly, i ddod i A, byddwn yn dechrau wrth wraidd ac rydym yn mynd i'r chwith ac yna rydym yn mynd yn iawn, 243 00:15:25,500 --> 00:15:28,580 sy'n golygu ein bod yn dilyn 0 ac yna 1. 244 00:15:28,580 --> 00:15:32,810 Felly, byddwn yn cynrychioli'r llythyren A gyda phatrwm 0 ac 1. 245 00:15:32,810 --> 00:15:36,010 Ac yn awr sylwi gennym eisoes yn eiddo decodability ar unwaith 246 00:15:36,010 --> 00:15:38,090 nad oedd gennym mewn côd Morse. 247 00:15:38,090 --> 00:15:42,840 Hyd yn oed er bod y ddau o'r patrymau hyn yn eithaf byr - E yn 1 did, A yw 2 darnau - 248 00:15:42,840 --> 00:15:45,080 yn sylwi nad ellir eu drysu un neu'r llall, 249 00:15:45,080 --> 00:15:54,870 oherwydd os byddwch yn gweld 1 mae'n rhaid i fod yn E, os gwelwch yn 0 yna 1 mae'n 'got amlwg i fod yn A. 250 00:15:54,870 --> 00:15:58,410 Yn yr un modd, beth yw D? 001. 251 00:15:58,410 --> 00:16:01,440 Beth yw C? 0001. 252 00:16:01,440 --> 00:16:05,320 A beth yw B? 0000. 253 00:16:05,320 --> 00:16:09,550 Ac eto, gan fod yr holl o'r llythyrau yr ydym yn gofalu amdanynt yn y dail 254 00:16:09,550 --> 00:16:13,890 ac nid oes yr un ohonynt yn fath o middlemen yn y llwybr o'r gwreiddyn i'r ddeilen, 255 00:16:13,890 --> 00:16:18,760 does dim risg o conflating amgodiadau 2 lythyr 'gwahanol 256 00:16:18,760 --> 00:16:22,300 oherwydd bod pob un o'r patrymau bit yn benderfynedig. 257 00:16:22,300 --> 00:16:25,280 Bydd 0000 bob amser yn B. 258 00:16:25,280 --> 00:16:29,480 Does dim nod rywle yn y canol y gallech drysu 1 llythyr ar gyfer y llall. 259 00:16:29,480 --> 00:16:31,150 Felly beth yw'r goblygiadau yma? 260 00:16:31,150 --> 00:16:35,080 >> Roedd y llythyr mwyaf poblogaidd - yn yr achos E - wedi gotten y amgodio byrraf, 261 00:16:35,080 --> 00:16:37,430 Mae wedi gotten y amgodio nesaf byrraf, 262 00:16:37,430 --> 00:16:41,390 a B a C, yr ydym eisoes yn gwybod o'r fath gael-fynd yn y lleiaf poblogaidd 263 00:16:41,390 --> 00:16:45,390 ar amledd o 10% yr un, maent wedi gotten y amgodio hiraf. 264 00:16:45,390 --> 00:16:49,410 Ac felly beth mae hyn yn golygu yn awr yw, os ydych am i anfon neges sydd wedi cywasgu 265 00:16:49,410 --> 00:16:51,950 dros y Rhyngrwyd neu mewn e-bost neu debyg, 266 00:16:51,950 --> 00:16:56,730 yn hytrach na defnyddio ASCII safonol, gallwch anfon neges Huffman cod 267 00:16:56,730 --> 00:17:01,720 lle os ydych am anfon y llythyr E, rydych yn anfon dim ond ychydig sengl. 268 00:17:01,720 --> 00:17:05,680 Os ydych am anfon A, rydych anfon 2 darnau, 01, yn lle anfon 8 did 269 00:17:05,680 --> 00:17:10,190 un arall ar 8 did un arall ar 8 did ac yn y blaen. 270 00:17:10,190 --> 00:17:11,940 Ond mae Gotcha yma. 271 00:17:11,940 --> 00:17:17,079 Nid yw'n ddigon i ddim ond adeiladu'r goeden ac yna dechrau anfon o Alice i Bob 272 00:17:17,079 --> 00:17:20,010 y patrwm ychydig yn fyrrach, llinyn o ASCII, 273 00:17:20,010 --> 00:17:23,140 oherwydd Alice hefyd i roi gwybod i Bob am yr hyn 274 00:17:23,140 --> 00:17:26,880 os Bob yn mynd i fod yn gallu darllen ei neges cywasgedig? 275 00:17:26,880 --> 00:17:30,770 [Ymateb y myfyrwyr Anghlywadwy] >> Beth sy'n bod? 276 00:17:30,770 --> 00:17:32,310 [Ymateb y myfyrwyr Anghlywadwy] >> O'r hyn y mae'r goeden yn. 277 00:17:32,310 --> 00:17:35,160 Neu hyd yn oed yn fwy penodol, beth yw'r amgodiadau yn, 278 00:17:35,160 --> 00:17:39,010 yn enwedig gan fod yn ystod y stori hon rydym yn gwneud galwad barn ar un adeg. 279 00:17:39,010 --> 00:17:43,640 Cofiwch bod rhaid i ni ddewis yn fympwyol rhwng y 2 nodau 20% wahanol? 280 00:17:43,640 --> 00:17:49,800 Felly, nid yw'n wir y gall Bob, y derbynnydd, dim ond ail-greu y goeden ar ei ben ei hun 281 00:17:49,800 --> 00:17:53,390 oherwydd efallai y bydd yn creu y goeden erioed mor ychydig yn wahanol i Alice. 282 00:17:53,390 --> 00:17:56,670 At hynny, nid yw hyd yn oed Bob yn gwybod beth y neges gwreiddiol yn 283 00:17:56,670 --> 00:18:00,770 oherwydd yr unig beth Alice yn anfon iddo, wrth gwrs, yw'r neges cywasgedig. 284 00:18:00,770 --> 00:18:05,900 >> Felly y ddalfa gyda cywasgu fel hyn yw, ie, gall Alice arbed llawer gyfan o ddarnau 285 00:18:05,900 --> 00:18:09,900 drwy anfon 1 am E a 01 ar gyfer A ac yn y blaen, 286 00:18:09,900 --> 00:18:15,180 ond mae hi hefyd i roi gwybod i Bob hyn y mae'r mapio yn rhwng llythrennau a darnau 287 00:18:15,180 --> 00:18:19,620 oherwydd na allant glir â dibynnu ar ASCII anymore os nad ydym yn defnyddio ASCII. 288 00:18:19,620 --> 00:18:22,200 Felly, gall hi naill ai anfon y goeden rhywsut - 289 00:18:22,200 --> 00:18:26,600 ysgrifennu i lawr, ei storio fel data deuaidd neu rhywbeth fel 'na - 290 00:18:26,600 --> 00:18:30,280 neu dim ond anfon taflen twyllo ychydig, ffeil Excel, sy'n dangos y mapiadau. 291 00:18:30,280 --> 00:18:36,480 Felly, effeithiolrwydd y cywasgu mewn gwirionedd yn cymryd yn ganiataol bod y negeseuon eich bod yn anfon 292 00:18:36,480 --> 00:18:40,230 yn eithaf mawr, o leiaf o faint canolig, 293 00:18:40,230 --> 00:18:42,180 oherwydd os ydych yn anfon neges byr super, 294 00:18:42,180 --> 00:18:45,390 os ydych chi eisiau anfon y neges DRWG, sy'n digwydd i fod yn air gallwn sillafu yma, 295 00:18:45,390 --> 00:18:49,550 B-A-D, mae'n debyg eich bod yn mynd i ddefnyddio darnau llai, 296 00:18:49,550 --> 00:18:53,130 ond y ddalfa yw os rhaid i chi hefyd roi gwybod Bob hyn y mae'r goeden yn 297 00:18:53,130 --> 00:18:57,530 neu beth yw'r amgodiadau, yr ydych chi'n mynd i fwy na thebyg yn gorbwyso holl arbedion 298 00:18:57,530 --> 00:19:00,110 o gael pethau cywasgedig i ddechrau. 299 00:19:00,110 --> 00:19:02,210 Felly, gall fod mewn gwirionedd fod yn wir os ydych yn ceisio cywasgu 300 00:19:02,210 --> 00:19:05,330 hyd yn oed gyda rhywbeth fel fformatau zip neu ffeil efallai y byddwch yn gyfarwydd â nhw - 301 00:19:05,330 --> 00:19:07,780 ffeiliau 'n bert bach, ffeiliau hyd yn oed yn wag - 302 00:19:07,780 --> 00:19:10,930 Weithiau efallai y ffeiliau yn mynd yn fwy ac nid llai. 303 00:19:10,930 --> 00:19:14,320 Ond yn realistig, mae hynny'n digwydd dim ond ar gyfer maint y ffeil bach, 304 00:19:14,320 --> 00:19:16,920 felly nid yw'n mynd i wneud ffeil gigabyte yn 2 gigabeit; 305 00:19:16,920 --> 00:19:19,480 rydym yn wirioneddol yn siarad bytes neu dim ond kilobytes cwpl. 306 00:19:19,480 --> 00:19:22,330 >> Mae rhai rhaglenni fel zip yn ddigon craff i sylweddoli, 307 00:19:22,330 --> 00:19:24,590 "Rydych chi'n mynd i wario mwy o gywasgu darnau hyn." 308 00:19:24,590 --> 00:19:27,460 "Gadewch i mi beidio trafferthu gywasgu ar eich o gwbl." 309 00:19:27,460 --> 00:19:30,160 Felly mae hyn yn dim ond 1 ffordd yna o gywasgu fformat testun. 310 00:19:30,160 --> 00:19:32,300 Gallai Rydym yn gweithredu rhywbeth fel hyn yn C. 311 00:19:32,300 --> 00:19:35,370 Er enghraifft, dyma yw sut y gallai ydym yn eu cynrychioli yn nod yn y goeden 312 00:19:35,370 --> 00:19:39,320 lle mae gennym golosg ar gyfer y symbol, mae gwerth fel y bo'r angen ar gyfer y amlder, 313 00:19:39,320 --> 00:19:42,250 ac fel yr ydym wedi gweld â'n strwythurau data eraill, 2 awgrymiadau, 314 00:19:42,250 --> 00:19:47,080 1 i'r plentyn chwith, 1 i'r dde, gall y naill neu'r llall fod yn NULL, 315 00:19:47,080 --> 00:19:50,850 ond os nad yw, mae'n cyfeirio at blentyn chwith a dde phlentyn. 316 00:19:50,850 --> 00:19:55,130 Felly, mae hyn felly yw Huffman codio, ac mae'n 1 ffordd y gallwch fynd ati i gywasgu gwybodaeth, 317 00:19:55,130 --> 00:19:57,880 ac mae'n sicr yn un o'r mwyaf yn hawdd i weithredu 318 00:19:57,880 --> 00:20:00,830 yng nghyd-destun, dyweder, strwythurau data yr wythnos diwethaf, 319 00:20:00,830 --> 00:20:03,250 ond hyd yn oed algorithmau mwy soffistigedig yn bodoli 320 00:20:03,250 --> 00:20:08,220 sy'n gallu gwneud treigladau hyd yn oed yn fwy soffistigedig o'ch data. 321 00:20:08,220 --> 00:20:11,640 Unrhyw cwestiynau, yna ar goed, coed deuaidd, neu gywasgiad o destun? 322 00:20:11,640 --> 00:20:15,590 [Myfyrwyr] A oes rhywfaint o amwysedd, fel pe rhaniad [Anghlywadwy] i 01, 323 00:20:15,590 --> 00:20:19,160 yna byddai 011 yn amwys, dde? 324 00:20:19,160 --> 00:20:22,730 [Anghlywadwy] >> Cwestiwn da. Amwysedd. 325 00:20:22,730 --> 00:20:25,940 Gadewch i mi grynhoi drwy gyfeirio at y darlun hwn yma. 326 00:20:25,940 --> 00:20:29,650 Oherwydd bod y cymeriadau yr ydych yn gywasgu, y sylwadau o, 327 00:20:29,650 --> 00:20:32,850 yn ôl y diffiniad hwn yn algorithm bob amser yn parhau i fod y dail, 328 00:20:32,850 --> 00:20:41,870 na fyddwch byth yn ddamweiniol yn defnyddio'r un patrwm o ddarnau ar gyfer y rhagddodiad llythyrau lluosog. 329 00:20:41,870 --> 00:20:46,740 Felly, mewn geiriau eraill, rydych yn poeni am, mae'n swnio fel, yn amwysedd sy'n codi 330 00:20:46,740 --> 00:20:51,580 lle gallai 001 yn ddechrau B neu ddechrau C neu rywbeth fel 'na. 331 00:20:51,580 --> 00:20:56,780 Ond ni all hynny fod yn wir oherwydd bod hysbysiad fod y cyfan o lythrennau'r wyddor rydym yn amgodio 332 00:20:56,780 --> 00:20:58,290 ar y dail. 333 00:20:58,290 --> 00:21:01,910 >> Gall y amwysedd yn unig yn codi, fel yn achos y côd Morse, 334 00:21:01,910 --> 00:21:06,770 os, er enghraifft, C yn rhywle ar hyd y llwybr o'r gwraidd i B. 335 00:21:06,770 --> 00:21:12,290 [Myfyrwyr] Hawl. Felly, yn yr achos hwnnw, yn dweud A yw 2 ddeilen. >> Dweud A yw - Dweud hynny eto. 336 00:21:12,290 --> 00:21:18,760 [Myfyrwyr] Dweud Mae wedi 2 dail, F a G, ac yna G - >> Iawn. Ond ni all. 337 00:21:18,760 --> 00:21:23,230 Mae Ni allai ei hun fod dail F a G oherwydd y llythyrau hynny F a G 338 00:21:23,230 --> 00:21:27,560 eu hunain yn cael gadael rhywle i'r chwith B nac ar hawl E. 339 00:21:27,560 --> 00:21:28,900 Felly, drwy ddiffiniad, rhaid iddynt fod dail. 340 00:21:28,900 --> 00:21:32,940 Fel arall, rydych yn hollol gywir, nid ydym wedi datrys y broblem sy'n wynebu côd Morse. 341 00:21:32,940 --> 00:21:38,150 Da cwestiwn. Cwestiynau eraill? Mae pob hawl. 342 00:21:38,150 --> 00:21:42,050 Mae'r syniad o ddarnau, mae'n troi allan yr ydym wedi cael pŵer ar hyd nad ydym wedi defnyddio mewn gwirionedd 343 00:21:42,050 --> 00:21:44,200 pan ddaeth i drin hyn 0s a 1s. 344 00:21:44,200 --> 00:21:46,600 Fe wnaethom ofyn am hyn ar un o'r setiau broblem cynharaf, 345 00:21:46,600 --> 00:21:52,340 sef, sut ydych chi'n mynd ati i drosi priflythyren i lythrennau bach neu i'r gwrthwyneb? 346 00:21:52,340 --> 00:21:55,460 Neu yn fwy concretely, un o'r rhai cyntaf a ofynnir psets 347 00:21:55,460 --> 00:22:01,090 faint o ddarnau ydych chi mewn gwirionedd yn rhaid i troi er mwyn newid A i lythrennau bach i'r gwrthwyneb a neu? 348 00:22:01,090 --> 00:22:05,580 Dyma atgof cyflym o hyn 65 a 97 yn edrych fel yn y deuaidd. 349 00:22:05,580 --> 00:22:08,060 A hyd yn oed os yw'r cwestiwn fath o ddiflannu yn eich cof, 350 00:22:08,060 --> 00:22:11,290 gallwch weld yma eto mai faint o ddarnau angen flipped 351 00:22:11,290 --> 00:22:15,810 i newid cyfalaf A i lythrennau bach a? Dim ond 1. 352 00:22:15,810 --> 00:22:19,650 >> Maent yn unig yn wahanol mewn 1 lleoliad, y rhan y trydydd o'r chwith. 353 00:22:19,650 --> 00:22:24,240 Tra mae A yn 010, ychydig a sydd â 011. 354 00:22:24,240 --> 00:22:26,250 Felly, rhywsut mae angen i ni dim ond yn gallu troi y tamaid hwnnw, 355 00:22:26,250 --> 00:22:29,410 ac yna gallwn fanteisio neu lythrennau bach lythyrau. 356 00:22:29,410 --> 00:22:32,720 Rydym wedi gwneud hyn yn y gorffennol gan ei ddefnyddio mewn gwirionedd os yw amodau 357 00:22:32,720 --> 00:22:35,930 a gwirio os y llythyr hwn yw rhwng cyfalaf A a chyfalaf Z, 358 00:22:35,930 --> 00:22:41,480 Yna, allbynnau fel A - "a" + 26 neu rywbeth fel 'na. 359 00:22:41,480 --> 00:22:46,130 Mae'n debyg y byddwch yn gwneud newid rhifyddol i llythrennau'r wyddor. 360 00:22:46,130 --> 00:22:49,270 Ond beth pe gallem dim ond troi ychydig yn sengl? 361 00:22:49,270 --> 00:22:59,080 Sut allech chi fynd ati i gymryd werth 1 beit o ddarnau, felly 8 did fel 01,000,001 01,100,001 a? 362 00:22:59,080 --> 00:23:03,170 Os ydych wedi cael y patrymau o ddarnau, sut gallwn ni fynd ati i newid dim ond 1 ohonynt? 363 00:23:03,170 --> 00:23:07,610 Beth os ydym yn cyflwyno mewn melyn yma y patrwm o ddarnau eraill? 364 00:23:07,610 --> 00:23:13,420 Os byddaf yn gwneud y 0au llinyn melyn cyfan ac eithrio ar gyfer y darn 1 na wyf am newid 365 00:23:13,420 --> 00:23:17,900 ac yna rwyf yn cyflwyno weithredwr newydd o'r enw fel gweithredwr bitwise - 366 00:23:17,900 --> 00:23:21,210 bitwise yn yr ystyr ei fod yn gweithredu ar ddarnau unigol, 367 00:23:21,210 --> 00:23:25,360 nid ar beit cyfan neu 4 bytes i gyd ar unwaith. 368 00:23:25,360 --> 00:23:31,170 Mae'r bar fertigol yno mewn melyn yn awgrymu bod yr hyn os ydym yn cymryd y gynrychiolaeth o gyfalaf i 369 00:23:31,170 --> 00:23:37,060 a bitwise "neu" gyda dilyniant melyn o ddarnau? 370 00:23:37,060 --> 00:23:41,300 Mewn geiriau eraill, yn meddwl yn ôl at ein trafodaeth ar mynegiadau Boole yn Scratch ac yna yn C. 371 00:23:41,300 --> 00:23:47,520 >> Gwneud Boolean neu yn golygu bod i fod yn wir, naill ai y peth cyntaf sydd i fod yn wir 372 00:23:47,520 --> 00:23:50,700 neu'r ail beth wedi i fod yn wir neu os ydynt yn rhaid i'r ddau fod yn wir, 373 00:23:50,700 --> 00:23:53,270 ac yna yr allbwn o ganlyniad yn ei hun yn wir. 374 00:23:53,270 --> 00:24:00,230 Yn yr achos yma, beth ydym yn ei gael os byddwn yn cymryd 0 "neu" ed gyda 0? Ffug neu anwir? 375 00:24:00,230 --> 00:24:04,280 Mae'n dal ffug, felly mae'r llythrennau bach a dal yn ôl y disgwyl. 376 00:24:04,280 --> 00:24:07,540 Beth os ydym yn ei wneud yn lle hynny 1 neu 0? 377 00:24:07,540 --> 00:24:12,640 Mae hyn bellach yn parhau i fod 1, ond sylwi ar beth sydd ar fin digwydd yma. 378 00:24:12,640 --> 00:24:18,630 Os byddwn yn dechrau gyda chyfalaf A ac rydym yn parhau i "neu" ei darnau unigol fel rydym yn ei wneud yma, 379 00:24:18,630 --> 00:24:25,180 0 neu 1 melyn yn rhoi i ni beth i lawr yma? Mae hyn yn rhoi i ni 1. 380 00:24:25,180 --> 00:24:35,120 Yn wir, mae'n debyg nad ydym yn gwybod beth y fersiwn priflythyren o ychydig o mewn gwirionedd. 381 00:24:35,120 --> 00:24:38,270 Gadewch i ni fynd yn gwneud hyn. Gadewch i mi symud hyn yn ôl dros yma. 382 00:24:38,270 --> 00:24:42,340 Gadewch i ni wneud hyn eto. 0 neu 0 yn rhoi i mi 0. 383 00:24:42,340 --> 00:24:45,020 1 neu 0 yn rhoi i mi 1. 384 00:24:45,020 --> 00:24:48,020 0 neu 1 yn rhoi i mi 1. 385 00:24:48,020 --> 00:24:52,880 0 neu 0 yn rhoi i mi 0. Mae'r un nesaf yw 0, yr un nesaf yn 0, yr un nesaf yw 0. 386 00:24:52,880 --> 00:24:55,660 1 neu 0 yn rhoi i mi 1. 387 00:24:55,660 --> 00:24:59,140 Ac felly hyd yn oed os nad ydym yn gwybod ymlaen llaw beth lythrennau bach a oedd, 388 00:24:59,140 --> 00:25:04,770 yn syml gan "neu" ing A gyda patrwm hwn o ddarnau yr ydym wedi cyflwyno yma mewn melyn, 389 00:25:04,770 --> 00:25:09,400 gallwch lythrennau bach cyfalaf A trwy flipping y bit. 390 00:25:09,400 --> 00:25:11,580 Rydym yn defnyddio hyn wythnosau mynegiant yn ôl: flipping ychydig. 391 00:25:11,580 --> 00:25:13,710 Sut yr ydych yn gwneud hynny programmatically? 392 00:25:13,710 --> 00:25:16,390 Byddwch yn defnyddio'r hyn a elwir yn gyffredinol mwgwd, cyfres o ddarnau, 393 00:25:16,390 --> 00:25:19,980 yn yr achos hwn ond fel y digwydd i edrych fel y nifer hwn yma, 394 00:25:19,980 --> 00:25:22,980 ac yna i chi "neu" at ei gilydd defnyddio'r gweithredwr C newydd, 395 00:25:22,980 --> 00:25:29,940 Nid | |, byddwch yn defnyddio un | a byddech yn mewn gwirionedd yn cael yr ateb hwn yma oherwydd pam? 396 00:25:29,940 --> 00:25:35,120 Dyma'r lle 1s, 2s lle, 16 4, 8,, 32s. 397 00:25:35,120 --> 00:25:42,280 Felly, mae'n troi allan os byddwch yn cymryd llythyr cyfalaf A a bitwise "neu" gyda y 32 cyfanrif, 398 00:25:42,280 --> 00:25:47,520 oherwydd bod y cyfanrif 32 pan fyddwch yn edrych arno fel darnau yn edrych fel hyn, 399 00:25:47,520 --> 00:25:50,860 sy'n golygu y gallwch chnithia y rhan yr ydych ei eisiau mewn gwirionedd. 400 00:25:50,860 --> 00:25:52,630 Ac yn yr un modd - a byddwn yn edrych ar god mewn dim ond hyn o bryd - 401 00:25:52,630 --> 00:25:54,210 debyg ydym am fynd i'r cyfeiriad arall. 402 00:25:54,210 --> 00:25:58,210 >> Sut ydych chi'n mynd o lythrennau bach cyfalaf i A? Pa bit angen newid? 403 00:25:58,210 --> 00:25:59,820 Mae yr un un. 404 00:25:59,820 --> 00:26:03,970 Rydym am newid hynny ychydig yn drydydd o 1 i 0. 405 00:26:03,970 --> 00:26:06,310 Ac efallai y modd y byddwn yn gwneud hyn? 406 00:26:06,310 --> 00:26:10,130 Sut ydym yn troi oddi ar ychydig? Gallai Gyda pa batrwm o ddarnau rydym yn troi oddi ar ychydig? 407 00:26:11,580 --> 00:26:14,070 Beth os ydym yn datrys gwrthdro y mwgwd? 408 00:26:14,070 --> 00:26:17,350 O'r blaen, ni wneud y 0au mwgwd melyn cyfan 409 00:26:17,350 --> 00:26:19,930 ac eithrio ar gyfer y darn 1 rydym eisiau i droi ymlaen, 410 00:26:19,930 --> 00:26:25,580 beth os y cyfnod hwn rydym yn gwneud y 1s mwgwd cyfan heblaw am y peth yr ydym am droi i ffwrdd 411 00:26:25,580 --> 00:26:28,330 ac yna defnyddio'r hyn weithredwr? 412 00:26:28,330 --> 00:26:30,560 Beth os ydym yn "a" phethau? Gadewch i ni edrych. 413 00:26:30,560 --> 00:26:34,880 Os ydym yn awr yn troi at hyn, mae'n debyg bod eto i'n creu mwgwd dyna i gyd 1s 414 00:26:34,880 --> 00:26:37,650 ac eithrio ar gyfer y rhan 1 yr wyf am droi i ffwrdd 415 00:26:37,650 --> 00:26:43,860 ac yna yn hytrach na "neu" y rhifau gwyn i fyny rhowch y rhifau melyn i lawr yma, 416 00:26:43,860 --> 00:26:46,940 beth os wyf yn lle "a" nhw at ei gilydd? Mae'n cael ei alw bitwise a. 417 00:26:46,940 --> 00:26:49,450 Yn rhesymegol, mae'n yr un peth â Boole a. 418 00:26:49,450 --> 00:26:55,160 Mae hyn yn rhoi i mi 0 & 1 yn 0. Felly, ffug ac yn wir yn ffug. 419 00:26:55,160 --> 00:26:58,160 Gwir ac yn wir yn wir. 420 00:26:58,160 --> 00:27:04,020 A dyma yw'r hud: Gwir a ffug yn awr yn ffug, felly rydym wedi troi oddi ar y bit. 421 00:27:04,020 --> 00:27:06,560 Ac yn awr gweddill y stori braidd yn syml. 422 00:27:06,560 --> 00:27:11,970 Oherwydd bod y gweddill y mwgwd yn 1s, nid oes gwahaniaeth beth yw'r rhifau hyn yn wyn. 423 00:27:11,970 --> 00:27:15,580 Pan fyddwch yn "a" rhywbeth gyda wir, nid ydych yn mynd i newid ei werth. 424 00:27:15,580 --> 00:27:20,200 Os yw'n wir, bydd yn parhau i fod yn wir. Os oedd yn anwir, bydd yn parhau ffug. 425 00:27:20,200 --> 00:27:23,190 >> Ond mae'r hud yn digwydd pan fyddwch yn cymryd rhywbeth a oedd yn wir 426 00:27:23,190 --> 00:27:25,430 ac rydych yna "a" gyda ffug. 427 00:27:25,430 --> 00:27:30,030 Mae hyn yn cael yr effaith o droi oddi ar y bit. 428 00:27:30,030 --> 00:27:31,980 Felly cryptic bach yno. 429 00:27:31,980 --> 00:27:35,390 Gadewch i ni mewn gwirionedd yn edrych ar rai cod, a allai mewn gwirionedd yn edrych hyd yn oed mwy cryptig, 430 00:27:35,390 --> 00:27:38,220 ond gadewch i ni edrych yma yn tolower. 431 00:27:38,220 --> 00:27:45,880 Os byddaf yn edrych ar tolower, mynd o gyfalaf A i lythrennau bach a, 432 00:27:45,880 --> 00:27:47,730 gadewch i ni weld sut y gallem weithredu'r rhaglen hon. 433 00:27:47,730 --> 00:27:51,280 Dyma brif, ac nid yw'n cymryd unrhyw ddadleuon gorchymyn-lein. 434 00:27:51,280 --> 00:27:55,980 Rwy'n datgan c cymeriad ar gyfer y llythyr fod y defnyddiwr yn mynd i deipio i mewn 435 00:27:55,980 --> 00:28:00,690 Yna defnyddiwch do cyfarwydd tra dolen i ddim ond gwneud yn siŵr bod y defnyddiwr yn bendant yn rhoi i mi cyfalaf A 436 00:28:00,690 --> 00:28:05,010 neu B neu C. .. Z, fel eu bod yn ei roi i mi rhywbeth rhwng A a Z. 437 00:28:05,010 --> 00:28:08,580 Ac yn awr beth ydw i'n ei wneud yma? 438 00:28:08,580 --> 00:28:14,870 Rwy'n "neu" ing hyn gyda 0x20, ond sydd mewn gwirionedd yr un fath â - 439 00:28:14,870 --> 00:28:19,500 a byddwn yn dod yn ôl at hyn mewn munud - 32. 440 00:28:19,500 --> 00:28:24,830 Felly eto, 32 yn y patrwm hwn o ddarnau yma. Pam ydyn ni'n gwybod hyn? 441 00:28:24,830 --> 00:28:26,320 Meddyliwch yn ôl i wythnos 0. 442 00:28:26,320 --> 00:28:31,010 Dyma'r lle 1s, 2s lle, 4, 8, 16 oed, lle 32s. 443 00:28:31,010 --> 00:28:33,470 Felly, y nifer hwn melyn yn digwydd i fod yn 32. 444 00:28:33,470 --> 00:28:40,570 Yna gallaf gymryd lythyr fel y torgoch yma, bitwise "neu" gyda llythrennol y rhif 32, 445 00:28:40,570 --> 00:28:45,250 a beth ydw i'n ei gael yn ôl? Mae fersiwn llythrennau bach y torgoch. 446 00:28:45,250 --> 00:28:48,830 Mae hyn o bryd yn ôl, fodd bynnag, yr wyf yn mynegi hyn mewn nodiant sylfaenol gwahanol. 447 00:28:48,830 --> 00:28:51,370 Beth oedd hyn yn ei gynrychioli? >> [Myfyrwyr] hecsadegol. 448 00:28:51,370 --> 00:28:53,050 [Malan] Mae hyn yn digwydd i gynrychioli hecsadegol. 449 00:28:53,050 --> 00:28:55,170 Nid ydym wedi siarad am hecsadegol i gyd bod llawer, 450 00:28:55,170 --> 00:28:57,330 ond mewn gwirionedd mae'n gyfleus mewn achosion fel hyn. 451 00:28:57,330 --> 00:29:01,730 >> Hyd yn oed er ei fod yn edrych yn fwy cymhleth a hyd yn oed er ei fod yn edrych fel 20 ac nid 32, 452 00:29:01,730 --> 00:29:06,240 mae'n troi allan bod mewn gwirionedd yn hecsadegol nodiant super cyfleus 453 00:29:06,240 --> 00:29:10,810 oherwydd yn hecsadegol pob digid ar ôl y 0x - ac mae hyn yn golygu dim; 454 00:29:10,810 --> 00:29:13,960 yn unig yw hwn confensiwn dynol sy'n dweud yma daw rhif hecsadegol - 455 00:29:13,960 --> 00:29:18,590 pob un o'r digidau, y 2 ac yna'r 0, eu hunain yn cael eu cynrychioli 456 00:29:18,590 --> 00:29:20,800 gyda union 4 darnau. 457 00:29:20,800 --> 00:29:27,840 Felly, os ydym yn gwneud hyn, gadewch i mi agor golygydd testun yma - 'n annaearol AutoComplete - 458 00:29:27,840 --> 00:29:35,940 os byddwn yn gwneud golygydd testun bach yma, y ​​rhif 0x20 yn golygu yma yw 4 darnau, dyma 4 arall ddarnau. 459 00:29:35,940 --> 00:29:38,050 Gadewch i ni wneud y 4 rightmost darnau yn gyntaf. 460 00:29:38,050 --> 00:29:44,690 0 pan cynrychioli gyda 4 darnau yw beth? Super hawdd. Dim ond yr holl 0au. 461 00:29:44,690 --> 00:29:46,780 Hynny 4 darnau yn 0au. 462 00:29:46,780 --> 00:29:53,510 Sut ydych chi'n cynrychioli 2? Mae wedi bod yn amser ers i ni wneud hyn, ond mae'n 0100. 463 00:29:53,510 --> 00:29:57,310 Felly, dyma'r lle 1s, dyma'r lle 2s, ac yna nid oes gwahaniaeth beth yw'r mannau eraill yn cael eu. 464 00:29:57,310 --> 00:30:00,610 Mewn geiriau eraill, yn hecsadegol gallech ddweud 0x20, 465 00:30:00,610 --> 00:30:04,340 ond os ydych yn meddwl wedyn am yr hyn sydd y 2 a sut mae'n cael ei gynrychioli yn binary, 466 00:30:04,340 --> 00:30:07,130 beth yw'r 0 a sut y mae'n cael ei gynrychioli yn binary, 467 00:30:07,130 --> 00:30:10,440 yr atebion i'r cwestiynau hynny yw hyn ac mae hyn, yn y drefn honno. 468 00:30:10,440 --> 00:30:14,380 Felly 0x20 yn digwydd cynrychioli y patrwm hwn o 8 did, 469 00:30:14,380 --> 00:30:16,880 sef yr union y mwgwd ein bod eisiau. 470 00:30:16,880 --> 00:30:20,140 Felly mae hyn yn ar hyn o bryd dim ond ymarferiad deallusol, 471 00:30:20,140 --> 00:30:24,520 ond y realiti yw mewn cod fel arfer mae'n fwy cyffredin i ysgrifennu cysonion fel hyn 472 00:30:24,520 --> 00:30:28,360 yn hecsadegol oherwydd wedyn gall y rhaglennydd yn gymharol hawdd, 473 00:30:28,360 --> 00:30:32,560 hyd yn oed os mae angen rhywfaint o bapur a phensil, chyfrif i maes beth y patrwm o ddarnau yn 474 00:30:32,560 --> 00:30:35,960 oherwydd nid ydych yn gallu mynegi 0s a 1s fel arfer mewn cod. 475 00:30:35,960 --> 00:30:38,540 Ni allwch fynd 00,010 ac yn y blaen. 476 00:30:38,540 --> 00:30:42,380 >> Mae'n rhaid i chi ddewis nodiannau degol neu hecsadegol neu wythol neu eraill. 477 00:30:42,380 --> 00:30:47,540 Rhan fwyaf o bobl yn tueddu i ddewis hecsadegol yn syml fel bod pob digid yn cynrychioli 4 darnau 478 00:30:47,540 --> 00:30:49,320 a gallwch wneud hyn mathemateg gyflym. 479 00:30:49,320 --> 00:30:54,990 A byddaf yn chwifio fy llaw ar toupper, sydd bron yr un fath; mae'n edrych bron yn union yr un fath. 480 00:30:54,990 --> 00:31:01,900 Toupper digwydd i ddefnyddio'r nad yw'r gweithredwr neu ond yn hytrach y boi a df. 481 00:31:01,900 --> 00:31:09,300 Beth mae df ei gynrychioli? df? Dylai unrhyw un? >> [Myfyrwyr] 255. 482 00:31:09,300 --> 00:31:12,780 255? Ddim yn 255. Byddai hynny'n ff. 483 00:31:12,780 --> 00:31:15,210 Byddwn yn gadael yr un yma fel ychydig o ymarfer corff. 484 00:31:15,210 --> 00:31:23,460 Ond os byddwch yn mynd o 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ac yna beth sy'n dod ar ôl 9? 485 00:31:23,460 --> 00:31:26,510 Rydym yn fath y tu allan o ddigidau degol, ond yn hecsadegol beth sy'n dod ar ôl 9? 486 00:31:26,510 --> 00:31:29,510 [Myfyrwyr] a. >> Felly, b, c, d. 487 00:31:29,510 --> 00:31:33,470 Gallwch chyfrif i maes oddi yno pa batrwm o ddarnau d gwirionedd gynrychioli. 488 00:31:33,470 --> 00:31:38,850 Ac os ydym yn gwneud y math, byddwn yn gweld bod y mwgwd byddwch yn mynd yn ôl yn union yr un fath i hyn. 489 00:31:38,850 --> 00:31:45,580 Mae hyn yn f, pob 1s, ac mae hyn yn d. Felly df cynrychioli'r mwgwd. Mae pob hawl. 490 00:31:45,580 --> 00:31:50,980 Ac nid yn olaf, i wneud sain pethau super, super technegol, 491 00:31:50,980 --> 00:31:53,840 ond cymerwn ein bod eisiau ysgrifennu rhaglen sy'n gwneud hyn. 492 00:31:53,840 --> 00:31:58,960 Gadewch i mi fynd yn ei flaen ac yn gwneud binary, sef rhaglen mewn ffeil o'r enw binary.c. 493 00:31:58,960 --> 00:32:02,050 Ac yn awr gad i mi redeg deuaidd ac yn rhoi i mi cyfanrif heb fod yn negyddol. 494 00:32:02,050 --> 00:32:03,960 Gadewch i ni ddechrau hawdd a theipiwch 0. 495 00:32:03,960 --> 00:32:09,010 Mae hyn yn awr yw rhaglen sy'n argraffu allan cyfanrif yn ei gynrychiolaeth deuaidd. 496 00:32:09,010 --> 00:32:13,470 Felly, os wyf yn chwarae'r gêm hon eto a deipio i mewn dim ond 1, dylwn gael cynrychiolaeth 32-bit o 1. 497 00:32:13,470 --> 00:32:15,490 Os byddaf yn gwneud hyn eto gyda 2, dylwn gael y. 498 00:32:15,490 --> 00:32:19,310 Os byddaf yn ei wneud 7, dylwn gael 1s ychydig ar y diwedd ac yn y blaen. 499 00:32:19,310 --> 00:32:22,740 Mae'n troi allan wyf yn sôn am hyn oherwydd gyda gweithrediadau bitwise 500 00:32:22,740 --> 00:32:25,490 alli 'n weithredol wneud 1 peth arall yn ogystal. 501 00:32:25,490 --> 00:32:29,130 Gallwch greu mygydau hyn yn ddeinamig. 502 00:32:29,130 --> 00:32:32,800 Cymerwch olwg ar yr enghraifft hon 1 arall sy'n ymwneud â gweithrediadau bitwise. 503 00:32:32,800 --> 00:32:35,490 Dyma'r rhan gyntaf y cod, wrth wraidd y defnyddiwr am nifer, 504 00:32:35,490 --> 00:32:38,130 ac mae'n mynnu eich bod yn rhoi i mi cyfanrif heb fod yn negyddol. 505 00:32:38,130 --> 00:32:39,780 Felly dyna fath o bethau hen ysgol. 506 00:32:39,780 --> 00:32:41,980 Ond dyma yn rhywbeth y fath o ddiddorol. 507 00:32:41,980 --> 00:32:44,910 >> Sut ydw i'n mynd ati i argraffu nifer yn deuaidd? 508 00:32:44,910 --> 00:32:48,970 Tro cyntaf i mi ailadrodd o beth i beth? 509 00:32:48,970 --> 00:32:52,270 Beth yw maint o int fel arfer, o leiaf yn y teclyn? >> [Myfyrwyr] 4. 510 00:32:52,270 --> 00:32:57,130 Mae'n 4. Hynny 4 * 8 yw 32 - 1 yn 31. 511 00:32:57,130 --> 00:33:02,590 Felly os dwi'n dechrau cyfrif o 31, sy'n cynrychioli, mae'n troi allan, 512 00:33:02,590 --> 00:33:07,630 dim ond yn gysyniadol, y rhan 31eg neu'r bit radd flaenaf, sef y dyn yma, gydag 513 00:33:07,630 --> 00:33:09,650 tra bod hyn yn mynd i fod yn 0 bit. 514 00:33:09,650 --> 00:33:12,850 Felly mae hyn yn ychydig yn 01 ... bit 31. 515 00:33:12,850 --> 00:33:14,950 Felly beth yw cod hwn yn ei wneud? 516 00:33:14,950 --> 00:33:20,140 Hysbysiad hwn ar gyfer dolen, er ei fod yn edrych yn cryptic, yn unig yw ailadrodd o 31 i lawr i 0. Dyna ni. 517 00:33:20,140 --> 00:33:24,530 Felly, y rhan ddiddorol rhaid bellach i fod yn y 5 llinell yma. 518 00:33:24,530 --> 00:33:28,110 Sylwch fod yn y llinell hon Rwy'n datgan mwgwd amrywiol o'r enw 519 00:33:28,110 --> 00:33:30,790 i fod yn gyson â'n hanes y niferoedd melyn. 520 00:33:30,790 --> 00:33:32,200 Ac yna beth mae hyn yn ei wneud? 521 00:33:32,200 --> 00:33:35,720 Mae hyn yn weithredwr arall bitwise nid ydym wedi gweld o'r blaen, yn fwyaf tebygol. 522 00:33:35,720 --> 00:33:38,300 Mae'n y gweithredwr sifft chwith. 523 00:33:38,300 --> 00:33:40,060 Mae'r gweithredwr yn gwneud hyn. 524 00:33:40,060 --> 00:33:44,920 Dyma'r rhif 1, ac os ydych yn ei wneud i adael sifft, newid y chwith, 525 00:33:44,920 --> 00:33:49,260 beth ydych chi'n feddwl sy'n cael yr effaith o wneud i bod 1 unigolyn? 526 00:33:49,260 --> 00:33:51,290 Yn llythrennol symud drosodd. 527 00:33:51,290 --> 00:33:57,540 Felly, os yw'r rhif 1 yn yr hyn yr ydych yn ei gael ar y chwith a byddwch yn dechrau drwy ymgychwyn i i 31, 528 00:33:57,540 --> 00:34:03,490 yr hyn yw ei fod yn mynd i wneud? Mae'n mynd i gymryd y rhif 1 a symud ei 31 o leoedd dros yma. 529 00:34:03,490 --> 00:34:06,210 Ac oherwydd does amlwg, nid oes digidau eraill y tu ôl iddo, 530 00:34:06,210 --> 00:34:10,350 bydd y rhai yn ddiofyn yn cael eu disodli gyda 0au. 531 00:34:10,350 --> 00:34:15,120 Felly, byddwch yn dechrau allan gyda rhif 1, sydd wrth gwrs yn edrych fel hyn - 532 00:34:15,120 --> 00:34:18,659 a gadewch i mi dynnu dros yma yn y ganolfan. 533 00:34:18,659 --> 00:34:22,139 Ac yna wrth i chi symud pethau i'r chwith, mae hyn yn guy yn ei hanfod yn mynd y ffordd hon. 534 00:34:22,139 --> 00:34:24,659 Ond cyn gynted ag y byddwch yn gwneud hynny, o 0 yn cael ei llenwi i mewn 535 00:34:24,659 --> 00:34:28,360 Os ydych yn symud eilwaith, mae'n mynd y ffordd hon ac un arall yn cael ei llenwi 0 i mewn 536 00:34:28,360 --> 00:34:31,000 >> Ydych yn symud eto, ac yna un arall yn cael ei llenwi 0 i mewn 537 00:34:31,000 --> 00:34:37,900 Felly, os byddwch yn gwneud hyn beth o 1 << i 31 o leoedd, ydych yn darfod i fyny yn cael mwgwd 538 00:34:37,900 --> 00:34:42,550 hynny yw 32 nod o hyd, yr un leftmost ohonynt yn 1, 539 00:34:42,550 --> 00:34:45,199 pob un o'r gweddill sydd yn 0. 540 00:34:45,199 --> 00:34:50,880 Ac mae'n troi allan, wrth fynd heibio, newid nifer ar y chwith fel hyn 541 00:34:50,880 --> 00:34:53,530 hefyd yn gyd-ddigwyddiad, ac weithiau yn gyfleus, 542 00:34:53,530 --> 00:34:57,520 cael yr effaith o wneud yr hyn at y nifer hwnnw? >> [Myfyrwyr] Dyblu ei. 543 00:34:57,520 --> 00:35:00,980 Dyblu ei fod pob un o'r colofnau - y lle 1, 2 lle, lle 4s, 544 00:35:00,980 --> 00:35:05,030 Lle 8, 16 lle - they're holl dyblu wrth i chi fynd i'r chwith. 545 00:35:05,030 --> 00:35:09,500 Neu yn hytrach, pan fyddwch yn symud y 1s ydych yn mynd i roi diwedd ar i fyny ddyblu gwerth y rhif. 546 00:35:09,500 --> 00:35:12,070 Gallwch pen draw yn gwneud trawsffurfiadau diddorol o ddigidau 547 00:35:12,070 --> 00:35:15,640 drwy symud popeth drosodd yn y ffordd hon gan bwerau o 2. 548 00:35:15,640 --> 00:35:17,150 Felly sut mae hyn yn gweithio? 549 00:35:17,150 --> 00:35:22,580 Mae hyn wedyn yn rhoi i mi mwgwd dyna i gyd 0au ac eithrio ar gyfer 1 mewn union y lle yr wyf yn dymuno hynny, 550 00:35:22,580 --> 00:35:27,920 ac yna ymadrodd hwn, sy'n cael ei ddwyn o toupper.c, 551 00:35:27,920 --> 00:35:31,770 yn syml, ddweud yn cymryd y nifer n bod y defnyddiwr deipio i mewn, 552 00:35:31,770 --> 00:35:34,730 "A" â'r hyn a wneir mwgwd, a beth yr ydych yn mynd i gael? 553 00:35:34,730 --> 00:35:39,200 Rydych yn mynd i gael 1 os oes o 1 yn y lleoliad cuddio, 554 00:35:39,200 --> 00:35:41,570 neu os ydych chi'n mynd i gael 0 os nad oes. 555 00:35:41,570 --> 00:35:44,370 Ac felly mae'r holl y rhaglen hon yn effeithiol yn bod ganddo dolen, 556 00:35:44,370 --> 00:35:48,340 ac mae'n creu mwgwd gyda 1 dros yma, yna 1 dros yma, yna 1 dros yma, 557 00:35:48,340 --> 00:35:52,950 ac mae'n defnyddio hyn bitwise a tric i ddweud a oes ychydig yn 1 mewn fewnbwn y defnyddiwr yma? 558 00:35:52,950 --> 00:35:59,220 >> A oes ychydig yn 1 mewn fewnbwn y defnyddiwr yma? Ac os felly, yn llythrennol argraffu 1, arall argraffu 0. 559 00:35:59,220 --> 00:36:03,780 Rydym yn gwneud hyn gyda ints yn unig oherwydd dyna pam yr ydym yn ei wneud 32 catiau yn hytrach na 8, 560 00:36:03,780 --> 00:36:06,900 ond yr hyn rydym wedi cyflwyno, yna mae hyn yn bitwise, mae hyn yn bitwise neu, 561 00:36:06,900 --> 00:36:10,450 ac mae hyn yn gweithredydd newid y chwith, nad ydynt yn aml yn hynod o ddefnyddiol, 562 00:36:10,450 --> 00:36:12,230 ond mae'n troi allan y gallant fod. 563 00:36:12,230 --> 00:36:16,560 Yn wir, pe baech yn cynrychioli rhywbeth fel amrywiaeth o Booleans 564 00:36:16,560 --> 00:36:21,260 dim ond i gynrychioli wir neu'n anwir, mae'n debyg eich bod yn awyddus i gadw golwg ar a yw 565 00:36:21,260 --> 00:36:24,630 ystafell yn llawn o 300 o fyfyrwyr yn bresennol, 566 00:36:24,630 --> 00:36:29,420 gallech ddatgan amrywiaeth o faint 300 o fath bool fel eich bod yn cael 300 bools, 567 00:36:29,420 --> 00:36:33,090 a gallwch osod yr un i wir os bydd rhywun yma a ffug fel arall. 568 00:36:33,090 --> 00:36:37,550 Pam fod cynrychiolaeth yn y strwythur data aneffeithlon? 569 00:36:39,370 --> 00:36:44,800 Beth sy'n ddrwg am y dyluniad o hynny, strwythur data amrywiaeth o 300 bools? 570 00:36:46,190 --> 00:36:49,600 Beth yw bool mewn gwirionedd o dan y cwfl? 571 00:36:49,600 --> 00:36:52,310 Mae hyn hefyd yn rhywbeth na allai fod yn gyfarwydd. 572 00:36:52,310 --> 00:36:53,720 Mae'n troi allan nad oes bool. 573 00:36:53,720 --> 00:36:56,620 Cofiwch, rydym fath o greu hynny gyda'r ffeil cs50.h, 574 00:36:56,620 --> 00:36:58,630 sydd ei hun yn cynnwys bool safonol. 575 00:36:58,630 --> 00:37:00,930 C yn fath o fud, fodd bynnag, pan ddaw'n fater o bool. 576 00:37:00,930 --> 00:37:04,880 Mae'n defnyddio 8 did i gynrychioli pob bool, sydd yn hollol wastraffus 577 00:37:04,880 --> 00:37:09,040 oherwydd yn amlwg, faint o ddarnau sydd eu hangen arnoch i gynrychioli bool? Dim ond 1. 578 00:37:09,040 --> 00:37:13,190 Felly, mae'n troi allan, os ydych yn awr yn cael y gallu gyda gweithredwyr bitwise 579 00:37:13,190 --> 00:37:17,760 i drin darnau unigol hyd yn oed mewn golosg, hyd yn oed mewn beit sengl, 580 00:37:17,760 --> 00:37:21,380 mae'n troi allan y gallech ostwng y gof i gynrychioli rhywbeth twp 581 00:37:21,380 --> 00:37:25,490 fel 'na strwythur data presenoldeb styled gan ffactor o 8. 582 00:37:25,490 --> 00:37:29,820 Yn hytrach na gan ddefnyddio 8 did i gynrychioli wir neu'n anwir, gallech llythrennol yn defnyddio 1 583 00:37:29,820 --> 00:37:34,500 drwy ddefnyddio beit unigol ar gyfer bob 8 o fyfyrwyr yn y dosbarth 584 00:37:34,500 --> 00:37:41,990 a toggling 0-1 darnau unigol trwy ddefnyddio mathau hyn o lefel isel driciau. 585 00:37:43,850 --> 00:37:49,460 Hynny'n rhoi gwir diwedd ar yr ynni. A oes unrhyw gwestiynau am weithrediadau bitwise? 586 00:37:49,460 --> 00:37:52,710 >> Yeah. >> [Myfyrwyr] A oes weithredwr unig neu? 587 00:37:52,710 --> 00:37:56,440 Ydw. Mae gweithredwr unigryw neu sy'n edrych fel hyn, ^, y symbol moron, 588 00:37:56,440 --> 00:38:02,070 sy'n golygu mai dim ond y peth cyntaf neu gall y ail beth fod yn 1 ar gyfer y cynnyrch i fod yn 1. 589 00:38:02,070 --> 00:38:07,750 Mae yna hefyd, nid ~, a fydd yn caniatáu i chi gwrthdro o 0 i 1 neu i'r gwrthwyneb hefyd. 590 00:38:07,750 --> 00:38:11,600 Ac mae hefyd yn weithredwr newid i'r dde, >>, sef y gwrthwyneb i'r un a welsom. 591 00:38:11,600 --> 00:38:13,850 Mae pob hawl. Gadewch i ni gymryd pethau yn awr i lefel uwch. 592 00:38:13,850 --> 00:38:16,770 Rydym yn dechrau drwy siarad am destun ac yna cywasgu ei 593 00:38:16,770 --> 00:38:19,650 a chynrychioli'r testun gyda niferoedd llai o ddarnau; 594 00:38:19,650 --> 00:38:22,890 buom yn siarad ychydig am sut y gallwn yn awr yn dechrau trin pethau ar lefel bitwise. 595 00:38:22,890 --> 00:38:26,640 Gadewch i ni yn awr yn chwyddo yn ôl i fyny 10,000 troedfedd i gynrychiolaeth 596 00:38:26,640 --> 00:38:29,250 o bethau mwy cymhleth megis graffeg. 597 00:38:29,250 --> 00:38:32,950 Yma mae gennym baner yr Almaen, dyma mae gennym un o Ffrainc. 598 00:38:32,950 --> 00:38:36,350 Gallai'r rhain gael eu cynrychioli mewn fformatau ffeil efallai y byddwch yn gwybod - GIFs, er enghraifft. 599 00:38:36,350 --> 00:38:40,030 Os ydych chi wedi gweld erioed ddelwedd ar y We sy'n gorffen efo. Gif, 600 00:38:40,030 --> 00:38:43,000 mae hwn yn ffurf cyfnewidfa graffeg. 601 00:38:43,000 --> 00:38:47,530 Mae'r 2 baneri yma fath o addas ar gyfer cywasgu 602 00:38:47,530 --> 00:38:52,050 am yr hyn efallai yn amlwg reswm? >> [Anghlywadwy ymateb y myfyrwyr] 603 00:38:52,050 --> 00:38:53,440 Mae yna lawer o ailadrodd, dde? 604 00:38:53,440 --> 00:38:57,270 Er mwyn anfon yr Almaen baner, yn meddwl am hyn fel bod â delwedd ar y sgrin 605 00:38:57,270 --> 00:38:59,030 cefnogi yn eich dyddiau Scratch. 606 00:38:59,030 --> 00:39:02,380 Efallai y byddwch yn cofio bod yna picsel unigol neu ddotiau sy'n cyfansoddi ddelwedd. 607 00:39:02,380 --> 00:39:06,650 >> Mae rhes gyfan o dotiau du ac un arall rhes gyfan o dotiau du. 608 00:39:06,650 --> 00:39:10,110 Mae 'na griw o resi o dotiau du y gallem weld os ydym chwyddo mewn gwirionedd, 609 00:39:10,110 --> 00:39:13,370 llawer yn hoffi pan rydym yn chwyddo i mewn ar Rob wyneb yn Photoshop. 610 00:39:13,370 --> 00:39:15,500 Cyn gynted ag y cawsom ddyfnach ac yn ddyfnach ac yn ddyfnach i mewn i'r ddelwedd, 611 00:39:15,500 --> 00:39:19,990 i chi ddechrau gweld y picselu, pob un o'r sgwariau a gyfansoddodd ei lygaid yn yr achos hwnnw. 612 00:39:19,990 --> 00:39:24,130 Un fargen yma. Os byddwn yn chwyddo i mewn gryn dipyn, byddech yn gweld dotiau unigol. 613 00:39:24,130 --> 00:39:27,110 Wel, mae hyn yn fath o wastraff o ddarnau. 614 00:39:27,110 --> 00:39:32,120 Os yw traean o'r faner yn ddu a thraean y faner yn felyn ac yn y blaen, 615 00:39:32,120 --> 00:39:34,860 pam na allwn ni rywsut cywasgu y faner? 616 00:39:34,860 --> 00:39:39,560 A gallai hyd yn oed y faner Ffrengig yn cael ei gywasgu er bod y patrwm hwn ychydig yn wahanol. 617 00:39:39,560 --> 00:39:44,120 Mae'n troi allan y fformat ffeil GIF yn fformat cywasgu lossless, 618 00:39:44,120 --> 00:39:48,420 sy'n golygu y gallwch gymryd ddelwedd fel y faner yr Almaen yma, 619 00:39:48,420 --> 00:39:53,540 gallwch chi daflu i ffwrdd llawer o'i ddarnau heb aberthu ansawdd. 620 00:39:53,540 --> 00:39:55,340 Mae hyn yn wahanol i rywbeth fel JPEG, 621 00:39:55,340 --> 00:39:57,050 y mae rhan fwyaf ohonom yn ôl pob tebyg yn fwy cyfarwydd. 622 00:39:57,050 --> 00:39:59,000 Facebook lluniau a lluniau Flickr ac yn y blaen 623 00:39:59,000 --> 00:40:02,200 yn cael eu bron bob amser yn arbed fel JPEG pan fyddant yn llwytho i fyny, 624 00:40:02,200 --> 00:40:08,100 ond JPEG yn lossy - fformat lle rydych yn taflu darnau - lossy 625 00:40:08,100 --> 00:40:10,430 ond byddwch hefyd yn taflu i ffwrdd ansawdd. 626 00:40:10,430 --> 00:40:13,890 Ac felly os ydych yn cywasgu lluniau gyda Photoshop neu lwytho i Facebook 627 00:40:13,890 --> 00:40:15,580 neu fynd â nhw ar ffôn wirioneddol crappy, 628 00:40:15,580 --> 00:40:19,510 eich bod yn gwybod bod y darlun yn dechrau mynd yn splotchy a pixelated, 629 00:40:19,510 --> 00:40:22,290 ac mae hynny oherwydd ei fod yn cael ei gywasgu gan y cyfrifiadur neu dros y ffôn 630 00:40:22,290 --> 00:40:24,550 gan llythrennol taflu gwybodaeth i ffwrdd. 631 00:40:24,550 --> 00:40:28,500 Ond GIF yn anhygoel ei fod yn gallu defnyddio darnau llai nag y gallai ddiofyn 632 00:40:28,500 --> 00:40:30,750 heb golli unrhyw wybodaeth. 633 00:40:30,750 --> 00:40:32,410 >> Ac yn ei hanfod yn gwneud hynny fel a ganlyn. 634 00:40:32,410 --> 00:40:38,740 Yn hytrach na storio mewn ffeil fel BMP byddai yn driphlyg RGB ar gyfer du, du, du, du, 635 00:40:38,740 --> 00:40:42,570 ddu, ddu, ddu, ddu, ddu, ddu, ddu, ddu ac yn y blaen, 636 00:40:42,570 --> 00:40:45,640 yn hytrach, y fformat GIF yn mynd i ddweud, "Black," 637 00:40:45,640 --> 00:40:48,330 ac yna, "Gwnewch hyn eto 100 gwaith," neu rywbeth fel 'na. 638 00:40:48,330 --> 00:40:52,280 "Black, ailadrodd y 100 gwaith, du, ailadrodd y 100 gwaith ..." 639 00:40:52,280 --> 00:40:54,530 "Melyn, ailadrodd y 100 o weithiau." 640 00:40:54,530 --> 00:40:57,200 Ac felly mae'n cofio, yn y bôn, mae'r picsel leftmost 641 00:40:57,200 --> 00:41:02,160 ac yna amgodio rhywsut y syniad o ailadrodd y picsel eto ac eto. 642 00:41:02,160 --> 00:41:06,110 Felly gall GIFs yna cywasgu eu hunain heb golli unrhyw wybodaeth. 643 00:41:06,110 --> 00:41:09,510 Ond os oedd gennych i ddyfalu, os mai dyna yw'r algorithm sy'n gifs defnyddio, 644 00:41:09,510 --> 00:41:13,180 pa un o'r baneri hyn, er eu bod yn edrych yn union o ran maint, 645 00:41:13,180 --> 00:41:19,620 yn mynd i fod yn llai pan arbed ar ddisg fel GIF? >> [Myfyrwyr] yr Almaen. 646 00:41:19,620 --> 00:41:21,660 Yr Almaen yn mynd i fod yn llai? Pam? 647 00:41:21,660 --> 00:41:26,620 [Myfyrwyr] Oherwydd eich bod yn ei ailadrodd llawer, lawer gwaith yn llorweddol 648 00:41:26,620 --> 00:41:29,010 ac yna i chi ailadrodd amser arall. >> Yn union. 649 00:41:29,010 --> 00:41:32,020 Oherwydd bod y bobl a ddyfeisiodd GIF unig fath o benderfynu fympwyol 650 00:41:32,020 --> 00:41:36,040 y bydd yr ailadrodd yn cael ei ysgogi llorweddol ac nid ochrol. 651 00:41:36,040 --> 00:41:40,900 Mae ailadrodd llawer mwy ochrol yma yn y faner yr Almaen nag yn y faner Ffrengig. 652 00:41:40,900 --> 00:41:44,430 Felly, os ydym mewn gwirionedd yn agor i fyny ffolder ar fy disg caled sydd y GIFs, 653 00:41:44,430 --> 00:41:51,920 alli 'n weithredol weld bod y faner yr Almaen yma yw 2 cilobeit ac mae'r un Ffrangeg yw 4 cilobeit. 654 00:41:51,920 --> 00:41:54,080 Mae'n digwydd i fod yn gyd-ddigwyddiad bod un ddwywaith y llall, 655 00:41:54,080 --> 00:41:57,960 ond mae'n mewn gwirionedd yr achos bod y faner Ffrengig yn llawer mwy. 656 00:41:57,960 --> 00:42:01,250 >> Hyd yn oed er ein bod yn sôn yma am graffeg, gall yr un syniadau yn berthnasol i 657 00:42:01,250 --> 00:42:05,150 Nid yw pethau fel baneri ond delweddau sydd yn ychydig yn fwy cymhleth. 658 00:42:05,150 --> 00:42:08,170 Os ydych yn cymryd llun o afal, yn sicr mae 'na lot o ddyblygu yno, 659 00:42:08,170 --> 00:42:11,040 er mwyn i ni rywsut gofio bod y cefndir rhagosodedig yn las 660 00:42:11,040 --> 00:42:13,230 ac nid, fel y llun ar y dde yn awgrymu, 661 00:42:13,230 --> 00:42:16,830 rhaid i chi gofio y lliw o bob picsel unigol yn y llun hwn. 662 00:42:16,830 --> 00:42:21,060 Felly gallwn daflu i ffwrdd darnau yno heb golli gwybodaeth. 663 00:42:21,060 --> 00:42:23,340 Yr afal yn dal i edrych yn union yr un fath. 664 00:42:23,340 --> 00:42:27,510 Yn yr enghraifft yma, efallai y byddwch yn gweld beth sy'n digwydd mewn ffilm. 665 00:42:27,510 --> 00:42:31,970 Mae'r rhain yn cynrychioli riliau ysgol ffilm hen lle yn y ddelwedd top mae 666 00:42:31,970 --> 00:42:36,900 gennych gyrru gwerth ardrethol heibio i dŷ a choeden. 667 00:42:36,900 --> 00:42:42,130 Ac fel y fan yn gyrru heibio o'r chwith i'r dde, yr hyn nad sy'n amlwg yn newid? 668 00:42:42,130 --> 00:42:45,320 Nid yw'r tŷ yn mynd i unrhyw le, ac nid yw'r goeden yn mynd yn unrhyw le. 669 00:42:45,320 --> 00:42:47,700 Yr unig beth sy'n symud yn y fan yn yr achos hwn. 670 00:42:47,700 --> 00:42:51,650 Felly, fel Cefndir Dim newid yn awgrymu, beth allwch chi ei wneud mewn ffilmiau 671 00:42:51,650 --> 00:42:56,530 yn yr un modd yn unig taflu i ffwrdd gwybodaeth nad yw'n newid rhwng fframiau. 672 00:42:56,530 --> 00:42:58,900 Gelwir hyn yn gyffredinol fel interframe cywasgu 673 00:42:58,900 --> 00:43:02,120 lle os yw hyn yn ffrâm yn edrych bron yn union yr un yma, 674 00:43:02,120 --> 00:43:05,390 gadewch i ni trafferthu storio ar ddisg unrhyw wybodaeth union yr un fath 675 00:43:05,390 --> 00:43:09,250 ar y fframiau canolradd, gadewch i ni ond yn defnyddio fframiau allweddol unwaith yn tra 676 00:43:09,250 --> 00:43:13,420 sydd mewn gwirionedd yn cadw y wybodaeth redundantly yn unig fel bwyll bach gwirio. 677 00:43:13,420 --> 00:43:18,620 >> Mewn cyferbyniad, ymagwedd arall fideo gywasgu sydd yn y ail enghraifft ac yn is yma, 678 00:43:18,620 --> 00:43:23,970 lle yn hytrach na storio 30 fframiau, pam na wnewch chi yn unig storio 15 fframiau ail yn lle hynny? 679 00:43:23,970 --> 00:43:27,070 Yn hytrach na'r math o ffilm llifo hardd, yn hollol, 680 00:43:27,070 --> 00:43:30,060 gallai fod yn edrych fel ei fod yn atal dweud ychydig bach, ysgol hen bach, 681 00:43:30,060 --> 00:43:37,190 ond bydd yr effaith net fydd defnyddio darnau llawer llai nag y gallai fel arall fod yn angenrheidiol. 682 00:43:37,190 --> 00:43:39,240 Felly, lle mae hyn yn wedyn yn gadael i ni? 683 00:43:39,240 --> 00:43:41,700 Yr oedd yn dipyn o neilltu ar ble arall y gallwch fynd â cywasgu. 684 00:43:41,700 --> 00:43:45,140 Am fwy o wybodaeth am hynny, gymryd dosbarth fel CS175 yma. 685 00:43:45,140 --> 00:43:46,990 Dyma enghraifft arall o fewn fideo. 686 00:43:46,990 --> 00:43:49,190 Os yw'r gwenyn yw'r unig beth sy'n symud, 687 00:43:49,190 --> 00:43:51,790 gallwch chi wir yn taflu i ffwrdd gwybodaeth yn y fframiau canol 688 00:43:51,790 --> 00:43:55,260 oherwydd nad oedd y blodau a'r awyr a dail yn newid. 689 00:43:55,260 --> 00:43:57,960 Ond gadewch i ni nawr ystyried 1 peth diwethaf. 690 00:43:57,960 --> 00:44:03,890 Yn y 5 munud nesaf rydym yn gadael y tu ôl i C am byth mewn darlith? Ydw. Nid yn y psets, er. 691 00:44:03,890 --> 00:44:10,210 Stori ddiwethaf am C ac yna rydym yn mynd i'r stwff iawn sexy 692 00:44:10,210 --> 00:44:13,870 cynnwys HTML a Gwe a woo-hw. Mae pob hawl. 693 00:44:13,870 --> 00:44:16,050 Yma rydym yn mynd. Dyna'r cymhelliant. 694 00:44:16,050 --> 00:44:20,020 Mae'n troi allan yr holl amser hwn pan fyddwn wedi bod yn ysgrifennu rhaglenni rydym yn cynnal Clang. 695 00:44:20,020 --> 00:44:23,890 Ac Clang, rydym wedi dweud ers yr wythnos gyntaf 'n bert lawer, yn cymryd cod ffynhonnell 696 00:44:23,890 --> 00:44:25,740 ac yn ei droi'n cod gwrthrych. 697 00:44:25,740 --> 00:44:28,540 Mae'n cymryd C ac yn ei droi'n 0s a 1s. 698 00:44:28,540 --> 00:44:32,150 Rydw i wedi fath o bod yn gorwedd i chi am ychydig wythnosau gan nad yw'n mor syml â hynny. 699 00:44:32,150 --> 00:44:36,750 >> Mae llawer mwy yn mynd ymlaen o dan y cwfl pan fyddwch yn rhedeg rhaglen fel Clang. 700 00:44:36,750 --> 00:44:39,560 Yn wir, gall y broses o lunio rhaglen mewn gwirionedd fod yn crynhoi, 701 00:44:39,560 --> 00:44:42,210 fel y byddech yn cofio o Rob fideo ar crynoadyddion, 702 00:44:42,210 --> 00:44:47,580 i mewn i'r 4 cam: cyn-prosesu, crynhoi ei hun, cydosod, a chysylltu. 703 00:44:47,580 --> 00:44:51,950 Ond rydym yn y dosbarth a rhan fwyaf o bobl yn y byd fel arfer yn crynhoi pob un o'r camau 704 00:44:51,950 --> 00:44:54,410 fel dim ond "llunio." 705 00:44:54,410 --> 00:44:58,070 Ond os ydym yn dechrau gyda cod ffynhonnell fel hyn, cofio efallai mai dyma raglen C symlaf 706 00:44:58,070 --> 00:45:03,530 rydym wedi ysgrifennu hyd yn hyn, yn cofio pan luniwyd yn dod i ben i fyny yn edrych fel hyn. 707 00:45:03,530 --> 00:45:07,310 Ond mae mewn gwirionedd yn gam canolradd, a'r rhai camau fel a ganlyn. 708 00:45:07,310 --> 00:45:10,750 Yn gyntaf, mae hyn yn beth ar frig o hyn ac mae'r rhan fwyaf o'n rhaglenni, 709 00:45:10,750 --> 00:45:13,550 # Cynnwys 710 00:45:13,550 --> 00:45:17,210 Beth mae # cynnwys yn i ni? 711 00:45:17,210 --> 00:45:24,150 Mae'n gopïau 'n bert lawer a pastau cynnwys stdio.h i mewn i fy ffeil fel bod pam? 712 00:45:24,150 --> 00:45:27,220 Pam ydw i'n poeni am gynnwys stdio.h? Beth sydd yn bod o ddiddordeb? 713 00:45:27,220 --> 00:45:32,310 Printf y datganiad, ei prototeip, fel bod y casglwr wedyn yn gwybod beth wyf yn ei olygu 714 00:45:32,310 --> 00:45:34,900 pan fyddaf yn sôn am y swyddogaeth hon printf. 715 00:45:34,900 --> 00:45:39,390 Felly gam 1 wrth lunio yn cyn-brosesu, lle mae rhaglen fel Clang 716 00:45:39,390 --> 00:45:43,450 neu ryw raglen cynorthwy-ydd sy'n Clang dod gyda darllen eich cod top i'r gwaelod, 717 00:45:43,450 --> 00:45:47,740 chwith i'r dde, ac unrhyw amser y mae'n gweld symbol # ddilyn gan allweddair fel cynnwys, 718 00:45:47,740 --> 00:45:53,980 mae'n perfformio gweithrediad hwnnw, copïo a gludo yn yr achos stdio.h i mewn i'ch ffeil. 719 00:45:53,980 --> 00:45:55,510 Dyna cam 1. 720 00:45:55,510 --> 00:45:59,620 Yna oes gennych ffeil C llawer mwy oherwydd y copi enfawr, swydd past sydd wedi digwydd yn unig. 721 00:45:59,620 --> 00:46:01,710 >> Cam 2 bellach yn llunio. 722 00:46:01,710 --> 00:46:04,880 Ond mae'n troi allan yn cymryd llunio cod ffynhonnell sy'n edrych fel hyn 723 00:46:04,880 --> 00:46:08,160 ac yn troi i mewn i rywbeth sy'n edrych fel hyn, 724 00:46:08,160 --> 00:46:12,560 sydd ar gyfer y rhai cyfarwydd yn cael ei alw? >> [Myfyrwyr] Cynulliad. Iaith y Cynulliad. >> 725 00:46:12,560 --> 00:46:16,700 Mae hyn mewn gwirionedd yn rhywbeth os ydych yn cymryd CS61 byddwch yn plymio i mewn i yn fwy manwl. 726 00:46:16,700 --> 00:46:22,380 Yw hyn yn ymwneud mor agos ag y gallwch fynd i ysgrifennu 0s a 1s eich hun 727 00:46:22,380 --> 00:46:25,850 ond yn ysgrifennu pethau yn y fath ffordd sy'n dal i wneud o leiaf ychydig o synnwyr. 728 00:46:25,850 --> 00:46:30,760 Mae'r rhain yn gyfarwyddiadau peiriant, ac os ydym yn sgroliwch i lawr at y prif swyddogaeth yma, 729 00:46:30,760 --> 00:46:35,470 sylwi bod y cyfarwyddyd hwn gwthio, yn symud cyfarwyddyd, tynnu cyfarwyddyd, 730 00:46:35,470 --> 00:46:38,550 ffoniwch cyfarwyddyd, ac yn y blaen. 731 00:46:38,550 --> 00:46:42,930 Pan fyddwch yn clywed bod eich cyfrifiadur wedi Intel tu mewn, 732 00:46:42,930 --> 00:46:46,180 gennych CPU Intel yn eich Mac neu PC, beth mae hynny'n ei olygu? 733 00:46:46,180 --> 00:46:51,200 Mae CPU daw adeiladwyd gan gwmnïau fel Intel deall cyfarwyddiadau penodol. 734 00:46:51,200 --> 00:46:55,770 Nid oes ganddynt unrhyw syniad pa swyddogaethau fel cyfnewid yn cael neu yn cael eu prif per se, 735 00:46:55,770 --> 00:47:00,060 ond maent yn gwybod beth yn isel iawn ar lefel cyfarwyddiadau fel adio, tynnu, gwthio, 736 00:47:00,060 --> 00:47:02,430 symud, ffoniwch, ac yn y blaen yn cael eu. 737 00:47:02,430 --> 00:47:06,170 Felly, pan fyddwch yn llunio C côd i mewn cynulliad iaith, 738 00:47:06,170 --> 00:47:11,820 eich defnyddiwr gyfeillgar iawn-edrych cod yn cael ei drawsnewid i mewn i rywbeth sy'n edrych fel hyn, 739 00:47:11,820 --> 00:47:21,670 sy'n llythrennol yn symud bytes neu 4 bytes o gwmpas mewn unedau bychain o'r fath mewn ac allan o'r CPU. 740 00:47:21,670 --> 00:47:26,820 Ond yn y diwedd, pan Clang yn barod i gymryd y gynrychiolaeth eich rhaglen 741 00:47:26,820 --> 00:47:30,940 i 0s a 1s, yna y cam a elwir yn cydosod yn digwydd, 742 00:47:30,940 --> 00:47:33,850 ac eto i gyd yn digwydd yn y Blink o llygad wrth redeg Clang. 743 00:47:33,850 --> 00:47:39,300 Rydym yn dechrau yma, mae'n allbynnu ffeil fel hyn, ac yna mae'n troi i'r hyn 0s a 1s. 744 00:47:39,300 --> 00:47:42,000 Ac os ydych chi am fynd yn ôl ar ryw adeg ac mewn gwirionedd yn gweld hyn yn gweithredu, 745 00:47:42,000 --> 00:47:48,220 os byddaf yn mynd i mewn i hello1.c--mae hyn yn un o'r rhaglenni cyntaf i ni edrych ar - 746 00:47:48,220 --> 00:47:53,710 Fel arfer, byddem yn llunio hyn gyda hello1.c Clang a byddai hyn yn rhoi i ni a.out. 747 00:47:53,710 --> 00:47:59,890 Os trwy cyferbyniad chi yn hytrach na rhoi y faner-S, beth y byddwch yn ei gael yw hello1.s 748 00:47:59,890 --> 00:48:02,750 a byddwch mewn gwirionedd yn gweld yr iaith yn y Cynulliad. 749 00:48:02,750 --> 00:48:05,750 >> Rwy'n gwneud hyn ar gyfer rhaglen byr iawn, ond os byddwch yn mynd yn ôl ar gyfer Scramble 750 00:48:05,750 --> 00:48:08,740 neu Adfer neu unrhyw raglen ydych wedi ysgrifenedig ac yn unig allan o chwilfrydedd 751 00:48:08,740 --> 00:48:13,240 am weld beth mewn gwirionedd mae'n edrych fel, yr hyn mewn gwirionedd yn cael eu bwydo i mewn i'r CPU, 752 00:48:13,240 --> 00:48:15,700 gallwch ddefnyddio y-S faner gyda Clang. 753 00:48:15,700 --> 00:48:17,770 Ond yna yn olaf, mae yn dal 1 Gotcha. 754 00:48:17,770 --> 00:48:21,810 Dyma'r 0au ac 1 sy'n cynrychioli fy gweithredu helo, byd. 755 00:48:21,810 --> 00:48:25,530 Ond yr wyf yn defnyddio rhywun arall swyddogaeth yn fy rhaglen. 756 00:48:25,530 --> 00:48:28,710 Felly, er bod y broses wedi bod yn cymryd yr wyf hello.c, 757 00:48:28,710 --> 00:48:34,280 mae'n cael ei llunio i mewn i cynulliad cod, ac yna mae'n cael ei gydosod i mewn i 0au ac 1, 758 00:48:34,280 --> 00:48:37,460 yr unig 0au ac 1 sy'n cael eu outputted ar hyn o bryd 759 00:48:37,460 --> 00:48:40,270 yw'r rhai sy'n deillio o fy cod. 760 00:48:40,270 --> 00:48:44,400 Ond y person a ysgrifennodd printf, maent yn llunio eu cod 20 mlynedd yn ôl 761 00:48:44,400 --> 00:48:47,000 ac mae wedi gosod bellach yn rhywle ar y peiriant, 762 00:48:47,000 --> 00:48:51,610 felly rydym rywsut rhaid iddynt gyfuno 0au ef neu hi ac 1 gyda fy 0s a 1s, 763 00:48:51,610 --> 00:48:56,160 a daw hynny â ni at y cam 4 a derfynol o gasglu, a elwir yn cysylltu. 764 00:48:56,160 --> 00:48:58,680 Felly, ar yr ochr chwith mae gennym yr un llun yn union fel o'r blaen: 765 00:48:58,680 --> 00:49:02,580 hello.c dod cynulliad cod yn dod yn 0s a 1s. 766 00:49:02,580 --> 00:49:05,960 Ond yn cofio fy mod yn defnyddio'r safon I / O llyfrgell yn fy cod, 767 00:49:05,960 --> 00:49:10,350 ac mae hynny'n golygu rhywle ar y cyfrifiadur mae ffeil o'r enw stdio.c 768 00:49:10,350 --> 00:49:13,980 neu o leiaf y fersiwn a luniwyd hynny oherwydd bod rhywun rai blynyddoedd yn ôl 769 00:49:13,980 --> 00:49:18,530 llunio stdio.c i mewn i cod cynulliad ac yna criw cyfan o 0s a 1s. 770 00:49:18,530 --> 00:49:21,130 Mae hyn yn beth a elwir yn statig neu lyfrgell deinamig. 771 00:49:21,130 --> 00:49:23,350 Mae'n rhai ffeil yn eistedd rhywle yn y peiriant. 772 00:49:23,350 --> 00:49:28,710 >> Ond yn olaf, rhaid i mi gymryd fy 0s a 1s, a bod y person 0s a 1s 773 00:49:28,710 --> 00:49:32,760 a rhywsut cysylltu â'i gilydd, yn llythrennol cyfuno rhai 0s a 1s 774 00:49:32,760 --> 00:49:37,900 mewn un ffeil o'r enw a.out neu hello1 neu beth bynnag y gelwais fy rhaglen 775 00:49:37,900 --> 00:49:43,320 fel bod y canlyniad terfynol yr holl o'r 1s 0s a ddylai gyfansoddi fy rhaglen. 776 00:49:43,320 --> 00:49:45,660 Felly, yr holl amser hwn y semester pan fyddwch wedi bod yn defnyddio Clang 777 00:49:45,660 --> 00:49:48,750 a hyd yn oed yn fwy diweddar yn rhedeg eu gwneud er mwyn rhedeg Clang, 778 00:49:48,750 --> 00:49:53,580 pob un o'r camau hyn wedi bod yn digwydd math o yn syth ond yn fwriadol. 779 00:49:53,580 --> 00:49:57,830 Ac felly os ydych yn parhau ar mewn gwyddoniaeth gyfrifiadurol, sef CS61, 780 00:49:57,830 --> 00:50:00,850 dyma'r haen y byddwch yn parhau i plicio ôl oddi yno 781 00:50:00,850 --> 00:50:06,980 sôn am effeithlonrwydd, goblygiadau diogelwch, ac yn y blaen o'r manylion hyn ar lefel is. 782 00:50:06,980 --> 00:50:09,220 Ond gyda hynny, rydym chi ar fin gadael C ar ôl. 783 00:50:09,220 --> 00:50:11,420 Gadewch i ni fynd yn ei flaen ac yn cymryd ein 5-munud egwyl yn awr, 784 00:50:11,420 --> 00:50:14,190 a phan fyddwn yn dod yn ôl: y Rhyngrwyd. 785 00:50:17,280 --> 00:50:19,170 Mae pob hawl. Rydym yn ôl. 786 00:50:19,170 --> 00:50:23,590 Nawr rydym yn dechrau ein golwg nid yn unig yn HTML oherwydd, fel y gwelwch, 787 00:50:23,590 --> 00:50:26,050 HTML ei hun mewn gwirionedd yn eithaf syml 788 00:50:26,050 --> 00:50:29,270 ond mewn gwirionedd yn rhaglennu ar y we yn fwy cyffredinol, rhwydweithio yn fwy cyffredinol, 789 00:50:29,270 --> 00:50:31,770 a sut y mae pob un o'r technolegau dod at ei gilydd 790 00:50:31,770 --> 00:50:35,400 i'n galluogi i greu rhaglenni llawer mwy soffistigedig ar ben y Rhyngrwyd 791 00:50:35,400 --> 00:50:38,690 na hyd yn hyn rydym wedi bod yn gallu yn y ffenestri du a gwyn. 792 00:50:38,690 --> 00:50:42,140 Yn wir, ar y pwynt hwn yn y semester, hyd yn oed er y bydd yn treulio amser yn gymharol llai 793 00:50:42,140 --> 00:50:46,200 ar PHP, HTML, CSS, JavaScript, SQL a mwy, 794 00:50:46,200 --> 00:50:48,480 rhan fwyaf o fyfyrwyr yn gwneud y pen draw yn gwneud prosiectau terfynol sy'n seiliedig ar y we 795 00:50:48,480 --> 00:50:51,230 oherwydd fel y gwelwch, y cefndir ydych yn awr o ran C 796 00:50:51,230 --> 00:50:54,450 yn fawr iawn berthnasol i'r ieithoedd hyn ar lefel uwch. 797 00:50:54,450 --> 00:50:56,800 >> Ac wrth i chi ddechrau meddwl am eich prosiect terfynol, 798 00:50:56,800 --> 00:50:59,940 sydd, yn debyg iawn Problem Set 0 lle rydych yn cael eu hannog 799 00:50:59,940 --> 00:51:02,160 i wneud unrhyw beth y rhan fwyaf o ddiddordeb i chi yn Scratch, 800 00:51:02,160 --> 00:51:05,790 y prosiect terfynol yw eich cyfle i gymryd eich gwybodaeth newfound a savvy gyda C 801 00:51:05,790 --> 00:51:09,850 neu PHP neu JavaScript neu debyg allan am dro 802 00:51:09,850 --> 00:51:12,330 ac yn creu eich darn eich hun o feddalwedd ar gyfer y byd ei weld. 803 00:51:12,330 --> 00:51:17,770 Ac i hadau chi gyda syniadau, yn gwybod eich bod yn gallu ben yma, projects.cs50.net. 804 00:51:17,770 --> 00:51:21,800 Bob blwyddyn rydym yn cymell syniadau gan cyfadran a staff a grwpiau o fyfyrwyr ar y campws 805 00:51:21,800 --> 00:51:27,330 dim ond i gyflwyno eu syniadau ar gyfer pethau diddorol y gellid eu datrys gan ddefnyddio cyfrifiaduron, 806 00:51:27,330 --> 00:51:29,860 defnyddio gwefannau, gan ddefnyddio meddalwedd. 807 00:51:29,860 --> 00:51:32,360 Felly, os ydych yn cael trafferth i ddod o hyd i syniad eich hun, 808 00:51:32,360 --> 00:51:35,790 ar bob cyfrif sgrolio drwy'r syniadau yno o eleni a'r llynedd. 809 00:51:35,790 --> 00:51:39,990 Mae'n berffaith iawn i fynd i'r afael â phrosiect sydd wedi ei afael o'r blaen. 810 00:51:39,990 --> 00:51:44,540 Rydym wedi gweld llawer o apps ar gyfer gweld y statws o golchi dillad ar y campws, 811 00:51:44,540 --> 00:51:47,000 apps llawer ar gyfer llywio y fwydlen bwyta neuadd, 812 00:51:47,000 --> 00:51:49,540 apps llawer o lywio drwy'r catalog cwrs ac yn y blaen. 813 00:51:49,540 --> 00:51:53,680 Ac yn wir, mewn darlith yn y dyfodol ac mewn seminarau yn y dyfodol, 814 00:51:53,680 --> 00:51:57,750 byddwn yn eich cyflwyno i rai APIs ar gael i'r cyhoedd, yn ar gael yn fasnachol 815 00:51:57,750 --> 00:52:02,520 yn ogystal ag yma ar gael o CS50 ar y campws er mwyn i chi gael mynediad at ddata 816 00:52:02,520 --> 00:52:04,910 a gall wedyn wneud pethau diddorol ag ef. 817 00:52:04,910 --> 00:52:09,380 Felly mwy o wybodaeth am brosiectau terfynol mewn ychydig ddyddiau pan fyddwn yn rhyddhau y fanyleb, 818 00:52:09,380 --> 00:52:12,990 ond ar hyn o bryd, yn gwybod y gallwch weithio unigol neu gydag 1 neu 2 ffrindiau 819 00:52:12,990 --> 00:52:16,010 ar y rhan fwyaf unrhyw brosiect o ddiddordeb i chi. 820 00:52:16,010 --> 00:52:18,080 Y Rhyngrwyd. 821 00:52:18,080 --> 00:52:22,300 Byddwch yn mynd yn ei flaen a thynnu allan eich gliniadur, byddwch yn mynd i facebook.com am y tro cyntaf, 822 00:52:22,300 --> 00:52:27,020 Nid yw wedi logio i mewn yn ddiweddar, a daro Chofnoda. Beth yn union sy'n digwydd? 823 00:52:27,020 --> 00:52:30,150 >> Pan fyddwch yn daro Nodwch ar eich cyfrifiadur, criw cyfan o gamau 824 00:52:30,150 --> 00:52:32,600 dechrau fath o hud a lledrith yn digwydd. 825 00:52:32,600 --> 00:52:35,960 Felly chi yma ar y chwith, weinydd y we fel Facebook yma ar y dde, 826 00:52:35,960 --> 00:52:42,500 a rhywsut ydych yn defnyddio yr iaith hon a elwir yn HTTP, Hypertext Drosglwyddo Protocol. 827 00:52:42,500 --> 00:52:46,770 Nid yw HTTP yn iaith raglennu. Mae'n fwy o protocol. 828 00:52:46,770 --> 00:52:52,310 Mae'n set o gonfensiynau bod porwyr gwe a gweinyddwyr gwe defnyddio wrth intercommunicating. 829 00:52:52,310 --> 00:52:54,360 A beth mae hyn yn golygu fel a ganlyn. 830 00:52:54,360 --> 00:52:56,790 Mae llawer yn hoffi yn y byd go iawn, mae gennym y confensiynau 831 00:52:56,790 --> 00:53:00,140 lle os byddwch yn cwrdd â rhai dynol am y tro cyntaf, os nad ydych yn meddwl humoring mi yma, 832 00:53:00,140 --> 00:53:03,980 Efallai y byddwn yn dod i fyny i chi, yn dweud, "Hi, fy enw i yw David." >> Hi, David. Fy enw i yw Sammy. 833 00:53:03,980 --> 00:53:05,770 "Hi, David. Fy enw i yw Sammy." 834 00:53:05,770 --> 00:53:08,310 Felly, nawr rydym wedi cymryd rhan yn unig yn y math hwn o protocol wirion dynol 835 00:53:08,310 --> 00:53:12,200 lle rwyf wedi cychwyn y protocol, Sammy wedi ymateb, 836 00:53:12,200 --> 00:53:15,060 rydym wedi ysgwyd dwylo, ac mae'r trafodiad yn gyflawn. 837 00:53:15,060 --> 00:53:18,260 HTTP yn debyg iawn o ran ysbryd. 838 00:53:18,260 --> 00:53:23,350 Pan fydd eich ceisiadau ar y we porwr www.facebook.com, 839 00:53:23,350 --> 00:53:27,020 beth yw eich porwr yn ei wneud mewn gwirionedd yn ymestyn ei law, fel petai, 840 00:53:27,020 --> 00:53:29,960 i'r gweinydd ac mae'n anfon neges. 841 00:53:29,960 --> 00:53:34,220 A dyna neges yn nodweddiadol yn cael rhywbeth fel - beth ydych chi eisiau ei gael? - 842 00:53:34,220 --> 00:53:38,740 mynd i mi y tudalen cartref sy'n cael ei dynodi fel arfer gan un slaes ar ddiwedd URL. 843 00:53:38,740 --> 00:53:43,790 Ac yn union fel eich bod yn gwybod pa iaith dwi'n siarad, yr wyf yn y porwr i'n mynd i ddweud wrthych 844 00:53:43,790 --> 00:53:46,930 fy mod yn siarad HTTP fersiwn 1.1, 845 00:53:46,930 --> 00:53:51,980 A hefyd ar gyfer mesur da dwi'n mynd i ddweud wrthych fod y llu fy mod am i'r dudalen gartref 846 00:53:51,980 --> 00:53:54,120 yn facebook.com. 847 00:53:54,120 --> 00:53:57,730 Yn nodweddiadol, a, porwr gwe unbeknownst i chi dynol, 848 00:53:57,730 --> 00:54:03,350 anfon y neges ar draws y Rhyngrwyd pan fyddwch yn syml deipio www.facebook.com, 849 00:54:03,350 --> 00:54:05,370 >> Mewnbynnu, i mewn i'ch porwr. 850 00:54:05,370 --> 00:54:07,300 A beth mae Facebook yn ymateb gyda? 851 00:54:07,300 --> 00:54:12,540 Mae'n ymateb gyda rhai manylion tebyg sy'n edrych cryptic, ond hefyd yn llawer mwy. 852 00:54:12,540 --> 00:54:14,310 Gadewch i mi fynd yn ei flaen i dudalen gartref Facebook yma. 853 00:54:14,310 --> 00:54:17,480 Dyma'r sgrîn sydd byth yn y rhan fwyaf ohonom yn ôl pob tebyg weld os ydych yn aros wedi logio i mewn drwy'r amser, 854 00:54:17,480 --> 00:54:19,830 ond mae hyn yn wir eu tudalen gartref. 855 00:54:19,830 --> 00:54:24,150 Os gwnawn hyn yn Chrome, yn sylwi eich bod yn gallu dynnu i fyny y bwydlenni cyd-destun bach. 856 00:54:24,150 --> 00:54:26,980 Gan ddefnyddio Chrome, boed ar Mac OS, Windows, Linux, neu bethau tebyg, 857 00:54:26,980 --> 00:54:31,840 os ydych Rheoli cliciwch neu cliciwch chwith, gallwch fel arfer dynnu i fyny bwydlen sy'n edrych fel hyn, 858 00:54:31,840 --> 00:54:35,870 lle mae ychydig o ddewisiadau yn disgwyl amdano, ac un ohonynt yw Ffynhonnell Page View. 859 00:54:35,870 --> 00:54:39,920 Gallwch hefyd fel arfer yn cyrraedd y pethau hyn drwy fynd i'r ddewislen View a procio o gwmpas. 860 00:54:39,920 --> 00:54:42,750 Er enghraifft, yma o dan View, Datblygwr yw'r un peth. 861 00:54:42,750 --> 00:54:45,780 Rydw i'n mynd i fynd yn ei flaen ac edrych ar Ffynhonnell Page View. 862 00:54:45,780 --> 00:54:50,800 Beth fyddwch chi'n ei weld yn y HTML bod Mark wedi ysgrifennu i gynrychioli facebook.com. 863 00:54:50,800 --> 00:54:55,910 Mae'n llanast llwyr yma, ond byddwn yn gweld bod hyn yn gwneud synnwyr ychydig yn fwy cyn bo hir. 864 00:54:55,910 --> 00:54:59,840 Ond mae rhai patrymau yma. Gadewch i mi sgrolio i lawr i bethau fel hyn. 865 00:54:59,840 --> 00:55:05,730 Mae hyn yn anodd i bobl i ddarllen, ond sylwi fod yna patrwm hwn o cromfachau ongl 866 00:55:05,730 --> 00:55:10,360 gyda geiriau allweddol fel opsiwn, geiriau allweddol fel gwerth, rhai llinynnau a ddyfynnwyd. 867 00:55:10,360 --> 00:55:15,660 Dyma lle pan fyddwch yn ymuno am y tro cyntaf a bennir beth yw eich blwyddyn geni yn. 868 00:55:15,660 --> 00:55:19,020 Bod gwymplen o flynyddoedd geni ei hamgodio rywsut yma 869 00:55:19,020 --> 00:55:23,870 yn yr iaith hon o'r enw HTML, HyperText Markup Language. 870 00:55:23,870 --> 00:55:27,730 Mewn geiriau eraill, pan fydd eich porwr yn gofyn am dudalen ar y we, 871 00:55:27,730 --> 00:55:30,610 mae'n siarad confensiwn hwn a elwir yn HTTP. 872 00:55:30,610 --> 00:55:35,170 Ond beth mae facebook.com ymateb i'r cais hwnnw gyda? 873 00:55:35,170 --> 00:55:38,260 >> Mae'n ymateb gyda rhai o'r negeseuon cryptig, fel y byddwn yn gweld mewn munud. 874 00:55:38,260 --> 00:55:43,760 Ond mae'r rhan fwyaf o'i hymateb yn y ffurf HTML, HyperText Markup Language. 875 00:55:43,760 --> 00:55:47,170 Dyna yr iaith gwirioneddol y mae tudalen ar y we yn cael ei ysgrifennu. 876 00:55:47,170 --> 00:55:52,030 A beth porwr gwe wir yn hynny yw, ar ôl derbyn rhywbeth sy'n edrych fel hyn, 877 00:55:52,030 --> 00:55:57,120 darllen yn top i'r gwaelod, o'r chwith i'r dde, ac unrhyw amser y mae'n gweld un o'r bracedi ongl 878 00:55:57,120 --> 00:56:03,370 ddilyn gan allweddair fel opsiwn, mae'n dangos bod iaith markup yn y ffordd briodol. 879 00:56:03,370 --> 00:56:06,820 Yn yr achos hwn, byddai'n dangos gwymplen o flynyddoedd. 880 00:56:06,820 --> 00:56:09,240 Ond unwaith eto, mae hwn yn llanast llwyr i edrych ar. 881 00:56:09,240 --> 00:56:16,630 Nid yw hyn oherwydd bod datblygwyr Facebook amlygu 0 ar gyfer 5 am arddull, er enghraifft. 882 00:56:16,630 --> 00:56:20,190 Mae hyn oherwydd bod y rhan fwyaf o'r cod eu bod yn ysgrifennu mewn gwirionedd yn ysgrifenedig hardd, 883 00:56:20,190 --> 00:56:22,450 Dywedodd yn dda, mewnoli 'n glws, ac ati, 884 00:56:22,450 --> 00:56:26,080 ond o beiriannau gwrs, cyfrifiaduron, porwyr ddim wir yn rhoi damn 885 00:56:26,080 --> 00:56:27,890 a yw eich cod yn styled dda. 886 00:56:27,890 --> 00:56:33,100 Ac yn wir, mae'n hollol wastraffus i gyrraedd yr allwedd tab holl adegau hynny 887 00:56:33,100 --> 00:56:37,650 ac i roi sylwadau trwy gydol eich cod ac i ddewis enwau amrywiol iawn disgrifiadol 888 00:56:37,650 --> 00:56:42,340 oherwydd os nad yw'r porwr yn poeni, y cyfan rydych chi'n ei wneud ar ddiwedd y dydd yn gwastraffu bytes. 889 00:56:42,340 --> 00:56:46,660 >> Felly, mae'n troi allan yr hyn y rhan fwyaf o wefannau wneud yw er bod y cod ffynhonnell ar gyfer facebook.com, 890 00:56:46,660 --> 00:56:49,550 gyfer cs50.net a phob un o'r gwefannau eraill ar y Rhyngrwyd 891 00:56:49,550 --> 00:56:53,730 yn nodweddiadol hysgrifennu'n dda ac yn dda sylwadau a mewnoli 'n glws ac yn y blaen, 892 00:56:53,730 --> 00:56:59,270 fel arfer cyn i'r wefan yn cael ei roi ar y Rhyngrwyd, caiff y cod ei minified, 893 00:56:59,270 --> 00:57:02,970 lle mae'r HTML a CSS - rhywbeth arall y byddwn yn fuan yn gweld - 894 00:57:02,970 --> 00:57:05,960 y cod JavaScript byddwn cyn hir yn gweld ei gywasgu 895 00:57:05,960 --> 00:57:09,250 lle enwau amrywiol hir yn digwydd yn X ac Y a Z, 896 00:57:09,250 --> 00:57:13,900 a hynny i gyd gofod sy'n gwneud popeth yn edrych mor ddarllenadwy yn cael ei daflu i gyd i ffwrdd, 897 00:57:13,900 --> 00:57:17,700 oherwydd os ydych yn meddwl am 'i hon ffordd, Facebook yn cael tudalen biliwn yn taro dydd - 898 00:57:17,700 --> 00:57:21,670 rhywbeth crazy fel 'na - felly beth os rhaglennydd dim ond i fod rhefrol 899 00:57:21,670 --> 00:57:26,660 taro'r 1 lle bar amser ychwanegol yn unig i indent rhywfaint o linell o god erioed gymaint yn fwy? 900 00:57:26,660 --> 00:57:29,500 Beth yw'r goblygiadau os bydd Facebook yn cadw y gofod 901 00:57:29,500 --> 00:57:32,880 ym mhob un o'r bytes maent yn ei anfon yn ôl i bobl ar y Rhyngrwyd? 902 00:57:32,880 --> 00:57:36,400 Cyrraedd y bar gofod pan fydd yn rhoi i chi beit ychwanegol yn eich ffeil. 903 00:57:36,400 --> 00:57:39,730 Ac os biliwn o bobl yn mynd ymlaen i lwytho i lawr y dudalen gartref y diwrnod hwnnw, 904 00:57:39,730 --> 00:57:42,060 faint mwy o ddata rydych chi wedi eu trosglwyddo dros y Rhyngrwyd? 905 00:57:42,060 --> 00:57:45,200 Mae gigabyte heb reswm da. 906 00:57:45,200 --> 00:57:48,510 Ac yn ganiataol, am lawer o wefannau nad yw hyn yn fater mor scalable, 907 00:57:48,510 --> 00:57:51,030 ond ar gyfer Facebook, ar gyfer Google, ar gyfer rhai o'r gwefannau mwyaf poblogaidd 908 00:57:51,030 --> 00:57:54,860 mae cymhelliant mawr yn ariannol i wneud eich cod yn edrych fel llanast 909 00:57:54,860 --> 00:57:58,980 fel eich bod yn ei ddefnyddio fel bytes lleied â phosibl yn ychwanegol at, yna cywasgu ei 910 00:57:58,980 --> 00:58:01,500 defnyddio rhywbeth fel zip, a elwir yn algorithm gzip 911 00:58:01,500 --> 00:58:04,250 bod y porwr yn gwneud i chi yn awtomatig. Ond mae hyn yn ofnadwy. 912 00:58:04,250 --> 00:58:08,060 Fyddwn ni byth yn dysgu dim am wefannau pobl eraill a sut i ddylunio gwe dudalennau 913 00:58:08,060 --> 00:58:09,680 os oes rhaid inni edrych arno fel hyn. 914 00:58:09,680 --> 00:58:13,620 >> Felly, yn ffodus, porwyr fel Chrome a IE a Firefox y dyddiau hyn 915 00:58:13,620 --> 00:58:16,450 dod yn nodweddiadol gydag offer datblygwr adeiladedig i mewn. 916 00:58:16,450 --> 00:58:21,730 Yn wir, os byddaf yn mynd i lawr yma i Archwilio Elfen neu os byddaf yn mynd i View, Datblygwr, 917 00:58:21,730 --> 00:58:25,220 a cer at Celfi Datblygwr yn benodol, 918 00:58:25,220 --> 00:58:27,640 ffenestr hon ar waelod fy sgrin erbyn hyn pops i fyny. 919 00:58:27,640 --> 00:58:31,230 Mae'n ychydig yn frawychus ar y dechrau oherwydd bod llawer o tabs anghyfarwydd yma, 920 00:58:31,230 --> 00:58:34,510 ond os byddaf yn cliciwch ar Elfennau yr holl ffordd ar y chwith gwaelod, 921 00:58:34,510 --> 00:58:38,810 Chrome yn amlwg yn eithaf smart. Mae'n gwybod sut i ddehongli pob cod hwn. 922 00:58:38,810 --> 00:58:42,320 Ac felly pa Chrome wneud yw ei glanhau i fyny holl Facebook HTML. 923 00:58:42,320 --> 00:58:45,680 Er nad oes gofod yno, nid oes bant yno, 924 00:58:45,680 --> 00:58:51,120 bellach yn sylwi y gallaf ddechrau i lywio y dudalen gwefan hon i gyd yn fwy hierarchaidd. 925 00:58:51,120 --> 00:58:56,910 Mae'n troi allan y dylai pob tudalen ar y we a ysgrifennwyd mewn iaith o'r enw HTML5 dechrau gyda hyn, 926 00:58:56,910 --> 00:59:03,980 datganiad hwn DOCTYPE, fel petai: 927 00:59:03,980 --> 00:59:07,840 Mae'n fath o olau a llwyd yno, ond dyna y llinell gyntaf o god yn y ffeil hon, 928 00:59:07,840 --> 00:59:12,080 ac mai dim ond dweud wrth y porwr, "Hey, dyma daw rhywfaint o HTML5. Yma hon tudalen ar y we." 929 00:59:12,080 --> 00:59:18,490 Mae'r braced agored cyntaf y tu hwnt sy'n digwydd bod yn y peth hyn, yn dag HTML braced agored, 930 00:59:18,490 --> 00:59:22,320 ac yna, os wyf yn plymio yn ddyfnach - mae'r saethau yn gwbl ddiystyr; 931 00:59:22,320 --> 00:59:25,140 eu bod yn unig ar gyfer cyflwyno mwyn, nid ydynt mewn gwirionedd yn y ffeil - 932 00:59:25,140 --> 00:59:30,300 sylwi bod tu mewn Facebook yn tag HTML, unrhyw beth sy'n dechrau gyda braced agored 933 00:59:30,300 --> 00:59:32,910 ac yna wedi gair a elwir yn tag. 934 00:59:32,910 --> 00:59:38,610 Felly, y tu mewn i'r tag HTML yn ymddangos yn tag pen a tag corff. 935 00:59:38,610 --> 00:59:41,930 Y tu mewn y tag pen nawr yn llanast gyfan ar gyfer Facebook 936 00:59:41,930 --> 00:59:45,620 oherwydd bod ganddynt lawer o metadata a phethau eraill ar gyfer marchnata a hysbysebu. 937 00:59:45,620 --> 00:59:50,600 >> Ond os ydym yn sgroliwch i lawr, i lawr, i lawr, i lawr, gadewch i ni weld lle y mae. Dyma hi. 938 00:59:50,600 --> 00:59:52,210 Mae hyn yn un o leiaf rywfaint yn gyfarwydd. 939 00:59:52,210 --> 00:59:55,990 Mae'r teitl y dudalen gartref Facebook, os ydych chi erioed wedi edrych yn y tab yn eich bar teitl, 940 00:59:55,990 --> 00:59:59,060 yn Croeso i Facebook - Mewngofnodi, Cofrestru neu Dysgu Mwy. 941 00:59:59,060 --> 01:00:01,110 Dyna beth fyddech yn ei weld yn y bar teitl Chrome, yn 942 01:00:01,110 --> 01:00:03,100 a dyna sut y mae'n cynrychioli mewn cod. 943 01:00:03,100 --> 01:00:08,090 Os byddwn yn anwybyddu'r popeth arall yn y pen, y rhan fwyaf o'r perfedd o dudalen we yn y corff, 944 01:00:08,090 --> 01:00:10,940 ac mae'n troi allan bod Facebook cod yn mynd i edrych yn fwy cymhleth 945 01:00:10,940 --> 01:00:14,540 na'r rhan fwyaf o bethau byddwn yn ysgrifennu i ddechrau dim ond oherwydd ei fod yn cael ei adeiladu i fyny dros y blynyddoedd, 946 01:00:14,540 --> 01:00:17,260 ond mae llawer gyfan o tagiau sgript, JavaScript cod, 947 01:00:17,260 --> 01:00:18,870 sy'n gwneud y wefan yn rhyngweithiol iawn: 948 01:00:18,870 --> 01:00:22,330 gweld diweddariadau statws yn syth gan ddefnyddio ieithoedd fel JavaScript. 949 01:00:22,330 --> 01:00:25,270 Mae rhywbeth a elwir yn div, sy'n adran o dudalen. 950 01:00:25,270 --> 01:00:27,940 Ond cyn i ni gyrraedd y manylion, gadewch i ni geisio chwyddo allan 951 01:00:27,940 --> 01:00:31,920 ac yn edrych ar fersiwn symlach o Facebook 1.0, felly, i siarad. 952 01:00:31,920 --> 01:00:34,740 Dyma'r helo, byd tudalennau gwe. 953 01:00:34,740 --> 01:00:37,370 Mae ganddo y datganiad hwnnw DOCTYPE ar frig 954 01:00:37,370 --> 01:00:40,280 sydd ychydig yn wahanol i bopeth arall. 955 01:00:40,280 --> 01:00:46,130 Nid oes unrhyw beth arall byddwn yn ysgrifennu mewn tudalen we yn mynd i ddechrau gyda 01:00:48,880 ac ar wahân i rywbeth a elwir yn sylwadau yn HTML. 957 01:00:48,880 --> 01:00:53,000 Ond ar gyfer y rhan fwyaf, mae popeth mewn tudalen we yn braced agored, allweddair, braced agos. 958 01:00:53,000 --> 01:00:56,220 >> Yn yr achos hwn gallwch weld y symlaf o dudalennau gwe posibl. 959 01:00:56,220 --> 01:01:00,260 Mae'r tag HTML yn cynnwys tag pen ac mae'n cynnwys tag corff, 960 01:01:00,260 --> 01:01:04,580 ond sylwi fod yna syniad hwn o gychwyn a stopio tagiau. 961 01:01:04,580 --> 01:01:11,360 Dyma'r tag dechrau ar gyfer HTML, dyma'r tag agos neu tag diwedd. 962 01:01:11,360 --> 01:01:15,400 Hysbysiad eu bod yn fath o gyferbyniadau yn yr ystyr bod y tag agos neu tag diwedd 963 01:01:15,400 --> 01:01:20,030 wedi hyn yn ei flaen slaes tu mewn ei hun. 964 01:01:20,030 --> 01:01:23,540 Yn y cyfamser, mae 'na tag pen agored yma a tag pen agos yma. 965 01:01:23,540 --> 01:01:26,880 >> Mae teitl agored a tag teitl agos yma. 966 01:01:26,880 --> 01:01:29,850 Mae'r ffaith fy mod i wedi rhoi'r teitl ar 1 llinell, gwbl fympwyol. 967 01:01:29,850 --> 01:01:33,760 'I jyst yn edrych fel y byddai'n cyd-fynd' n glws ar 1 llinell, felly doeddwn i ddim yn trafferthu taro Rhowch cwpl o weithiau. 968 01:01:33,760 --> 01:01:38,200 Yn y cyfamser, mae'r corff i ddim indent dim ond i fod byth mor glir. 969 01:01:38,200 --> 01:01:41,050 Sylwch fod HTML yn iaith eithaf fud. 970 01:01:41,050 --> 01:01:43,410 Yn wir, yn ôl yn y dydd cyn bod yn olygyddion WYSIWYG 971 01:01:43,410 --> 01:01:46,770 a Microsoft Word lle gallwch ddweud, "Gwnewch hyn beiddgar, llythrennau italig yn gwneud hyn," 972 01:01:46,770 --> 01:01:50,850 byddech mewn gwirionedd yn teipio gorchmynion bach mewn traethodau 20 + mlynedd yn ôl 973 01:01:50,850 --> 01:01:55,740 lle y byddech yn dweud, "Dechrau gwneud y testun trwm. Stop gwneud y testun trwm." 974 01:01:55,740 --> 01:01:59,010 "Dechrau gwneud y llythrennau italig testun. Stop gwneud y llythrennau italig testun." 975 01:01:59,010 --> 01:02:01,850 >> Dyna beth HTML neu unrhyw iaith markup yn. 976 01:02:01,850 --> 01:02:05,530 Mae'r tag cyntaf yn dweud, "Hey, porwr. Yma hon rhywfaint o HTML." 977 01:02:05,530 --> 01:02:09,880 Mae'r tag nesaf yn dweud, "Hey, porwr. Yma, yn dod y pennaeth, y pennyn ar fy nhudalen we." 978 01:02:09,880 --> 01:02:11,650 "Hey, porwr. Yma, yn dod y teitl." 979 01:02:11,650 --> 01:02:15,880 Ac yna draw fan hyn, "Hey, porwr. Dyna ni am y teitl." 980 01:02:15,880 --> 01:02:20,000 Felly, mae hyn yw'r ffordd y mae'r porwr yn gwybod i beidio â dangos cymeriadau yn fwy na helo, byd 981 01:02:20,000 --> 01:02:21,860 yn y bar teitl. 982 01:02:21,860 --> 01:02:23,640 Yn y cyfamser, mae hyn yn dweud, "Dyna ni am y pen." 983 01:02:23,640 --> 01:02:28,340 Mae hyn yn dweud, "Yma, yn dod y corff Dyma gorff ei hun." - Yn llythrennol, y geiriau helo, byd. 984 01:02:28,340 --> 01:02:33,190 Ac mae hyn yn dweud yma, "Dyna ni am y corff. Dyna ni am y HTML." 985 01:02:33,190 --> 01:02:34,640 Felly porwyr a'u bod yn eithaf 'n fud. 986 01:02:34,640 --> 01:02:39,920 Maent yn unig yn darllen y pethau top i'r gwaelod, o'r chwith i'r dde, a gwneud yn union beth y maent yn gwybod ei wneud. 987 01:02:39,920 --> 01:02:41,860 Gadewch i ni ei wneud mewn gwirionedd yn enghraifft fach yma. 988 01:02:41,860 --> 01:02:46,240 Gadewch i mi agor y symlaf o raglenni ar fy Mac yma, sef TextEdit. 989 01:02:46,240 --> 01:02:48,220 Ar Windows y gallech eu defnyddio Notepad.exe. 990 01:02:48,220 --> 01:02:50,520 Ond mae hyn i gyd mae angen i chi ddechrau gwneud tudalennau gwe. 991 01:02:50,520 --> 01:02:53,730 Rydw i'n mynd i fynd yn ei flaen ac yn jyst adysgrifia a bastio y cod hwn yn y ffeil hon. 992 01:02:53,730 --> 01:02:57,210 Rydw i'n mynd i fynd yn ei flaen ac arbed ar fy n ben-desg, 993 01:02:57,210 --> 01:03:01,220 ac rydw i'n mynd i gadw hyn fel hello.html, 994 01:03:01,220 --> 01:03:03,840 ac yn awr y ffeil yn cael ei enwi hello.html. 995 01:03:03,840 --> 01:03:05,690 Dyma hi ar fy n ben-desg. 996 01:03:05,690 --> 01:03:11,130 Gadewch i mi yn awr yn mynd i mewn i borwr a llusgwch y ffeil i mewn i'r porwr. 997 01:03:11,130 --> 01:03:14,060 A voila, dyma fy dudalen we cyntaf. 998 01:03:14,060 --> 01:03:17,340 Sylwch fod y teitl y tab yn helo, byd fel yn y tag teitl, 999 01:03:17,340 --> 01:03:20,040 a rhybudd bod helo, byd yw'r corff o fy nhudalen we, 1000 01:03:20,040 --> 01:03:22,190 a woo-hw, dwi ar y Rhyngrwyd. 1001 01:03:22,190 --> 01:03:24,700 >> Dydw i ddim yn wir, iawn, oherwydd nad yw'r ffeil ar y Rhyngrwyd. 1002 01:03:24,700 --> 01:03:28,330 Mae'n digwydd i fod ar fy disg caled lleol ar y llwybr penodol hwnnw. 1003 01:03:28,330 --> 01:03:32,720 Ond mae'r syniad yr un fath. Y cyfan sydd angen yn awr yw gweinyddwr y we i lwytho i hynny. 1004 01:03:32,720 --> 01:03:37,410 Ond yn gyntaf gadewch i ni mewn gwirionedd yn cyflwyno cymhlethdod ychydig yn fwy a stylization ychydig yn fwy. 1005 01:03:37,410 --> 01:03:39,890 Mae hwn yn syml, os ddiflas, tudalen ar y we. 1006 01:03:39,890 --> 01:03:41,990 Mae'n troi allan mae mathau eraill o dagiau gallwn eu defnyddio. 1007 01:03:41,990 --> 01:03:45,530 Er enghraifft, yma mewn melyn Rwyf wedi cyflwyno 2 tagiau newydd. 1008 01:03:45,530 --> 01:03:49,630 Ni fyddwn yn chwarae llawer gyda hyn heddiw, ond yn sylwi bod y tag cyswllt 1009 01:03:49,630 --> 01:03:52,520 rywsut yn edrych yn wahanol i bopeth arall. 1010 01:03:52,520 --> 01:03:55,370 Mae'r tag cyswllt yn mynd â hyn a elwir yn briodoleddau, 1011 01:03:55,370 --> 01:03:59,770 ac priodoledd yn rhywbeth sy'n addasu'r ymddygiad tag. 1012 01:03:59,770 --> 01:04:03,840 Yn yr achos hwn nid yw hyn yn y dewis gorau o enwau, cyswllt, am ei fod yn fath o ddiystyr, 1013 01:04:03,840 --> 01:04:11,590 ond mae hyn yn tag cyswllt yn dweud, yn y bôn, yn cynnwys y ffeil o'r enw styles.css tu mewn fy nhudalen we. 1014 01:04:11,590 --> 01:04:15,400 Gallwch feddwl am hyn yn debyg i C # yn cynnwys gyfarwyddeb. 1015 01:04:15,400 --> 01:04:19,650 Styles.css yn cyfeirio at iaith wahanol yn gyfan gwbl na fyddwn yn chwarae gyda heddiw, 1016 01:04:19,650 --> 01:04:23,790 ond ei fod ar gyfer estheteg: maint y ffont, lliwiau, padin, bant, ymylon, 1017 01:04:23,790 --> 01:04:26,040 a hynny i gyd math o estheteg fanylion. 1018 01:04:26,040 --> 01:04:28,820 Yn y cyfamser, mae'r tag sgript yn swyddogaethol debyg, 1019 01:04:28,820 --> 01:04:33,140 ond yn hytrach na yn cynnwys CSS, yr iaith honno, mae'n cynnwys iaith arall, JavaScript. 1020 01:04:33,140 --> 01:04:37,810 Felly, mewn geiriau eraill, gyda y 2 tagiau fydd yn y pen draw yn gallu ysgrifennu fy tudalen we eich hun 1021 01:04:37,810 --> 01:04:41,490 ond hefyd yn tynnu mewn cod fy mod neu rywun arall wedi ysgrifennu 1022 01:04:41,490 --> 01:04:44,350 fel y gallwn sefyll ar ysgwyddau pobl eraill, gallwn ymarfer dylunio da, 1023 01:04:44,350 --> 01:04:46,120 ffactoreiddio allan cod cyffredin. 1024 01:04:46,120 --> 01:04:49,090 Os wyf wedi cael 10 tudalen gwe gwahanol, mae hyn yn golygu bod rhai o fy estheteg 1025 01:04:49,090 --> 01:04:52,490 Gall fod yn ffactor, yn debyg iawn # yn cynnwys, i mewn i ffeil ar wahân. 1026 01:04:52,490 --> 01:04:54,420 Felly, rydym yn mynd yno. 1027 01:04:54,420 --> 01:04:57,180 Ond gadewch i ni mewn gwirionedd cyntaf sydd rhywbeth mwy diddorol gyda ffeil hon. 1028 01:04:57,180 --> 01:05:01,110 >> Unwaith eto, mae hyn yn unig TextEdit. Dydw i ddim yn dechnegol ar y Rhyngrwyd eto, ond byddwn yn cyrraedd yno. 1029 01:05:01,110 --> 01:05:04,910 Hoffwn i wneud helo, byd ychydig yn fwy beiddgar nag y mae. 1030 01:05:04,910 --> 01:05:10,890 Felly, helo, gadewch i ni ddweud fympwyol gyfer beiddgar. 1031 01:05:10,890 --> 01:05:15,910 Unwaith eto, y stori yr un fath: hello, coma, dechrau gwneud eofn hwn, 1032 01:05:15,910 --> 01:05:19,730 yna y byd yn cael ei hargraffu mewn print trwm, ac mae hyn yn golygu rhoi'r gorau i argraffu hyn mewn print trwm. 1033 01:05:19,730 --> 01:05:24,020 Gadewch i mi fynd yn ei flaen ac arbed fy ffeil, fynd yn ôl i Chrome, 'n annhymerus' chwyddo i mewn jyst fel y gallwn weld yn well, 1034 01:05:24,020 --> 01:05:27,870 ac yn ail-lwytho, a byddwch yn gweld y byd hwnnw yn awr mewn print trwm. 1035 01:05:27,870 --> 01:05:31,810 Mae'r We yn ymwneud â hypergysylltiadau, felly gadewch i ni fynd ymlaen a gwneud hyn: 1036 01:05:31,810 --> 01:05:38,550 fy ngwefan hoff yw, gadewch i ni ddweud, youtube.com. 1037 01:05:38,550 --> 01:05:43,810 Achub, ail-lwytho. Iawn. Mae yna broblemau pâr bellach ar wahân i'r hideousness y wefan. 1038 01:05:43,810 --> 01:05:47,310 1, rwy'n eithaf siwr fy mod yn taro Nodwch yma. Ac yr wyf yn ei wneud. 1039 01:05:47,310 --> 01:05:51,590 Rwy'n nid yn unig yn taro Mewnbynnu, yr wyf hefyd yn mewnoli, ymarfer yr hyn rydym wedi bod yn pregethu am arddull, 1040 01:05:51,590 --> 01:05:54,930 ond mae fy yn iawn nesaf i'r byd. 1041 01:05:54,930 --> 01:05:58,410 Felly, pam mae hyn? Porwyr dim ond gwneud yr hyn rydych yn dweud iddynt ei wneud. 1042 01:05:58,410 --> 01:06:04,010 Nid wyf wedi dweud wrth y porwr, "llinellau Break yma. Mewnosoder paragraff torri yma." 1043 01:06:04,010 --> 01:06:07,820 Felly y porwr, nid yw o bwys os wyf yn taro Dychwelyd 30 o weithiau, 1044 01:06:07,820 --> 01:06:10,820 mae'n dal yn mynd i roi fy dde nesaf at y byd. 1045 01:06:10,820 --> 01:06:15,930 Beth Fi 'n sylweddol yn rhaid i wneud yma yn dweud rhywbeth fel
, mewnosod toriad llinell. 1046 01:06:15,930 --> 01:06:17,940 >> Ac mewn gwirionedd, mae toriad llinell yn fath o beth rhyfedd 1047 01:06:17,940 --> 01:06:21,650 oherwydd na allwch wir yn dechrau symud i un arall llinell, yna gwneud rhywbeth, 1048 01:06:21,650 --> 01:06:25,380 ac yna stopio symud i linell newydd. Mae'n fath o lawdriniaeth atomig. 1049 01:06:25,380 --> 01:06:28,140 Byddwch naill ai yn ei wneud neu os nad ydych yn ei wneud. Rydych yn taro'r Enter neu os nad ydych yn ei wneud. 1050 01:06:28,140 --> 01:06:33,390 Felly br mae ychydig bach o tag wahanol, ac felly mae angen i ddatrys y ddau agor a chau ei 1051 01:06:33,390 --> 01:06:35,230 i gyd ar unwaith. 1052 01:06:35,230 --> 01:06:37,500 Mae'r gystrawen am hynny yw hyn. 1053 01:06:37,500 --> 01:06:41,760 Yn dechnegol, gallech wneud rhywbeth fel hyn mewn rhai fersiynau o HTML, 1054 01:06:41,760 --> 01:06:45,600 ond mae hyn yn unig dwp am nad oes rheswm i ddechrau a rhoi'r gorau i rywbeth 1055 01:06:45,600 --> 01:06:48,420 os gallwch chi yn hytrach na gwneud popeth ar unwaith. 1056 01:06:48,420 --> 01:06:52,310 Sylweddoli nad oes HTML5 llym angen y slaes, 1057 01:06:52,310 --> 01:06:55,410 felly byddwch yn gweld werslyfrau ac adnoddau ar-lein nad yw gennych, 1058 01:06:55,410 --> 01:06:59,780 ond ar gyfer mesur da gadewch i ni ymarfer y cymesuredd yr ydym wedi ei weld hyd yma. 1059 01:06:59,780 --> 01:07:02,870 Mae hyn yn golygu bod y tag yn ddau yn agor ac yn cau. 1060 01:07:02,870 --> 01:07:05,220 Felly nawr gadewch i mi arbed fy ffeil, ewch yn ôl yma. 1061 01:07:05,220 --> 01:07:10,240 Iawn, felly mae'n dechrau edrych yn well, ac eithrio y We wyf yn gwybod yn fath o clickable, 1062 01:07:10,240 --> 01:07:13,610 ac eto nid youtube yma yn ymddangos i arwain at unrhyw beth. 1063 01:07:13,610 --> 01:07:17,560 Mae hynny oherwydd hyd yn oed er ei fod yn edrych fel cyswllt, nid yw'r porwr yn gwybod bod fel y cyfryw, 1064 01:07:17,560 --> 01:07:20,670 felly rhaid i mi ddweud wrth y porwr bod hwn yn ddolen. 1065 01:07:20,670 --> 01:07:22,620 >> Y ffordd i wneud hyn yw defnyddio tag angor: 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 a gadewch i mi symud hyn i linell newydd yn unig felly mae'n ychydig yn fwy darllenadwy, 1069 01:07:38,490 --> 01:07:40,060 a byddaf yn crebachu maint y ffont. 1070 01:07:40,060 --> 01:07:43,890 Ydw i'n gwneud eto? Rhif Mae mynd i fod yn y ddeuoliaeth. 1071 01:07:43,890 --> 01:07:46,760 Mae hyn yn tag, y tag angor, yn wir yn cymryd priodoledd, 1072 01:07:46,760 --> 01:07:52,900 sy'n addasu ei ymddygiad, a gwerth y priodoledd yn ôl pob golwg YouTube URL. 1073 01:07:52,900 --> 01:07:56,380 Ond yn sylwi ar y ddeuoliaeth yw mai dim ond oherwydd dyna'r URL ydych yn mynd i, 1074 01:07:56,380 --> 01:08:01,020 nid yw hynny'n golygu rhaid i hynny fod y gair eich bod yn tanlinellu a gwneud cyswllt. 1075 01:08:01,020 --> 01:08:03,960 Yn hytrach, gall hynny fod rhywbeth fel hyn. 1076 01:08:03,960 --> 01:08:10,870 Felly, rhaid i mi ddweud roi'r gorau i wneud y gair hyperddolen drwy ddefnyddio'r tag angor agos. 1077 01:08:10,870 --> 01:08:12,650 Hysbysiad Dydw i ddim yn gwneud hyn. 1078 01:08:12,650 --> 01:08:15,890 1, byddai hyn dim ond yn wastraff o amser pawb ac nid yw'n angenrheidiol. 1079 01:08:15,890 --> 01:08:19,290 >> I gau tag, dim ond sôn am enw'r tag eto. 1080 01:08:19,290 --> 01:08:21,800 Nid ydych yn sôn am unrhyw un o'r rhinweddau. 1081 01:08:21,800 --> 01:08:26,189 Felly, gadewch i ni ac eithrio, ewch yn ôl. Iawn, voila, nawr mae'n glas a hypergysylltu. 1082 01:08:26,189 --> 01:08:29,430 Os byddaf yn cliciwch arno, yr wyf mewn gwirionedd yn mynd i'r YouTube. 1083 01:08:29,430 --> 01:08:32,529 Felly hyd yn oed er nad fy tudalen ar y we ar y Rhyngrwyd, mae o leiaf HTML, 1084 01:08:32,529 --> 01:08:37,930 ac os ydym yn gadael i'r Rhyngrwyd dal i fyny, byddem mewn gwirionedd yn y pen draw yma yn youtube.com. 1085 01:08:37,930 --> 01:08:40,670 A allaf fynd yn ôl a dyma fy nhudalen we. Ond sylwi ar hyn. 1086 01:08:40,670 --> 01:08:43,120 Os ydych chi erioed wedi gotten spam neu yn rhwyd-dwyll, 1087 01:08:43,120 --> 01:08:45,850 nawr eich bod yn cael y gallu ar ôl dim ond 5 munud i wneud yr un peth. 1088 01:08:45,850 --> 01:08:50,920 Gallwn fynd yma ac yn gwneud rhywbeth fel www.badguy.com 1089 01:08:50,920 --> 01:08:59,319 neu beth bynnag y wefan bras yw, ac yna gallwch ddweud wirio eich cyfrif PayPal. 1090 01:08:59,319 --> 01:09:04,840 [Chwerthin] Ac yn awr mae hyn yn mynd i fynd i badguy.com, ac nid wyf ddim yn mynd i glicio ar 1091 01:09:04,840 --> 01:09:08,000 am fod gen i ddim syniad lle sy'n arwain. [Chwerthin] 1092 01:09:08,000 --> 01:09:10,859 >> Ond bellach mae gennym y gallu i mewn gwirionedd yn y pen draw yno. 1093 01:09:10,859 --> 01:09:12,640 Felly, rydym yn wir yn unig dechrau crafu wyneb. 1094 01:09:12,640 --> 01:09:15,830 Nid ydym yn rhaglennu fel y cyfryw, rydym yn ysgrifennu markup iaith. 1095 01:09:15,830 --> 01:09:18,569 Ond cyn gynted ag y rownd ein geirfa yn HTML, 1096 01:09:18,569 --> 01:09:21,520 byddwn yn cyflwyno PHP, iaith raglennu gwirioneddol 1097 01:09:21,520 --> 01:09:26,859 fydd yn ein galluogi i gynhyrchu HTML yn awtomatig, cynhyrchu CSS yn awtomatig, 1098 01:09:26,859 --> 01:09:29,430 fel y gallwn ddechrau ar ddydd Mercher i weithredu, dyweder, 1099 01:09:29,430 --> 01:09:31,700 ein peiriant chwilio hunain ac yn fwy. 1100 01:09:31,700 --> 01:09:34,770 Ond mwy am hynny mewn cwpl o ddyddiau. Gwelwn ni chi bryd hynny. 1101 01:09:34,870 --> 01:09:39,000 >> [CS50.TV]