[Powered by Google Translate] [Nedēļa 7] [David J. Malan - Hārvarda] [Tas ir CS50. - CS50.TV] Labi. Laipni lūdzam atpakaļ. Tas ir CS50, un tas ir sākums 7 nedēļas. Pāris maz paziņojumiem: Pset5 tagad notiek, vai drīz jābūt, un ļaujiet man teikt, pavisam godīgi, tas mēdz būt starp daudz grūtāks Kursa problēma kopas, tāpēc ļaujiet man pieminēt šo tagad tāpēc, ka šonedēļ vairāk nekā jebkad agrāk, jums nav jāgaida, kamēr, teiksim, trešdien naktī vai ceturtdiena nakts nirt iekšā Tas noteikti interesants PSET. Mēs uzskatām, ka ir jautri. Ja jums tiešām saņemt to pilnīgi pareizi un tad var apstrīdēt tā saukto Big Board, jums ir iespēja saskaņot wits ar dažiem kursa darbinieku un daži no jūsu klasesbiedriem. Kas Big padome ir, kad jums ir jūsu pareizrakstības pārbaudītājs darba, jūs varēsiet doties uz cs50.net pēc darbības komandu, tīri izvēlos, un tad daudz laika un RAM apjomu un vairāk ka esat izmantojis savā īstenošanā tiks izstādīti šeit par kursu mājas lapā. Jūs pamanīsiet, ka viss ķekars no šiem ļaudīm šeit ir uzskaitīti kā darbinieku jo vairāk nekā nedēļas nogalē, darbinieki domāja, ka būtu jautri, lai mēģinātu pārspēt viens otru. Lai saprastu, ka mērķis ir nevis pārspēt personālu. Pat es esmu tikai šeit ir 13 numuru. Tīri izvēlos, bet tas ir iespēja redzēt, cik maz atmiņa un cik maz CPU sekundes jūs varat izmantot vis-vis kādu no saviem klasesbiedriem. Un es ņemšu uzņemt, ka Kevins Michael Schmid Šobrīd numuru 1 stāvoklī, viens no TFS, Tas ir īstenošana, kas mēs saucam nav iespējams ņemot vērā, ka viņš, izmantojot gandrīz 0 RAM un gandrīz 0 sekundes iekraušanai. Tāpēc mēs rūpējamies par Kevin bezsaistē. [Smiekli] Ir dažas prasmes, kas Kevins ir nākusi uz testu šeit. Viena no lietām, ko mēs domājam, ka mēs gribētu darīt pārāk tagad CS50x ir nedēļa notiek, un jums puiši ir tik daudz daļu no šī eksperimenta, jo šie studenti ir. Mēs esam lūdza tos kā daļu no savas pset0, kas bija līdzīgi iesniegt Scratch projektu interese uz tiem - spēle, interaktīva mākslas, animācijas, vai tamlīdzīgi - 1 - līdz 2 minūšu video, ja viņi vēlētos, sakot hello uz pasauli un kas viņi patiesībā ir. Es domāju, ka man dalīties ar jums tikai pāris video, kas ir iesniegti līdz šim jo mums, uz darbiniekiem vismaz, tas tiešām ir bijis aizraujošs un iedvesmojoši redzēt šos cilvēkus no visas pasaules - valstīm visā pasaulē - tuning, visas lietas, ar datorzinātņu kursu internetā, vai tas ir tāpēc, ka viņi vēlas turpināt savu studijas, viņi vēlas veikt savu karjeru jaunā virzienā, viņi vēlas, lai aizpildītu nepilnības savām zināšanām, tāpēc daži no pašu iemeslu dēļ, kas jums puiši varbūt ir bijuši šeit. Tāpēc es jums vienu šādu students šeit. Jūs varētu paaugstināt skaļumu tikai mazliet. Te ir viena no mūsu studentu 1 minūtes iesniegumus. Sveiki, pasaule. Es esmu students inženierzinātnēs šeit Malagā, Spānijā. Es esmu sajūsmā par šo tiešsaistes kursu, jo es mīlu datorzinātnes, es tiešām, un es patiesi novērtējam, ka man, lai to izpētītu. Un fakts, ka es varētu mācīties pats visu no jums, puiši do bet tā vietā, jo Hārvarda Es esmu Malagā, kā awesome tas ir? Nu, es esmu Fernando, un tas ir CS50. Redzēt jūs puiši. [Smiekli] citu klipu mēs īpaši patīk, jūs atradīsiet, ka šis kungs ir angļu valoda nav tik spēcīga. Tā izskatās, ka viņš bija tas mašīna iztulkot, tāpēc tulkojumi paši mazliet nepilnīga, bet tas bija viens no mūsu izlasei līdz šim, kā arī. [♪ ♪] Sveiki, pasaule. [Runā japāņu] [Man ir sveicināt japāņu valodā, jo mana angļu valoda ir ļoti ticama.] [Man ir sniegusi ziņu jums no pilsētas Gifu, Japāna.] [Es varētu būt students pirmo reizi 20 gadu laikā, jo var redzēt.] [Es esmu ļoti pateicīgs Harvard University, kas man deva šo iespēju un EDX.] [Golfs ir ģitāra, un mans mīļākais lieta darbojas.] [Smiekli] [♪ ♪] [Kāpēc jūs domājat, ka es centos apmeklēt cs50x.] [Harvard University, tas ir mans ilgojas.] [Īpaši, ja es esmu tālu klātbūtne dzīvoja Japānā.] [Es gribēju izmēģināt uzreiz informēti par šāda EDX kad.] [Vai tu domā, lai jums nav saistīts ar vecumu mācību I] [CS50 ir mana ilgojas. Mans vārds ir Kazu, un tas ir CS50.] [♪ ♪] [aplausi un uzmundrinoša] Vēl viens mūsu favorīts bija šis iesniegums šeit no kāda. [♪ ♪] [Malan] Google to, ja jūs esat pazīstami ar šo même. Un tad visbeidzot, pāris citiem, ka got norīkoti ka varbūt uzvarēt glītu balvu. [Studenti] AAW! >> [Malan] Mums būs klausīties. Tas ir īss, tāpēc klausīties cieši. [Sieviete skaļrunis] Kāds ir Jūsu vārds? >> Louie. [Sieviete skaļrunis] Kas tas ir? >> [Kaķenīte] CS50. [Smiekli] [Malan] Viņš 2 ņem, lai gan. Šeit mēs ejam, pēdējā. Mans vārds ir Louie, un tas ir CS50. [Smiekli] Šis tad ir CS50x. Paldies visiem tiem no jums, bet pēc kopā mājās kurš ir partaking līdz šim. Šodien, mēs secinām mūsu diskusiju par datu struktūru, vismaz daži no visbūtiskākā, un tad mēs turpinātu mūsu sarunu par HTML un web programmēšanu. Patiesi, mēs esam pavadījuši pēdējo dažas septiņas nedēļas apskatot plānošanas pamatiem - algoritmi, datu struktūras, un tamlīdzīgi - un C, kā jūs varētu būt pieredzējuši līdz šim, ne vienmēr ir visvairāk pieejamu valodu ar ko īsteno dažus no šīm idejām. Un tā sākas šonedēļ un nākamnedēļ, un tad tālāk, mēs beidzot varētu pāriet no C, kas parasti pazīstams kā diezgan zema līmeņa valoda, līdz lietas augstākā līmenī, starp tiem PHP, JavaScript un tamlīdzīgi, ko mēs redzēsim izmantos to pašu pieredzi, kas mēs esam iemācījušies pēdējo nedēļu, bet jūs atradīsiet, ka deklarējot lietas, piemēram masīvu un hash tabulas un meklēšanu un kārtošanu kļuvis tik daudz vieglāk, jo valodas paši mēs sāktu lietot kļūs spēcīgāks. Bet vispirms, pieteikumu koku. Tas ir ļoti bieži šajās dienās, ir nepieciešams, lai saspiestu informāciju. Kādā kontekstā jūs vēlaties saspiest kādu digitālās informācijas? Yeah. >> [Students] Ja jums ir nepieciešams, lai to nosūtītu tīmeklī. Jā, ja vēlaties nosūtīt kaut tīmeklī. Ja jūs vēlaties, lai lejupielādētu lielu failu, tas ir ideāli, ja kāds no otras puses beigām ir saspiests šo failu, izmantojot zip formātā vai kaut kas tamlīdzīgs lai jūs sūtāt mazāk bitus nekā citkārt jānosūta. Tātad, kā jūs saspiest informāciju? Tas viss vārīties uz leju, lai, izmantojot mazāk bitus nekā paredz noklusējuma. Bet tas ir sava veida ziņkārīgs lieta, jo domāju, ka atpakaļ uz nedēļām 0 un 1 kad mēs runājām par ASCII un binārā un mēs runājām par ASCII jo īpaši kā, izmantojot 8 bitus pārstāvēt alfabēta burti tāpēc, ka vēstule ir pārstāvēta ar 65 mazie ir numurs 97 un tomēr jūs pārstāvat 65 vai 97, jūs izmantojat 7 vai 8 biti. Bet nozveju, ka ir dažas angļu alfabēta burti kas nav tik populārs kā citi. Z ir ne visi, ka tautas, Q nav tik populārs, bet A un E ir super populāra. Un vēl par visiem šiem burtiem, pēc noklusējuma pasaule izmanto to pašu bitu skaitu, tikai 8. Tāpēc nav tā bijis gudrāk, ja tā vietā, izmantojot 8 bitus katram vēstuli, pat visvairāk reti izmanto, piemēram, Q un Z, Ko darīt, ja mēs lieto mazāk bitus A un E un S un populārākajiem burti un izmanto vairāk bitus mazāk populāri burtiem, Ideja ir pieņemsim optimizēt par kopīgo lietu, kas ir tēma datorzinātnēs, cenšoties optimizēt to, kas notiek varētu notikt visvairāk un pavadīt nedaudz vairāk laika, mazliet vairāk vietas par lietām, kas, jā, varētu notikt bet ne vienmēr tik bieži. Tāpēc pieņemsim ņemt piemēru. Pieņemsim, ka mēs vēlamies, lai kodētu informāciju godīgi efektīvi. Jums varētu būt pieaudzis līdz zinot nedaudz kaut ko par Morzes kodu, un izredzes ir jūs nezināt faktisko kodu, bet jūs varētu atgādināt, ka tas ir vismaz šajā sērijā punktiem un defises. Tas ir diezgan efektīvs kodēšana, un paziņojums, ka populārākais vēstule - piemēram, e - izmanto īsākā pīkstieni. Morzes kods ir visu par pīkstienu-pīkstienu-pīkstienu-pīkstienu-pīkstienu-pīkstienu un turot toņus nu uz īsu laiku vai ilgstoši. E, kā apzīmē ar dot, ir super īss pīkstiens, tikai pīkstiens, un kas varētu pārstāvēt E. Savukārt, T būtu ilgāks pīkstiens, tāpat pīkstienu [paildzina skaņa], un kas varētu pārstāvēt T. Bet tas joprojām ir diezgan īss, jo, gluži pretēji, ja paskatās Z, izteikt Z jūs varētu doties pīkstiens, pīkstiens [ilgāk skaņa], pīkstiens, pīkstiens [īsāks skaņa]. Tātad tas ir garāks, jo tas ir mazāk izplatīta. Bet gotcha šeit ir, ka Morzes kods ir mazliet kļūdaina jo tas nav uzreiz decodable. Piemēram, pieņemsim, ka jūs dzirdat par kādu beigām stiepļu pīkstiens [īss], pīkstiens [gara]. Ko ziņu gan es tikai saņemt? Punkts un domuzīme. Ko tas pārstāv? [Students] A. >> [Malan] Varbūt. Tas varētu būt arī E seko T. Citiem vārdiem sakot, Morzes kodu, lai gan tas piesaista šis princips optimizēt stūra lietu, tas nav aizdot sevi tūlītēju atkodējamību. Tas ir, cilvēka, kurš ir dzirdes vai saņem šos punktus un domuzīmes ir kaut izdomāt, kur pārtraukumi ir starp burtiem, jo, ja jūs nezināt, kur šie pārtraukumi ir, jūs varētu sajaukt par ET vai otrādi. Tātad, ko jūs varētu darīt? Jo Morzes kodu jūs varētu tikai pauze starp katru no burtiem. Bet pauzēm ir veida counter visai punktu paātrinātu lietas uz augšu. Tātad, ko tad, ja tā vietā mēs nāca klajā ar kodu, kur nebija tas slikta situācija kur E ir priedēklis, piemēram, no - citiem vārdiem sakot, ja mēs varētu pārliecināties, ka modeļiem joprojām ir īss tautas vēstulēm ilgi mazāk populāri burtiem, bet tur nav iespējams sajaukt? Ar nosaukumu Huffman Vīrietis gadiem izgudroja šo shēmu sauc Huffman kodēšana ka faktiski piesaista viens no datu struktūrām, mēs esam pavadīja daudz laika runājot par pagājušā nedēļā, ka koku, binārie koki konkrētāk - binārs koks nozīmē, ka tā ir ne vairāk kā 2 bērni. Tā ir varbūt kreiso bērnu, varbūt pareizo bērnu, un tas arī viss. Tik domāju, tikai dēļ diskusiju ka kāds vēlas, lai nosūtītu ziņu ka izskatās šādi. Tas ir pilnīgs absurds, bet tas sastāv no kā, BS, Cs, Ds, un Es. Un, ja jūs tiešām saskaitīt visus kā, BS, Cs, Ds, un Es un tad sadalīt kopējo skaitu vēstuļu, Šī maz diagramma šeit saka, ka 45% no burtiem ir Es, 20% ir kā, 10% Bs, un tā tālāk. Tātad, citiem vārdiem sakot, pieņemsim, ka citēts virkne tur ir tikai daži ziņu, ka jūs vēlaties nosūtīt. Tas notiek, ir absurds tikai tā mēs varam izmantot kā dažus burtus iespējas, bet tas tiešām tā, ka E joprojām ir populārākais, un B un C ir vismazāk populārs, vismaz no šiem 5 alfabēta burtiem. Tātad, kā mēs varam iet par nāk klajā ar kodējumu, bināro kodējumu, modelis 0s un 1s par katru no šīm vēstulēm tādā veidā, ka E ir īss raksts un varbūt B un C ir nedaudz garāks modeļus, atkal, doma ir, ka mēs vēlamies izmantot mazāk bitus lielāko daļu laika un vairāk bitu tikai reizi brītiņa. Saskaņā ar Huffman kodēšana, jūs varat izveidot meža koku. Tur ir sava veida stāsts līniju šeit, kas ietver koku un arī veidot tos procesu. Sāksim. Es ierosinu, ka jūs sākat ar šo mežu, tā teikt, no 5 kokiem, no kuriem katrs ir diezgan stulba koks. Koks sastāv no tikai vienu mezglu, kas šeit pārstāv apli. Tāpēc katra no šīm lietām varētu būt C struct un iekšpusē no C struct varētu būt pludiņš pārstāv frekvenču skaits un tad varbūt CHAR pārstāv vēstuli. Tāpēc domāju par šiem punktiem, kā tikai jebkuru veco C struct bet, tagad, augstāku līmeni. Tas ir mežs 5 kokiem, katrs no kuriem ir tikai viena mezglā. Kas Huffman piedāvātais tas, ka mēs sākam apvienot šos kokus kas ir mazākais frekvenču skaitu savos nedaudz lielāks koku , savienojot tos ar jaunu saknes mezgla. Tātad starp burtiem šeit, pamanīsiet, ka ērtības labad es esam sakārtoti tos no kreisās uz labo, lai gan tas nav obligāti nepieciešams, un paziņojums, ka vismazākais mezgliem Pašlaik 10% un 10%. Tā Huffman ierosināts, ka mēs apvienot tās 2 vismazākās mezglus jaunā koku ieviešot jaunu vecāku mezglu un pēc tam sniedz šā mātes kreiso bērnu un labo bērnu kur B ir patvaļīgi kreisi un C ir patvaļīgi tiesības. Un tad Huffman ierosināja, pieņemsim tagad tikai domā par kreisā bērna vienā no šiem kokiem vienmēr kā attēlot ar 0 un tiesības bērns vienmēr, kā to pārstāv numuru 1. Tas nav svarīgi, ja jūs uzsist viņiem tik ilgi, cik jūs esat konsekventi. Tāpēc tagad mums ir četri koki šajā mežā. Un es saku 4 jo tagad koks pa kreisi - un tas nav tik daudz koku, kas nozīmē, ka tā aug šādā veidā, tas ir vairāk kā ģimenes koku, kur tagad 0.2 veida mātes divu bērnu - pamanīt, ka šo vecāku mēs esam izstrādāts 0.2. Mēs esam pievienojuši frekvenču skaitu par diviem bērniem un ņemot vērā jauno mezglu kopējā summa. Tātad tagad mēs vienkārši atkārtot šo procesu. Atrast divi mazākie mezglu un pēc tam pievienoties tos jaunu koku un atkārtojiet šo procesu. Tieši tagad mums ir dažas kandidāti, 20%, 15%, un vēl 20%. Šajā gadījumā mums ir jālauž kaklasaiti. Mēs varam darīt to patvaļīgi. Mums tikai vajadzētu darīt to konsekventi. Šajā gadījumā, es patvaļīgi iet ar vienu pa kreisi, un es tagad apvienot 20% un 15%, lai dotu man jaunu mātes sauc 35%, kura kreisais bērns ir 0, kuras tiesības bērns ir 1, un tagad mums ir tikai trīs kokus mežā. Jūs varat varbūt redzēt, kur tas notiek. Ja mēs atkārtot šo pāris reizes, mēs ejam, lai ir tikai viena lielāka koku, visi kura malas ir marķēti ar 0s un 1s. Darīsim to vēlreiz. 35% ir, ka koks ir saknes. 20% un 45%, tāpēc mēs esam gatavojas apvienot 35% un 20%. Tagad mums ir šis koks šeit. Mēs pievienot tos kopā, mums ir 55%. Tagad tur ir tikai divi koki mežā. Mēs šo vienu pēdējo reizi, un, cerams, matemātiski visi frekvences saskaitīt jo viņi ir, jo mēs aprēķināts viņus no get-go, lai pievienotu līdz pat 100%. Un tagad mums ir viens koks. Tātad šis ir Huffman kodēšanas koks. Tā veida ņēma, bet tur nokļūt mutiski, bet realitāte ir ar par cilpu vai ar rekursīvo funkciju, jūs varētu veidot šī lieta diezgan ātri. Tāpēc tagad mums ir viens jauns mezglā, un visi šie iekšējo mezglu ir malloc'd, iespējams, pa ceļam. Tāpēc tagad augšpusē šo koku mums ir 100%, bet tagad paziņojums mums ir ceļu No šī jaunā liels-liels-liels-vecvecāki uz visiem liels-liels-liels-mazbērniem visu ceļu apakšā, lai visi lapām. Ko mēs darīsim tagad ir ierosināt, lai pārstāvētu burta E, mēs vienkārši izmantot numuru 1. Kāpēc? Jo, ja mēs traversa šo koku no gala saknes līdz vērtnes pazīstams kā E, mēs sekojam tikai vienu malu, labo malu, un kas ir marķēti, protams, ir augšējā labajā stūrī 1. Tātad Ietekme šeit Huffman bija, ka e kodējumu binārā ir vienkārši 1. Un tas ir diezgan nopelt efektīva. Nevar īsti iegūt kādu mazāks nekā. Turpretī, ir būs pārstāvētas, ja jūs sekot loģikai, ar ko modelis bitu vietā? 01. Tātad, lai nokļūtu, mēs sākam pie saknes un mēs ejam pa kreisi, un tad mēs ejam pa labi, kas nozīmē, ka mēs sekoja 0 un tad 1. Tātad mēs pārstāv vēstuli ar modeli 0 un 1. Un tagad paziņojums mums jau ir īpašums tūlītēja atkodējamību ka mums nav kas Morzes kodu. Kaut gan abi šie modeļi ir diezgan īss - E ir 1 bits, ir 2 biti - paziņojums, ka tās nevar sajaukt vienu vai otru, jo, ja jūs redzat 1 tas ir got būt E, ja redzat 0, tad 1 tas ir acīmredzami tagad ir A. Tāpat, kāda ir D? 001. Kas ir C? 0001. Un kāda ir B? 0000. Un atkal, jo visi burti mēs interesējamies par ir pie lapām un neviens no tiem ir sava veida starpniekiem ceļā no saknēm līdz lapu, tur nav conflating 2 burtu 'dažādus kodējumus risks jo visi šie bitu modeļiem ir deterministisko. 0000 vienmēr būs B. Nav mezglu kaut kur starp, ka jūs varētu sajaukt vienu vēstuli par otru. Tātad, kāda ir saistība šeit? Vispopulārākais vēstule - šajā gadījumā E - ir gotten visīsākais kodējumu, Ir gotten nākamo īsāko kodējumu, un B un C, ko mēs jau zinājām no get-go bija sava veida vismazāk populārs pie 10% biežumu katram, viņi ir gotten garāko kodējumu. Un tā, ko tas nozīmē tagad ir tas, ka, ja jūs vēlaties, lai nosūtītu ziņu, ka ir saspiests internetā vai pa e-pastu vai tamlīdzīgi, nevis izmantojot standarta ASCII, jūs varat nosūtīt Huffman kodētu ziņu kurā, ja jūs vēlaties, lai nosūtītu vēstuli E, jūs sūtīt tikai vienu bitu. Ja jūs vēlaties nosūtīt, jums nosūtīt 2 biti, 01, nevis sūtīt 8 bitus seko vēl 8 biti sekoja vēl 8 bitu un tā tālāk. Bet ir gotcha šeit. Tas nav pietiekami, lai tikai izveidotu šo koku, un tad sākt sūtīt no Alice uz Bob īsāks mazliet modelis, stīgu no ASCII, jo Alise ir arī jāinformē Bob par to, ko ja Bobs būs iespēja lasīt viņas saspiestā ziņu? [Dzirdams studentu reaģēšanas] >> Kas tas ir? [Dzirdams studentu reaģēšanas] >> no kāda koks ir. Vai pat vairāk konkrēti, kādi ir šie kodējumi ir, jo īpaši tādēļ šajā stāstā mēs veicām spriedums zvanu ir viens punkts. Atcerieties, ka mums bija izvēlēties patvaļīgi starp 2 dažādiem 20% mezglu? Tātad, tas nav gadījums, ka Bobs, saņēmējam, var vienkārši rekonstruēt koku par savējo jo varbūt viņš radīs koku kādreiz tik nedaudz atšķirīgi no Alice. Turklāt, Bobs nav pat zināt, ko sākotnējais ziņojums ir jo vienīgais, ko Alise nosūtot viņam, protams, ir saspiests ziņa. Tātad ar kompresijas, piemēram, tas nozveju, ka, jā, Alise var ietaupīt visai daudz bitu nosūtot 1, lai E un 01 par un tā tālāk, bet viņa arī ir jāinformē Bob kāda kartēšana ir starp burtiem un biti jo viņi nevar skaidri atsaukties uz tikai ASCII vairs ja mēs neesam izmantojot ASCII. Lai viņa varētu vai nu nosūtīt viņam koku kaut kā - uzrakstiet to, saglabāt to kā bināros datus vai kaut kas tamlīdzīgs - vai vienkārši nosūtīt viņam nedaudz apkrāptu lapas, Excel failu, kas parāda samērošanai. Tāpēc kompresijas efektivitāti tiešām paredz, ka ziņas, ka jūs sūtāt ir diezgan liels, vismaz vidēja lieluma, jo, ja jūs nosūtot super īsziņu, ja jūs vienkārši vēlaties nosūtīt ziņu slikti, kas notiek, ir vārds, mēs varam izskaidrot šeit, B--D, jūs, iespējams, gatavojas izmantot mazāk bitus, bet nozveju ir, ja jums ir arī jāinformē Bob ko koks ir vai kādi ir šie kodējumi ir, jūs gatavojas iespējams pārspēj visus ietaupījumus , kam saspiestus lietas, lai sāktu ar. Tātad tas faktiski var būt gadījums, ka, ja jūs mēģināt saspiežot pat ar kaut ko līdzīgu zip vai failu formātus jūs varētu būt pazīstami ar - diezgan mazi faili, pat tukšas faili - dažreiz šie faili varētu iegūt lielāku un nav mazāks. Bet reāli, ka notiek tikai mazu faila izmēru, tāpēc tas nav gatavojas veikt gigabaitu fails ir 2 gigabaiti; mēs patiesi runājam bytes vai tikai pāris kilobaiti. Daži, piemēram, zip programmas ir pietiekami gudrs, lai saprastu, ka, "Jūs esat gatavojas tērēt vairāk bitu saspiežot to." "Ļaujiet man nav apnikt saspiežot to jums visiem." Tātad tas ir tikai viens veids, tad no saspiežot teksta formātā. Mēs varētu ieviest kaut kas līdzīgs šim C. Piemēram, šeit ir, kā mēs varētu pārstāvēt mezglu šajā kokā kur mums ir char par simbolu, peldošo vērtība par frekvenci, un kā mēs esam redzējuši ar citiem mūsu datu struktūras, 2 norādes, 1 kreisajā bērnam, 1 pa labi, nu kas var būt nulle, bet, ja ne, tas atsaucas uz kreiso bērnu un labo bērnu. Tātad tas tad ir Huffman kodēšana, un tas ir viens no veidiem, ka jūs varat iet par saspiežot informāciju, un tas noteikti ir viens no visvairāk viegli īstenot kontekstā, proti, pagājušās nedēļas datu struktūras, lai gan pat sarežģītākus algoritmus pastāv ka var darīt vēl sarežģītākus mutācijām jūsu datiem. Jebkādi jautājumi, tad uz kokiem, binārā koki, vai teksta kompresijas? [Students] Vai ir kāds neskaidrības, piemēram, ja [dzirdams] Sadalīts 01, tad 011 būtu neskaidrs, vai ne? [Dzirdams] >> Labs jautājums. Neskaidrību. Ļaujiet man apkopot, atsaucoties uz šo attēlu šeit. Jo rakstzīmes ir saspiežot, pārstāvniecībās no, pēc definīcijas šī algoritma vienmēr paliek lapas, jūs nekad nejauši izmantot to pašu modeli biti par priedēkli vairāku burtu. Tātad citiem vārdiem sakot, tu esi norūpējies par to izklausās, neskaidrības rodas kad 001 varētu būt par B sākuma vai no C vai kaut kas tamlīdzīgs sākums. Bet tas nevar būt tāds gadījums, jo paziņojums, ka visi no alfabēta burtiem mēs kodējumu ir pie lapām. Neskaidrību var rasties tikai, kā gadījumā Morzes kodu, ja, piemēram, C bija kaut kur pa ceļam no saknes līdz B. [Students] labi. Tātad šajā gadījumā, teiksim ir 2 lapas. >> Say ir - Saka, ka atkal. [Students] Say ir 2 lapas, F un G, un tad G - >> labi. Bet tā nav. Pati nevar būt lapām F un G, jo šīm vēstulēm F un G pašas ir atstāj kaut kur uz B kreisi vai E. tiesības Tātad pēc definīcijas, tiem jābūt lapām. Pretējā gadījumā tu esi tieši labi, mēs esam nav atrisināta problēma, kas Morse kods saskaras. Labs jautājums. Citi jautājumi? Labi. Šis bitu jēdziens, izrādās, mēs esam bija varu visi kopā, ka mēs esam faktiski nav izmantots kad tas nonāca pie manipulējot šos 0s un 1s. Mēs jautāja par šo par vienu no senākajiem problēmu kopas: proti, kā jūs iet par konvertējošā lielais uz mazo vai otrādi? Vai, vēl konkrētāk, viens no pirmajiem psets jautāja cik bitus jums tiešām ir uzsist, lai mainītu uz mazo ar vai otrādi? Lūk ātrs atgādinājums par to, ko 65 un 97 izskatīties bināro. Un pat tad, ja šis jautājums ir veida izbalējis savā atmiņā, Jūs varat redzēt atkal šeit, ka, cik daudz biti nepieciešams Pagriezts mainīt kapitālu uz mazajiem? Tikai viens. Tie atšķiras tikai vienā vietā, trešais mazliet no kreisās puses. Tā ir 010, maz ir 011. Tātad kaut kā, mums ir nepieciešams, lai tikai varētu uzsist, ka mazliet, un mēs pēc tam var kapitalizēt vai mazajiem burtiem. Mēs esam darījuši agrāk, ko faktiski izmanto, ja apstākļi un pārbaudīt, ja vēstule ir starp galvaspilsētas A un kapitāla Z, tad izvadi, piemēram - + 26 vai kaut kas tamlīdzīgs. Jūs, iespējams, izdarīja aritmētisko izmaiņas no alfabēta burtiem. Bet ko tad, ja mēs varētu tikai uzsist ka vienu bitu? Kā jūs varētu iet par ņemot viens baits vērts bitu, 8 bitu piemēram 01.000.001 un 01.100.001? Ja jums bija tie modeļus bitiem, kā mēs varam iet par maiņu tikai viens no viņiem? Ko darīt, ja mēs ieviest dzeltenā šeit šo citu modeli bitu? Ja es padarīt visu dzelteno virknes 0s izņemot vienu mazliet ka es gribu mainīt un tad es ieviest jaunu operatoru pazīstams kā Bitu līmeņa operatoru - Bitu līmeņa, kas nozīmē, ka tā darbojas uz atsevišķiem bitiem, nevis uz visu baitu vai četri baiti visus uzreiz. Šī vertikālā josla tur dzeltenā liecina, ka būtu, ja mēs ņemtu pārstāvību kapitāla A un Bitu līmeņa vai tā ar dzelteno secību bitiem? Citiem vārdiem sakot, domāju, ka atpakaļ pie mūsu diskusijas Būla izteiksmes Scratch un pēc tam C. Doing Būla vai nozīmē, ka, lai būtu patiesība, vai nu pirmā lieta ir, lai būtu patiesība vai otrā lieta ir, lai būtu patiesība, vai viņi abi ir, lai būtu patiesība, un tad rezultātā produkcija ir pati patiesība. Šajā gadījumā šeit, ko mēs varam iegūt, ja mēs ņemtu 0 "vai" ed ar 0? Nepatiesu vai viltus? Tas joprojām nepatiesa, tāpēc mazie paliek kā gaidīts. Ko darīt, ja tā vietā mēs 1 vai 0? Tagad tas paliek 1, bet paziņojums, kas ir aptuveni notikt šeit. Ja mēs sāktu ar kapitālu A un mēs turpināsim "vai" tā atsevišķās biti kā mēs darām šeit, 0 vai dzeltenā viens dod mums, ko šeit lejā? Tas dod mums 1. Patiesībā, pieņemsim, ka mēs nezinājām, ko lielais versija maz patiesībā bija. Iesim darīt. Ļaujiet man pāriet šo atpakaļ vairāk nekā šeit. Darīsim to atkal. 0 vai 0 dod man 0. 1 vai 0 dod man 1. 0 vai 1 dod man 1. 0 vai 0 dod man 0. Nākamais ir 0, nākamais ir 0, nākamais ir 0. 1 vai 0 dod man 1. Un, pat ja mēs neesam iepriekš zināt, cik mazie bija, vienkārši "vai" ing ar šo modeli bitu ka mēs esam šeit izklāstīto dzeltens, Jūs varat mazo kapitāls, ko flipping, ka mazliet. Mēs šo izteicienu nedēļas atpakaļ: flipping mazliet. Kā jūs faktiski darīt programmiski? Jūs izmantot to, ko parasti sauc par masku, secība bitu ka šajā gadījumā tikai tā notiek, izskatās šo numuru šeit, un tad tu "vai" tas kopā, izmantojot šo jauno C operatoru, nav | |, jūs izmantot vienu | un jūs faktiski saņemt šo atbildi šeit, jo kāpēc? Tas ir 1s vieta, 2s vieta, 4s, 8s, 16s, 32s. Tātad izrādās, ka, ja jūs lietojat lielais burts un Bitu līmeņa vai tā ar skaitlim 32, jo skaitlim 32, kad paskatās uz to kā biti, izskatās, tas nozīmē, ka jūs varat uzsist mazliet, ka jūs tiešām vēlaties. Un līdzīgi - un mēs apskatīt kodu tikai brīdi - pieņemsim, ka mēs vēlamies iet pretējā virzienā. Kā jūs iet no mazo A līdz kapitālam A? Kas mazliet jāmaina? Tas pats vienu. Mēs vēlamies mainīt šo trešo mazliet no 1 kādas līdz 0. Un kā varētu mēs iet par to izdarīt? Kā mēs izslēgt mazliet? Ar ko modelis bitiem mēs varētu izslēgt mazliet? Ko darīt, ja mēs veida apgrieziet maskas? Tā kā pirms, mēs, visa dzeltenā maska ​​0s izņemot vienu bitu mēs vēlējāmies, lai ieslēgtu, Ko darīt, ja šajā laikā, mēs visu maska ​​1s izņemot mazliet ka mēs vēlamies, lai izslēgtu un pēc tam izmantot to, ko operators? Ko darīt, ja mēs "un" lietas? Pieņemsim to apskatīt. Ja mēs tagad uzsist uz šo, pieņemsim, ka es atkal izveidot masku ka viss 1s izņemot vienu bitu, ka es gribu, lai izslēgtu un tad nevis "vai" balto skaitu līdz augšpusē ar dzelteniem numuriem šeit lejā, Ko darīt, ja es tā vietā "un" viņiem kopā? To sauc Bitu līmeņa un. Loģiski, tas ir tas pats, kas boolean un. Tas dod man 0 & 1 ir 0. Tāpēc viltus un patiesa, ir nepatiesa. Patiess un patiesi ir taisnība. Un šeit ir burvju: Patiess un viltus tagad nepatiess, tāpēc mēs esam izslēgts, ka mazliet. Un tagad no stāsts pārējais ir nedaudz vienkāršs. Jo maska ​​pārējais ir 1s, tas nav svarīgi, kādi skaitļi ir baltā krāsā. Kad jūs "un" ar patiesu kaut, jūs neesat gatavojas mainīt savu vērtību. Ja tā ir taisnība, tas paliks taisnība. Ja tas bija nepatiesa, tas būs viltus. Bet maģija notiek, ja jūs lietojat kaut kas bija taisnība un tu tad "un" tas ar viltus. Tas ir sekas izslēgt, ka mazliet. Tik maz mistisks tur. Pieņemsim faktiski apskatīt kādu kodu, kas varētu tiešām izskatās vēl noslēpumains, bet pieņemsim to apskatīt šeit tolower. Ja es skatos uz tolower, dodoties no kapitāla uz mazo, pieņemsim redzēt, kā mēs varētu īstenot šo programmu. Lūk galvenais, un tas neveiks komandrindas argumentus. Es esmu atzīts rakstzīmju c par vēstuli, ka lietotājs ir gatavojas rakstīt iekšā Es tad izmantot iepazinušies darīt, kamēr cilpa, lai tikai pārliecinātos, ka lietotājs noteikti dod man kapitālu vai B vai C. .. Z, lai viņi dod man kaut ko starp un Z. Un tagad ko es šeit daru? Es esmu "vai" ing to ar 0x20, bet patiesībā pats kā - un mēs būsim atpakaļ uz šo brīdi - 32. Tātad vēlreiz, 32 ir šis modelis bitiem šeit. Kāpēc mēs zinām? Vienkārši domāju, ka atpakaļ līdz 0 nedēļai. Tas ir 1s vieta, 2s vieta, 4s, 8s, 16s, 32s vieta. Tātad šis dzeltenais skaits notiek, ir 32. Es tad var pieņemt vēstuli kā char šeit, Bitu līmeņa "vai" Tā ar burtiski skaitu 32, un ko es varu saņemt atpakaļ? Mazo versiju, ka char. Pirms brīža, lai gan, es pauda tas citā bāzes pierakstā. Ko tas pārstāv? >> [Students] Heksadecimāla. [Malan] Tas notiek, lai pārstāvētu heksadecimālo. Mēs neesam runājuši par sešpadsmitnieku, ka daudz, bet patiesībā tas ir ērti gadījumos kā šis. Pat ja tas izskatās sarežģītāka un pat ja tas izskatās, piemēram, 20 un ne 32, izrādās, ka sešpadsmitnieku ir faktiski super ērti notācija jo heksadecimālā ik pēc 0x cipars - un tas nozīmē, neko; tas ir tikai cilvēka konvenciju, kas saka šeit nāk sešpadsmitnieku numurs - Katrs no šiem cipariem, 2 un tad 0, paši var būt pārstāvēta ar precīzi 4 bitiem. Tātad, ja mēs to darām, ļaujiet man atvērt teksta redaktoru šeit - dīvaini AutoComplete - ja mēs mazliet teksta redaktoru šeit, skaits 0x20 nozīmē šeit ir 4 biti, šeit ir vēl 4 biti. Darīsim rightmost 4 biti pirmās. 0, kad pārstāvēta ar 4 bitiem ir tas, ko? Super viegli. Tikai viss 0s. Tātad 4 biti kā 0S. Kā jūs pārstāv 2? Tas ir bijis, bet kopš mēs to darījām, bet tas ir 0100. Tātad šī ir 1s vieta, tas ir 2s vieta, un tad tas nav svarīgi, ko pārējās vietas ir. Citiem vārdiem sakot, heksadecimālā jūs varētu teikt 0x20, bet, ja jūs pēc tam domā par to, kas ir 2, un kā tā tiek pārstāvēta bināro, kāda ir 0 un kā tā tiek pārstāvēta bināro, atbildes uz šiem jautājumiem ir tas un tas, attiecīgi. Tātad 0x20 notiek pārstāvēt šo modeli 8 biti, kas ir tieši maska, ko mēs vēlējāmies. Tā tas ir uz šo brīdi tikai intelektuālā īstenošanu, bet realitāte ir kods, tas ir parasti biežāk rakstīt konstantes kā šis heksadecimālā jo tad programmētājs var samērā viegli, pat ja tas prasa kādu papīru un zīmuli, izdomāt, ko lai no bitiem modelis jo jūs varat ne tikai izteikt 0s un 1s parasti kodu. Jūs nevarat iet 00.010 un tā tālāk. Jums ir izvēlēties decimālo vai sešpadsmitnieku vai astotnieku vai citas atzīmes. Lielākā daļa cilvēku ir tendence izvēlēties heksadecimālo vienkārši tā, ka katrs cipars ir 4 biti un jūs varat darīt šo ātri math. Un es vilnis savu roku pie toupper, kas ir gandrīz tāds pats, tas izskatās gandrīz identiski. Toupper notiek lietot nevis vai operatoru, bet gan šis puisis un DF. Kāda DF pārstāv? DF? Ikviens? >> [Students] 255. 255? Ne 255. Tas būtu kanonus. Mēs atstāt šo vienu kā nelielu izmantot. Bet, ja jums iet no 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 un tad to, kas nāk pēc 9? Mēs esam veida ārpus decimālzīmju cipariem, bet heksadecimālā kas nāk pēc 9? [Students]. >> Tātad, b, c, d. Jūs varat izdomāt, no turienes kāda raksts bitu d faktiski pārstāv. Un, ja mēs to math, mēs redzam, ka maska ​​jūs galu galā kļūst atpakaļ ir identisks tam. Tas ir f, visi 1s, un tas ir d. Tātad DF pārstāv šo masku. Labi. Un visbeidzot, kas nav, lai viss skaņu Super, super tehnisku, bet pieņemsim, ka mēs vēlējāmies uzrakstīt programmu, kas to dara. Ļaujiet man iet uz priekšu un darīt bināro, kas ir programma failu sauc binary.c. Un tagad ļaujiet man palaist bināro un man nav negatīvu skaitlim. Sāksim viegli un tips 0. Tas tagad ir programma, kas izdrukā skaitlim savā binārā pārstāvību. Tātad, ja es spēlētu šo spēli atkal un ierakstiet tikai 1, man vajadzētu saņemt 32 bitu pārstāvību 1. Ja man tas atkal ar 2, man vajadzētu saņemt to. Ja man 7, man vajadzētu saņemt dažus 1s beigās un tā tālāk. Izrādās, man pieminu tāpēc ar Bitu līmeņa operācijas Jūs faktiski var darīt vienu citu lietu, kā arī. Jūs varat radīt šiem maskas dinamiski. Veikt apskatīt šo vienu galīgo piemēram, iesaistot Bitu līmeņa operācijas. Šeit ir pirmā daļa no koda, atgādinās lietotājam par numuru, un uzstāj, ka jūs varētu man nav negatīvu skaitlim. Tātad tas ir sava veida vecās skolas sīkumi. Bet šeit ir kaut kas ir diezgan interesants. Kā es varu iet par drukāšanu skaitli binārā? Es pirmo atkārtot no kā, ko? Kas lielums int Raksturīgi, vismaz iekārtu? >> [Students] 4. Tas ir 4. Tātad 4 * 8 ir 32 - 1 ir 31. Tātad, ja es esmu sāk skaitīt no 31, kas apzīmē, izrādās, tikai konceptuāli, tās 31 bitu vai augstākā kārtība mazliet, kas ir šis puisis nekā šeit, tā kā tas būs bit 0. Tātad tas ir mazliet 01 ... mazliet 31. Tātad, kas ir tas kods dara? Pamanīt šis cilpas, lai gan tas izskatās mistisks, ir tikai atkārtojot no 31 līdz 0. Viss. Tāpēc interesanti daļa tagad ir jābūt šiem 5 līnijās šeit. Ievērojiet, ka šajā līnijā es esmu deklarējot mainīgo sauc masku jāsaskan ar mūsu stāstu par šiem dzelteniem numuriem. Un tad kāda ir šī dara? Tas ir vēl viens Bitu līmeņa uzņēmējs mēs esam nav redzējis, visticamāk. Tas kreisi pāreja operators. Šis operators dara. Šeit ir numurs 1, un, ja jūs man atstāja maiņu, Kreisais Shift Ko jūs domājat, ka ir šādas sekas uz šo individuālo 1? Burtiski novirzot to pa. Tātad, ja skaitlis 1 ir tas, ko jums ir pa kreisi, un jūs sākat ar inicializēšanas I līdz 31, Kas ir tas, ka gatavojas darīt? Tas notiek, lai šo numuru 1 un novirzīt to 31 vietām vairāk nekā šeit. Un tāpēc, ka acīmredzot neviens cits cipars aiz tā, tie būs pēc noklusējuma tiek aizstāts ar 0S. Tātad jūs sākat veic ar numuru 1, kas, protams, izskatās šādi - un ļaujiet man izdarīt to nekā šeit centrā. Un tad, kā jūs maiņās lietas pa kreisi, šis puisis būtībā iet šo ceļu. Bet tiklīdz jūs darīt, 0 izpaužas jāaizpilda Ja jūs maiņās tā otro reizi, tas iet šo ceļu un citu 0 izpaužas jāaizpilda Jūs novirzīt to vēlreiz un tad vēl 0 izpaužas jāaizpilda Tātad, ja jūs šo lietu no 1 << i 31 vietām, jūs galu galā kļūst masku kas ir 32 rakstzīmes, kreisās malas no kuriem viens ir 1, visu pārējo, kas ir 0. Un izrādās, kā malā, novirzot numuru pa kreisi, piemēram, tas arī nejauši, un dažreiz ērti, ir šādas sekas, ko uz šo numuru? >> [Students] Dubultojot to. Dubultojot to, jo katrs no kolonnām - 1s vieta, 2s vieta, 4s vieta, 8s vieta, 16s vieta - tās ir bez visa dubultošanu, kā jums iet pa kreisi. Vai drīzāk, ja jūs novirzīt 1s jūs gatavojas galu galā dubultojot vērtību skaita. Jūs varat galu galā dara interesantas pārvērtības cipariem novirzot viss vairāk šādā veidā ar pilnvarām gada 2. Tātad, kā tas darbojas? Šis tad dod man masku ka viss 0s izņemot uz 1 no tieši vietā es gribu to, un tad šī izteiksme, kas tiek nozagts no toupper.c, ir vienkārši sakot ņemt numuru N, ka lietotājs ierakstījāt, "Un" tas ar šo masku, un ko jūs gatavojas saņemt? Jūs gatavojas saņemt 1, ja tur 1 minētajā maskē vietā, vai jūs gatavojas saņemt 0, ja tur nav. Un tā tas viss programma neparedz efektīvi tas ir cilpa, un tas rada maskas ar 1 ir vairāk nekā šeit, tad ar 1 nekā šeit, tad vairāk nekā 1 šeit, un tas izmanto šo Bitu līmeņa un triks teikt, ir tur 1 bits ir lietotāja ievadi šeit? Vai ir 1 bits ir lietotāja ievadi šeit? Un ja tā, burtiski drukāt 1, cits izdrukāt 0. Mēs darām to ar Ints tikai tāpēc, ka tāpēc mēs darām 32 bitus, nevis 8, bet tas, ko mēs esam ieviesuši tad tas ir Bitu līmeņa un šis Bitu līmeņa VAI, un tas pa kreisi maiņu operators, kas nav bieži briesmīgi noderīgs, bet izrādās, tie var būt. Patiesībā, ja jūs pārstāvēt kaut ko līdzīgu masīvs booleans tikai, lai pārstāvētu patiess vai nepatiess, pieņemsim, ka jūs vēlētos, lai sekotu, vai istaba pilna ar 300 skolēniem ir klāt, Jūs varētu deklarēt masīvu tipa 300 izmēra bool lai jūs iegūtu 300 bools, un jūs varat iestatīt katru patiess, ja kāds ir šeit un viltus citādi. Kāpēc ir tā, ka šajā datu struktūru reprezentācijas neefektīva? Kas ir slikti par dizainu šīs datu struktūras, masīvs 300 bools? Kas ir loģiska, jo patiesībā, zem motora pārsega? Arī tas ir kaut kas varētu būt pazīstami. Izrādās, ka nav loģiska. Atcerieties, mēs veida radīts ka ar cs50.h failu, kas ietvēra arī standarta bool. C ir sava veida mēms, lai gan, kad runa ir par bool. Tas izmanto 8 biti, kas pārstāv katru bool, kas ir pilnīgi izšķērdīgs jo acīmredzot, cik bitus jums vajag, lai pārstāvētu bool? Tikai 1. Tātad izrādās, ka, ja jums tagad ir iespēja ar Bitu līmeņa operatoriem manipulēt atsevišķus bitus pat apkopēja, pat vienā baitā, izrādās, jums varētu samazināt atmiņas prasīt pārstāvēt kaut ko stulbu piemēram, ka apmeklētība stila datu struktūru ar koeficientu 8. Tā vietā, izmantojot astoņi biti pārstāvēt patiess vai nepatiess, jūs varētu burtiski izmantot vienu izmantojot vienu baitu uz katriem astoņiem skolēniem klasē un ieslēdzot 0-1 atsevišķiem bitiem, izmantojot šāda veida zema līmeņa trikiem. Tas patiešām izbeigt enerģijas. Vai ir kādi aptuveni Bitu līmeņa operācijas jautājumi? Yeah. >> [Students] Vai ir ekskluzīvas vai uzņēmējs? Jā. Ir ekskluzīva vai uzņēmējs, kas izskatās kā šis, ^ burkānu simbols, kas nozīmē tikai pirmo kaut vai otrā lieta var būt 1 par izejas būtu 1. Ir arī nav, ~, kas ļaus jums inversiju 0 līdz pat 1 vai otrādi, kā arī. Un tur ir arī labi maiņu operators, >>, kas ir pretējs tam, ko mēs redzējām. Labi. Paņemsim lietas tagad, lai augstākā līmenī. Mēs sākām ar runāt par tekstu un pēc tam saspiežot to un pārstāv tekstu ar mazākām skaitam bitiem; Mēs runājām mazliet par to, kā mēs tagad varam sākt manipulēt lietas par Bitu līmeņa līmenī. Pieņemsim tagad tuvinātu atpakaļ līdz 10,000 pēdas uz pārstāvību Sarežģītākas lietas, piemēram grafika. Šeit mums ir ar Vācijas karogu, šeit mums ir viens no Francijas. Tie varētu būt pārstāvētas failu formātus jūs varētu zināt - GIF, piemēram. Ja esat kādreiz redzējuši attēlu tīmeklī, kas beidzas. Gif, Tas ir Grafikas apmaiņas formāts. Šie divi karogi šeit veida aizdot sevi kompresijas par ko varbūt acīmredzama iemesla? >> [Dzirdams studentu reaģēšanas] Tur atkārtošanās daudz, vai ne? Lai nosūtītu Vācijas karogu, domāt par to kā attēlu uz ekrāna atpakaļ savā Scratch dienās. Jūs varētu atgādināt, ka tur ir individuālie pikseļi vai punkti, kas veido attēlu. Tur viss rindu melniem punktiņiem un citas visai rindai melni punktiņi. Tur rindas, melni punktiņi, ka mēs varētu redzēt, ja mēs patiešām pietuvināto ķekars, daudz, piemēram, kad mēs pietuvināto par Rob sejā Photoshop. Tiklīdz mēs saņēmām dziļāk un dziļāk un dziļāk attēlu, Jums sāka redzēt pixelation, visi kvadrātu, kas sastāv viņa acu šajā lietā. Pats nodarbojas šeit. Ja mēs pietuvināto diezgan daudz, jūs varētu redzēt atsevišķus punktus. Nu, tas ir sava veida atkritumu bitiem. Ja no karoga trešais ir melns un no karoga trešais ir dzeltena un tā tālāk, kāpēc mēs nevaram kaut saspiest šo karogu? Un pat Francijas karogu, varētu būt saspiests, lai gan modelis ir nedaudz atšķirīgs. Izrādās GIF faila formāts ir bezzudumu saspiešanas formāts, kas nozīmē, ka jūs varat veikt attēlu kas līdzīgs Vācijas karogu šeit, Jūs varat mest prom daudz no saviem bitiem neupurējot kvalitāti. Tas ir pretēji kaut ko līdzīgu JPEG, ar ko lielākā daļa no mums, iespējams, ir vairāk pazīstams. Facebook fotogrāfijas un Flickr fotogrāfijas un līdzīgi gandrīz vienmēr ir saglabāti kā JPEG, kad viņi augšupielādēti, bet JPEG ir zudumiem - zudumiem - formāts, kurā jūs mest prom biti bet jūs arī mest prom kvalitāti. Un tā, ja jūs saspiest fotogrāfijas ar Photoshop vai augšupielādēt tos Facebook vai ņemt tos patiešām crappy tālruni, Jūs zināt, ka aina sāk kļūt ļoti notraipīti un pixelated, un tas ir tāpēc tas tiek saspiests ar datoru vai tālruni ko burtiski throwing informāciju prom. Bet GIF ir pārsteidzošs, jo tas var izmantot mazāk bitus nekā tas varētu pēc noklusējuma nezaudējot informāciju. Un tas būtībā dara šādi. Nevis veikalā, kas atrodas dokumentos, piemēram, BMP būtu RGB trīskāršu melnas, melna, melna, melna, melna, melna, melna, melna, melna, melna, melna, melna un tā tālāk, drīzāk, GIF formāts ir gatavojas teikt, "Black" un tad, "Atkārtojiet šo 100 reizes," vai kaut kas tamlīdzīgs. "Melnais, atkārtot 100 reizes, melns, atkārtot 100 reizes ..." "Dzeltenā, atkārtot 100 reizes." Un tā tas atceras, būtībā, kreisās malas pikseļu un tad kodē kaut jēdzienu atkārtojot, ka pikseli atkal un atkal. Tātad gifs tad var saspiest sevi nezaudējot informāciju. Bet, ja jums bija uzminēt, ja tas ir algoritms, kas Gif izmantošanu, kura no šīm karogi, pat ja tie izskatās identiska izmēra, būs mazāka, ja saglabāts uz diska kā GIF? >> [Students] Vācija. Vācija būs mazāka? Kāpēc? [Students] Jo jūs to atkārtot daudzas, daudzas reizes horizontāli un tad jūs atkārtot citu laiku. >> Tieši tā. Jo cilvēki, kas izgudroja GIF tikai veida patvaļīgi nolēma ka atkārtošana tiks panākta horizontāli un nav sāniski. Tur daudz vairāk atkārtojums sāniski šeit Vācijas karogu nekā Francijas karoga. Tātad, ja mēs faktiski atvērt mapi par manu cieto disku, kas ir šīs gifs, Jūs faktiski var redzēt, ka Vācijas karogs šeit ir 2 kilobaiti un Francijai ir 4 kilobaiti. Tas notiek, ir sagadīšanās, ka viens ir divreiz otru, bet tas patiesībā notiek, ka Francijas karogu ir daudz lielāks. Pat ja mēs runājam šeit par grafikas, paši idejas var piemērot ne lietas, piemēram, karogu, bet attēlus, kas ir nedaudz sarežģītāka. Ja esat lietojis priekšstatu par ābolu, protams, tur dublēšanās daudz tur, lai mēs varētu kaut jāatceras, ka noklusējuma fons ir zils un nevis, kā labais attēls liecina, ir jāatceras krāsu katru pikseli šajā attēlā. Tātad, mēs varam mest biti prom tur, nezaudējot informāciju. Ābolu joprojām izskatās tieši tāds pats. Šajā piemērā šeit, jūs varētu redzēt, kas notiek filmā. Tie ir vecās skolas filmu ruļļus, saskaņā ar ko augšējā attēlā tur Jums ir RV pagātnes mājā braukšanu un koku. Un kā tas van diskus pagātnes no kreisās uz labo, ko acīmredzot nav mainās? Māja nav iet visur, un koks nav iet visur. Vienīgais, kas ir kustībā, ir van šajā lietā. Tā kā fons Nemainīgs liecina, ko jūs varat darīt, filmas ir līdzīgi tikai mest prom informāciju, kas nemainās starp kadriem. Tas ir parasti sauc par interframe kompresija kurā, ja tas rāmis izskatās gandrīz identisks šo vienu, pieņemsim nav apnikt glabāšanai diskā kādu no identisku informāciju gada šajos starpposma rāmji, pieņemsim tikai izmantot galveno rāmji reizi brītiņa ka faktiski uzglabāt šo informāciju lieki tāpat kā mazliet veselība pārbaudītu. Savukārt, cita pieeja saspiežot video ir šajā otrajā un zemākas Piemēram šeit, kur nevis veikalā 30 kadri, kāpēc nav jūs vienkārši glabāt 15 kadriem sekundē vietā? Nevis filmu veida plūst skaisti, ideāli, tas varētu izskatīties tas stostīšanās mazliet, mazliet vecs skolā, bet tīrā ietekme būs izmantot daudz mazāk bitus nekā citādi varētu būt nepieciešams. Tātad, ja tas pēc tam atstāj mūs? Tas bija mazliet malā, kur vēl jūs varat doties ar kompresijas. Lai uzzinātu vairāk par šo, veikt klases, piemēram CS175 šeit. Lūk otru video piemērs. Ja bite vienīgais pārvietojas, Jūs tiešām var mest prom informāciju šajos vidū rāmjos jo ziedu un debesis, un lapas nav mainās. Bet pieņemsim tagad apsvērt vienu pēdējo lietu. Nākamajos 5 minūtēm mēs atstāt C aiz mūžīgi lekciju? Jā. Ne tādā psets, gan. Pēdējā apmēram C stāsts, un tad mēs to ļoti seksīgas lietiņas iesaistot HTML un web un Woo-hoo. Labi. Šeit mēs iet. Tas ir motivācija. Izrādās visu šo laiku, kad mēs esam rakstīšanas programmu mēs palaist šķindēt. Un šķindēt, mēs esam teica, jo pirmajā nedēļā diezgan daudz, ņem pirmkodu un pārvērš to objekta kodu. Tas aizņem C un pārvērš to 0s un 1s. Es esmu veida gulējis uz jums uz pāris nedēļām, jo ​​tas nav gluži tik vienkārši. Tur daudz vairāk notiek zem motora pārsega, kad jūs darbināt programmu, piemēram šķindēt. Faktiski, apkopošanu programmu procesu tiešām var apkopot, kā jūs varētu atgādināt no Rob s video kompilatori, šajās 4 soļiem: pirmapstrāde, apkopojot sevi, montāža, un savieno. Bet mēs klasē un vairums cilvēku pasaulē parasti apkopot visus šos pasākumus kā tikai "sagatavošanu." Bet, ja mēs sāktu ar pirmkodu, piemēram, tas, atgādināt tas ir iespējams vienkāršākais C programma Mēs esam rakstiski līdz šim, atgādināt, ka tad, kad apkopoti tā sāk izskatīties šis. Bet tur tiešām starpposms, un šie pasākumi ir šādi. Vispirms tur ir šī lieta pie ļoti top šīs un lielākā daļa no mūsu programmas, # Ietvert Kāda # ietvert darīt mums? Tā diezgan daudz kopijas un pastas saturs stdio.h manā failu, lai kāpēc? Kāpēc man rūp stdio.h saturu? Kas tur interese? Printf deklarācija, tā prototips, lai kompilators tad zina, ko es domāju kad es pieminēt šo funkciju printf. Tātad soli 1, apkopojot ir pirmapstrāde, kad programma, piemēram, šķindēt vai kādu palīgs programma, kas šķindēt nāk ar lasa savu kodu augšas uz apakšu, kreisās uz labo pusi, un jebkurā laikā tas redz # simbolu seko atslēgvārds piemēram ietvertu, tā veic šo darbību, kopējot un ielīmējot šajā gadījumā stdio.h tos jūsu failu. Tas ir solis 1. Tad jums ir daudz lielāka C failu, jo ir milzīgs kopēt, ielīmēt darba, kas ir tikko noticis. 2.solis Tagad apkopošanai. Bet izrādās, apkopojot ņem avota kodu, kas izskatās šādi un pārvērš to par kaut ko, kas izskatās šādi, kas tiem pazīstami sauc? >> [Students] Asambleja. >> Asambleja valoda. Tas ir tiešām kaut kas, ja jūs lietojat CS61 jūs pikējošais sīkāk. Tas ir tikai par tik tuvu, kā jūs varat iegūt rakstot 0s un 1s sevi bet rakstot lietas tādā veidā, kas joprojām padara vismaz mazliet sajūtu. Tie ir mašīna instrukcijas, un, ja mēs ritiniet uz leju līdz galvenā funkcija šeit, pamanīt, ka tur tas ir push norādījums, pārvietot norādījumu, atņemt instrukcija, zvanīt instrukciju, un tā tālāk. Kad jūs dzirdat, ka jūsu dators ir Intel iekšā, Jums ir Intel CPU jūsu Mac vai PC, ko tas nozīmē? CPU nāk būvēts ar uzņēmumiem, piemēram Intel izprast dažus norādījumus. Viņiem nav ne jausmas, kādas funkcijas, piemēram, mijmaiņas vai galvenais ir per se, bet viņi zina, ko ļoti zema līmeņa instrukcijas, piemēram, pievienot, atņemt, push, pārvietot, zvaniet, un tā tālāk ir. Tātad, ja jūs sastādīt C kodu montāžas valodā, Jūsu ļoti lietotājam draudzīgu izskatīgs kods ir pārveidots kaut ko, kas izskatās šādi, ka burtiski pārvietojas baitu vai 4 baiti ap šādām mazām vienībām un no CPU. Bet beidzot, kad šķindēt ir gatava uzņemties šo pārstāvību jūsu programmā uz 0s un 1s, tad solis sauc montāža notiek, un tas atkal viss notiek acu mirklī, kad darbojas šķindēt. Mēs sākam šeit, tas izejas failu, piemēram, tas, un tad tas pārvērš to šiem 0s un 1s. Un, ja jūs vēlaties doties atpakaļ kādā brīdī un faktiski redzēt šo darbībā, ja es dodos uz hello1.c--tas ir viens no pašiem pirmajiem programmu mēs paskatījās - Parasti mēs apkopotu to ar šķindēt hello1.c un tas dod mums a.out. Turpretī, ja jūs tā vietā arī tā-s karogu, ko jūs saņemsiet, ir hello1.s un jūs faktiski redzēt montāžas valodā. Es esmu to izdarīt uz ļoti īsu programmu, bet, ja jūs iet atpakaļ uz motokross vai Atgūt vai jebkuru programmu jūs esat rakstiski un tikai no zinātkāri gribu redzēt, kas tas patiesībā izskatās, kas patiesībā tiek ievadīti CPU, Jūs varat izmantot ka-S karogu ar šķindēt. Bet tad visbeidzot, tur ir vēl viens gotcha. Šeit ir 0s un 1s, kas pārstāv manu ieviešanu sveiki, pasauli. Bet es kāds cits funkciju manā programmā. Tātad, pat ja process ir bijis es hello.c, tas izpaužas apkopoti montāža kodu, un tad tas kļūst samontēt 0s un 1s, vienīgais 0s un 1s, kas tiek izvadīts šajā brīdī ir tie, kas izriet no manas kodu. Bet persona, kas rakstīja printf, viņi apkopo to kodu pirms 20 gadiem un tas ir tagad uzstādīt kaut uz ierīces, tāpēc mums kaut kā ir apvienot viņa vai viņas 0s un 1s ar manu 0s un 1s, un kas dod mums uz 4 un galīgais solis apkopotu, kas pazīstams kā savieno. Tā kreisajā pusē mums ir tieši tā pati attēlu kā pirms: hello.c kļūst montāža kods kļūst 0s un 1s. Bet atceros, ka es izmantoti standarta I / O bibliotēka manā kods, un tas nozīmē, ka kaut kur uz datora tur failu sauc stdio.c vai vismaz apkopot variantu, jo kāds pirms dažiem gadiem apkopoti stdio.c vērā montāžas kodu un tad viss ķekars 0s un 1s. Tas ir tas, ko sauc par statisku vai dinamisku bibliotēkā. Tas ir dažas lieta sēž kaut kur ierīci. Bet visbeidzot, man ir jāņem manu 0s un 1s un šīs personas 0s un 1s un kaut saistīt tos kopā, burtiski apvienot tos 0s un 1s vienā failu sauc a.out vai hello1 vai kāds man sauc mana programma lai gala rezultāts ir visas 1s un 0s ka būtu veidojošo manu programmu. Tātad visu šo laiku šajā pusgadā, kad esat lietojis šķindēt un vēl nesen darbojas izdarīt, lai palaistu šķindēt, visi šie soļi ir noticis veida, uzreiz, bet ļoti apzināti. Un tā, ja jūs turpināt datorzinātnēs, proti CS61, Tas ir slānis, kas jūs turpināt mizu atpakaļ off tur runājot par efektivitāti, drošības aspektiem, un šo zemāka līmeņa detaļām, piemēram. Bet ar to, mēs esam par to, lai atstāt C atpaliek. Iesim uz priekšu un veikt mūsu 5 minūšu pārtraukumu tagad, un kad mēs atgriezīsimies: internets. Labi. Mēs esam atpakaļ. Tagad mēs sākam mūsu apskatīt ne tikai HTML, jo, kā jūs redzēsiet, HTML pati par sevi ir faktiski diezgan vienkāršs bet īsti pie web programmēšanas vispār, tīklu kopumā, un kā visas šīs tehnoloģijas nāk kopā lai ļautu mums izveidot daudz sarežģītākus programmas atop internetā nekā līdz šim, mēs esam spējuši šajos melnā un baltā logiem. Patiešām, šajā brīdī semestra, pat ja mēs tērēt salīdzinoši mazāk laika uz PHP, HTML, CSS, JavaScript, SQL un vairāk, lielākā daļa studentu galu galā dara gala projektus, kas tīmeklī jo, kā jūs redzēsiet, fona jums tagad ir C ir ļoti daudz, ko piemēro šīm augstāka līmeņa valodām. Un, kā jūs sākat domāt par savu galīgo projektu, kas, līdzīgi Problem Set 0, kur tika aicināti darīt visvairāk kaut procentu jums nulles, galīgais projekts ir jūsu iespēja veikt savu jaunatklāto zināšanas un gudriem ar C vai PHP vai JavaScript vai patīk, kas par spin un izveidot savu pašu gabals programmatūru par pasauli redzēt. Un sēklām jūs ar idejām, zinu, ka jūs varat doties šeit, projects.cs50.net. Katru gadu, mēs lūgt idejas no pasniedzējiem un personālam un studentu grupām par Campus vienkārši iesniegt savas idejas par interesantām lietām, kas varētu atrisināt, izmantojot datorus, izmantojot tīmekļa vietnes, izmantojot programmatūru. Tātad, ja jūs cīnās nākt klajā ar ideju par savu, ar visiem līdzekļiem ritinātu idejas tur no šī gada un pēdējā. Tas ir pilnīgi labi, lai risinātu projektu, kas ir jārisina pirms tam. Mēs esam redzējuši daudzus progr redzēt statusu veļas universitātes pilsētiņā, daudzi progr par navigācijas ēdamzālē izvēlni, daudzi progr par navigācijas kursu katalogs un tamlīdzīgi. Un patiešām, nākotnes lekciju un nākotnes semināros, mēs jūs iepazīstināt ar kādu publiski pieejamā API, gan komerciāli pieejamas kā arī šeit pieejami no CS50 uz Campus, lai jums ir piekļuve datiem un tad var darīt interesantas lietas ar to. Tātad vairāk par galīgajiem projektiem pēc dažām dienām, kad mēs atbrīvot specifikāciju, bet tagad, zinu, ka jūs varat strādāt solo vai ar vienu vai diviem draugiem par lielāko jebkuru projektu jūs interesēt. Interneta. Jums iet uz priekšu un izraut savu klēpjdatoru, jums iet uz facebook.com pirmo reizi, tā nav pieteicies nesen, un hit Enter. Kas īsti notiek? Kad jūs hit Enter datorā, viss ķekars soļiem sākums veida maģiski notiek. Tātad jūs šeit uz kreisās, web serveri, piemēram, Facebook ir šeit par tiesībām, un kaut jūs, izmantojot šo valodu sauc HTTP Hiperteksta pārsūtīšanas protokols. HTTP ir ne programmēšanas valoda. Tas ir vairāk par protokolu. Tas ir kopums, konvencijām, ka tīmekļa pārlūkprogrammām un web serveri izmanto, ja savstarpēji savienoti. Un ko tas nozīmē ir šāda. Līdzīgi kā reālajā pasaulē, mums ir šīs konvencijas kur, ja jūs satikt kādu cilvēka pirmo reizi, ja jums nav prātā humoring mani šeit, Es varētu nākt klajā ar jums, saka: "Sveiki, mans vārds ir David." >> Čau, Deivids. Mans vārds ir Sammy. "Sveiki, Deivids. Mans vārds ir Sammy." Tāpēc tagad mums ir tikai iesaistīti šāda veida stulbu cilvēku protokolu ja man ir uzsākusi protokolu, Sammy ir reaģējusi, Mēs esam sakrata rokās, un darījums ir pabeigts. HTTP ir ļoti līdzīgs garā. Ja jūsu tīmekļa pārlūkprogramma pieprasa www.facebook.com, ko jūsu pārlūkprogramma ir tiešām dara paplašina savu roku, tā teikt, ar serveri un tas tai nosūtot īsziņu. Un šī ziņa ir parasti kaut kas līdzīgs get - ko jūs vēlaties, lai saņemtu? - atnesiet man mājas lapā, kas parasti apzīmē ar vienu slīpsvītru beigās URL. Un tikai, lai jūs zināt, kādā valodā es runāju, es pārlūkprogramma esmu dodas uz jums pastāstīt ka es runāju HTTP versiju 1.1, Un arī labs pasākums, es esmu dodas uz jums, ka uzņēmēja, ka es gribu mājas lapā ir facebook.com. Raksturīgi, interneta pārlūku, unbeknownst jums, cilvēku, nosūta šo ziņojumu visā internetā, ja jūs vienkārši ierakstiet www.facebook.com, Ievadīt, savā pārlūkprogrammā. Un ko tas Facebook atbildēt ar? Tas reaģē ar dažiem līdzīgi izskata mistisks detaļas, bet arī daudz ko citu. Ļaujiet man iet uz priekšu, lai Facebook mājas lapā šeit. Tas ir ekrāns, kas lielākā daļa no mums, iespējams, nekad redzēt, ja jums palikt pieteicies visu laiku, bet tas ir tiešām viņu mājas lapā. Ja mēs to darām Chrome, ievērosiet, ka jūs varat uzvilkt šos maz konteksta izvēlnes. Izmantojot Chrome, vai uz Mac OS, Windows, Linux, vai tamlīdzīgi, ja jums kontrolēt klikšķis vai kreiso klikšķi, jūs varat parasti pull up izvēlnes, kas izskatās šādi, kur dažas iespējas sagaidīt, no kuriem viens ir Skatīt lapas avotu. Jūs varat arī parasti nokļūt uz šīm lietām, dodoties uz izvēlni Skats un papētījis. Piemēram, šeit zem View, Izstrādātājs ir tas pats. Es iešu uz priekšu un apskatīt View Page Source. Ko jūs redzat ir HTML ka Marks ir rakstījis pārstāvēt facebook.com. Tas ir pilnīgs haoss šeit, bet mēs redzam, ka tas padara mazliet lielāka jēga pirms ilgi. Bet ir daži modeļi šeit. Ļaujiet man ritiniet uz leju, lai stuff kā šis. Tas ir grūti cilvēka lasīt, bet paziņo, ka tur ir šis modelis leņķveida iekavās ar atslēgvārdiem, piemēram, iespēju, atslēgvārdi vērtība, dažos kotētām stīgas. Tas ir, ja, kad jūs pierakstījies par ļoti pirmo reizi, noteiktajā ko jūsu dzimšanas gads ir. Ka nolaižamā izvēlne dzimšanas gadiem kaut kodēts šeit Šajā valodā sauc par HTML, hiperteksta iezīmēšanas valoda. Citiem vārdiem sakot, ja jūsu pārlūkprogramma pieprasa tīmekļa lapu, tā runā šo konvenciju sauc HTTP. Bet ko facebook.com atbildēt uz šo lūgumu ar? Tas reaģē ar kādu no šiem noslēpumains ziņojumiem, kā mēs redzēsim pēc brīža. Bet lielākā daļa no tās atbildes ir formā HTML, hiperteksta iezīmēšanas valoda. Tas ir faktiskais valoda, kurā mājas lapā ir rakstīts. Un ko interneta pārlūks tiešām tad ir, saņemot kaut ko, kas izskatās šādi, skan tā augšas uz leju, no kreisās uz labo, un jebkurā laikā pēc saviem viens no šiem leņķveida iekavās seko atslēgvārds, piemēram, iespēja, tas parāda, ka iezīmēšanas valodu atbilstošā veidā. Šajā gadījumā tas varētu parādīt nolaižamo izvēlni gadus. Bet atkal, tas ir pilnīgs haoss, lai apskatīt. Tas nav tāpēc, ka Facebook izstrādātājiem izpausties 0 par 5 par stilu, piemēram. Tas ir tāpēc, ka lielākā daļa no koda, ka viņi rakstīt ir, faktiski, raksta skaisti, labi komentēja, labi atkāpi, un līdzīgi, Bet, protams, mašīnas, datori, pārlūkprogrammām tiešām nedod nopelt vai jūsu kods ir labi veidoti. Un patiesībā, tas ir pilnīgi izšķērdīgi hit Tab taustiņu visus šos laikus un likt komentārus visiem visā jūsu kodu un izvēlēties patiešām aprakstošus mainīgo nosaukumi jo, ja pārlūkprogramma nav aprūpi, visi jūs darāt beigās, dienā ir izšķērdēt baiti. Tātad izrādās, ko vairums mājas lapām darīt ir kaut pirmkoda facebook.com, par cs50.net un visiem šiem citām mājas lapām internetā parasti labi uzrakstīts un labi komentēja un labi izrobota un līdzīgi, Parasti pirms vietne ir likts uz internetu, kods ir minified, kuru HTML un CSS - kaut kas cits, mēs drīz redzēt - JavaScript kodu, mēs drīz redzēt ir saspiests, kad ilgi mainīgo nosaukumi kļūst X un Y un Z, un visu šo atstarpi, kas padara viss izskatās tik lasāms viss izmet jo, ja jūs domājat par to šādā veidā, Facebook kļūst miljardu lapā hits dienā - kaut traks piemēram, ka - tā darīt, ja programmētājs vienkārši būt anālais hit starpdevējs vienu papildus laiku tikai līdz ievilkumu kādu rindiņu kodu kādreiz tik daudz? Kas Ietekme ja Facebook konservi ka atstarpes visās baitu tie nosūta atpakaļ uz cilvēkiem internetā? Hitting starpdevējs reizi dod jums papildus baitu failā. Un, ja viens miljards cilvēku, tad turpināt lejupielādēt mājas lapā, kas dienā, cik daudz vairāk datu esat pārraida internetā? Gigabaitu nesaprotamu iemeslu dēļ. Un piešķirts, par daudz mājas lapas tas nav tik pielāgojamiem jautājums, bet Facebook, Google, lai dažas no populārākajām mājas lapām tur ir liels stimuls, finansiāli, lai padarītu jūsu kods izskatās haoss tāpēc, ka jūs izmantojat kā daži baiti iespējas papildus tam saspiežot to izmantojot kaut ko līdzīgu zip, algoritms sauc gzip, ka pārlūks automātiski. Bet tas ir šausmīgi. Mēs nekad uzzināt kaut ko par citu cilvēku mājas lapas, un to, kā veidot web lapas ja mums ir jāskatās uz to, kā šis. Tāpēc par laimi, pārlūkprogrammas kā Chrome un IE un Firefox šajās dienās parasti nāk ar iebūvētu izstrādātāja rīkiem. Patiesībā, ja man iet uz leju šeit Pārbaudiet elements vai, ja es dodos apskatīt, Developer, un iet uz izstrādātāju rīki skaidri, šis apakšā mana ekrāna logs tagad izlec. Tas nedaudz biedējoša sākumā, jo tur ir par svešiem cilnēm daudz šeit, bet, ja es noklikšķiniet uz Elements visu ceļu apakšā pa kreisi, Chrome ir acīmredzami diezgan gudrs. Tā zina, kā interpretēt visu kodu. Un tā, kādi Chrome tas ir tas attīra visas Facebook HTML. Kaut gan tur nav atstarpes tur, tur nav atkāpes tur, tagad paziņojums, ka es varētu sākt, lai virzītos šo mājas lapu visu vēl hierarhiski. Izrādās, ka katrs interneta lapā rakstīts valodā sauc HTML5 vajadzētu sākt ar šo, Šī DOCTYPE deklarāciju, lai runāt: Tas ir sava veida gaismas un pelēks tur, bet tas ir ļoti pirmajā rindā kodu šajā failā, un ka tikai stāsta pārlūku, "Hei, šeit nāk daži HTML5 Te nāk mājas lapā.". Pirmais atklātais kronšteins tālāk kas notiek, ir tas pats, atvērta iekava HTML tagu, un tad, ja es ienirt dziļāk - šīs bultas ir pilnīgi bezjēdzīga; tie ir tikai prezentācijas labad, tie nav reāli failā - pamanīt, ka iekšpuses Facebook HTML tagu, kaut kas sākas ar atvērtu kronšteinu un tad ir vārds sauc tag. Tātad iekšā HTML tagu acīmredzot galva tagu un ķermeņa tag. Iekšpusē no galvas tag tagad ir viss haoss Facebook jo tie ir daudz metadatu un citas lietas, par mārketingu un reklāmu. Bet, ja mēs ritinātu uz leju, uz leju, uz leju, uz leju, pieņemsim redzēt, kur tas ir. Šeit tā ir. Tas viens ir vismaz nedaudz pazīstami. Nosaukums Facebook mājas lapā, ja jūs kādreiz skatīties cilnē jūsu virsrakstjoslas, ir Laipni lūdzam Facebook - Pieteikties, Reģistrēties vai Uzzini vairāk. Tas, ko jūs varētu redzēt Chrome virsrakstjoslā, un tas, kā tas ir pārstāvēta kodu. Ja mēs ignorēt viss pārējais galvā, lielākā daļa no mājas lapas iekšām ir organismā, un izrādās, ka Facebook kods ir gatavojas izskatās sarežģītāka kā vairums lietas mēs rakstīt sākotnēji tikai tāpēc, ka tas ir bijis izveidojusies gadu gaitā, bet tur viss daudz skriptu tagiem, JavaScript kodu, kas padara tīmekļa vietne ir ļoti interaktīva: redzot statusa atjauninājumus uzreiz valodās, piemēram, JavaScript. Tur ir kaut ko sauc div, kas ir sadalījums lapā. Bet, pirms mēs nokļūt šajā detaļām, pieņemsim mēģināt tālinātu un apskatīt vienkāršāku versiju Facebook 1,0, lai runāt. Šeit ir sveiki, pasaules interneta lapas. Tā ir, ka DOCTYPE deklarāciju ļoti top kas ir nedaudz atšķiras no viss pārējais. Nekas cits mums rakstīt mājas lapā gatavojas sākt ar par drosmīgu. Atkal, stāsts ir tāds pats: Sveiki, komats, sākt padarot šo drosmīgs, tad pasaule kļūst treknrakstā, un tas nozīmē apturēt drukāšanu tas treknrakstā. Ļaujiet man iet uz priekšu un saglabāt manu failu, dodieties atpakaļ uz Chrome, es ņemšu tuvināt tikai tā mēs varam redzēt labāk, un pārlādēt, un jūs redzēsiet, ka pasaule tagad ir treknrakstā. Web ir visu par hipersaitēm, tāpēc pieņemsim iet uz priekšu un darīt: mana mīļākā mājas lapa ir, teiksim, youtube.com. Saglabāt, pārlādēt. Labi. Ir pāris problēmas tagad Līdztekus hideousness mājas lapā. 1, es esmu diezgan pārliecināts, ka es hit Enter šeit. Un es to darīju. Es ne tikai hit Enter, es arī atkāpi, praktizē to, ko mēs esam sludināja par stilu, bet mana ir tieši blakus pasaulei. Tātad, kāpēc tas ir? Pārlūkprogrammas darīt tikai to, ko jums pateikt viņiem darīt. Es neesmu teicis pārlūku, "Break līnijas šeit ievietot punkts pārtraukuma šeit.". Tātad pārlūku, tas nav svarīgi, ja es hit atpakaļ 30 reizes, tas joprojām gatavojas nodot savas tiesības blakus pasaulei. Ko es tiešām ir jādara, šeit ir teikt kaut ko līdzīgu
, ievietotu rindiņas pārtraukumu. Un tiešām, līnija pārtraukums ir veida dīvaini lieta jo jūs nevarat tiešām sāk pārvietojas uz citu līniju, tad kaut ko darīt, un tad apstāties uz jaunu rindu. Tas ir sava veida atomu darbību. Jūs vai nu to, vai jums nav. Jūs hit Enter, vai jums nav. Tātad br ir mazliet atšķirīgu tagu, un tāpēc man ir nepieciešams, lai sakārtotu gan no atvērt un aizvērt visu uzreiz. Par to sintakse ir šis. Tehniski, jūs varētu darīt kaut kas līdzīgs šim dažās HTML versijas, bet tas ir tikai stulba, jo tur nav iemesls, lai sāktu un apturētu kaut ja jūs varat, nevis darīt to visu uzreiz. Saprast, ka HTML5 nav strikti nepieciešama šo slīpsvītru, lai jūs redzēsiet mācību grāmatas un tiešsaistes resursus, kas nav tā, bet labs pasākums pieņemsim praktizēt simetriju, ka mēs esam redzējuši līdz šim. Tas nozīmē, ka tag ir gan atvērta un slēgta. Tāpēc tagad ļaujiet man saglabāt manu failu, iet atpakaļ šeit. Labi, tā tas sāk izskatīties labāk, izņemot Web es zinu ir veida klikšķināmos, un vēl YouTube šeit, šķiet, nav radīt neko. Tas ir tāpēc, ka, lai gan tas izskatās saiti, pārlūkprogramma nezina, ka par sevi, tāpēc man ir pateikt pārlūku, ka tas ir saikne. Veids, kā to izdarīt, ir izmantot enkura tagu: un ļaujiet man pāriet tas uz jaunu rindu tieši tāpēc nedaudz vairāk lasāms, un es ņemšu sarauties burtu lielumu. Es esmu darīts vēl? Nē Ir būs šis dalījums. Šis tags, enkuru tag, patiešām ņem atribūtu, kas maina savu uzvedību, un šī atribūta vērtība ir acīmredzami YouTube URL. Bet paziņojums dihotomiju, ka tikai tāpēc, ka ir URL jūs gatavojas, tas nenozīmē, ka ir jābūt vārdu, ka jūs uzsverot un izveidojot saikni. Drīzāk, ka var būt kaut kas līdzīgs šim. Tāpēc man jāsaka pārtraukt padarītu šo vārdu hipersaiti, izmantojot ciešu enkura tagu. Paziņojums Es to nedaru. 1, tas būtu vienkārši atkritumi ikvienam laikā, un tas nav nepieciešams. Lai aizvērtu tagu, jūs tikai pieminēt vārdu tag atkal. Jums nav pieminēt kādu no atribūtiem. Tāpēc pieņemsim ietaupīt, ka iet atpakaļ. Labi, voila, tagad tas ir zilā un hipersaitēm. Ja es noklikšķiniet uz tā, es tiešām iet uz YouTube. Tātad, pat ja mana web lapa nav internetā, tas ir vismaz HTML, un ja mēs ļausim internets panākt, mēs faktiski galu galā šeit youtube.com. Un es varētu doties atpakaļ un šeit ir mana mājas lapa. Bet nepamanīt. Ja esat kādreiz gotten surogātpasta vai pikšķerēšanas uzbrukumu, Tagad jums ir iespēja jau pēc piecām minūtēm darīt pats. Mēs varam doties šeit un darīt kaut ko līdzīgu www.badguy.com vai kāds paviršs mājas lapa ir, un tad jūs varat teikt pārbaudīt savu PayPal kontu. [Smiekli] Un tagad tas ir gatavojas doties uz badguy.com, ko es neesmu gatavojas klikšķiniet uz jo man nav ne jausmas, kur tas ved. [Smiekli] Bet tagad mums ir iespēja tiešām galu galā tur. Tātad mēs esam tiešām tikai sāk saskrāpēt virsmu. Mēs esam ne programmēšanas per se, mēs rakstiski valodu. Bet, tiklīdz mēs noapaļot savu leksiku HTML, mēs ieviest PHP, faktiskā programmēšanas valodu kas ļaus mums radīt HTML automātiski, ģenerēt CSS automātiski, lai mēs varētu sākt trešdien ieviest, teiksim, mūsu pašu meklētājprogrammu un vairāk. Bet vairāk par to pēc pāris dienām. Mēs redzēsim jūs tam. [CS50.TV]