[Powered by Google Translate] [Semèn 7]
[David J. Malan - Inivèsite Harvard]
[Sa a se CS50. - CS50.TV]
Tout dwa. Byenveni tounen. Sa a se CS50, e sa se kòmansman an nan semèn 7.
Yon koup la anons ti kras:
Pset5 se kounye a nan pwogrè, oswa byento pral,
ak kite m 'di, byen onètman, sa a gen tandans yo dwe nan mitan defi an plis
nan aparèy televisyon HD pwoblèm kou a nan, se konsa, kite m 'mansyone sa a kounye a
pou ke semèn sa a plis pase tout tan ou pa rete tann jiskaske, di, Mèkredi swa
oswa jedi swa plonje pous
Sa a se definitivman yon pset enteresan. Nou panse ke li la plezi.
Si ou aktyèlman jwenn li konplètman kòrèk epi yo ka Lè sa a, defi sa yo rele Big Komisyon Konsèy la,
ou pral gen yon opòtinite ki matche ak san ak kèk nan anplwaye kou a nan
ak kèk nan kamarad klas ou a.
Ki sa ki Komisyon Konsèy la Big se se yon fwa ou gen k ap travay période-korektè ou a,
ou pral kapab pou yo ale nan cs50.net apre kouri yon lòd,
piman patisipe nan, ak Lè sa a, kantite lajan an nan tan ak kantite a RAM ak plis ankò
ke ou te itilize nan aplikasyon ou ap ekspoze isit la sou paj lakay kou a.
Ou ap remake ke tout yon seri nan sa yo folks isit la ki nan lis kòm anplwaye
depi nan fen semèn nan, anplwaye a te panse li ta enteresan pou yo eseye distance youn ak lòt.
Se konsa, reyalize ke objektif la isit la se pa distance anplwaye a.
Menm mwen menm sèlman isit la nan nimewo 13.
Piman patisipe nan, men li la yon opòtinite wè jis ki jan ti kras RAM
ak ki jan kèk segonn CPU ou ka itilize kèk vis-a-vis nan kondisip ou yo.
>> Apre sa, m'a admèt ke Kevin Michael Schmid,
kounye a nan yon pozisyon nimewo 1 kòm youn nan TFs yo,
sa a se yon aplikasyon ke nou rele pa posib
bay sa li te lè l sèvi avèk prèske 0 RAM ak prèske 0 segonn pou debake.
Se konsa, nou pral pran swen nan offline Kevin. [Ri]
Gen ladrès sèten ke Kevin ap mete nan egzamen-an isit la.
Youn nan bagay sa yo nou te panse nou ta fè twò se kounye a CS50x se yon semèn nan pwogrè,
epi ou nèg yo se kòm anpil yon pati nan eksperyans sa a kòm elèv sa yo yo ye.
Nou te mande yo kòm yon pati nan pset0 yo, ki te menm bagay ak soumèt yon pwojè reyur
nan enterè yo - yon jwèt, yon moso entèaktif nan atizay, yon animasyon, oswa tankou an -
yon 1 - videyo a 2-minit yo, si yo ta renmen, li di alo nan mond lan ak ki moun ki yo aktyèlman yo.
Mwen te panse mwen ta pataje avèk ou jis yon koup nan videyo yo ke yo te soumèt konsa byen lwen
paske pou nou, sou anplwaye a omwen, li vrèman te gen eksitan
ak enspire yo wè sa yo jan soti nan tout mond la - peyi nan tout mond lan -
akor nan, nan tout bagay sa yo, nan yon kou syans òdinatè sou Entènèt la,
si li nan paske yo vle kontinye etid pwòp yo,
yo vle pran karyè yo nan yon nouvo direksyon,
yo vle ranpli nan twou vid ki genyen nan konesans pwòp yo,
Se konsa kèk nan menm rezon yo ke ou nèg petèt yo te isit la.
>> Se konsa, mwen ba ou yon sèl sa a, elèv isit la. Ou te kapab ogmante volim nan jis yon ti jan.
Isit la se youn nan 1-minit kritè obeyisans elèv nou an.
Hello, lemonn. Mwen se yon elèv nan jeni endistriyèl isit la nan Malaga, Espay.
Mwen kontan poutèt kou sa a sou Entènèt paske mwen renmen syans konpitè, mwen reyèlman fè sa,
epi mwen vrèman apresye sa mwen genyen yo eksplore li.
Ak lefèt ke mwen ka aprann menm bagay la tou pou nou tout nèg fè
men olye pou yo te nan Harvard mwen menm mwen nan Malaga, ki jan awizom se sa?
Oke, mwen menm Fernando, e sa se CS50. Al gade nan ou guys.
[Ri] Yon lòt clip nou patikilyèman renmen, ou pral jwenn ke angle sa a mesye a se pa konsa pou sa ki pi solid.
Li sanble ke li te gen li machin tradui, se konsa tradiksyon yo tèt yo yo yon ti jan pafè,
men sa a se te youn nan favorites nou konsa byen lwen kòm byen.
[♪ ♪]
Hello, lemonn. [Pale nan Japonè]
[Mwen dwe voye bonjou nan Japonè paske angle mwen, se yon trè konfyans.]
[M'ap lage mesaj la nan ou soti nan lavil la nan Gifu, Japon.]
[Mwen ka yon elèv la pou premye fwa nan 20 an, kòm ka wè yo.]
[Mwen trè rekonesan anvè Inivèsite Harvard ki te ban m 'opòtinite sa a epi èdo.]
[Gòlf se yon gita ak bagay pi renmen m 'kouri.] [Ri]
[♪ ♪]
[Poukisa ou panse mwen te ap eseye ale nan yon cs50x.]
[Inivèsite Harvard, li se anvi wè m 'yo.]
[Espesyalman si mwen byen lwen prezans te viv nan Japon.]
[Mwen te vle eseye imedyatman okouran de egzistans lan nan sa yo èdo lè.]
[Èske ou pa panse pou w pa ki gen rapò ak laj la pou yo aprann I.]
[Cs50 se anvi wè m 'yo. Non mwen se Kazu, e sa se cs50.]
[♪ ♪] [aplodisman ak bat bwavo]
Yon lòt pi renmen nan nou te sa a soumisyon isit la nan men yon moun.
[♪ ♪] [Malan] Google li si w ap abitye avèk sa a mem.
>> Lè sa a, alafen, yon koup la lòt moun ki te resevwa afiche ke petèt genyen prim lan adorabl.
[Elèv yo] aww! >> [Malan] Nou pwal genyen koute. Sa a se kout, se konsa koute byen.
[Fi oratè] Ki sa ki nan non ou? >> Louie.
[Fi oratè] Ki sa ki nan sa a? >> [Giggles] CS50. [Ri]
[Malan] Li t 'de pran, menm si.
Isit la nou ale, dènye a.
Non mwen se Louie, e sa se CS50.
[Ri] sa a Lè sa a, se CS50x.
Mèsi poutèt ou nan tout sa yo ki nan ou pandan y ap swiv ansanm nan kay
ki te partisipan konsa byen lwen.
Jodi a, nou konkli diskisyon nou an estrikti done,
omwen yon pati nan fondamantal a pi plis,
ak Lè sa a, nou kontinye konvèsasyon nou an sou HTML ak pwogramasyon entènèt.
Vreman vre, nou te depanse sot pase a kèk sèt semèn gade nan fondamantal nan pwogramasyon -
algoritm, done estrikti, ak renmen an -
ak C, kòm ou ka fè eksperyans konsa byen lwen,
se pa nesesèman pi aksesib a nan lang
ak ki aplike kèk nan ide sa yo.
Se konsa, kòmanse nan semèn sa a ak semèn pwochèn ak Lè sa a, sa ki annapre yo,
nou pral finalman kapab tranzisyon soti nan C, ki se jeneralman li te ye tankou yon lang san patipri ki ba-nivo,
yo ak bagay ki pi wo nivo, nan mitan yo PHP, JavaScript, ak renmen an,
ki nou pral wè trase sou leson yo menm ki nou te aprann sou semèn ki sot pase yo kèk,
men ou ap jwenn ki deklare bagay sa yo tankou ranje ak tablo yo regle ak chèche ak Fouye
vin tèlman pi fasil paske lang yo tèt yo nou pral kòmanse lè l sèvi avèk
yo ap vin plis pouvwa anpil.
Men, an premye, yon aplikasyon nan pyebwa yo.
Li trè komen jou sa yo bezwen konpresyon enfòmasyon.
Nan ki kontèks ou ta vle konpresyon kèk kalite enfòmasyon dijital?
>> Yeah. >> [Elèv] Lè ou bezwen voye li sou sit Entènèt la.
Yeah, lè ou vle voye yon bagay ki sou sit entènèt la.
Si ou vle telechaje yon dosye gwo, li nan ideyal si yon moun sou fen nan lòt
te konprese ki dosye lè l sèvi avèk yon fòma postal oswa yon bagay tankou sa
pou ke ou ap voye mwens Bits pase ka otreman dwe transmèt.
Se konsa, kouman ou konpresyon enfòmasyon?
Li tout klou desann nan lè l sèvi avèk mwens pase Bits yo gen obligasyon pa defo.
Men sa se kalite yon bagay kirye paske panse tounen nan semèn 0 ak 1
lè nou te pale osijè de ASCII ak binè epi nou te pale osijè de ASCII an patikilye
kòm lè l sèvi avèk Bits 8 ki reprezante lèt nan alfabè a
pou ke lèt A a reprezante 65, miniskil yon se nimewo a 97,
ak sepandan ou reprezante 65 an oswa 97, w ap itilize 7 oswa 8 Bits.
Men, trape an se ke gen kèk lèt ​​nan alfabè a angle
ki pa kòm popilè kòm lòt moun.
Z se pa tout sa ki popilè, Q se pa tout sa ki popilè, men A ak E yo se super popilè.
Men, pou tout moun nan lèt sa yo, pa default mond nan itilize menm kantite Bits, jis 8.
Se konsa, pa t 'vle li te pi entelijan si olye pou yo lè l sèvi avèk Bits 8 pou chak lèt ​​nou ekri,
menm pi souvan itilize a tankou Q ak Z,
ki sa si nou te itilize mwens Bits pou A E ak ak S ak lèt ​​yo ki pi popilè
ak itilize plis Bits pou lèt yo mwens popilè,
lide a ke yo te optimalize kite l 'la pou ka a ki komen yo,
ki se yon tèm nan syans òdinatè a ap eseye optimize sa ki pral rive pi plis la
ak depanse yon ti kras plis tan, yon ti kras espas plis sou bagay sa yo ke, yeah, ki ka rive
men se pa nesesèman kòm souvan.
Se konsa, kite a pran yon egzanp.
>> Sipoze ke nou vle programme enfòmasyon san patipri efikasite.
Ou ta ka te cultivées moute konnen yon bagay sou ti Morse kòd,
ak chans yo se ou pa t 'konnen kòd aktyèl la,
men ou ta ka sonje ke li nan omwen sa a seri de pwen ak tirè.
Sa a se yon kodaj jistis efikas, ak avi lèt sa a ki pi popilè - pou egzanp, E -
sèvi ak pi kout la nan eme.
Morse kòd se tout sou BEEP-BEEP-BEEP-BEEP-BEEP BEEP-yo ak kenbe ton
swa pou peryòd tan kout nan tan oswa peryòd tan de tan.
E, kòm deziye pa dot a, se yon BEEP super kout, jis BEEP, ak ki ta reprezante E.
Nan kontras, T ta dwe yon BEEP pi long, tankou BEEP [prolongation son],
ak ki ta reprezante T.
Men sa a toujou trè kout paske, pa kontra, si ou gade nan Z,
yo eksprime Z ou ta prale BEEP, BEEP [ankò son], BEEP, BEEP [pi kout son].
Se konsa, li ankò paske li nan mwens komen.
Men, gotcha a isit la se ke Morse kòd se yon ti jan defekte
nan ke li nan pa imedyatman decodable.
Pou egzanp, ann sipoze ke ou tande sou kèk nan fen BEEP nan fil [kout], BEEP [long].
Ki sa ki mesaj mwen te jis te resevwa? Yon pwen ak priz yon. Ki sa sa reprezante?
[Elèv] A. >> [Malan] Petèt.
Li ta ka tou E ki te swiv pa T.
Nan lòt mo, Morse kòd, menm si li profits prensip sa a nan optimisation ka a kwen,
li pa prete tèt li decodability imedya.
Sa se, moun lan ki moun ki tande oswa k ap resevwa sa yo pwen ak tirè
te yon jan kanmenm konnen ki kote repo yo se ant lèt,
paske si w pa konnen ki kote sa yo repo yo, ou ta ka konfonn A pou ET oswa vis vèrsa.
>> Se konsa, sa ki ka w ap fè? Nan kòd Morse ou ta ka jis pran yon poz ant chak nan lèt yo.
Men, s'arrête se kalite kontwa nan pwen an antye nan eksè vitès sou bagay yo.
Se konsa, sa si olye nou te vini ak yon kòd ki pa t 'sitiyasyon sa a move
kote E se yon prefiks, pou egzanp, nan A -
nan lòt mo, si nou te ka asire w ke modèl yo yo toujou kout pou lèt yo popilè
tan pou lèt yo mwens popilè, men gen nan pa gen konfizyon posib?
Yon nonm pa non an nan Huffman ane de sa envante sa a konplo rele Huffman kodaj
ki aktyèlman profits youn nan estrikti yo done nou te depanse yon ti jan nan tan ap pale de
semèn sa a sot pase yo, sa yo ki an pye bwa, pye bwa binè espesyalman -
yon siyifikasyon pyebwa binè ke li pa gen okenn plis pase 2 timoun yo.
Li te gen petèt yon timoun gòch, petèt yon timoun dwa, ak sa a, se li.
Se konsa, ta kwè jis pou dedomajman pou la nan diskisyon ke yon moun vle voye yon mesaj
ki sanble tankou sa a. Li nan istwa san sans konplè Men, li la konpoze de Kòm, B, CS, DS, ak Es.
Men, si ou aktyèlman konte moute tout Kòm a, B, CS, DS, ak Es
ak Lè sa a, divize pa kantite total lèt,
tablo sa a ti kras isit la di ke 45% nan lèt yo se Es, 20% se Kòm,
10% B, ak pou fè.
Se konsa, nan lòt mo, asime ke fisèl la te site gen
se jis kèk mesaj ke ou vle voye.
Li k ap pase yo istwa san sans jis pou nou ka itilize kòm lèt kèk kòm sa posib,
men li la tout bon ka a ke E rete pi popilè a,
ak B ak C se pi piti popilè, omwen nan 5 sa yo lèt nan alfabè a. a
Se konsa, ki jan nou ka ale sou vini ak yon kodaj,
yon kodaj binè, yon modèl nan 0s ak 1S pou chak nan lèt sa yo
nan yon fason ke E se yon modèl kout e petèt B ak C se yon ti kras pi lontan menm modèl yo,
ankò, lide a ke yo te ke nou vle itilize mwens Bits pi fò nan tan an
ak plis ankò Bits yon sèl fwa nan yon ti tan.
Dapre Huffman kodaj, ou kapab kreye yon forè nan pyebwa yo.
Genyen nan sòt de yon liy istwa isit la ki enplike nan pye bwa ak tou pwosesis pou bati yo moute.
Se pou nou kòmanse.
>> Mwen pwopoze ke ou kòmanse avèk forè sa a, se konsa pale, nan 5 pye bwa,
chak nan ki se yon pye bwa trè estipid.
Se pye bwa a ki konpoze de jis ne yon sèl, kòm reprezante isit la yon sèk.
Se konsa, chak nan bagay sa yo ta kapab yon struct C
ak andedan nan struct nan C ta kapab yon flote reprezante konte nan frekans
ak Lè sa a, petèt yon Char ki reprezante lèt la.
Se konsa, panse a sa yo nœuds kòm jis nenpòt struct fin vye granmoun C, men, pou kounye a, pi wo nivo.
Sa a se yon forè nan 5 pye bwa, chak nan ki sèlman gen yon ne sèl.
Ki sa ki Huffman pwopoze se ke nou kòmanse konbine sa yo pyebwa
ki gen konte yo frekans pi piti nan yon ti kras pi gwo pye bwa
pa konekte yo avèk yon ne rasin nouvo.
Se konsa, nan mitan lèt yo isit la, avi ke pou konvenyans mwen te klase yo de gòch a dwat,
byenke sa a pa entèdi sa nesesè, ak avi ke nœuds yo pi piti
yo se kounye a 10% epi 10%.
Se konsa, Huffman pwopoze ke nou rantre sa yo 2 pi piti nœuds nan yon pyebwa nouvo
pa entwodwi yon ne paran ak nouvo Lè sa a, bay ke paran yon timoun gòch ak yon timoun dwa
kote B se abitrèman bò gòch la ak C se abitrèman bò dwat la.
Lè sa a, Huffman plis pwopoze ke a kite l 'koulye a jis panse timoun nan bò gòch
nan youn nan pyebwa sa yo toujou kòm ke yo te reprezante pa 0
ak timoun nan dwa toujou kòm ke yo te reprezante pa kantite 1.
>> Li pa enpòtan si ou baskile yo toutotan ou se ki konsistan.
Se konsa, kounye a nou gen kat pye bwa nan forè sa a.
Apre sa, mwen di kat paske koulye a pye bwa a sou bò gòch la -
epi li pa tèlman yon pye bwa nan sans ke li ap grandi fason sa a,
li nan plis tankou yon pyebwa fanmi ki kote kounye a 0.2 la se sòt de paran an de timoun ki nan yo -
avi ke nan ke paran nou te trase 0.2.
Nou te ajoute konte yo frekans nan de timoun yo epi yo bay yo ne nan nouvo sòm total la.
Se konsa, kounye a nou jis repete pwosesis sa a.
Jwenn de pi piti nœuds yo ak Lè sa a, rantre nan yo nan yon pye bwa nouvo
ak Lè sa a, repete pwosesis la pi lwen.
Kounye a, nou gen yon kandida kèk,% 20,% 15, ak yon lòt% 20.
Nan ka sa a, nou gen kraze menm kantite vòt la. Nou ka fè li abitrèman.
Nou ta dwe jis fè li menm jan.
Nan ka sa a, mwen pral abitrèman ale ak yon sèl la sou bò gòch la,
epi mwen kounye a rantre% nan 20 ak% nan 15 a ban m 'yon nouvo paran yo rele 35%,
ki gen gòch pitit se 0, ki gen dwa timoun ki gen 1, epi kounye a nou gen jis twa pye bwa nan forè a.
Ou ka petèt wè kote sa a se prale.
Si nou repete sa a yon koup plis fwa, nou ap ale nan ki gen yon sèl pi gwo pye bwa,
tout ki gen bor yo make ak 0s ak 1S.
Se pou nou fè l 'ankò.
35% se rasin jan pyebwa a. 20% ak% 45, se konsa nou pral rantre% nan 35 ak% 20.
Koulye a, nou gen pye bwa sa a isit la. Nou ajoute sa yo ansanm, nou gen 55%.
Koulye a, gen nan sèlman de pye bwa nan forè a.
Nou fè yon sèl sa a final tan, ak èspere ke matematik tout fwekans yo ajoute jiska
paske yo ta dwe depi nou calculée yo soti nan jwenn-ale nan ajoute jiska 100%. la
Epi, koulye a nou gen yon sèl pyebwa.
Se konsa, sa a se yon Huffman kodaj pyebwa.
Li kalite te pran yon pandan y ap jwenn gen vèbalman, men reyalite a se ak yon riban pou
oswa ki gen yon fonksyon repetitif, ou ta ka bati bagay sa a moute trè vit.
Se konsa, kounye a nou gen yon sèl nouvo ne, ak tout moun sa yo nœuds enteryè yo te malloc'd,
prezimableman, sou wout la.
Se konsa, kounye a nan tèt la nan pye bwa sa a nou gen 100%, men kounye a remake nou gen yon chemen
sa a soti nan nouvo gran-gran granparan gwo-nan tout gran-gran gwo pitit pitit yo-
tout wout la nan pati anba a, nan tout fèy yo.
>> Ki sa nou ap pral fè kounye a se pwopoze ke yo nan lòd reprezante lèt E,
nou pral tou senpleman itilize nimewo a 1. Poukisa?
Paske si nou Traverse pye bwa sa a soti nan rasin lan final desann nan fèy la li te ye tankou E,
nou swiv jis youn kwen, kwen dwat la, e ke gen etikèt ki make nan kou a nan 1 tèt dwat.
Se konsa, enplikasyon la isit la pou Huffman te ke kodaj E a nan binè va jis pou 1.
Epi sa a, bèl modi efikas. Pa ka vrèman jwenn okenn pi piti pase sa.
Nan kontras, Yon yo pral reprezante, si w swiv lojik lan,
pa sa ki modèl nan Bits olye? 01.
Se konsa, pou li ale nan A, nou kòmanse nan rasin la epi nou ale kite ak Lè sa a, n 'al jwenn dwa,
ki vle di nou te swiv yon 0 ak Lè sa a, yon 1.
Se konsa, nou menm ki va prezante lèt A ak modèl la 0 ak 1.
Epi, koulye a remake nou deja genyen yon pwopriyete nan decodability imedyat
ke nou pa t 'gen nan kòd Morse.
Menm si tou de nan sa yo modèl yo trè kout - E se 1 ti jan, A se 2 Bits -
avi ke yo pa kapab konfonn youn oswa lòt la,
paske si ou wè yon 1 li a te resevwa yo dwe genyen yon E, si ou wè yon 0 Lè sa a, yon 1 li nan evidamman te resevwa yo dwe genyen yon A.
Menm jan tou, sa ki nan D? 001.
Ki sa ki C? 0001.
Ak sa ki B? 0000.
E ankò, paske tout lèt yo nou pran swen sou yo nan fèy yo
e pa youn nan yo se kalite entèrmedyèr nan wout la nan rasin fèy,
gen nan pa gen risk pou yo conflating ankodin diferan 2 lèt '
paske tout moun sa yo modèl ti jan yo se detèrminist.
0000 ap toujou B.
Gen nan pa gen ne yon kote nan ant ke ou ta ka konfonn yon lèt pou lòt la.
Se konsa, sa ki nan enplikasyon la isit la?
>> Lèt la ki pi popilè - nan sa a E ka - te vinn kodaj ki pi kout la,
Yon te vinn pwochen kodaj ki pi kout la,
ak B ak C, ki nou deja te konnen soti nan jwenn-ale kalite a te nan popilè a pi piti
nan 10% frekans chak, yo gen vinn kodaj ki pi long nan.
Se konsa, kisa sa vle di kounye a se ke si ou vle voye yon mesaj ki nan konprese
sou entènèt la oswa nan yon imel oswa tankou an,
olye ke lè l sèvi avèk estanda ASCII, ou ka voye voye yon Huffman kode mesaj
kote si ou vle voye lèt E, ou voye jis yon ti jan sèl.
Si ou vle voye yon A, ou voye 2 Bits, 01, olye pou yo voye 8 Bits
ki te swiv pa yon lòt 8 Bits ki te swiv pa yon lòt 8 Bits ak pou fè.
Men, gen yon gotcha isit la.
Li pa ase jis konstwi pye bwa sa a ak Lè sa a kòmanse voye soti nan Alice Bob
modèl la ti jan pi kout, fisèl nan men ASCII,
paske Alice tou te gen enfòme Bob nan sa ki
si Bob se pral pou kapab li mesaj konprese li?
[Repons fèbl elèv] >> Ki sa ki nan sa?
[Fèbl elèv repons] >> nan sa pyebwa a se.
Oswa menm plis espesyalman, ki sa ki sa yo ankodin yo,
espesyalman depi pandan istwa sa a nou te fè yon apèl jijman nan yon pwen.
Sonje ke nou te chwazi abitrèman ant 2 nœuds yo diferan 20%?
Se konsa, li pa ka a ke Bob, benefisyè a, ka jis rekonstwi pyebwa a sou pwòp tèt li
paske petèt li pral kreye pyebwa sa a janm konsa yon ti kras diferan soti nan Alice.
Anplis, Bob pa menm konnen ki sa mesaj orijinal la se
paske bagay la sèlman Alice ap voye l ', nan kou, se mesaj la konprese.
>> Se konsa, trape an ak konpresyon tankou sa a se ke, se wi, Alice ka sove yon anpil tout Bits
pa voye 1 pou E ak 01 pou A ak pou fè,
men li menm, tou te gen enfòme Bob ki sa kat la se ant lèt ak Bits
paske yo pa kapab byen klè depann sou jis ASCII ankò si nou pa ap sèvi ak ASCII.
Se konsa li kapab swa voye l 'pye bwa a yon jan kanmenm -
li ekri li, estoke li kòm done binè oswa yon bagay tankou sa -
oswa jis voye l 'yon fèy twonpe ti kras, yon dosye Excel, ki montre mapin yo.
Se konsa, efikasite nan konpresyon vrèman sipoze ke mesaj yo ke w ap voye
yo trè gwo, omwen mwayen antrepwiz,
paske si w ap voye yon Super mesaj kout,
si ou jis vle voye mesaj la BAD, ki k ap pase yo yon mo nou kapab eple isit la,
B-A-D, w ap pwobableman pwal itilize mwens Bits,
men trape an se si ou yo te genyen tou enfòme Bob sa pyebwa a se
oswa sa ki sa yo ankodin yo, w ap ale nan pwobableman Sur tout ekonomi yo
ki gen bagay sa yo konprese yo kòmanse avèk yo.
Se konsa, li ka aktyèlman ap ka a ke si ou eseye konpresan
menm avèk yon bagay tankou postal oswa dosye fòma ou ta ka dwe abitye avèk -
bèl ti dosye, menm vid dosye -
pafwa sa yo dosye ta ka jwenn pi gwo epi yo pa pi piti.
Men, pli reyèlman, sa rive sèlman pou gwosè dosye piti,
Se konsa li pa pwal fè yon dosye jigokte dwe 2 jigokte;
nou ap reyèlman ap pale bytes oswa jis yon kilookte koup.
>> Gen kèk pwogram tankou postal yo se entelijan ase reyalize ke,
"Ou ap ale nan depanse plis Bits konpresan sa a."
-Kite m 'pa anmède konpresan li pou ou nan tout. "
Se konsa, sa a se jis yon fason Lè sa a, nan konpresan fòma tèks.
Nou te ka aplike yon bagay tankou sa a nan C.
Pou egzanp, isit la se kouman nou ta ka reprezante yon ne nan pye bwa sa a
kote nou gen yon Char pou senbòl la, yon valè k ap flote pou frekans lan,
e kòm nou te wè ak lòt estrikti done nou an, 2 endikasyon,
1 a timoun nan bò gòch, 1 a dwat a, swa nan yo ki ka pral nil,
Men, si se pa sa, li vle di yon timoun gòch ak yon timoun dwat.
Se konsa, sa a Lè sa a, se Huffman kodaj, e li an yon fason ke ou ka ale sou konpresan enfòmasyon,
ak li sètènman youn nan pi fasil la ki pi aplike
nan yon kontèks, di, estrikti done semèn pase a la,
menm si menm pi plis sofistike algoritm egziste
ki ka fè mitasyon menm pi plis sofistike nan done ou.
Nenpòt kesyon Lè sa a, sou pye bwa, pye bwa binè, oswa konpresyon nan tèks?
[Elèv] Èske gen kèk anbigwite, tankou si [fèbl] fann nan 01,
Lè sa a, 011 ta dwe Limit, dwa?
[Fèbl] >> Bon kesyon. Anbigwite.
Kite m 'rezime pa refere li a foto sa a isit la.
Paske karaktè yo w ap konpresan, reprezantasyon yo nan,
pa definisyon sa a algorithm toujou rete fèy yo,
ou pa janm pral aksidantèlman itilize modèl la menm nan Bits pou prefiks la nan plizyè lèt nan plizyè.
Se konsa, nan lòt mo, ou se konsène sou, li son tankou, yon anbigwite ki rive
kote 001 ka kòmanse nan B oswa nan kòmansman an nan C oswa yon bagay tankou sa.
Men, ki pa ka ka a paske avi ke tout lèt nan alfabè an ke nou ap kodaj
yo nan fèy yo.
>> Anbigwite la kapab sèlman, leve non, tankou nan ka a nan kòd Morse,
si, pou egzanp, C yo te yon kote sou bò wout la soti nan rasin nan B.
[Elèv] Dwa. Se konsa, nan ka sa a, di A genyen 2 fèy bwa. >> Di A genyen - Di sa ankò.
[Elèv] Di A genyen 2 fèy, F ak G, ak Lè sa a, G - >> Okay. Men, li pa kapab.
Yon tèt li pa t 'kapab gen fèy F ak G paske lèt sa yo F ak G
ta dwe tèt yo kite yon kote nan kite nan B oswa dwa a nan E.
Se konsa, pa definisyon, yo dwe fèy bwa.
Sinon, ou se egzakteman dwa, nou pa te rezoud pwoblèm nan ki Morse kòd fè fas.
Bon kesyon. Lòt kesyon yo? Tout dwa.
Sa a nosyon nan Bits, li vire soti nou te te gen pouvwa tout ansanm nou pou nou pa te aktyèlman itilize
lè li rive nan manipile sa yo 0s ak 1S.
Nou mande sou sa a sou youn nan ansanm sa yo, pwoblèm pi bonè:
savwa, ki jan ou ale sou konvèti majuskul miniskil oswa vis vèrsa?
Oswa, plis konkrètman, youn nan moun ki psets premye mande
konbyen Bits ou gen aktyèlman baskile yo nan lòd yo chanje A rive miniskil yon oswa vis vèrsa?
Isit la nan yon rapèl rapid nan sa ki gen 65 lane epi 97 sanble nan binè.
E menm si ke kesyon sòt de ta vle chanje koulè nan memwa ou a,
ou ka wè ankò isit la ke konbyen Bits bezwen ranvèrse
chanje kapital A rive miniskil yon? Jis youn.
>> Yo sèlman diferan nan yon sèl kote, ti jan nan twazyèm sou bò goch.
Lè nou konsidere ke A genyen yon 010, nou menm ti yon gen yon 011.
Se konsa, yon jan kanmenm, nou bezwen jis kapab baskile ki ti jan,
epi nou ka Lè sa a, tirer oswa miniskil lèt yo.
Nou te fè sa nan tan lontan an pa aktyèlman lè l sèvi avèk, si kondisyon yo
epi tyeke si lèt la se ant kapital A ak kapital Z,
Lè sa a, sorti tankou A - yon + 26 oswa yon bagay tankou sa.
Ou pwobableman te fè yon chanjman aritmetik lèt ​​nan alfabè a.
Men, sa ki si nou te ka jis baskile ki sèl ti jan?
-Ki te kapab ou ale sou pran vo yon sèl multiple nan Bits, se konsa 8 Bits tankou 01000001 ak 01100001?
Si nou te gen sa yo modèl nan Bits, kijan nou kapab ale sou chanje jis youn nan yo?
E si nou prezante nan jòn isit la modèl sa a lòt kote nan Bits?
Si mwen fè tout 0s yo fisèl jòn eksepte pou ti jan nan yon sèl ke mwen vle chanje
ak Lè sa a, mwen prezante yon operatè nouvo li te ye tankou yon operatè lojik -
lojik nan sans ke li opere sou Bits endividyèl,
pa sou yon multiple tout oswa kat bytes tout nan yon fwa.
Sa a ba vètikal gen nan jòn sijere ke sa si nou pran reprezantasyon an nan kapital Yon
ak lojik OSWA l 'ak sekans an jòn nan Bits?
Nan lòt mo, panse tounen nan diskisyon nou an nan ekspresyon Boolean nan reyur ak Lè sa a, nan C.
>> Lè w fè yon Boolean oswa vle di ke yo dwe vre, swa nan premye bagay la gen yo dwe vre
oswa bagay la dezyèm gen yo dwe vre oswa yo tou de gen yo dwe vre,
ak Lè sa a, pwodiksyon lan poutèt se li menm vre.
Nan ka sa a isit la, ki sa nou jwenn si nou pran 0 "oswa" ed ak 0? Ki fo oswa ki fo?
Li nan toujou fo, se konsa miniskil nan yon rete kòm atann.
E si olye nou fè 1 oswa 0?
Sa a kounye a rete 1, men remake sa ki nan rive sou isit la.
Si nou kòmanse ak kapital A ak nou kontinye "oswa" Bits endividyèl li yo menm jan n ap fè isit la,
0 oswa yon sèl an jòn ba nou sa ki desann isit la? Sa ban-nou 1.
An reyalite, ann sipoze nou pa t 'konnen ki sa ki vèsyon an majuskul nan ti kras yon aktyèlman te ye a.
Ann al fè sa. Kite m 'deplase sa a tounen sou isit la.
Se pou nou fè sa ankò. 0 oswa 0 ki ban m '0.
1 oswa 0 ki ban m '1.
0 oswa 1 ki ban m '1.
0 oswa 0 ki ban m '0. Youn nan pwochen se 0, youn nan pwochen se 0, youn nan pwochen se 0.
1 oswa 0 ki ban m '1.
Se konsa, menm si nou pa t 'konnen davans kisa miniskil yon te ye a,
tou senpleman pa "oswa" ING A, nan modèl sa a nan Bits ke nou te prezante isit la nan jòn,
ou ka miniskil yon kapital Yon pa ranvèrsan ki ti jan.
Nou itilize sa a semèn ekspresyon Anons sa pibliye depi: ranvèrsan yon ti jan.
Ki jan ou fè aktyèlman fè sa programatik?
Ou sèvi ak sa ki jeneralman yo rele yon mask, yon sekans nan Bits,
ki nan ka sa a jis pou k ap pase nan gade tankou nan nimewo sa a isit la,
ak Lè sa a, ou "oswa" li ansanm lè l sèvi avèk sa a nouvo C operatè,
pa | |, ou sèvi ak yon sèl |, epi ou ta aktyèlman jwenn repons sa a isit la paske poukisa?
Sa a se kote a 1, 2 kote, 4s, 8s, 16, 32s.
Se konsa, li sanble ke si ou pran yon lèt majiskil A ak lojik OSWA l 'ak 32 nan nonb antye relatif,
paske 32 a nonm antye, lè ou gade nan li kòm Bits, sanble tankou sa a,
ki vle di ou ka baskile ti jan nan ke ou aktyèlman vle.
Ak menm - epi n ap gade kòd nan jis moman yon -
ta kwè nou ta vle ale direksyon an ak lòt.
>> Ki jan ou ale nan kapital miniskil yon A? Ki ti jan bezwen chanje?
Se youn lan menm.
Nou vle chanje sa ti jan twazyèm ki sòti nan yon 1 nan yon 0.
Ak ki jan ta ka nou ale sou fè sa a?
Ki jan nou fèmen yon ti jan? Avèk sa ki modèl nan Bits nou ta ka fèmen yon ti jan?
E si nou sòt nan Invert mask la?
Lè nou konsidere ke anvan, nou te fè tout 0s an jòn mask
eksepte pou ti jan a yon sèl nou te vle vire sou li a,
sa ki si tan sa a, nou fè 1S nan mask antye eksepte pou ti jan a ke nou vle fèmen
ak Lè sa a, itilize sa operatè?
E si nou "ak" bagay sa yo? Se pou nou pran yon gade.
Si nou kounye a baskile sa a, ann sipoze ke ankò mwen kreye yon mask ki nan tout sa 1S
eksepte pou ti jan nan yon sèl ki mwen vle fèmen
ak Lè sa a, olye ke "oswa" chif yo blan moute tèt avèk chif yo jòn desann isit la,
E si mwen olye "ak" yo ansanm? Yo rele li yon bit ak.
Lojikman, li nan menm bagay la kòm yon Boolean ak.
Sa a ba m '0 & 1 se 0. Se konsa, fo, se verite se fo.
Vrè, se verite a se verite.
Ak isit la se majik: Vrè ak fo se kounye a fo, se konsa nou te etenn ke ti jan. Nan
Epi, koulye a rès la nan istwa a se yon ti jan senp.
Paske rès la nan mask la se 1, li pa gen pwoblèm ki sa chif yo se nan blan.
Lè ou "ak" yon bagay ki gen vre, ou pa ap ale nan chanje valè li yo.
Si se vre, li pral rete vre. Si li te fo, li pral rete fo.
>> Men, majik la k ap pase lè ou pran yon bagay ki te vre
epi ou Lè sa a, "ak" li ak fo.
Sa a gen pou efè sinon koupe ke ti jan.
Se konsa, yon ti kras skre la.
Se pou nou aktyèlman gade kèk kòd, ki ta ka aktyèlman gade menm plis skre,
Men, kite a pran yon gade isit la nan toloe.
Si m 'gade nan toloe, ale nan kapital A rive miniskil yon,
kite a wè ki jan nou ta ka aplike pwogram sa a.
Isit la nan prensipal yo, ak li pa pran nenpòt agiman bay lòd-liy.
Mwen deklare yon c karaktè pou lèt la ki itilizatè a ki pral tape pous
Mwen Lè sa a, sèvi ak yon èske familye pandan y ap riban jis asire w ke itilizatè a definitivman bay m 'yon kapital Yon
oswa B oswa C. .. Z, pou yo ban m 'yon bagay ant A ak Z.
Epi, koulye a ki sa mwen ap fè isit la?
Mwen "oswa" ING sa a ak 0x20, men sa a aktyèlman menm bagay la tou kòm -
epi n ap tounen vin jwenn sa a nan yon moman - 32.
Se konsa, ankò, 32 se modèl sa a nan Bits isit la. Poukisa nou konnen sa a?
Sèlman panse tounen nan semèn 0.
Sa a se kote a 1, 2 kote, 4s, 8s, 16, 32s kote.
Se konsa, nan nimewo sa a jòn k ap pase yo 32.
Mwen ka Lè sa a, pran yon lèt tankou Char a isit la, lojik "oswa" l 'ak literalman nimewo a 32,
epi ki sa mwen jwenn tounen? Vèsyon an miniskil nan ki Char.
Yon moman de sa, menm si, mwen eksprime sa a nan yon notasyon baz diferan.
Ki sa ki t 'sa a reprezante? >> [Elèv] ekzadesimal.
[Malan] sa a k ap pase nan reprezante ekzadesimal.
Nou pa t 'te pale osijè de ekzadesimal tout sa ki anpil,
men li la aktyèlman pratik nan ka tankou sa a.
>> Menm si li sanble pi konplèks e menm si li sanble 20 epi yo pa 32,
Li sanble ke ekzadesimal se aktyèlman notasyon super pratik
paske se nan ekzadesimal chak chif apre 0x la - epi sa vle di pa gen anyen;
sa a se jis konvansyon moun ki di isit la vini yon nimewo ekzadesimal -
chak nan sa yo chif, 2 a ak Lè sa a, 0 a, tèt yo ka reprezante
ak egzakteman 4 miyèt moso.
Se konsa, si nou fè sa, kite m 'louvri moute yon editè tèks isit la - etranj otokonple -
si nou fè yon editè tèks ti kras isit la, 0x20 la nimewo vle di isit la se 4 Bits, isit la nan yon lòt Bits 4.
Se pou nou fè rightmost 4 Bits yo an premye.
0 lè reprezante ak 4 Bits se ki sa? Super fasil. Jis tout 0s.
Se konsa, 4 Bits kòm 0s.
Ki jan ou fè reprezante 2? Li te yon pandan y ap depi nou fè sa a, men li la 0100.
Se konsa, sa a se plas la 1, sa a se plas la 2, ak Lè sa a, li pa gen pwoblèm ki sa kote yo lòt yo.
Nan lòt mo, nan ekzadesimal ou ta kapab di 0x20,
Men, si ou Lè sa a, panse sou sa a se 2 a epi kouman li reprezante nan binè,
ki sa se 0 a epi kouman li reprezante nan binè,
repons yo bay moun kesyon ki gen sa a ak sa a, respektivman.
Se konsa, 0x20 k ap pase nan reprezante modèl sa a nan 8 Bits,
ki se jisteman mask la ke nou te vle.
Se konsa, sa a se pou moman an jis yon fè egzèsis entelektyèl,
men reyalite a se nan kòd li nan tipikman pi komen yo ekri konstan tankou sa a
nan ekzadesimal paske lè sa a pwogramè a kapab relativman fasil,
menm si li egzije pou gen kèk papye ak kreyon, konnen sa ki ki modèl nan Bits se
paske ou pa kapab jis eksprime 0s ak 1S tipikman nan kòd.
Ou pa kapab ale 00010 ak pou fè.
>> Ou ta dwe chwazi notation desimal oswa ekzadesimal oswa oktal oswa lòt.
Pifò moun yo gen tandans chwazi ekzadesimal tou senpleman pou chak chif reprezante 4 Bits
epi ou ka fè sa matematik rapid.
Apre sa, m'a balanse men m 'nan toupper, ki se prèske menm bagay la; li sanble prèske idantik.
Toupper k ap pase nan itilize pa operatè a oswa men pito nèg sa a ak DF.
Ki sa ki DF reprezante? DF? Nenpòt moun ki? >> [Elèv] 255.
255? Pa 255. Ki ta ka ff.
Nou pral kite yon sèl sa a kòm yon fè egzèsis ti kras.
Men, si ou ale nan 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ak Lè sa a, sa ki ap vin apre 9?
Nou se kalite soti nan chif desimal, men nan ekzadesimal sa ki ap vin apre 9?
[Elèv] yon. >> Se konsa, yon, B, C, d.
Ou kapab konnen ki soti nan gen sa ki modèl nan Bits d aktyèlman reprezante.
Men, si nou fè matematik la, nou ap wè ke mask la ou fini vin tounen se ki idantik ak sa a.
Sa a se f, tout 1, ak sa a se d. Se konsa, DF reprezante ki mask. Tout dwa.
Epi anfen, pa fè bagay sa yo super son, super teknik,
Men, si nou te vle ekri yon pwogram ki fè sa a.
Kite m 'ale pi devan epi fè binè, ki se yon pwogram nan yon dosye rele binary.c.
Epi, koulye a kite m 'kouri binè ak ban m' yon nonm antye ki pa negatif.
Ann kòmanse fasil ak kalite nan 0.
Sa a kounye a se yon pwogram ki simagri soti yon nonb antye relatif nan reprezantasyon binè li yo.
Se konsa, si mwen jwe jwèt sa a ankò, li tape nan jis 1, m 'ta dwe jwenn yon reprezantasyon 32-ti jan nan 1.
Si m 'fè sa ankò ak 2, mwen ta dwe pran sa.
Si m 'fè 7, m' ta dwe jwenn yon 1S kèk nan fen a ak pou fè.
Li vire soti mwen mansyone sa a paske avèk lojik operasyon
ou ka aktyèlman fè yon lòt bagay yo tou.
Ou ka kreye sa yo mask dynamique.
Pran yon gade nan sa a yon egzanp final ki enplike lojik operasyon yo.
Isit la se premye pati nan kòd la, vit itilizatè a pou yon nimewo,
epi li ensiste ke ou ban m 'yon nonm antye ki pa negatif.
Se konsa, sa a, se sòt de bagay ansyen lekòl la.
Men, isit la se yon bagay ki kalite ki enteresan.
>> Kouman pou mwen ale sou enprime yon nimewo nan binè?
M 'premye iteration soti nan sa a sa?
Ki sa ki nan gwosè a nan yon int tipikman, omwen nan aparèy la? >> [Elèv] 4.
Li nan 4. Se konsa, 4 * 8 se 32 - 1 se 31.
Se konsa, si mwen kòmanse konte soti nan 31, ki reprezante, li vire soti,
jis Concept, ti jan a 31 oswa ti jan nan lòd pi wo, ki se nèg sa a sou isit la,
Lè nou konsidere ke sa a a pwal 0 ti jan.
Se konsa, sa a se ti jan 01 ... ti jan 31.
Se konsa, sa sa a se kòd ap fè?
Avi sa a pou riban, menm si li sanble skre, se jis iteration soti nan 31 desann nan 0. Sa a li.
Se konsa, pati a enteresan kounye a yo dwe nan 5 liy sa yo isit la.
Remake nan liy sa a mwen deklare yon varyab mask rele
yo dwe konsistan avèk istwa nou an nimewo sa yo jòn.
Lè sa a, ki sa ki sa a ap fè?
Sa a se yon lòt operatè lojik nou pa te wè anvan, gen plis chans.
Li nan operatè a chanjman bò gòch.
Sa a operatè sa a.
Isit la se nimewo a 1, ak si ou fè mwen te kite chanjman, bò gòch chanjman,
ki sa ou panse ki gen efè a nan fè ak sa yo ki 1 moun?
Literalman déplacement li sou.
Se konsa, si nimewo a 1 se sa ou genyen sou bò gòch la epi ou kòmanse pa inisyalizin mwen rive 31,
ki sa ki ki pral fè? Li nan pral pran nan nimewo sa a 1 ak chanjman li 31 kote sou isit la.
Epi paske gen nan pa gen okenn evidamman chif lòt dèyè li,
sa yo pral pa default ka ranplase ak 0s.
Se konsa, ou pral kòmanse soti ak nimewo a 1, ki nan kou sanble sa a -
ak kite m 'rale l' sou isit la nan sant lan.
Lè sa a, menm jan ou chanje bagay sa yo nan bò gòch la, nèg sa a esansyèlman ale nan fason sa.
Men, osito ke ou fè sa, vin yon 0 plen pous
Si ou chanje li yon dezyèm fwa, li ale nan fason sa a ak vin yon lòt 0 plen pous
>> Ou chanje l 'ankò ak Lè sa a, vin yon lòt 0 plen pous
Se konsa, si ou fè bagay sa a nan 1 << mwen 31 kote yo, ou fini ap resevwa yon mask
ki se 32 karaktè long, yon sèl nan leftmost a ki se yon 1,
tout rès la nan ki se yon 0.
Epi li vire soti, kòm yon sou kote, déplacement yon nimewo a gòch la tankou sa a
tou azar, epi pafwa yon bon,
gen pou efè ap fè sa ak sa yo ki nimewo? >> [Elèv] double pwensip l '.
Double pwensip li paske chak nan kolòn yo - kote a 1, 2 kote, 4s kote,
8s kote, 16 plas - they're tout double kòm ou ale nan bò gòch li.
Ou pito, lè ou chanje 1S la w ap ale nan fini double pwensip valè a nan nimewo a.
Ou ka fini fè transfòmasyon enteresan nan chif
pa déplacement tout bagay sou nan fason sa a pa pouvwa a 2.
Se konsa, kouman fè travay sa a?
Sa a Lè sa a, ki ban m 'yon mask ki nan tout sa 0s eksepte pou yon 1 nan pwesizeman plas la mwen vle li,
ak Lè sa a, sa a ekspresyon, ki se yo vòlè nan men toupper.c,
se senpleman di pran nimewo a n ki itilizatè a tape nan,
"Ak" l 'ak ke mask, ak ki sa ou pral jwenn?
W ap ale nan jwenn yon 1 si gen nan yon 1 nan ki kote maske,
oswa w ap ale nan jwenn yon 0 si gen nan pa.
Se konsa, tout pwogram sa a efektivman se li gen yon riban,
ak li kreye yon mask ak yon 1 sou isit la, Lè sa a, yon 1 sou isit la, Lè sa a, yon 1 sou isit la,
epi li sèvi ak sa a lojik AK jwe fent yo di ki gen la yon ti jan 1 nan D 'itilizatè a isit la?
>> Èske gen yon ti jan 1 nan D 'itilizatè a isit la? Men, si se konsa, literalman enprime 1, lòt bagay enprime 0.
Nou ap fè sa a ak antye jis paske sa a, se rezon sa a nou ap fè 32 Bits olye pou yo 8,
men ki sa nou te entwodwi Lè sa a, se sa a lojik AK, sa a lojik OSWA,
ak sa a operatè chanjman bò gòch yo, ki se pa souvan fò anpil itil,
men li vire soti yo ka.
An reyalite, si ou te reprezante yon bagay tankou yon etalaj la Booleans
jis ki reprezante vre oubyen fo, sipoze ou te vle kenbe tras nan si wi ou non
yon chanm plen ak 300 elèv yo se prezan,
ou te kapab deklare yon etalaj de gwosè 300 nan kalite bouleen pou ke ou jwenn 300 bools,
epi ou ka mete chak moun nan vre si yon moun se isit la ak fo otreman.
Poukisa se sa reprezantasyon nan ki estrikti done rezèvwa?
Ki sa ki nan move sou modèl sa a nan estrikti done, yon etalaj de 300 bools?
Ki sa ki se yon bouleen, an reyalite, anba kapo a?
Sa a, tou, se yon bagay ki pa ka familye ak yo.
Li vire soti pa gen okenn bouleen.
Sonje nou sòt de te kreye ke ak dosye a cs50.h,
ki li menm gen ladan estanda bouleen.
C se kalite bèbè, menm si, lè li rive bouleen.
Li itilize 8 Bits ki reprezante chak bouleen, ki se konplètman inutil
paske evidamman, konbyen Bits ou bezwen reprezante yon bouleen? Jis 1.
Se konsa, li vire soti ke si ou kounye a gen kapasite a ak lojik operatè
manipile Bits endividyèl menm nan yon Char, menm nan yon multiple sèl,
li vire soti ou ta ka diminye memwa a oblije reprezante yon bagay estipid
tankou sa estrikti done prezans décorer pa yon faktè de 8.
Olye pou yo lè l sèvi avèk Bits uit ki reprezante vre oubyen fo, ou ta ka literalman itilize youn
lè l sèvi avèk yon sèl multiple pou uit chak elèv ki nan klas la
ak toggling ki ant 0 a 1 Bits endividyèl lè l sèvi avèk sa yo kalite ki ba-nivo ke trik nouvèl.
Ki vrèman mete yon fen nan enèji a. Èske gen nenpòt kesyon sou operasyon lojik?
>> Yeah. >> [Elèv] Èske gen yon operatè eksklizif oswa?
Wi. Gen yon operatè eksklizif oswa ki sanble tankou sa a, ^, senbòl nan kawòt,
ki vle di se sèlman nan premye bagay oswa bagay la dezyèm ka yon 1 pou pwodiksyon an yo dwe yon 1.
Genyen tou yon pa, ~, ki pral pèmèt ou Invert yon 0 nan yon vèrsa 1 oswa vis kòm byen.
Se la la tou se yon operatè chanjman dwat, >>, ki se opoze a nan yon sèl nan nou te wè.
Tout dwa. Kite a pran bagay sa yo kounye a nan yon nivo ki pi wo.
Nou te kòmanse pa pale de tèks ak Lè sa a, konpresan li
ak ki reprezante tèks la ki gen mwens nimewo nan Bits;
nou te pale yon ti jan sou fason nou kapab kounye a kòmanse manipile bagay sa yo sou yon nivo lojik.
Se pou nou kounye a rale tounen moute 10,000 pye a reprezantasyon
de bagay sa yo pi konplèks tankou grafik.
Isit la nou gen yon drapo nan Almay, isit la nou gen youn nan Frans.
Sa yo ta ka reprezante nan fòma dosye ou ta ka konnen - jif, pou egzanp.
Si ou te janm wè yon imaj sou entènèt la ki fini nan. Gif,
sa a se yon fòma echanj grafik.
Sa yo drapo de isit la sòt de prete tèt yo a konpresyon
pou sa ki rezon ki fè petèt evidan? >> [Fèbl repons elèv]
Genyen nan yon anpil nan repetisyon, dwa?
Yo nan lòd yo voye drapo Almay la, panse a sa a tankou se te yon imaj sou ekran an
tounen nan jou reyur ou a.
Ou ta ka sonje sa gen nan piksèl moun oswa pwen ki konpoze yon imaj.
>> Genyen nan yon ranje antye nan pwen nwa ak yon lòt ranje antye nan pwen nwa.
Genyen nan yon pakèt moun sou ranje nan pwen nwa ke nou te kapab wè si nou vrèman agrandi nan,
anpil renmen lè nou agrandi nan sou figi Rob a nan fotoschop.
Osito ke nou te resevwa pi fon ak pi fon ak pi fon nan imaj la,
ou te kòmanse wè pixelation a, nan tout kare yo ki konpoze je l 'nan ka sa a.
Menm kontra isit la. Si nou agrandi nan byen yon ti jan, ou ta wè pwen endividyèl.
Bon, sa a se kalite yon fatra nan miyèt moso.
Si yon tyè nan drapo a se nwa ak yon tyè nan drapo a jòn se ak pou fè,
poukisa pa nou ka yon jan kanmenm sa a konpresyon drapo?
Epi li ka menm drapo a franse ap konprese menm si modèl la se yon ti kras diferan.
Li vire soti fòma a dosye GIF se yon fòma konpresyon loslès,
ki vle di ou ka pran yon imaj tankou drapo Alman an isit la,
ou ka jete yon anpil nan Bits li yo san sakrifye kalite.
Sa a se nan kontra yon bagay tankou JPEGs,
ak ki pi fò nan nou yo se pwobableman plis yo konnen yo.
Facebook foto, ak Flickr foto ak tankou nan
yo prèske toujou sove kòm JPEGs yo lè yo ap Uploaded,
men JPEGs se yon pèrt - fòma annakò ou jete Bits - pèrt
men nou menm tou nou jete kalite.
Se konsa, si ou konpresyon foto ak fotoschop oswa Upload yo nan Facebook
oswa pran yo sou yon telefòn reyèlman yon vye,
ou konnen ke foto a kòmanse jwenn trè tachte ak piselize,
ak sa a, se paske li k ap konprese yo nan òdinatè a oswa telefòn
pa literalman voye enfòmasyon ale.
Men, GIF se etonan nan ke li ka itilize mwens Bits pase li ta ka pa default
san yo pa pèdi nenpòt enfòmasyon.
>> Epi li esansyèlman fè sa jan sa a.
Olye de magazen nan yon dosye tankou yon BMP ta yon trip rgb pou nwa, nwa, nwa, nwa,
nwa, nwa, nwa, nwa, nwa, nwa, nwa, nwa ak pou fè,
olye, fòma a GIF ki pral di, "Nwa,"
ak lè sa a, "Repete sa a 100 fwa," oswa yon bagay tankou sa.
"Nwa, repete sa a 100 fwa, nwa, repete sa a 100 fwa ..."
"Jòn, repete sa a 100 fwa."
Se konsa li sonje, ki esansyèlman, pixel nan leftmost
ak Lè sa a, kodan yon jan kanmenm nosyon de repete ke pixel ankò epi ankò.
Se konsa, jif ka Lè sa a, konpresyon tèt yo san yo pa pèdi nenpòt enfòmasyon.
Men, si ou te gen nan devine, si se sa ki algorithm a ki jif itilize,
ki nan sa yo drapo, menm si yo gade ki idantik nan gwosè,
a pwal pi piti lè sove sou ki gen kapasite kòm yon GIF? >> [Elèv] Almay.
Almay a pwal pi piti a? Poukisa?
[Elèv] Paske ou repete li anpil, anpil fwa orizontal
ak Lè sa a, ou repete yon lòt tan. >> Egzakteman.
Paske pèp la ki te envante GIF jis kalite abitrèman deside
ki pral repetisyon a ap exploitées orizontal epi yo pa Latexo.
Genyen nan repetisyon yon anpil plis Latexo isit la nan drapo Alman an pase nan drapo a franse.
Se konsa, si nou aktyèlman louvri moute yon folder sou kondwi difisil mwen ki gen sa yo jif,
ou ka aktyèlman wè ke drapo Alman an isit la se 2 kilookte ak yon sèl la franse se 4 kilookte.
Li k ap pase yon konyensidans ki se yon sèl de fwa lòt la,
men li la an reyalite ka a ke drapo a franse se pi pi gwo.
>> Menm si nou ap pale isit la sou grafik, lide yo te menm ka aplike nan
pa bagay sa yo tankou drapo, men imaj ki se yon ti kras pi plis konplèks.
Si ou pran yon foto nan yon pòm, siman gen nan yon anpil nan repetisyon la,
pou nou te kapab yon jan kanmenm sonje ke background nan default se ble
epi yo pa, jan foto a men dwat-ou sijere,
gen sonje koulè a ​​nan chak pixel sèl nan foto sa a.
Se konsa, nou ka voye jete Bits lwen gen san pèdi enfòmasyon.
Pòm lan toujou sanble jis menm bagay la.
Nan egzanp sa a isit la, ou ta ka wè sa ki rive nan yon fim.
Sa yo reprezante bobin fin vye granmoun-lekòl fim kote nan imaj nan tèt la
ou gen yon kondwi RV sot pase yon kay ak yon pye bwa.
Ak kòm ke van disques sot pase de gòch a dwat, sa ki evidamman pa chanje?
Kay la pa pral nenpòt kote, ak pye bwa a pa pral nenpòt kote.
Bagay la sèlman ki nan k ap deplase se van an nan ka sa a.
Se konsa, kòm Istorik enchanje sijere, sa ou kapab fè nan sinema
se menm jan jis jete enfòmasyon ki pa chanje nan ant ankadreman.
Sa a se jeneralman li te ye tankou konpresyon interframe
kote si sa a ankadreman sanble prèske ki idantik ak yon sèl sa a,
kite a pa anmède estoke sou ki gen kapasite nenpòt nan enfòmasyon an idantik
sou sa yo ankadreman entèmedyè, kite la sèlman itilize ankadreman kle yon fwa nan yon pandan y ap
ki aktyèlman estoke enfòmasyon sa a redundantly jis kòm yon saniti ti kras tcheke.
>> Nan kontras, yon lòt apwòch konpresan videyo a nan egzanp sa a isit la dezyèm ak pi ba yo,
kote olye ke magazen 30 ankadreman, poukisa pa ou jis sere 15 ankadreman yon dezyèm olye?
Olye de kalite a fim nan ap koule tankou dlo trè byen, parfètman,
li ta ka gade tankou li nan begeye yon ti jan, yon ti kras lekòl fin vye granmoun,
men efè an nèt pral sèvi ak lwen mwens pase Bits ka otreman ap nesesè.
Se konsa, kote sa a Lè sa a, kite nou?
Sa se te yon ti jan nan yon sou kote sou kote lòt bagay ou ka ale ak konpresyon.
Pou plis enfòmasyon sou sa, pran yon klas tankou CS175 isit la.
Isit la nan yon lòt egzanp nan videyo.
Si myèl la se bagay la sèlman k ap deplase,
ou ka vrèman jete enfòmasyon ki nan sa yo ankadreman mitan
paske flè a ak nan syèl ak fèy pa yo ap chanje.
Men, se pou a kounye a konsidere yon dènye bagay.
Nan 5 minit kap vini yo nou kite C dèyè pou tout tan nan konferans? Wi. Pa nan psets yo, menm si.
Denye istwa sou C ak Lè sa a, nou jwenn yo bagay trè sexy
ki enplike HTML ak sit entènèt ak Woo-ou. Tout dwa.
Isit la nou ale. Sa a se motivasyon an.
Li vire soti tout tan sa a lè nou yo te ekri pwogram nou kouri sonnen.
Ak rezone, nou te di depi nan premye semèn bèl anpil, li pran kòd sous
epi konvèti l 'nan kòd objè.
Li pran C ak konvèti l 'nan 0s ak 1S.
Mwen te kalite te kouche ba ou pou yon semèn paske li nan pa byen kòm senp tankou sa.
>> Genyen nan yon anpil plis ale sou anba kapo a lè ou kouri nan yon pwogram tankou sonnen.
Anfèt, yo ka pwosesis la nan konpile yon pwogram vrèman dwe rezime,
kòm ou ta ka sonje soti nan videyo Rob a sou konpilateur,
nan 4 etap sa yo: pre-pwosesis, konpile tèt li, rasanble, ak ki lye ak.
Men, nou nan klas ak pi fò moun nan mond lan tipikman rezime tout nan etap sa yo
kòm jis "konpile."
Men, si nou kòmanse ak kòd sous tankou sa a, sonje sa a se petèt pi senp C pwogram nan
nou te ekri konsa byen lwen, sonje ke lè konpile li fini moute kap tankou sa a.
Men, gen la aktyèlman yon etap entèmedyè, ak sa yo ki etap yo jan sa a.
Premye gen nan bagay sa a nan tèt la anpil nan sa a ak pi fò nan pwogram nou yo,
# Enkli
Ki sa ki # enkli pou nou?
Li bèl anpil kopi ak kole sa ki nan stdio.h nan dosye mwen pou ke poukisa?
Poukisa mwen pran swen sou sa ki nan stdio.h? Ki sa ki nan nan gen nan enterè?
Deklarasyon printf a, pwototip li yo, se konsa ke du a Lè sa a, ki konnen sa ki mwen vle di
lè mwen mansyone sa a fonksyon printf.
Se konsa, etap 1 nan konpile se pre-pwosesis, annakò ak sa yon pwogram tankou rezone
oswa kèk pwogram vin ede ki sonnen vini ak li tèt kòd ou a anba,
goch a dwat, epi nenpòt ki lè li wè yon senbòl # swiv pa yon mo kle tankou enkli,
li fè fè konnen ke operasyon, kopye ak kole nan sa a stdio.h ka nan dosye ou.
Sa a se etap 1.
Lè sa a, ou gen yon pi gwo anpil C dosye paske nan kopi a gwo, keratin travay ki nan jis te pase a.
>> 2 Etap koulye a, se konpile.
Men, li vire soti konpile pran kòd sous ki sanble tankou sa a
ak vire l 'nan yon bagay ki sanble tankou sa a,
ki pou moun ki abitye a rele? >> [Elèv] Asanble. >> Asanble lang.
Sa a se aktyèlman yon bagay si ou pran CS61 ou pral plonje nan nan plis detay.
Sa a se jis sou kòm fèmen kòm ou ka jwenn yo ekri tèt ou 0s ak 1S
men ekri bagay sa yo nan yon fason ke toujou ap fè omwen yon ti kras nan sans.
Sa yo se enstriksyon machin, epi si nou woulo liv desann nan fonksyon prensipal isit la,
avi ki di ke gen sa a enstriksyon pouse, deplase enstriksyon, fè soustraksyon enstriksyon,
rele enstriksyon, ak pou fè.
Lè ou tande ke òdinatè ou a gen Intel andedan,
ou gen yon CPU Intel nan Mac ou a oswa PC, ki sa sa vle di?
Vini yon CPU ki te konstwi pa konpayi tankou Intel konprann enstriksyon a sèten.
Yo pa gen okenn lide ki sa fonksyon tankou swap yo oswa prensipal yo se pou chak,
men yo konnen ki sa ki ba anpil-nivo enstriksyon tankou adisyon, soustraksyon, pouse,
deplase, rele, ak pou fè yo.
Se konsa, lè ou konpile C kòd nan lang asanble,
se trè itilizatè zanmitay ou-ap chèche kòd konvèti nan yon bagay ki sanble tankou sa a,
ki literalman deplase bytes oswa 4 bytes alantou nan inite sa yo ti nan ak soti nan CPU a.
Men, finalman, lè sonnen se pare pran sa a reprezantasyon nan pwogram ou an
nan 0s ak 1, Lè sa a, k ap pase etap la rele rasanble,
ak sa a ankò tout k ap pase nan bat je l nan yon grenn je lè kouri sonnen.
Nou kòmanse isit la, li sorti yon dosye tankou sa a, ak Lè sa a, li konvèti li nan sa yo 0s ak 1S.
Men, si ou vle ale tounen nan kèk pwen ak aktyèlman wè sa a nan aksyon sa a,
si mwen ale nan hello1.c-sa a se youn nan pwogram sa yo nou te gade trè premye -
nòmalman nou ta konpile sa a ak hello1.c sonnen e sa ta ba nou a.out.
Si pa kontras ou olye pou bay li-S drapo a, ki sa ou ap jwenn se hello1.s
epi ou pral aktyèlman wè lang nan asanble.
>> Mwen fè sa a pou yon pwogram trè kout, men si ou ale tounen pou Goumen
oswa Reprann oswa nenpòt pwogram ou te ekri ak jis soti nan kiryozite
vle wè ki sa li aktyèlman sanble, sa ki aktyèlman ap Fed nan CPU a,
ou ka itilize sa-S drapo ak rezone.
Men, Lè sa a, anfen, gen nan toujou yon sèl gotcha.
Isit la yo se 0s la ak 1S ki reprezante aplikasyon mwen an alo lemonn,.
Men, mwen te itilize fonksyon yon lòt moun nan nan pwogram mwen an.
Se konsa,, menm si pwosesis la te pou mwen pran hello.c,
li vin konpile nan kòd asanble, ak Lè sa a, li vin reyini nan 0s ak 1,
sèlman nan 0s ak 1S ke yo outputted nan pwen sa a nan tan
yo se yo menm ki lakòz soti nan kòd m 'yo.
Men, moun ki te ekri printf yo, yo konpile kòd yo 20 ane de sa
ak li a kounye a enstale yon kote sou aparèy la,
pou nou yon jan kanmenm gen rantre li oswa li 0s ak 1S avèk 0s m 'ak 1,
ak ki pote nou nan etap la nan konpile 4yèm ak final la, ke yo rekonèt kòm ki lye ak.
Se konsa, ki sou bò gòch-men nou gen egzak foto a menm jan anvan:
hello.c vin asanble kòd vin 0s ak 1S.
Men, sonje ke mwen te itilize estanda mwen / O bibliyotèk la nan kòd m 'yo,
ak sa vle di yon kote sou òdinatè a gen yon dosye rele stdio.c
oswa omwen vèsyon an konpile ladan l 'paske yon moun kèk ane de sa
konpile stdio.c nan kòd asanble ak Lè sa a, yon pakèt antye nan 0s ak 1S.
Sa a se sa ki li te ye tankou yon estatik oswa yon bibliyotèk dinamik.
Li nan kèk dosye chita yon kote nan aparèy la.
>> Men, anfen, mwen gen yo pran 0s m 'ak 1S ak moun sa a 0s ak 1S
ak yon jan kanmenm konekte yo ansanm, literalman konbine sa yo 0s ak 1S
nan yon dosye sèl rele a.out oswa hello1 oswa kèlkeswa sa mwen te rele pwogram mwen
pou ke rezilta nan fen te gen tout 1S la ak 0s ki ta dwe konpoze pwogram mwen an.
Se konsa, tout tan tout tan sa a sa a semès lè ou ve yo te lè l sèvi avèk rezone
e menm pi plis dènyèman kouri fè yo nan lòd yo kouri rezone,
tout nan etap sa yo yo te pase sòt de enstantane men trè fè espre.
Se konsa, si ou kontinye sou nan syans konpitè, savwa CS61,
sa a se kouch nan ke ou pral kontinye kale tounen nan gen
ap pale de efikasite a, enplikasyon sekirite, ak renmen an nan sa yo detay pi ba nivo.
Men, ak sa, nou ap sou yo kite C dèyè.
Se pou nou ale pi devan epi pran repo-5 minit nou kounye a,
ak lè nou tounen vin: Entènèt la.
Tout dwa. Nou se tounen.
Koulye a, nou kòmanse gade nou pa sèlman nan HTML, paske, kòm ou pral wè,
HTML tèt li se aktyèlman trè senp
men vrèman nan pwogram entènèt plis jeneralman, en plis jeneralman,
ak ki jan tout teknoloji sa yo vini ansanm
yo ki pèmèt nou kreye anpil pwogram pi plis sofistike anlè entènèt la
pase konsa byen lwen nou te kapab nan sa yo fenèt nwa ak blan.
Vreman vre, yo nan pwen sa a nan semès la menm si nou pral pase relativman mwens tan
sou PHP, HTML, CSS, JavaScript, SQL ak plis,
pifò elèv fè fini fè pwojè final yo ki baze sou sit,
paske kòm ou pral wè, background nan ou koulye a, nan C
se anpil aplikab a lang sa yo pi wo-nivo.
>> Ak jan ou kòmanse panse sou pwojè final ou a,
ki, anpil tankou Set Pwoblèm 0, kote ou te ankouraje
fè pi anyen nan enterè ou nan grafouyen,
pwojè final la se opòtinite ou a pran konesans newfound ou ak konprandr ak C
oswa PHP a oswa JavaScript oswa renmen deyò pou yon vire
ak kreye moso anpil pwòp ou a nan lojisyèl pou moun lemonn yo yo wè.
Ak tout pitit pitit ou ak lide, konnen ke ou ka mete tèt isit la, projects.cs50.net.
Chak ane, nou mande ide ki soti pwofesè ak manm pèsonèl la ak gwoup elèv sou lakou lekòl la
jis yo soumèt lide yo pou bagay sa yo enteresan ki te kapab rezoud lè l sèvi avèk òdinatè,
lè l sèvi avèk sit entènèt, lè l sèvi avèk lojisyèl.
Se konsa, si w ap konbat vini ak yon lide nan pwòp ou a,
pa tout vle di woulo liv atravè lide yo gen nan men ane sa a ak dènye.
Li se parfe oke atake yon pwojè ki te trete anvan.
Nou te wè apps anpil pou wè estati a nan lesiv nan kanpis la,
apps anpil pou navige meni an sal kote moun,
apps anpil pou navige catalogue a kou ak renmen an.
Ak tout bon, nan yon konferans nan lavni ak nan seminè nan lavni,
nou pral entwodui ou nan kèk APIs piblikman disponib, tou de Commerce disponib
kòm byen ke isit la disponib nan CS50 sou lakou lekòl la pou ke ou gen aksè a done
epi li ka Lè sa a, fè bagay sa yo ki enteresan ak li.
Se konsa, plis sou pwojè final nan kèk jou lè nou lage spesifikasyon la,
men pou kounye a, konnen ke ou ka travay solo oswa avèk youn oswa de zanmi
sou pi fò nan pwojè nenpòt nan enterè ou.
Entènèt la.
Ou ale pi devan e rale mete deyò konpitè pòtatif ou, ou ale nan facebook.com la pou premye fwa,
pa gen louvri sesyon an dènyèman, ak frape Mete. Ki sa egzakteman k ap pase?
>> Lè ou frape Antre nan òdinatè w lan, yon pakèt antye nan etap
kòmanse sòt de maji pase.
Se konsa, ou isit la sou bò gòch, sèvè wèb la tankou Facebook se isit la sou bò dwat la,
ak yon jan kanmenm w ap itilize lang sa a yo rele HTTP, ipèrtèks Transfè Pwotokòl.
HTTP se pa yon lang pwogramasyon. Li nan plis nan yon pwotokòl.
Li se yon seri konvansyon ki navigatè entènèt ak serveurs entènèt itilize lè intercommunicating.
Ak sa ki sa vle di se jan sa a.
Anpil tankou nan mond reyèl la, nou gen sa yo konvansyon
kote si ou ranpli kèk moun la pou premye fwa, si ou pa lide humoring m 'isit la,
Mwen ta ka vin moute nan ou, di, "Hi, non mwen se David." >> Hi, David. Non mwen se Sammy.
"Hi, David. Non mwen se Sammy."
Se konsa, kounye a nou gen sèlman angaje nan sa a sòt de pwotokòl komik imen
kote m 'te inisye pwotokòl la, Sammy te reponn,
nou te souke men, ak tranzaksyon an fin fèt.
HTTP se trè menm jan an nan Lespri Bondye.
Lè demann entènèt navigatè ou a www.facebook.com,
sa ki navigatè ou a ap reyèlman fè ap pwolonje men li yo, se konsa pale,
nan sèvè a epi li voye l 'yon mesaj.
E ke mesaj anjeneral se yon bagay tankou jwenn - ki sa ou vle jwenn? -
jwenn m 'paj la lakay ou, ki se tipikman deziye pa yon koupe yon sèl nan fen yon URL.
Ak jis pou ou konnen ki sa lang mwen pale, mwen navigatè a: Mwen pral di ou
ke mwen pale HTTP vèsyon 1.1,
Epi tou pou bon mezi, mwen pral di ou ke lame a ke mwen vle paj la kay la
se facebook.com.
Tipikman, yon navigatè entènèt, ensu nou la a, moun lan,
voye mesaj sa a atravè entènèt la lè ou tou senpleman tape www.facebook.com,
>> Mete, nan navigatè ou a.
Ak sa ki Facebook reponn ak?
Li reponn ak kèk menm jan-ap chèche detay skre, men tou anpil plis.
Kite m 'ale pi devan nan paj lakay Facebook a isit la.
Sa a se ekran an ki pi fò nan nou pwobableman pa janm wè si ou rete louvri sesyon nan tout nan moman an,
men sa a se tout bon lakay paj yo.
Si nou fè sa nan Chrome, remake ke ou ka rale moute sa yo meni kontèks ti kras.
Sèvi ak Chrome, si sou Mac OS, Windows, Linux, oswa tankou an,
si ou klike sou Kontwole oswa klike sou bò gòch, ou ka tipikman rale moute yon meni ki sanble tankou sa a,
kote yon opsyon kèk ap tann, youn nan ki se Sous Page View.
Ou kapab tou tipikman jwenn tout bagay sa yo pa ale nan meni an View ak poking alantou.
Pou egzanp, isit la anba View, Developer se menm bagay la.
Mwen pral ale pi devan epi gade nan Sous Page View.
Ki sa ou pral wè se HTML a ki Mak te ekri ki reprezante facebook.com.
Li se yon dezòd konplè isit la, men nou pral wè ke sa a fè sans yon ti kras plis anvan lontan.
Men, gen kèk modèl isit la. Kite m 'woulo liv desann nan bagay tankou sa a.
Sa a se difisil pou yon moun li, men remake ke gen nan modèl sa a nan parantèz Incline
ak mo kle tankou opsyon, mo kle tankou valè, kèk strings te site.
Sa a se kote yo, lè ou siyen li pou moman an, trè premye ki espesifye ki ane nesans-w la.
Se ke meni drop-desann nan ane nesans yon jan kanmenm kode isit la
nan lang sa a yo rele HTML, ipèrtèkst markeup lang.
Nan lòt mo, lè navigatè ou a fè yon demann pou paj wèb,
li pale sa a konvansyon rele HTTP.
Men, sa ki facebook.com reponn a ki mande ak?
>> Li reponn yo avèk kèk nan sa yo mesaj skre, menm jan nou pral wè nan yon ti moman.
Men, pi fò nan repons li se nan fòm lan nan HTML, ipèrtèkst markeup lang.
Sa a se lang aktyèl la nan ki se yon paj wèb ki ekri.
Epi ki sa yon navigatè entènèt reyèlman Lè sa a, se, lè yo resevwa yon bagay ki sanble tankou sa a,
li li anwo jouk anba, gòch a dwat, epi nenpòt ki lè li wè youn nan sa yo parantèz Incline
swiv pa yon mo kle tankou opsyon, li montre lang sa a baliz nan fason ki apwopriye a.
Nan ka sa a, li ta afiche yon meni drop-desann nan ane sa yo.
Men, ankò, sa a se yon dezòd konplè fè yon gade nan.
Sa a se pa paske Facebook devlopè manifeste 0 pou 5 pou style, pou egzanp.
Sa a se paske pi fò nan kòd la yo ke yo ekri se, an reyalite, ekri trè byen,
byen kòmante, joliman utilize, ak renmen an,
men nan machin kou, òdinatè, navigatè vrèman pa bay yon modi
si kòd ou a se ki byen décorer.
Ak nan reyalite, li nan konplètman inutil a frape kle a tab tout moun sa yo fwa
ak mete kòmantè pandan tout kòd ou ak chwazi non reyèlman deskriptif varyab
paske si navigatè a pa pran swen, tout sa ou ap fè nan fen jou sa a se gaspiye bytes.
>> Se konsa, li vire soti sa ki pi sou sit entènèt fè se menm si sous la kòd pou facebook.com,
pou cs50.net ak tout moun sa yo sou sit entènèt lòt sou entènèt la
yo, se tipikman byen ekri ak byen kòmante ak joliman utilize ak renmen an,
tipikman anvan yo sou sit wèb la mete sou entènèt la, se kòd la minified,
kote HTML ak CSS la - yon lòt bagay nou pral byento wè -
se kòd la JavaScript nou pral byento wè konprese,
kote long non varyab vin X ak Y ak Z,
ak nan tout sa blan ki fè tout bagay gade konsa lizib se tout jete lwen,
paske si ou panse sou li nan fason sa a, Facebook jwenn yon paj milya dola frape yon jou -
yon bagay fou tankou sa - Se konsa, sa si yon pwogramè jis yo dwe nan dèyè
frape espas bar yon sèl plis tan an jis itilize kèk liy nan kòd janm konsa pi plis?
Ki sa ki nan enplikasyon la si Facebook pou pwoteje blan
nan tout bytes yo, yo voye tounen nan moun sou entènèt la?
Frape bar nan espas yon fwa ap ba ou yon multiple siplemantè nan dosye ou.
Men, si yon milya moun Lè sa a, kontinye nan download paj la kay jou sa a,
ki jan pi plis done ou transmèt sou entènèt la?
Yon jigokte pou pa gen rezon bon.
Ak akòde, pou yon anpil nan sit entènèt sa a se pa tankou yon pwoblèm parametrabl,
men pou Facebook, pou Google, pou kèk nan sou sit entènèt yo ki pi popilè
gen nan ankourajman gwo finansyèman fè kòd ou gade tankou yon dezòd
pou ke ou ap itilize kòm bytes kèk ke posib nan adisyon a Lè sa a, konpresan li
lè l sèvi avèk yon bagay tankou postal, yon algorithm rele gzip,
ki navigatè a fè pou ou otomatikman. Men, sa a se terib.
Nou pa janm pral aprann anyen sou sit entènèt lòt moun nan ak kouman li desine paj wèb
si nou gen fè yon gade nan li tankou sa a.
>> Se konsa, erezman, navigatè tankou Chrome ak IE ak Firefox jou sa yo
tipikman vini ak bati-an zouti pou devlope.
An reyalite, si m 'desann isit la yo Enspekte Eleman oswa si mwen ale nan View, Developer,
epi ale nan zouti pou devlope fòmèlman,
fenèt sa a nan pati anba a nan ekran mwen an kounye a Pops leve.
Li se yon ti kras entimidasyon an premye paske gen nan yon anpil nan onglè abitye isit la,
Men, si m klike sou Eleman tout wout la sou bò gòch anba a,
Chrome se evidamman trè entelijan. Li konnen kouman ka esplike nou rèv tout bagay sa yo kòd.
Se konsa, sa ki fè sa ki Chrome se li fè netwayaj nan tout HTML Facebook a.
Menm si gen nan pa gen blan, gen nan pa mark la,
kounye a remake ke mwen kapab kòmanse navige paj sit entènèt sa tout plis yerarchik la.
Li sanble ke chak paj entènèt ekri nan yon lang yo rele HTML5 ta dwe kòmanse avèk sa a,
deklarasyon sa a doktip, se konsa pale: <! doktip html>
Li nan kalite limyè ak gri a, men sa a liy an trè premye nan kòd nan sa a ranpli,
ak ki jis di navigatè a, "Hey, isit la vini kèk HTML5. Men vini yon paj entènèt."
Bracket nan premye louvri pi lwen pase sa k ap pase yo bagay sa a, yon bracket louvri HTML tag,
ak Lè sa a, si mwen plonje nan pi fon - sa yo flèch yo konplètman san sans;
yo se jis pou dedomajman pou prezantasyon an, yo menm yo pa aktyèlman nan dosye a -
avi ke andedan nan tag HTML Facebook a, anyen ki kòmanse ak yon bracket louvri
ak Lè sa a, te gen yon mo yo te rele yon tag.
Se konsa, andedan tag nan HTML se aparamman yon tag tèt li ak yon tag kò.
Anndan nan tag nan tèt kounye a se yon dezòd antye pou Facebook
paske yo gen yon anpil nan Metadata ak lòt bagay pou fè maketing ak piblisite.
>> Men, si nou desann, desann, desann, desann, kite la wè ki kote li ye. Isit la li ye.
Sa a se yon sèl omwen yon ti jan yo konnen yo.
Tit la nan paj lakay Facebook a, si ou te janm gade nan tab la nan ba tit ou a,
se Byenveni nan Facebook - Log In, Enskri oswa Aprann plis.
Sa a ki sa ou ta wè nan ba tit Chrome a,
ak sa a, se li montre kouman li a reprezante nan kòd.
Si nou inyore Tout Lòt Bagay nan tèt la, pi fò nan entesten yo nan yon paj wèb yo nan kò a,
epi li sanble ke kòd Facebook a ki pral gade pi konplèks
pase sa pifò bagay sa yo nou pral ekri okòmansman jis paske li nan te konstwi moute sou ane yo,
, men tou genyen yon lot antye nan Tags script, JavaScript kòd,
ki fè sit entènèt la trè entèaktif:
wè nouvèl enstantane lè l sèvi avèk lang tankou JavaScript.
Genyen yon bagay yo rele yon div, ki se yon divizyon nan yon paj.
Men, anvan nou jwenn ak sa yo ki detay, kite la eseye rale soti
ak gade nan yon vèsyon ki pi senp nan Facebook 1.0, se konsa pale.
Isit la se hello, mond lan nan paj wèb.
Li te gen ki deklarasyon doktip nan tèt la anpil
ki se yon ti kras diferan soti nan tout lòt bagay.
Pa gen anyen lòt bagay nou ekri nan yon paj wèb ki pral kòmanse ak <! eksepte ke liy la
ak eksepte pou yon bagay yo rele kòmantè nan HTML.
Men, pou pati ki pi, tout bagay nan yon paj entènèt se bracket louvri, mo kle, fèmen bracket.
>> Nan ka sa a ou ka wè pi senp la paj wèb sa posib.
Tag nan HTML gen yon tag tèt ak li gen yon tag nan kò,
men remake ke gen nan sa a nosyon nan kòmanse ak kanpe ak balises.
Sa a se tag nan kòmansman pou HTML, sa a se tag a fèmen oswa tag fen.
Remake yo ap sòt de opoze nan sans ke tag a fèmen oswa tag fen
sa a te pi devan koupe andedan nan tèt li.
Pandan se tan, gen nan yon tag tèt louvri isit la ak yon tag tèt fèmen isit la.
>> Genyen nan yon tit ki ouvè ak yon tag tit fèmen isit la.
Lefèt ke mwen te mete tit la sou yon sèl liy, piman abitrè.
Li jis te sanble ak li ta anfòm joliman sou yon sèl liy, Se konsa, mwen pa t 'bezwen deranje frape Mete yon fwa koup.
Pandan se tan, kò a mwen te fè itilize jis yo dwe janm konsa klè.
Remake HTML se yon lang trè bèbè.
An reyalite, li tounen nan jou a anvan te gen editè wiziwig
ak Microsoft Word kote ou ka di, "Fè sa a fonse, fè sa-a italik,"
ou ta aktyèlman tape kòmandman ti kras nan redaksyon 20 + ane de sa
kote ou ta di, "Kòmanse fè tèks sa a karaktè fonse. Stop ap fè tèks sa a karaktè fonse."
"Kòmanse fè sa a italik tèks. Stop ap fè sa a italik tèks."
>> Sa a ki sa HTML oswa nenpòt lang baliz se.
Tag sa a premye di, "Hey, navigatè. Men vini kèk HTML."
Tag nan pwochen di, "Hey, navigatè. Men vini tèt la, header a nan paj entènèt mwen an."
"Hey, navigatè. Men vini tit la."
Lè sa a, plis pase isit la, "Hey, navigatè. Sa a li pou tit la."
Se konsa, sa a se ki jan navigatè a konnen pa gen ankò montre plis karaktè pase hello, mond
nan ba a tit.
Pandan se tan, sa a di, "Sa a li pou tèt la."
Sa a di, "Men vini kò a Isit la se kò a vrè." - Literalman, mo sa yo hello, lemonn.
Lè sa a di isit la, "Sa a li pou kò a. Sa a li pou HTML a."
Se konsa, navigatè yo trè bèbè.
Yo jis li bagay sa a anwo jouk anba, gòch a dwat, epi fè ekzakteman ki sa yo di yo fè.
Se pou nou aktyèlman fè yon egzanp ti kras isit la.
Kite m 'louvri moute pi senp lan nan pwogram sou Mac mwen isit la, sètadi TextEdit.
Nan Windows ou ka sèvi ak Notepad.exe.
Men sa se tout sa ou bezwen kòmanse fè paj wèb.
Mwen pral ale pi devan ak jis yon kopi ak keratin sa a kòd nan sa a dosye.
Mwen pral ale pi devan epi sove li sou Desktop m 'yo,
ak mwen pral pou konsève pou sa a kòm hello.html,
ak kounye a se dosye a te rele hello.html.
Men li se sou Desktop m 'yo.
Kite m 'koulye a ale nan yon navigatè epi trennen dosye a nan navigatè a.
Epi vwala, isit la se paj wèb trè premye m 'yo.
Remake tit la nan tab la se hello, mond tankou pou chak tag nan tit,
ak avi ke hello, lemonn yo se kò a nan paj entènèt mwen an,
ak Woo-ou, mwen sou Entènèt la.
>> Mwen pa reyèlman, dwa, paske sa a ranpli se pa sou entènèt la.
Li k ap pase yo sou kondwi lokal mwen di nan ki chemen an patikilye.
Men, lide a se menm bagay la. Tout sa nou kounye a bezwen se yon sèvè wèb yo ki vle Upload li.
Men, anvan kite nan aktyèlman prezante yon ti kras plis konpleksite ak yon ti kras stilizasyon plis.
Sa a se yon senp, si raz, paj wèb.
Li vire soti, gen lòt kalite tags nou kapab itilize.
Pou egzanp, isit la nan jòn mwen te entwodwi 2 tags nouvo.
Nou pa pral jwe anpil ak sa yo jodi a, men remake ki genyen lyen ki tag a
yon jan kanmenm sanble diferan de tout lòt bagay.
Tag nan lyen pran sa yo rele atribi,
ak yon atribi se yon bagay ki modifye konpòtman an nan yon tag.
Nan ka sa a sa a se pa chwa ki pi bon an non, lyen, paske kalite li a nan sans,
men sa a tag lyen di, esansyèlman, gen ladan yo dosye a rele styles.css andedan nan paj entènèt mwen an.
Ou ka panse a sa a analoji kòm nan C # enkli direktiv.
Styles.css sa ay ap pale yon lang diferan tout ansanm nou pou nou pa pral jwe ak jodi a,
men li la pou estetik: gwosè font, koulè, kouvèti, dekoupaj, marges,
ak nan tout sa kalite detay estetik.
Pandan se tan, tag a script se fonksyonèl ki similè yo,
men pito pase enkli CSS, lang sa a, li gen ladann yon lòt lang, JavaScript.
Se konsa, nan lòt mo, ak 2 sa yo tags mwen pral evantyèlman dwe kapab ekri pwòp sit web mwen
men tou rale nan kòd ki mwen oswa yon lòt moun te ekri
pou nou ka kanpe sou zepòl lòt moun, nou ka fè pratik bon konsepsyon,
faktorizasyon soti kòd komen.
Si mwen te gen 10 paj wèb diferan, sa vle di ke kèk nan estetik mwen
ka faktè soti, anpil tankou # enkli ladan yo, nan yon dosye apa.
Se konsa, nou ap vin la a.
Men, kite a aktyèlman premye fè yon bagay plis enteresan ak sa a dosye.
>> Yon fwa ankò, sa a se jis TextEdit. Mwen pa teknikman sou Entènèt la ankò, men nou pwal rive la.
Mwen ta renmen fè hello, mond yon ti kras odasyeu pase sa li se.
Se konsa, hello, kite a abitrèman di pou karaktè fonse.
Yon fwa ankò, istwa a se menm bagay la: hello, vigil, kòmanse fè sa a fonse,
Lè sa a, mond vin enprime an karaktè fonse, ak sa a vle di sispann enprime sa a an karaktè fonse.
Kite m 'ale pi devan epi sove dosye m' yo, tounen nan Chrome, mwen pral rale nan jis pou nou ka wè l 'pi byen,
ak Reload, epi ou pral wè ke mond se kounye a an karaktè fonse.
Entènèt la se tout sou lyen, kidonk kite a ale pi devan epi fè sa:
sou sit wèb pi renmen mwen an se, kite la di, youtube.com.
Sove, Reload. Oke. Genyen nan yon pwoblèm koup kounye a san konte atrosite a nan sit entènèt la.
1, mwen sèten mwen frape Antre isit la. Apre sa, mwen te fè sa.
Mwen pa sèlman frape Antre, mwen menm mwen te utilize, pratike sa nou ve yo te t'ap mache bay mesaj sou style,
men mwen, se yon dwa pwochen nan mond.
Se konsa, poukisa sa a ye? Navigatè sèlman fè sa ou di yo fè.
Mwen pa menm di navigatè a, "liy Pak isit la. Antre paragraf kraze isit la."
Se konsa, navigatè a, sa pa enpòtan si mwen frape Tounen 30 fwa,
li la toujou pral mete dwat mwen pwochen nan mond.
Ki sa mwen reyèlman dwe fè isit la se di yon bagay tankou , insert yon repo liy.
>> Ak aktyèlman, yon repo liy se kalite yon bagay etranj
paske ou pa ka vrèman kòmanse deplase nan yon lòt liy, Lè sa a, fè yon bagay,
ak Lè sa a, sispann deplase ou nan yon liy nouvo. Li nan kalite yon operasyon atomik.
Ou swa fè li oswa ou pa fè sa. Ou frape Antre nan oswa ou pa fè sa.
Se konsa, br se yon ti kras nan yon tag diferan, ak Se konsa, mwen bezwen sòt de tou de ouvè ak fèmen li
tout nan yon fwa.
Sentaks la pou ki se sa a.
Teknikman, ou ta ka fè yon bagay tankou sa a nan kèk vèsyon an HTML,
men sa a se jis estipid paske gen nan pa gen rezon ki fè yo kòmanse epi yo sispann yon bagay
si ou ka fè li olye tout nan yon fwa.
Reyalize ke HTML5 pa estrikteman mande pou sa a koupe,
Se konsa ou pral wè liv ak resous sou entènèt ki pa genyen li,
men pou bon mezi kite a pratike simetri a ke nou te wè konsa byen lwen.
Sa vle di ke tag a se toude louvri epi li fèmen.
Se konsa, kounye a kite m 'sove dosye mwen, tounen isit la.
Oke, kidonk li a kòmanse gade pi bon, eksepte entènèt la mwen konnen se kalite klikabl,
e ankò youtube isit la pa sanble pou mennen a anyen.
Sa a se paske menm si li sanble yon lyen, navigatè a pa menm konnen ke se pou chak,
Se konsa, mwen oblije di navigatè a ke sa a se yon lyen.
>> Fason a fè sa a se sèvi ak yon tag jete lank:
<Yon rèf pou ultra referans, ki se yon fason a lekòl fin vye granmoun nan di yon lyen,
= "Http://www.youtube.com">
ak kite m 'deplase sa a nan yon liy nouvo jis pou li nan yon ti kras plis lizib,
epi mwen pral retresi gwosè a font.
Èske mwen fè ankò? Non! Gen k ap pase yo dwe sa a dikotomi.
Tag sa a, tag nan jete lank, tout bon pran yon atribi,
ki modifye konpòtman li yo, ak valè sa a nan atribi se aparamman URL YouTube a.
Men, remake dikotomi a se ke jis paske ki nan adrès URL la w ap ale nan,
sa pa vle di ki gen yo dwe pawòl Bondye a ke w ap ressortir ak fè yon lyen.
Olye de sa, ki kapab yon bagay tankou sa a.
Se konsa, mwen te vle di sispann fè mo sa a yon HyperLink lè l sèvi avèk tag nan jete lank fèmen.
Avi mwen pa fè sa.
1, sa a ta jis pou yon fatra nan tan tout moun nan epi li pa nesesè.
>> Yo fèmen yon tag, ou sèlman mansyone non an nan tag an ankò.
Ou pa mansyone okenn nan atribi yo.
Se konsa, kite a delivre sa, tounen. Okay, vwala, kounye a li nan ble ak ipèrtèkst.
Si m 'klike sou li, mwen aktyèlman fè ale nan YouTube.
Se konsa, menm si paj entènèt mwen an se pa sou Entènèt la, li se omwen HTML,
epi si nou kite entènèt la trape yo, nou ta aktyèlman fini isit la nan youtube.com.
Apre sa, mwen ka ale tounen ak isit la a paj entènèt mwen an. Men, avi sa a.
Si ou janm vinn Spam oswa fè yon kriz èskrokri,
kounye a ou gen kapasite la apre jis senk minit fè menm bagay la.
Nou kapab ale isit la epi fè yon bagay tankou www.badguy.com
oswa kèlkeswa sa sit entènèt la preliminè se, ak Lè sa a, ou ka di verifye kont PayPal ou.
[Ri] Epi, koulye a sa a ki pral pou yo ale nan badguy.com, ki mwen pa ale nan klike sou
paske mwen pa gen okenn lide kote ki mennen. [Ri]
>> Men, nou kounye a gen kapasite a aktyèlman fini la.
Se konsa, nou ap reyèlman fèk kòmanse ap grate sifas la.
Nou pa pwogramasyon se pou chak; nou ap ekri baliz lang.
Men, le pli vit ke nou awondi soti vokabilè nou yo nan HTML,
nou pral prezante PHP, yon lang programmation aktyèl
ki pral pèmèt nou jenere otomatikman HTML, jenere CSS otomatikman,
pou nou ka kòmanse nan Mèkredi aplike, di,
pwòp motè rechèch nou an ak plis ankò.
Men, plis sou sa nan yon koup la jou. Nou pral wè ou lè sa a.
>> [CS50.TV]