DAVID Malan: Tout dwa. Nou se tounen. Se konsa, nan segman sa a sou pwogram sa Mwen te panse nou ta fè se yon melanj de bagay sa yo. Youn, fè yon ti kras nan yon bagay men-sou, kwake lè l sèvi avèk yon pi plis playful pwogram environment-- youn ki se démonstration nan egzakteman kalite ki nan lide nou ve yo te pale de, men yon ti kras pi plis fòmèlman. De, gade nan kèk nan fason ki plis teknik ki yon pwogramè ta aktyèlman rezoud pwoblèm tankou pwoblèm nan chèche ke nou gade anvan ak tou yon plis fondamantalman enteresan pwoblèm nan klasman. Nou jis sipoze soti nan debarase ale nan ki te ke liv telefòn klase, men sa pou kont li se aktyèlman kalite yon difisil pwoblèm ak plizyè fason diferan yo rezoud li. Se konsa, nou pral sèvi ak sa yo kòm yon klas nan pwoblèm reprezantan nan bagay sa yo ke ta ka dwe rezoud an jeneral. Lè sa a, nou pral pale sou ak kèk detay ki sa yo rele done structures-- amateur fason tankou lye lis ak tablo yo regle ak pye bwa ki yon pwogramè ta aktyèlman itilize ak jeneralman itilize sou yon witbord nan penti yon foto nan sa ki li oswa li te prévwa pou mete ann aplikasyon kèk moso nan lojisyèl. Se konsa, kite a fè men yo-sou pòsyon an premye. Se konsa, jis jwenn men ou sal ak yon anviwònman rele scratch.mit.edu. Sa a se yon zouti ke nou itilize nan klas bakaloreya nou an. Menm si li la fèt pou laj 12 ak leve, nou sèvi ak li pou jiska la yon pati nan ki byen yon ti jan depi li nan yon bèl, plezi grafik fason pou yo aprann yon ti kras yon bagay sou pwogramasyon. Se konsa, tèt ak sa yo ki URL, kote ou ta dwe wè yon paj byen tankou sa a, ak ale pi devan epi klike sou Antre nan Scratch nan tèt dwat epi chwazi yon non itilizatè ak yon modpas ak finalman jwenn tèt ou yon scratch.mit.edu account--. Mwen te panse mwen ta sèvi ak sa a kòm yon opòtinite premye yo montre sa a. Yon kesyon te vini pandan repo a sou sa Kòd aktyèlman sanble. Apre sa, nou te pale pandan repo a sou C, nan particular-- patikilyèman yon pi ba nivo nan yon lang ki pi gran. Apre sa, mwen jis te fè yon rapid Google rechèch jwenn Kòd C pou rechèch binè, algorithm a ke nou itilize fè rechèch ke liv telefòn pi bonè. Sa a egzanp patikilye, nan kou, pa rechèch yon liv telefòn. Li jis fouy yon pakèt antye nan nimewo nan memwa òdinatè a. Men, si ou ta renmen jis jwenn yon vizyèl sans de ki sa yon pwogram aktyèl lang sanble, li sanble yon ti kras yon bagay konsa. Se konsa, li a sou 20-plis, 30 oswa konsa liy nan kòd, men konvèsasyon an nou te gen sou saut te sou ki jan sa a aktyèlman vin morphed nan zewo ak moun yo epi si ou pa ka jis retounen ki travay sou 'al byen lwen zewo ak moun yo tounen nan kòd. Malerezman, pwosesis la se konsa transfòmasyon ke li nan yon anpil pi fasil te di pase fè. Mwen te ale pi devan epi aktyèlman vire ke pwogram, Binè Search, nan zewo ak moun yo pa fason pou yon pwogram yo rele du a ke mwen rive gen isit la kounye sou Mac mwen. Men, si ou gade nan ekran an isit la, ki konsantre espesyalman sou sa yo sis kolòn mitan sèlman, ou pral wè zewo sèlman ak inite. Ak sa yo se zewo yo ak moun yo ki konpoze egzakteman sa pwogram chache. Se konsa, chak ti moso nan senk Bits, chak multiple nan zewo ak inite isit la, reprezante kèk enstriksyon tipikman andedan nan yon òdinatè. Men, an reyalite, si ou te konn tande nan maketing eslogan "Intel andedan" - ki, nan kou, jis vle di ou gen yon Intel CPU oswa nan sèvo andedan òdinatè a. Ak sa ki sa vle di yo dwe yon CPU a se ke ou gen yon seri enstriksyon, se konsa pale. Chak CPU nan mond lan, anpil nan yo fèt pa Intel jou sa yo, konprann yon fini kantite enstriksyon yo. Ak moun ki enstriksyon yo, se pou ba nivo kòm ajoute de nonb sa yo ansanm, anpil anpil pitit de nonb sa yo ansanm, deplase pyès sa a nan done ki sòti nan isit la nan isit la nan memwa, sove sa a enfòmasyon ki soti nan la a yo isit la nan memwa, ak pou forth-- se konsa trè, trè ba-nivo, detay prèske elektwonik. Men, avèk moun matematik operasyon makonnen ak sa nou diskite pi bonè, reprezantasyon an nan done kòm zewo ak moun yo, kapab ou bati moute tout bagay ki yon òdinatè kapab fè jodi a, si wi ou non li nan textuelle, grafik, mizik, oswa otreman. Se konsa, sa a se trè fasil yo ka resevwa pèdi nan move zèb yo nan byen vit. Apre sa, nan yon anpil nan defi sentaks kijan si ou fè pi senp la, estipid nan tipo Pa gen yonn nan pwogram nan pral travay tou. Se konsa, olye pou yo lè l sèvi avèk yon lang tankou C sa a maten, Mwen te panse li ta dwe plis plezi yo aktyèlman fè yon bagay ki pi vizyèl, ki pandan y ap fèt pou timoun yo se aktyèlman yon manifestasyon pafè nan yon pwogram aktyèl language-- jis k ap pase sèvi ak foto olye pou yo tèks ki reprezante lide sa yo. Se konsa, yon fwa ou tout bon gen yon kont sou scratch.mit.edu, klike sou Kreye la bouton nan tèt kite nan sit la. Apre sa, ou ta dwe wè yon anviwònman tankou yon sèl la mwen se sou yo wè sou ekran m ' isit la. Epitou, n ap pase jis yon ti kras ti jan nan tan ap jwe isit la. Ann wè si nou pa ka tout rezoud kèk pwoblèm ansanm nan fason sa a. Se konsa, sa ou pral wè nan sa a environment-- ak aktyèlman jis kite m 'pran yon poz. Èske yon moun pa isit la? Pa isit la? OK. Se pou m 'pwen soti yon kèk karakteristik nan anviwonman sa a. Se konsa, nan tèt la kite nan ekran an, nou gen etap Scratch a, se konsa pale. Grafouyen se pa sèlman non an nan lang programmation sa a; li la tou non an nan chat la ki ou wè pa default gen la nan zoranj. Li se sou yon etap, se konsa anpil tankou mwen dekri tòti a pi bonè tankou se te nan yon rektangilè anviwònman tablo blan. se mond chat sa a nan prizon antyèman ak sa yo ki rektang moute tèt la. Pandan se tan, sou bò dwat la bò men isit la, li nan jis yon zòn Scripts, se yon vid adwaz si ou pral. Sa a se kote nou ap ale nan ekri pwogram nou nan jis yon moman. Apre sa, blòk yo bilding ke nou va itilize yo ekri sa a program-- devinèt la moso, si ou will-- yo moun isit la nan mitan an, epi yo ap kategori pa fonctionnalités. Se konsa, pou egzanp, mwen pral ale pi devan ak demontre omwen youn nan sa yo. Mwen pral ale pi devan epi klike sou kategori a Kontwòl moute tèt. Se konsa, sa yo, se kategori ki moute tèt. Mwen pral klike sou kategori a kontwòl. Olye de sa, mwen pral klike sou Evènman yo kategori, trè premye yon kanpe, tèt la. Men, si ou ta renmen yo swiv ansanm menm jan nou fè sa, ou ap byen Byenveni nan. Mwen pral Sur Et faites sa a premye yon sèl, "lè vèt drapo klike." Lè sa a, mwen pral lage l 'jis apeprè nan tèt la nan pwopoze vid m 'yo. Ak sa ki nan bèl sou grafouyen se ke moso devinèt sa a, lè anklanche ak lòt devinèt moso, ki pral fè literalman sa ki sa yo moso devinèt di fè. Se konsa, pou egzanp, Scratch ki dwat kounye a nan mitan an nan mond l 'yo. Mwen pral ale pi devan epi chwazi kounye a, kite a di, kategori a Mouvman, si ou ta renmen fè nan same-- Mouvman kategori. Epi, koulye a remake mwen gen yon antye pakèt moun sou moso devinèt isit la ki, ankò, kalite fè sa yo di. Men, mwen pral ale pi devan epi trennen ak gout blòk la deplase droit sou isit la. Apre sa, remake ke le pli vit ke ou jwenn fèmen nan anba a nan "drapo a vèt klike "bouton, avi ki jan yon liy blan parèt, tankou si li nan prèske mayetik, li vle ale la. Jis kite ale, epi li pral menen ansanm ak fòm sa yo ki ap matche ak. Epi, koulye a ou kapab petèt prèske devine ki kote nou pral ak sa. Si ou gade nan sèn nan Scratch sou isit la epi gade nan tèt la nan li, ou pral wè yon limyè wouj, se yon sispann siy, ak yon drapo vèt. Apre sa, mwen pral ale pi devan yo epi gade screen-- mwen sèlman pou moman yon, si ou t 'kapab. Mwen pral klike sou vèt drapo kounye a, ak li te deplase sa ki parèt 10 etap oswa 10 piksèl, 10 pwen, sou ekran an. Se konsa, pa sa ki enteresan, Men, kite m 'pwopoze san yo pa menm anseye sa a, jis lè l sèvi avèk pwòp nan pwòp ou a entwisyon kite m 'pwopoze ke ou konnen ki jan yo fè Scratch mache dwa koupe sèn nan. Èske l 'fè wout pou bò dwat la nan ekran an, tout wout la nan bò dwat la. Kite m 'ba ou yon ti moman oswa konsa lite ak sa. Ou ta ka vle pran yon gade nan lòt kategori nan blòk. Tout dwa. Se konsa, jis yo rapèl, lè nou gen drapo a vèt klike isit la yo epi li deplase 10 etap se nan sèlman enstriksyon, chak fwa mwen klike sou drapo a vèt, sa k ap pase? Oke, ki nan kouri pwogram m 'yo. Se konsa, mwen te kapab fè sa petèt 10 fwa manyèlman, men sa a santi l yon ti kras ti jan hackish, se konsa pale, kijan mwen se pa reyèlman rezoud pwoblèm nan. Mwen jis ap ankò e ankò, li ankò e ankò jouk tan mwen sòt de aksidantèlman reyalize direktiv la ke mwen mete soti nan reyalize pi bonè. Men, nou konnen soti nan nou an pseudocode pi bonè ke gen nan nosyon sa a nan pwogram nan loupin, fè yon bagay ankò e ankò. Se konsa, mwen te wè ke yon pakèt moun sou ou rive jwenn pou pyès sa devinèt? Repete jiskaske. Se konsa, nou te kapab fè yon bagay tankou repete jiskaske. Ak sa ki ou te repete jiskaske egzakteman? OK. Se pou m 'ale ak yon sèl sa a, se yon ti jan ki pi senp sèlman pou moman yon. Kite m 'ale pi devan epi fè sa. Remake, menm jan ou ka gen dekouvri anba kontwòl, gen sa a blòk repete, ki pa sanble li a ki gwo. Gen nan pa anpil chanm nan ant de liy sa yo jòn. Men, jan anpil nan nou ta ka gen remake, si ou trennen ak gout, avi ki jan li ap grandi yo ranpli fòm nan. Epi ou ka menm bachote plis. Li pral jis kenbe k ap grandi si ou trennen ak hover sou li. Apre sa, mwen pa konnen sa ki nan pi byen isit la, kidonk kite m 'omwen repete senk fwa, pou egzanp, ak Lè sa a tounen nan sèn nan , epi klike drapo a vèt. Epi, koulye a remake li pa byen la. Koulye a, kèk nan nou pwopoze, kòm Victoria jis te fè, repete 10 fwa. Epi sa jeneralman fè resevwa l 'tout wout la, men pa ta gen yon plis gaya fason pase abitrèman n ap kalkile konnen konbyen bwote al rete nan fè? Ki sa ki ta kapab yon blòk pi bon pase repete 10 fwa ta dwe ye? Yeah, konsa poukisa pa fè yon bagay pou tout tan? Epi, koulye a kite m 'avanse pou pi moso sa a devinèt andedan gen ak debarase m de yon sèl sa a. Koulye a, remake pa gen matyè kote Scratch kòmanse, li ale nan kwen an. Apre sa, Erezman MIT, ki moun ki fè grafouyen, jis fè asire w ke li pa janm disparèt nèt. Ou ka toujou gen tan pwan ke l 'yo. Epi jis entwitif, poukisa li kenbe deplase? Sa k ap pase isit la? Li sanble yo te sispann, men Lè sa a, si mwen ranmase ak trennen li kenbe vle ale sou la. Poukisa se sa? Se vre wi, yon òdinatè se literalman pral fè sa ou di l 'bay fè. Se konsa, si ou te di li pi bonè fè a yo bagay pou tout tan, deplase 10 etap, li k ap pase yo kenbe prale ak pral jouk tan mwen frape siy pou kanpe a wouj epi yo sispann pwogram nan tout ansanm. Se konsa, menm si ou pa t ' fè sa, ki jan t 'kapab mwen fè Scratch deplase pi vit nan tout ekran an? Plis etap, dwa? Se konsa, olye pou yo fè 10 nan yon moman, poukisa pa nou ale pi devan epi chanje li to-- ki sa ou ta propose-- 50? Se konsa, koulye a mwen pral klike sou vèt la drapo, ak tout bon, li ale reyèlman vit. Lè sa a, nan kou, se jis yon manifestasyon animasyon. Ki sa ki se animasyon? Li nan jis ki montre ou yon imen an pakèt antye nan imaj toujou reyèlman, reyèlman, reyèlman vit. Se konsa, si nou ap jis di l 'pou avanse pou pi plis etap, nou ap jis gen efè a dwe chanjman kote li se sou ekran an tout pi vit pou chak inite a nan tan. Koulye a, defi nan pwochen te ke mwen pwopoze te gen l 'rebondisman nan kwen an. Ak san yo pa konnen ki sa devinèt moso exist-- paske li nan amann si ou pa ale nan nan etap nan challenge-- a sa ou vle fè entwitif? Kouman ou ta nou gen l 'rebondisman retounen lakay yo epi soti, ant bò gòch la ak dwa? Yeah. Se konsa, nou bezwen kèk kalite nan kondisyon, epi nou sanble yo gen kondisyonal, se konsa yo pale, anba kategori a kontwòl. Kilès nan sa yo blòk nou pwobableman vle? Yeah, petèt "si, lè sa a." Se konsa, remake ke nan mitan blòk yo jòn nou gen isit la, gen sa a "si" oswa sa a "si, lòt moun" blòk ki pral pèmèt nou pran yon desizyon fè sa oswa fè sa. Epi ou ka menm nich yo fè miltip bagay sa yo. Oswa si ou pa te ale isit la ankò, ale pi devan nan kategori a Capteur and-- kite a wè si li nan isit la. Se konsa, sa blòk ta kapab itil isit la yo detekte si li se sou sèn nan? Yeah, remake ke kèk nan sa yo blòk ka parametrized, se konsa pale. Yo ka sòt de Customized, pa kontrèman ak HTML yè ak atribi, kote atribi sa yo kalite Customize konpòtman an nan yon tag. Menm jan an tou isit la, mwen ka gen tan pwan sa a manyen blòk ak chanjman epi mande kesyon an, ou menm ki manyen sourit la konsèy tankou kurseur la oswa w ap manyen kwen an? Se pou m 'ale nan ak fè sa. Mwen pral rale soti pou yon moman. Kite m 'gen tan pwan moso sa a devinèt isit la, moso sa a devinèt sa a, ak mwen pral melanje yo moute sèlman pou moman yon. Mwen pral pou avanse pou pi sa a, chanje sa a nan kwen manyen, ak mwen pral mouvman fè sa. Se konsa, isit la gen kèk engredyan. Mwen panse ke mwen te gen tou sa m 'vle. Èske yon moun renmen pwopoze ki jan mwen kapab konekte sa yo petèt anwo jouk anba yo nan lòd yo rezoud pwoblèm nan ki gen Grafouyen deplase dwat a gòch a dwat yo gòch a dwat a gòch, chak tan jis rebondi koupe miray la fè? Ki sa mwen vle fè? Ki blòk mwen ta dwe konekte nan la "Drapo lè vèt klike premye"? OK, se konsa kite la kòmanse avèk "pou tout tan an." Kisa ki ale andedan vin apre a? Yon lòt moun. OK, deplase etap. Tout dwa. Lè sa a, ki sa? Se konsa, sa a, si nan. Apre sa, remake, menm si li sanble Sandwitch ansanm byen sere, li pral jis grandi nan ranpli. Li pral jis Ale nan kote mwen vle li. Ak sa ki mwen mete ant si la ak Lè sa a la? Pwobableman "si manyen kwen." Apre sa, avi, ankò, li nan twò gwo pou li, men li ap grandi yo ranpli. Lè sa a, vire 15 degre? Konbyen degre? Yeah, se konsa 180 ap vire m 'tout wout la alantou. Se konsa, kite a wè si mwen te resevwa dwa sa a. Kite m 'rale soti. Kite m 'trennen Scratch yo. Se konsa, li nan yon ti kras defòme kounye a, men sa a amann. Kouman mwen ka Reyajiste l 'fasil? Mwen pral tronpe yon ti kras. Se konsa, mwen ajoute yon lòt blòk, jis yo dwe klè. M 'vle li pwen 90 degre a dwat a pa default, se konsa mwen jis ale nan di l ' fè sa pwogramasyon. Ak isit la nou ale. Nou sanble yo te fè l '. Li se yon ti kras etranj, paske li te mache bouch anba. Se pou yo rele ke yon ensèk. Sa se yon erè. Yon ensèk se yon erè nan yon pwogram, yon lojik erè se mwen menm, moun nan, te fè. Poukisa se li pral tèt anba? Èske MIT vis moute nan oswa te fè mwen? Yeah, mwen vle di, li pa MIT a fòt. Yo te ban m 'yon moso devinèt ki di vire kèk kantite degre. Apre sa, nan sijesyon Victoria a, Mwen vire 180 degre, ki se entwisyon a dwat. Men, vire 180 degre literalman vle di vire 180 degre, e ke sa a pa reyèlman sa m 'vle, aparamman. Paske omwen li se nan sa a mond ki genyen de dimansyon, se konsa vire ki reyèlman ale yo baskile l 'bouch anba. Mwen pwobableman vle sèvi ak sa blòk olye de sa, ki baze sou sa ou wè la a? Ki jan nou ta ka ranje sa a? Yeah, se konsa nou te ka pwen nan direksyon opoze a. Ak aktyèlman menm sa a, se pa pral yo dwe ase, paske nou ka sèlman difisil Kòd montre gòch la oswa dwa. Ou konnen ki sa nou te ka fè? Li sanble ke nou gen yon konvenyans blòk isit la. Si m 'rale nan, gade yon bagay nou renmen isit la? Se konsa, li sanble MIT gen yon distraksyon bati nan isit la. blòk Sa a sanble ap ekivalan yo ki lòt blòk, pliryèl? Sa a blòk youn sanble ap ekivalan sa a Trio antye nan blòk ke nou gen isit la. Se konsa, li vire soti mwen kapab senplifye mwen pwogram pa pou elimine pou nan nan tout sa ak jis mete sa a nan isit la. Epi, koulye a li se toujou yon ti kras buggy, epi ki nan amann pou kounye a. Nou pral kite ki dwe. Men, pwogram mwen an se menm ki pi senp, ak sa a, tou, ta dwe reprezantan nan yon objektif nan Programming se depreferans fè kòd ou a kòm senp, menm jan kontra enfòmèl ant ke posib, pandan y ap toujou ke yo te kòm lizib ke posib. Ou pa vle fè li tèlman somèr ke li nan difisil yo konprann. Men, remake mwen te ranplase twa blòk ak yon sèl, e ke sa a joui yon bon bagay. Mwen te distrè lwen nosyon a nan tcheke si wi ou non w ap sou kwen nan ak sèlman yon sèl blòk. Koulye a, nou ka gen plezi ak sa a, an reyalite. Sa a pa ajoute anpil valè entelektyèl men playful valè. Mwen pral ale pi devan ak gen tan pwan sa a son isit la. Se pou m 'ale pi devan, ak kite m' sispann pwogram nan pou yon moman. Mwen pral nan dosye sa ki annapre yo, sa ki pèmèt aksè nan mikwofòn mwen. Isit la nou ale. Ouch. Ann eseye sa a ankò. Isit la nou ale. OK, mwen anrejistre bagay la mal. Isit la nou ale. Ouch. Ouch. Tout dwa. Koulye a, mwen bezwen yo debarase m de sa. Tout dwa. Se konsa, koulye a, mwen gen yon anrejistreman nan jis "Ouch." Se konsa, koulye a mwen pral yo ale pi devan epi rele sa a "Ouch." Mwen pral tounen Scripts mwen, e kounye a, avi gen nan blòk sa a ki yo rele jwe son "Meow" oswa jwe son "Ouch." Mwen pral trennen sa a, ak ki kote Mwen ta dwe mete sa a pou efè komik? Yeah, se konsa kounye a li nan kalite buggy, paske kounye a sa a block-- avi ki jan sa a "si ou sou kwen, rebondisman "se kalite endepandan. Se konsa, mwen bezwen ranje sa a. Kite m 'ale pi devan epi fè sa. Kite m 'debarase m de sa a epi ale tounen nan orijinal nou an, plis ekspre fonctionnalités. Se konsa, "si manyen kwen, lè sa a" Mwen vle yo vire, kòm Victoria pwopoze a, 180 degre. Apre sa, mwen vle jwe son an "Ouch" la? Yeah, remake li a deyò ki blòk jòn. Se konsa, sa a, tou, ta dwe yon ensèk, men mwen te remake li. Se konsa, mwen ale nan trennen l 'moute isit la, ak avi kounye a li nan andedan "si la." Se konsa, "si la" se sa a sòt de tankou efase non bra ki tankou ki nan sèlman pral fè sa ki andedan nan li. Se konsa, kounye si mwen rale soti nan risk pou yo annoying-- COMPUTER: Ouch, Ouch, Ouch. DAVID Malan: Epi, se pral jis ale sou pou tout tan. Koulye a, jis akselere bagay isit la, kite m 'ale pi devan epi louvri moute, se pou yo say-- kite m 'ale nan kèk nan bagay pwòp mwen nan klas la. Ak kite m 'louvri moute, kite a di, sa a yon sèl te fè pa youn nan zanmi ansèyman nou an yon koup nan ane de sa. Se konsa, kèk nan ou ta ka sonje jwèt sa a soti nan pase, ak li la aktyèlman remakab. Menm si nou te fè a pi senp nan pwogram kounye a, se pou yo konsidere ki sa sa a aktyèlman sanble. Kite m 'frape jwe. Se konsa, nan jwèt sa a, nou gen yon krapo, ak lè l sèvi avèk flèch la keys-- li te pran pi gwo etap pase mwen remember-- Mwen gen kontwòl sou sa a krapo. Ak objektif la se jwenn atravè okipe nan wout san yo pa kouri nan machin yo. Li kite yo see-- si m 'ale isit la, mwen gen pou tann pou yon boutèy demi lit nan woulo liv pa. Sa a santi l tankou yon ensèk. Sa a se kalite yon ensèk. Tout dwa. Mwen se sou sa a isit la, la, ak Lè sa a ou kenbe pral jiskaske w jwenn tout krapo yo nan kousinen yo yon bèl ti flè. Koulye a, sa ta ka gade tout konplèks la plis, men kite a eseye kraze sa a desann mantalman ak vèbalman nan blòk eleman li yo. Se konsa, gen la pwobableman yon devinèt moso ke nou pa gen pou wè ankò men sa a reponn a frap, nan bagay sa yo mwen frape sou klavye a. Se konsa, gen la pwobableman kèk kalite blòk ki di, si kle egal leve, Lè sa a, fè yon bagay ak grafouyen petèt avanse pou li 10 etap nan fason sa. Si yo desann kle bourade, deplase 10 etap fason sa a, oswa kle bò gòch, deplase 10 etap fason sa a, 10 etap sa. Mwen te klèman te tounen chat la nan yon krapo. Se konsa, sa se sèlman kote nan kostim, kòm apèl Scratch l-- nou jis enpòte yon foto nan krapo la. Men, ki lòt bagay k ap pase? Ki lòt liy nan kòd, sa moso devinèt lòt te fè Blake, parèy ansèyman nou an, itilize nan pwogram sa a, aparamman? Ki sa ki nan fè tout bagay move-- sa pwogram konstwi? Mouvman, sure-- se konsa nan deplase blòk, pou asire w. Ak sa ki nan ki blòk deplase andedan nan, gen plis chans? Yeah, kèk kalite riban, petèt yon pou tout tan bloke, petèt yon repete block-- repete jiskaske blòk. Epi sa a, sa k ap fè mòso bwa yo, epi kousinen yo yon bèl ti flè ak tout lòt bagay deplase retounen ak lide. Li nan jis pase infiniman. Poukisa yo se kèk nan machin yo k ap deplase pi vit pase lòt moun yo? Ki sa ki diferan sou pwogram sa yo? Yeah, pwobableman kèk nan yo yo ap pran plis etap nan yon fwa ak kèk nan yo mwens etap nan yon fwa. Ak efè a vizyèl se vit kont dousman. Ki sa ou panse ki te pase? Lè mwen te resevwa krapo mwen tout wout la lòtbò lari a ak gwo larivyè Lefrat la sou yon bèl ti flè pad, yon bagay nan enpòtan pou remake ki te pase. Kisa ki te pase le pli vit ke mwen te fè sa? Li sispann. Sa krapo sispann, ak Mwen te resevwa yon krapo dezyèm fwa. Se konsa, sa konstwi dwe itilize a, ki sa karakteristik? Yeah, se konsa gen nan kèk kalite "Si" kondisyon 'kanpe, tou. Epi li vire out-- nou pa t 'wè sa a men men gen nan lòt blòk nan deyò ki ka di, si ou se manyen yon lòt bagay sou ekran an, si w ap manyen pad an yon bèl ti flè, "lè sa a." Lè sa a, sa a, se lè nou fè krapo la dezyèm parèt. Se konsa, menm si jwèt sa a se sètènman trè ki gen dat, menm si nan premye gade gen nan anpil yo ale on-- ak Blake pa t 'fwe sa a moute nan de minit, li pwobableman pran l 'plizyè èdtan yo kreye jwèt sa a ki baze sou memwa l 'oswa videyo nan vèsyon autrefois a nan li. Men, tout bagay sa yo ti kras ale sou ekran an nan izolasyon bouyi desann nan sa yo trè senp mouvman constructs-- oswa deklarasyon tankou nou te diskite, pasan ak kondisyon, e ke sa a sou li. Genyen yon kèk lòt karakteristik amateur. Kèk nan yo ki piman ayestetik oswa acoustic, tankou son yo mwen jis te jwe avèk yo. Men, pou pati ki pi, ou gen nan lang sa a, grafouyen, tout nan fondamantal nan blòk bilding ke ou gen nan C, Java, JavaScript, PHP, Ruby, Piton, ak nenpòt ki kantite lòt lang yo. Nenpòt kesyon sou Scratch? Tout dwa. Se konsa, nou pa pral plonje nan pi fon grafouyen, menm si w ap akeyi fen semèn sa, espesyalman si w gen timoun oswa nyès ak neve ak sa yo, prezante yo grafonyen moun. Li nan aktyèlman yon bèl playful anviwònman ak, kòm otè li yo di, plafon trè wo. Menm si nou te kòmanse avèk ki ba anpil-nivo detay, ou ka reyèlman fè byen yon ti jan ak li, ak sa a se petèt yon demonstrasyon de egzakteman sa. Men, kite a kounye a tranzisyon nan kèk plis pwoblèm sofistike, si ou vle, li te ye tankou "chèche" ak "Klasman," plis jeneralman. Nou te gen liv sa a telefòn earlier-- isit la nan yon lòt yon sèl jis pou discussion-- ke nou yo te kapab fè rechèch pi plis efikasite paske nan yon sipozisyon enpòtan. Epi jis yo dwe klè, ki sa sipozisyon te mwen fè lè pou nan liv sa a telefòn? Sa Mike Smith te nan anyè telefòn lan, menm si mwen ta dwe kapab okipe senaryo a san l ' gen si mwen jis sispann prematireman. Liv la se alfabetik. Epi sa a, yon trè jenere sipozisyon, paske men sa vle di someone-- mwen se kalite nan koupe yon kwen, tankou mwen menm pi vit paske yon moun lòt te fè yon anpil nan travay di pou mwen. Men, e si telefòn nan liv te triye? Petèt Verizon te resevwa parese, jis jete non tout moun nan ak nimewo nan la petèt yo nan lòd a nan kote yo siyen li pou sèvis telefòn. Ak konbyen tan li pran m ' jwenn yon moun tankou Mike Smith? 1,000 paj telefòn book-- konbyen paj pou m gen gade nan? Tout nan yo. Ou se sòt de soti nan chans. Ou literalman gen fè yon gade nan chak paj si liv telefòn se jis owaza Ranje. Ou ta ka jwenn chans epi jwenn Mike sou trè premye paj la, paske li te kliyan an premye bay lòd sèvis telefòn. Men, li ta ka yo te dènye a, tou. Se konsa, lòd o aza la pa bon. Se konsa, ta kwè nou gen sòt nan liv telefòn oswa nan done sòt jeneral ki nou ve yo te bay yo. Ki jan nou ka fè sa? Oke, kite m 'jis eseye yon senp egzanp isit la. Kite m 'ale pi devan epi lanse yon kèk nimewo sou tablo a. Sipoze nimewo yo nou gen yo, se pou yo di, kat, de, yon sèl, ak twa. Epi, Ben, sòt nimewo sa yo pou nou. OK, bon. Kijan ou te fè sa? Tout dwa. Se konsa, kòmanse ak pi piti a valè epi ki pi wo a, e ke sa a reyèlman bon entwisyon. Apre sa, reyalize ke nou moun yo se aktyèlman trè bon nan rezoud pwoblèm tankou sa a, omwen Lè done a se relativman ti. Le pli vit ke ou kòmanse gen dè santèn nan nimewo, dè milye de nimewo, dè milyon de nimewo, Ben pwobableman pa t 'kapab fè l' byen ki vit, an konsideran ke te gen twou vid ki genyen nan nimewo yo. Trè fasil yo konte nan yon milyon dola otreman, jis tan konsome. Se konsa, algorithm nan li son tankou Ben itilize jis kounye a te rechèch pou nimewo a pi piti a. Se konsa, menm si nou moun ka pran nan yon anpil nan enfòmasyon vizyèlman, yon òdinatè se aktyèlman yon ti kras plis limite. Òdinatè a kapab sèlman gade nan yon sèl multiple nan yon moman oswa petèt kat bytes nan yon time-- jou sa yo petèt 8 bytes nan yon time-- men yon nimewo piti anpil nan bytes nan yon tan bay yo. Se konsa, bay yo ke nou vrèman gen kat valè separe isit lan-- epi ou ka panse a Ben tankou ke li gen blinders sou si li te yon òdinatè sa yo ke li pa ka wè anyen lòt pase yon nimewo nan yon time-- se konsa nou jeneralman pral asime, tankou nan Angle, nou pral li de dwat a gòch. Se konsa, premye nimewo a Ben pwobableman gade nan te kat ak Lè sa a trè byen vit reyalize ke nan yon trè gwo number-- kite m 'kenbe kap. Genyen de. Tann yon minit. De se pi piti pase kat. Mwen pral sonje. De se kounye a pi piti a. Koulye a, yonn-sa a, se menm pi bon. Sa a menm pi piti. Mwen pral bliye sou de ak jis sonje yon sèl kounye a. Apre sa, li t 'kapab sispann kap? Oke, li te kapab ki baze sou enfòmasyon sa a, men li ta pi bon rechèch rès la nan lis la. Paske sa ki si zewo te nan lis la? E si negatif youn te nan lis la? Li sèlman konnen ke repons li ki kòrèk si li se limitativ tcheke lis la tout antye. Se konsa, nou gade nan rès la nan sa a. Three-- sa ki te yon fatra nan tan. Got malheureux, men mwen te toujou kòrèk yo fè sa. Se konsa, koulye a, li prezimableman chwazi nimewo ki pi piti ak jis mete l 'nan kòmansman an nan lis la, menm jan mwen pral fè isit la. Kounye a ki sa ou te fè kap vini an, menm si ou pa t 'panse osijè de li prèske sa a limit? Repete pwosesis la, se konsa kèk kalite riban. Genyen yon lide yo konnen yo. Se konsa, isit la se kat. Sa a kounye a pi piti a. Sa se yon kandida. Pa anko. Koulye a, mwen te wè de. Sa a eleman nan pwochen te pi piti a. Three-- sa a pa pi piti, se konsa kounye a Ben ka rache soti de la. Epi, koulye a nou repete pwosesis la, ak nan kou twa vin rale soti kap vini an. Repete pwosesis la. Kat vin rale soti. Epi, koulye a nou ap soti nan nimewo, se konsa dwe lis la dwe klase. Ak tout bon, sa a se yon algorithm fòmèl. Yon syantis òdinatè ta rele sa a "sòt seleksyon," lide a ke yo te sòt yon lis iteratively-- ankò ak ankò e ankò chwazi nimewo a pi piti a. Ak sa ki nan bèl sou li se li nan jis pou reprize entwisyon. Li nan tèlman senp. Epi ou ka repete menm bagay la tou operasyon ankò e ankò. Li nan senp. Nan ka sa a li te vit, men konbyen tan li aktyèlman pran? Se pou yo fè li sanble ak santi yon ti kras plis fatigan. Se konsa, yon sèl, de, twa, kat, senk sis, sèt, uit, nèf, 10, 11, 12, 13, 14, 15, 16-- nimewo abitrè. Mwen jis te vle plis sa a tan pase jis kat la. Se konsa, si mwen te gen yon antye pakèt moun sou nimewo now-- li pa menm gen pwoblèm sa yo se pou yo sont- panse osijè de ki sa sa a algorithm vrèman se tankou. Sipoze gen nimewo a. Yon fwa ankò, pa gen pwoblèm sa yo ye a, men yo ap o aza. Mwen aplike algorithm Ben a. Mwen bezwen chwazi nimewo ki pi piti a. Kisa pou mwen fè? Apre sa, mwen ale nan fizikman fè l 'tan sa a yo aji li soti. Looking, kap, kap, kap, kap. Se sèlman pa tan an mwen jwenn yo nan fen lis la kapab Mwen reyalize pi piti a Nimewo te de moman sa a. Youn pa nan lis la. Se konsa, mwen mete desann de. Kisa pou mwen fè apre sa? Looking, kap, kap, kap. Koulye a, mwen te jwenn nimewo a sèt, paske gen nan twou vid ki genyen nan nimewo sa yo men jis abitrè. Tout dwa. Se konsa, koulye a, mwen ka mete desann sèt. Looking kap, kap. Koulye a, mwen an konsideran, nan kou, ke Ben pa fè sa gen siplemantè RAM, siplemantè memwa, paske, nan kou, M 'ap chache nan nimewo a menm. Se vre wi mwen te kapab vin chonje tout nan nimewo sa yo, e ke sa a absoliman vre. Men, si Ben sonje tout nan nimewo ki li te wè, li pa te reyèlman te fè pwogrè fondamantal paske li deja gen kapasite nan rechèch nan nimewo yo sou tablo a. Sonje tout nan a nimewo pa ede, paske li ka toujou kòm yon òdinatè sèlman gade nan, nou te di: yon sèl nimewo nan yon tan. Se konsa, gen nan pa gen sòt de twonpe gen ke ou ka ogmante. Se konsa, an reyalite, jan mwen kenbe chèche lis la, Mwen literalman gen jis kenbe prale dèyè, yo soti nan li, arrache soti Nimewo nan pwochen te pi piti a. Ak jan ou ka kalite dégager soti nan mouvman komik mwen, sa a jis vin trè fatigan trè byen vit, ak mwen sanble yo dwe ale retounen lakay yo epi soti, retounen ak lide byen yon ti jan. Koulye a, yo dwe jis, mwen pa gen yo ale byen kòm, byen, se pou yo see-- yo dwe jis, Mwen pa gen nan mache byen etap kòm anpil chak fwa. Paske, nan kou, jan mwen chwazi nimewo nan lis la, lis ki rete a ap vin pi kout. Se konsa, nou panse osijè de ki jan anpil etap mwen se aktyèlman traipsing nan chak fwa. Nan sitiyasyon an trè premye nou te gen 16 nimewo, ak pou maximally-- kite yo jis fè sa pou yon discussion-- Mwen te gen fè yon gade nan 16 nimewo jwenn pi piti a. Men, yon fwa mwen rache soti nimewo ki pi piti, ki jan lontan te lis ki rete a, nan kou? Jis 15. Se konsa, kouman anpil nimewo te fè Ben oubyen mwen gen gade nan yon dezyèm fwa nan jiwon l? 15, jis yo ale ak jwenn pi piti a. Men koulye a,, nan kou, lis la se, tou, ki pi piti pase sa li te ye anvan. Se konsa, ki jan anpil etap mwen te dwe pran tan kap vini an? 14 ak Lè sa a 13 ak Lè sa a 12, plis dot, dot, dot, jouk tan mwen ap kite avèk sèlman yon sèl. Se konsa, kounye yon syantis òdinatè ta mande, byen, sa ki fè ke tout egal? Li aktyèlman egal kèk konkrè nimewo ki nou te kapab sètènman fè arithmetic, men nou vle pale sou efikasite nan algoritm yon ti kras plis formulaically, endepandan de konbyen tan lis la se. Se konsa, ou konnen ki sa? Sa a se 16, men tankou mwen te di anvan, kite yo jis rele gwosè a nan pwoblèm nan n, kote n se kèk kantite. Petèt li nan 16, petèt li a twa, petèt li nan yon milyon dola. M pa konnen. Mwen pa pran swen. Ki sa mwen reyèlman vle se yon fòmil ki mwen kapab sèvi ak yo konpare sa a algorithm kont lòt algoritm ke yon moun ta ka fè reklamasyon yo pi bon oswa vin pi mal. Se konsa, li vire soti, ak mwen sèlman konnen sa a nan lekòl klas, ke sa a aktyèlman ap travay soti nan menm bagay la tou bagay tankou n sou n plis yon plis pase de. Lè sa a k ap pase nan egal, nan kou, n okib plis n plis pase de. Se konsa, si mwen te vle yon fòmil pou ki jan anpil etap te enplike nan gade nan tout nan moun ki nimewo ankò e ankò ak ankò e ankò, mwen ta ka di li nan n okib plis n plis pase de. Men, ou konnen ki sa? Sa a jis sanble sal. Mwen jis reyèlman vle yon sans jeneral bagay sa yo. Epi ou ta ka sonje soti nan lekòl segondè ke gen se nosyon de pi wo tèm lòd. Kilès nan tèm sa yo, n nan okib, n a, oswa mwatye nan, gen enpak la ki pi sou tan? N a pi gwo vin, ki nan bagay sa yo pi plis? Nan lòt mo, si mwen ploge nan yon milyon dola, n okib a pwal gen plis chans faktè a domine, paske yon fwa milyon dola tèt li se yon anpil pi gwo pase plis yon lòt milyon dola. Se konsa, ou konnen ki sa? Sa a se tankou yon reprize gwo Nimewo si ou kare yon nimewo. Sa a pa reyèlman gen pwoblèm. Nou ap jis ale kwa ki deyò epi yo bliye sou li. Se konsa, yon syantis òdinatè ta ka di ki efikasite nan sa a algorithm se sou lòd la nan n squared-- Mwen vle di se vre wi: yon apwoksimasyon. Li se sòt de apeprè n okib. Apre yon tan, pi gwo a ak pi gwo N vin, sa a se yon estimasyon bon pou a sa efikasite oswa mank de efikasite nan sa a algorithm aktyèlman se. Apre sa, mwen dériver ki, nan kou, soti nan aktyèlman fè matematik la. Men koulye a, mwen jis leve men m ', paske mwen jis vle yon sans jeneral nan sa a algorithm. Se konsa, lè l sèvi avèk lojik la menm, pandan se tan, se pou yo konsidere yon lòt algorithm nou deja gade at-- rechèch lineyè. Lè m 'te chèche pou book-- nan telefòn pa klasman li, pou nan book-- nan telefòn nou te kenbe li di ke li te 1,000 etap, oswa 500 etap. Men, kite a jeneralizasyon sa. Si gen nan n paj nan anyè telefòn lan, sa ki nan tan an kouri oswa nan efikasite nan rechèch lineyè? Li nan sou lòd la ki jan anpil etap jwenn Mike Smith lè l sèvi avèk rechèch lineyè, nan premye algorithm, oswa menm dezyèm nan? Nan ka ki pi mal la, Mike se nan fen liv la. Se konsa, si liv telefòn gen 1,000 paj, nou te di dènye fwa, nan ka ki pi mal la, li ta ka pran apeprè ki jan paj anpil jwenn Mike? Fè tankou 1,000. Se yon mare anwo kay la. Li se yon sitiyasyon pi mal la posib. Men, ankò, nou ap k ap deplase lwen soti nan nimewo tankou 1,000 kounye a. Se jis n. Se konsa, sa ki nan konklizyon an ki lojik? Jwenn Mike nan yon telefòn liv ki gen paj N ta ka pran, nan ka a trè pi mal la, ki jan anpil etap sou lòd la n? Ak tout bon yon òdinatè syantis ta ka di ke tan an kouri, oswa nan pèfòmans oswa efikasite nan oswa ensifizans, nan yon algorithm tankou yon rechèch lineyè se sou lòd la n. Apre sa, nou ka aplike menm bagay la tou lojik nan travèse yon bagay soti jan mwen jis te fè nan dezyèm lan algorithm nou te gen ak liv la telefòn, kote nou te ale de paj nan yon tan. Se konsa, liv telefòn 1,000 paj ta ka pran nou 500 vire paj, plis yon si nou double tounen yon ti jan. Se konsa, si yon liv telefòn gen paj n, men n ap fè de paj nan yon moman, sa a, se apeprè ki sa? N plis pase de, se konsa sa a, se tankou n plis pase de. Men, mwen te fè reklamasyon yon nan ti moman de sa ki n sou two-- sa a, se kalite nan menm bagay la kòm jis n. Se jis nan yon faktè konstan, syantis òdinatè ta di. Se pou nou sèlman konsantre sou varyab yo, really-- varyab yo pi gwo nan ekwasyon an. Se konsa, lineyè rechèch, si wi ou non fè yon sèl paj nan yon moman oswa de paj nan yon moman, se sòt de fondamantalman menm bagay la. Li nan toujou sou lòd la n. Men, mwen te deklare ke ak foto m 'pi bonè ki algorithm nan twazyèm pa t ' lineyè. Li pa t 'yon liy dwat. Li te ke liy koube, ak nan aljebrik fòmil, te gen ki sa? Boutèy demi lit plen n-- se konsa ouvri sesyon baz de nan n. Epi nou pa gen yo ale nan twò anpil detay sou logaritm jodi a, men pifò syantis òdinatè pa t 'vle menm di w ki sa baz la se. Paske li nan tout jis faktè konstan, se konsa pale, jis ti tay diferans nimerik. Se konsa, sa se ta yon trè komen fason pou òdinatè patikilyèman fòmèl syantis nan yon tablo oswa pwogramasyon nan yon tablo blan aktyèlman diskite ki algorithm yo ta sèvi ak oswa sa ki efikasite nan nan algorithm yo se. Lè sa a se pa nesesèman yon bagay ou diskite sou nan nenpòt gwo detay, men yon pwogramè bon se yon moun ki gen yon solid, fòmèl jan nou koumanse. Li se kapab pou pale ak ou nan sa a kalite fason ak aktyèlman fè agiman kalitatif kòm poukisa yon sèl algorithm oswa yon sèl pyès nan lojisyèl se siperyè nan kèk fason nan yon lòt. Paske ou te kapab sètènman jis kouri pwogram yon sèl moun nan ak konte kantite segonn li pran yo sòt kèk nimewo, epi ou ka kouri kèk pwogram lòt moun nan ak konte kantite nan segonn li pran. Men sa se yon fason pi plis jeneral ki ou ka itilize yo analize algoritm, si ou vle, jis sou papye oswa jis vèbalman. San yo pa menm kouri li, san yo pa menm ap echantiyon entrain, ou ka jis rezone atravè li. Se konsa, ak anplwaye yon pwomotè oswa si gen l 'oswa li sòt de diskite bay ou poukisa algorithm yo, sekrè yo sòs pou chèche dè milya nan paj wèb pou ou konpayi se pi bon, sa yo yo se kalite ki nan agiman yo ta dwe depreferans pral kapab fè. Oswa omwen sa yo, se kalite sa yo de bagay sa yo ki ta vini nan diskisyon, nan pi piti nan yon diskisyon trè fòmèl. Tout dwa. Se konsa, Ben pwopoze yon bagay rele sòt seleksyon. Men, mwen pral pwopoze ke gen nan lòt fason pou fè sa a, tou. Ki sa mwen pa t 'reyèlman renmen sou algorithm Ben a se ke li te kenbe mache, oswa li te gen m 'mache, retounen ak lide ak retounen ak lide ak retounen ak lide. E si olye pou m 'te fè yon bagay tankou nimewo sa yo isit la ak mwen te jis fas ak chak Nimewo nan vire jan mwen ap bay li? Nan lòt mo, isit la nan lis mwen an nan chif yo. Kat, yon sèl, twa, de. Apre sa, mwen pral fè sa ki annapre yo. Mwen pral Insert nimewo yo kote yo ye olye pase chwazi yo yon sèl nan yon tan. Nan lòt mo, isit la nan nimewo a kat. Isit la nan lis orijinal mwen. Men, mwen pral yo kenbe esansyèlman yon nouvo lis isit la. Se konsa, sa a se lis la fin vye granmoun. Sa a se lis la nouvo. Mwen wè nimewo a kat premye. lis nouvo mwen se okòmansman vid, kidonk li se trivyalman ka a ke kat se kounye a asòti lis. Mwen jis pran nimewo a mwen bay yo, ak mwen mete l 'nan lis nouvo m' yo. Se lis sa a nouvo Ranje? Yeah. Li nan estipid paske gen nan sèlman yon sèl eleman, men li la absoliman Ranje. Pa gen anyen soti nan plas li. Li nan plis enteresan, sa a algorithm, lè m 'deplase li nan yon pwochen etap la. Koulye a, mwen gen youn. Se konsa, yon sèl, nan kou, ki dwe nan la kòmanse oswa nan fen lis sa a nouvo? Kòmansman. Se konsa, mwen dwe fè kèk travay kounye a. Mwen te pran kèk libète ak makè mwen pa jis desen bagay kote mwen vle yo, men sa a pa reyèlman egzat nan yon òdinatè. Yon òdinatè, kòm nou konnen, gen RAM, oswa Aksè Random memwa, e ke sa a yon sèl multiple ak yon lòt multiple ak yon lòt multiple. Men, si ou gen yon jigokte nan RAM, ou gen yon milya dola bytes, men yo ap fizikman nan yon sèl kote. Ou pa ka jis deplase bagay alantou pa fè desen l 'sou tablo a tout kote ou vle. Se konsa, si lis nouvo mwen an gen kat kote nan memwa, malerezman kat la se deja nan plas la mal. Se konsa, yo insert nimewo a yon sèl Mwen pa ka jis trase li isit la. kote memwa sa a pa egziste. Ki ta ka fason ou kapab triche, ak Mwen te fason ou kapab triche pictorially pou kèk minit isit la. Se konsa, reyèlman, si mwen vle mete yon sèl isit la, Mwen gen yo pou yon ti tan kopi kat la ak Lè sa a mete yon sèl a la. Sa a amann, sa se kòrèk, sa a, se teknikman posib, men mwen reyalize sa a, se travay siplemantè. Mwen pa t 'jis mete nimewo a nan plas li. M 'premye te gen pou avanse pou pi yon Nimewo, lè sa a mete l 'nan plas, Se konsa, mwen kalite double kantite lajan m 'lan nan travay. Se konsa, kenbe sa nan tèt ou. Men, mwen kounye a fè ak sa a eleman. Koulye a, mwen vle gen tan pwan nimewo a twa. Ki kote, nan kou, li fè pati? Nan mitan. Mwen pa ka tronpe ankò ak jis mete l 'la, paske, ankò, sa a memwa se nan kote fizik. Se konsa, mwen gen a kapab bay kopi kat la , li mete twa nan sou isit la. Pa yon kontra gwo. Se jis yon sèl etap siplemantè again-- santi l trè chè. Men, koulye a, mwen deplase sou li nan de la. De la, nan kou, ki dwe isit la. Koulye a, ou kòmanse yo wè ki jan travay la ka anpile. Kounye a ki sa mwen dwe fè? Yeah, mwen gen pou avanse pou kat la, Mwen Lè sa a gen a kapab bay kopi twa a, e kounye a, mwen ka insert de la. Apre sa, trape an ak sa a algorithm, enteresan ase, se ke ta kwè nou gen yon plis ekstrèm ka kote li a se pou yo di uit, sèt, sis, senk, kat, twa, de, yon sèl. Sa a se, nan anpil kontèks, senaryo a ka pi mal la, paske bagay la reprize se literalman bak. Li fè sa ki pa reyèlman afekte algorithm Ben a, paske se nan seleksyon Ben a sòt li te ale nan kenbe pral retounen ak lide nan lis la. Epi paske li te toujou ap chèche nan lis la tout antye rete yo, li pa gen pwoblèm kote eleman yo ye. Men, nan ka sa a ak inséré mwen approach-- kite a eseye sa a. Se konsa, yon sèl, de, twa, kat, senk, sis, sèt, uit. Youn, de, twa, kat, senk, sis, sèt, uit. Mwen pral pran uit an, ak ki kote mwen mete l '? Oke, nan kòmansman an nan lis mwen an, paske se lis sa a nouvo Ranje. Apre sa, mwen travèse li soti. Ki kote mwen mete la a? Reprize li. Li bezwen yo ale la, se konsa Mwen gen fè kèk kopye. Epi, koulye a sèt an ale isit la. Koulye a, mwen deplase sou nan sis a. Kounye a li nan menm plis travay. Uit gen yo ale isit la. Sèt gen yo ale isit la. Koulye a, sis a ka ale isit la. Koulye a, mwen gen tan pwan senk wa. Koulye a, uit a gen yo ale isit la, sèt gen yo ale isit la, sis gen yo ale isit la, ak kounye a senk an ak repete. Apre sa, mwen se bèl anpil k ap deplase li toujou ap. Se konsa, nan fen a, algorithm sa a nou pral rele li ensèsyon sort-- aktyèlman gen yon anpil nan travay, tou. Se jis diferan kalite travay pase Ben a. travay Ben a te gen m 'ale dèyè, yo soti tout tan tout tan an, chwazi pwochen an pi piti eleman ankò e ankò. Se konsa, li te sa a kalite trè vizyèl nan travay. Sa a lòt algorithm, ki se toujou correct-- li pral jwenn travay la done-- jis chanje kantite lajan an nan travay yo. Li sanble ke okòmansman w ap ekonomize, paske ou se jis fè fas ak chak eleman moute devan san yo pa mache tout wout la nan lis la tankou Ben te ye a. Men, pwoblèm nan se, espesyalman nan sa yo ka fou kote li nan tout bak, w ap jis kalite anvwayman travay la difisil jiskaske ou gen ranje erè ou yo. Se konsa, si ou ka imajine sa a uit ak sèt ak sis ak senk epi pita kat ak twa ak de k ap deplase wout yo atravè lis la, nou te jis chanje a kalite travay n ap fè. Olye pou yo fè li nan la kòmanse nan iterasyon mwen, Mwen jis fè li nan la nan fen chak iterasyon. Se konsa, li sanble ke sa a algorithm, tou, jeneralman yo rele sòt ensèsyon, se tou sou lòd la n okib. Li nan aktyèlman pa gen okenn pi bon, pa gen pi bon nan tout. Men tou, gen se yon apwòch twazyèm Mwen ta ankouraje nou yo konsidere, ki se sa a. Se konsa, ta kwè lis mwen an, pou senplisite ankò, se kat, yon sèl, twa, two-- jis kat chif yo. Ben te gen bon entwisyon, bon entwisyon imen anvan, pa ki nou fiks tout la lis eventually-- sòt ensèsyon. Mwen coaxed nou ansanm. Men, kite a konsidere nan pi senp fason yo ranje lis sa a. Lis sa a pa se Klase. Poukisa? Nan lang angle, eksplike poukisa li pa nan aktyèlman Ranje. Kisa sa vle di pa yo dwe klase? ELÈV: Li pa nan sekans. DAVID Malan: Se pa sekans. Ban m 'yon egzanp. ELÈV: Mete yo nan lòd. DAVID Malan: OK. Ban m 'yon egzanp plis espesifik. ELÈV: par lòd. DAVID Malan: Se pa moute lòd. Dwe plis presi. Mwen pa konnen sa ou vle di pa moute. Ki sa ki nan mal? ELÈV: pi piti a nan la nimewo se pa nan espas ki la an premye. DAVID Malan: Pi piti nimewo a pa nan espas ki la an premye. Gen plis espesifik. Mwen kòmanse trape sou. Nou ap konte, men sa ki nan soti nan lòd isit la? ELÈV: Nimerik sekans. DAVID Malan: Nimerik sekans. kalite Tout moun nan nan kenbe li isit lan-- trè wo nivo. Jis literalman di m 'sa ki nan mal tankou yon fòs senk ane-fin vye granmoun. ELÈV: Plus yon sèl. DAVID Malan: Ki sa ki nan sa? ELÈV: Plus yon sèl. DAVID Malan: Ki sa ou vle di plis yon? Ban m 'yon diferan senk ane-fin vye granmoun. Ki sa ki nan sa ki mal, manman? Ki sa ki nan sa ki mal, papa? Ki sa ou vle di sa a pa se Klase? ELÈV: Li pa plas la dwat. DAVID Malan: Ki sa ki nan pa nan plas la dwat? ELÈV: Kat. DAVID Malan: OK, bon. Se konsa, kat se pa kote li ta dwe. An patikilye, se dwa sa a? Kat ak yon sèl, premye a de nonb mwen wè. Èske sa se dwa? Non, yo ap parèt nan lòd, dwa? An reyalite, panse ke kounye a sou yon òdinatè, tou. Li ka sèlman gade nan petèt yon sèl, petèt de bagay sa yo nan once-- ak aktyèlman sèlman yon sèl bagay nan yon moman, men li ka omwen gade nan yon sèl bagay Lè sa a, nan pwochen bagay dwa akote li. Se konsa, yo sa yo nan lòd? Natirèlman pa. Se konsa, ou konnen ki sa? Poukisa nou pa nou pran ti bebe etap repare-pwoblèm sa a olye pou yo fè sa yo anpenpan algoritm tankou Ben, kote li te sòt de repare-l pa loupin nan lis la olye pou yo fè sa m 'te, kote Mwen jis kalite fiks li jan nou ale? Se pou nou jis literalman kraze la desann nosyon nan order-- lòd nimerik, rele li tou sa ou vle- nan konparezon sa yo pèr. Kat ak yon sèl. Èske sa se lòd ki kòrèk la? Se konsa nou ranje sa. Youn ak kat, ak Lè sa a nou pral jis kopi sa. Tout dwa, bon. Mwen fiks yon sèl ak kat. Twa ak de? No Se pou pawòl mwen matche ak dwèt mwen. Kat ak twa? Li pa nan lòd, se konsa mwen pral fè yon sèl, twa, kat, de. OK, bon. Koulye a, kat ak de? Nou bezwen ranje sa a, tou. Se konsa, yon sèl, twa, de, kat. Se konsa, se li Ranje? Non, men se li pi pre Ranje? Li se, paske nou fiks sa a erè, nou fiks erè sa a, epi nou fiks erè sa a. Se konsa, nou fiks twa erè joui. Toujou pa reyèlman gade Ranje, men li se objektivman pi pre Ranje paske nou fiks kèk nan moun erè. Koulye a, sa m 'fè apre sa? Mwen kalite te rive nan nan fen lis la. Mwen te sanble yo te fiks tout erè sa yo, men pa gen okenn. Paske nan ka sa a, kèk nimewo ta ka yo bul moute pi pre nan lòt nimewo ki yo toujou parèt nan lòd. Se konsa nou fè l 'ankò, epi mwen pral jis fè l 'nan plas moman sa a. Youn ak twa? Li nan amann. Twa ak de? Natirèlman pa gen okenn, kidonk kite a chanje sa. Se konsa, de, twa. Twa ak kat? Epi, koulye a kite a jis pou patikilyèman pedant isit la. Èske li Ranje? Ou moun konnen li la Ranje. Mwen ta dwe eseye ankò. Se konsa, Olivia ap pwopoze mwen eseye ankò. Poukisa? Paske yon òdinatè pa gen liksye a nan je moun nou an nan jis ensidan back-- OK, mwen fè. Ki jan òdinatè a detèmine ki se lis la kounye a Ranje? Mekanikman. Mwen ta dwe ale nan yon fwa plis, epi sèlman si mwen pa fè / jwenn nenpòt erè mwen ka Lè sa a, konkli kòm òdinatè a, YEP, nou ap bon yo ale. Se konsa, youn ak de, de, ak twa, twa ak kat. Koulye a, mwen ka définitivement di sa a se Ranje, paske mwen te fè pa gen okenn chanjman. Koulye a, li ta dwe yon ensèk ak jis tèt chaje si mwen, òdinatè a, mande kesyon sa yo menm ankò tann repons diferan. Pa ta dwe rive. Se konsa, kounye a se lis la Ranje. Malerezman, kouri lè nan se sa a algorithm tou n okib. Poukisa? Paske ou gen n nimewo, ak nan la pi move ka ou gen pou avanse pou nimewo N n fwa paske ou gen yo kenbe prale tounen nan tcheke ak genyen potansyèl pou ranje nimewo sa yo. Apre sa, nou kapab fè yon pi plis fòmèl analiz, tou. Se konsa, sa a se tout yo di nou te pran twa apwòch diferan, yon sèl nan yo imedyatman entwisyon koupe baton an soti nan Ben ensèsyon sijere mwen sòt yon sèl sa a kote ou kalite pèdi devan je nan forè a pou pyebwa yo okòmansman. Men, Lè sa si ou pran yon etap tounen, vwala, nou te fiks nosyon a klasman. Se konsa, sa a se, bay gabèl di, yon pi ba nivo petèt pase kèk nan moun sa yo lòt algoritm, men kite a wè si nou pa ka visualized sa yo pa fason pou sa a. Se konsa, sa a se kèk bèl lojisyèl ke yon moun te ekri lè l sèvi avèk ba kolore sa a, se pral fè sa ki annapre yo pou nou. Chak nan ba sa yo reprezante yon kantite. Taller ba a, pi gwo a nimewo a, ki pi piti ba a, ki pi piti a nimewo a. Se konsa, depreferans nou vle yon piramid bèl kote li kòmanse ti ak vin gwo, ak ki ta vle di ke ba sa yo yo Ranje. Se konsa, mwen pral ale pi devan epi chwazi, pou egzanp, algorithm Ben a first-- sòt seleksyon. Apre sa, remake sa li ap fè. Chemen an, yo te chwazi yo visualized sa a algorithm se ke, jis tankou m 'te mache nan lis mwen an, pwogram sa a ap mache nan lis li yo nan nimewo, en nan woz chak Nimewo ke li nan gade nan. Ak sa ki nan sou rive kounye a? Nimewo a pi piti ki I oswa Ben jwenn toudenkou vin demenaje ale rete nan nan konmansman an nan lis la. Apre sa, remake yo te fè degèpi nimewo a ke te gen, e ke sa a parfe amann. Mwen pa t 'jwenn nan ki nivo nan detay. Men, nou bezwen mete ladan nimewo yon kote, se konsa nou jis te deplase li nan nan plas louvri ki te kreye. Se konsa, mwen pral pi vit sa a moute, paske otreman li vin trè fatigan byen vit. Animation speed-- gen nou ale. Se konsa, kounye menm prensip Mwen te aplike, men ou ka kòmanse yo santi yo algorithm a, si ou pral, oswa wè li yon ti kras plis byen klè. Apre sa, sa a algorithm gen efè a nan chwazi pwochen eleman ki pi piti, se konsa w ap ale nan kòmanse wè li ranp moute sou bò gòch la. Yo, epi sou chak iterasyon, jan mwen pwopoze a, li fè sa yon ti kras mwens travay. Li pa gen yo ale tout wout la tounen nan fen a rete nan lis la, paske li deja konnen moun yo ranje. Se konsa, li kalite santi l tankou li nan akselere, menm si chak etap se pran menm kantite lajan an nan tan. Genyen sèlman mwens etap rete yo. Epi, koulye a ou ka kalite santi nan algorithm netwaye fen a nan li, ak tout bon kounye a li nan Ranje. Se konsa, sòt ensèsyon se tout fè. Mwen bezwen re-randomize etalaj la. Apre sa, remake mwen kapab jis kenbe randomize li, epi n ap jwenn yon apwoksimasyon nan apwòch la menm, sòt ensèsyon. Kite m 'ralanti li desann nan isit la. Ann kòmanse ke plis pase. One Stop. Se pou nou sote kat. Gen nou ale. Randomize yo etalaj. Ak isit la nou go-- sòt ensèsyon. Jwe. Remake li nan fè fas ak chak eleman li rankont touswit, men si li ki dwe nan avi a kote ki mal tout travay la ki gen yo rive. Nou dwe kenbe déplacement plis ak plis ankò eleman yo fè plas pou youn nan nou vle mete an plas. Se konsa, nou ap konsantre sou a kite fen nan lis la sèlman. Avi nou pa gen menm gade at-- nou pa gen make nan anyen woz a dwat la. Nou jis ap fè fas ak pwoblèm sa yo jan nou ale, men nou ap kreye yon anpil nan travay pou tèt nou toujou. Se konsa, si nou pi vit sa a moute kounye a pou yo ale nan fini, li gen yon santi yo diferan nan li tout bon. Li nan jis konsantre sou fen nan bò gòch men fè yon ti kras plis travay kòm needed-- kalite atenuasyon bagay sou yo, repare-bagay sa yo, men fè fas finalman ak chak eleman yon sèl nan yon tan jiskaske nou ale nan the-- byen, nou tout konnen ki jan sa a ki pral fini, se konsa li a yon ti kras underwhelming petèt. Men, lis la nan end-- la spoiler-- ki pral yo dwe klase. Se konsa, kite pou yo gade nan yon sèl yon dènye. Nou pa ka jis sote kounye a. Nou prèske la. De yo ale, yon sèl yo ale. Ak vwala. Ekselan. Se konsa, kounye a kite a fè yon sèl yon dènye, re-randomize ak sòt jarèt. Apre sa, remake isit la, espesyalman si mwen ralanti li desann, sa a kenbe swooping nan. Men, remake li jis fè pèr comparisons-- sòt de solisyon lokal yo. Men, le pli vit ke nou jwenn nan nan fen lis la nan woz, sa k ap pase fè yo rive ankò? Yeah, li nan pral fè yo kòmanse sou, paske li sèlman fiks erè pèr. Apre sa, ki ta ka fè yo konnen ankò lòt moun. Se konsa, si ou vitès sa a leve, ou pral wè ke, anpil jan non an implique, ki pi piti a elements-- ou pito, elements-- yo ki pi gwo ap kòmanse jarèt moute sou tèt la, si ou pral. Ak eleman yo ki pi piti yo kòmanse jarèt desann nan bò gòch la. Ak tout bon, sa a, se kalite efè a vizyèl kòm byen. Se konsa, sa a pral fini fini nan yon fason trè menm jan an, tou. Nou pa bezwen rete sou yon sèl sa a an patikilye. Kite m 'louvri sa a kounye a, tou. Genyen yon kèk lòt algoritm klasman nan mond lan, yon kèk nan yo ki yo te kaptire isit la. Apre sa, espesyalman pou elèv k ap aprann ki pa nesesèman vizyèl oswa matematik, jan nou te fè anvan, nou kapab tou fè sa audially si nou asosye yon son ak sa. Epi jis pou plezi, isit la nan yon kèk algoritm diferan, ak youn nan yo an patikilye w ap ale nan remake yo rele "sòt unifye." Li se aktyèlman yon fondamantalman pi bon algorithm, sa yo ki rantre sòt, youn nan yo menm ki w ap sou yo wè, se pa lòd nan n okib. Li nan sou lòd la n fwa ouvri sesyon nan n, ki se aktyèlman pi piti e konsa pi vit pase sa yo lòt twa. Apre sa, nan yon koup lòt yo menm komik ke nou pral wè. Se konsa, isit la nou ale ak kèk son. Sa a se sòt ensèsyon, se konsa ankò li jis fè fas ak eleman yo jan yo vini. Sa a se sòt ti wonn, se konsa li konsidere yo pè nan yon tan. Epi ankò, eleman yo pi gwo yo ebulisyon moute sou tèt la. Next moute sòt seleksyon. Sa a se algorithm Ben a, kote ankò li te chwazi iterativman eleman nan pwochen te pi piti a. Epi ankò, kounye a ou ka vrèman tande ke li nan vitès moute men se sèlman nan byen lwen tèlman kòm li ap fè pi piti ak mwens travay sou chak iterasyon. Sa a se pi vit yon sèl la, rantre sòt, ki se klasman grap nan nimewo ansanm ak Lè sa a konbine yo. Se konsa, look-- bò gòch la se mwatye deja klase. Koulye a, li a klasman mwatye nan dwa, ak kounye a li k ap pase yo konbine yo nan yon sèl. Sa a se yon bagay yo rele "luten sòt." Epi ou ka kalite wè ke li pral retounen ak lide, repare-travay yon ti jan isit la ak gen anvan li montan nan nouvo travay. Epi sa a, li. Genyen yon lòt sòt, ki se vrèman jis pou rezon akademik, rele "estipid sòt," ki te pran done ou a, asòti li owaza, ak Lè sa a chèk si li se Klase. Men, si li pa bon, li re-asòti li owaza, chèk si li nan klase, Si nou pa dakò repete. Ak nan teyori, probabilistically sa a pral konplete, men apre byen yon ti jan nan tan. Li pa pi plis nan efikas nan algoritm. Se konsa, nenpòt kesyon sou moun algoritm patikilye oswa yon lòt bagay ki gen rapò a, tou? Oke, kite la kounye a toumante apa ki sa tout liy sa yo yo se ke Mwen te desen ak sa m ap asepte òdinatè a kapab fè anba kapo a. Mwen ta diskite ke tout nan nimewo sa yo Mwen kenbe drawing-- yo bezwen jwenn estoke yon kote nan memwa. Nou pral debarase m de sa a Guy kounye a, tou. Se konsa, yon moso nan memwa nan yon computer-- se konsa RAM DIMM se sa nou fouye pou yè, doub memwa aliye module-- sanble tankou sa a. Epitou, chak nan bato sa yo ti kras nwa se kèk kantite bytes, tipikman. Lè sa a, broch yo lò yo renmen an fil ki konekte li nan òdinatè a, ak tablo a Silisyòm vèt se jis sa ki kenbe tout bagay tout ansanm. Se konsa, sa sa a vrèman vle di? Si m 'kalite trase foto sa a menm, se pou yo ta kwè pou senplisite ki DIMM sa a, doub aliye modil memwa, se youn jigokte nan RAM, yon sèl jigokte nan memwa, ki se ki jan anpil bytes total? Youn jigokte se konbyen bytes? Plis pase sa. 1,124 se kilo, 1,000. Mega se milyon dola. GIGA se yon milya dola. Èske mwen kouche? Èske nou ka menm li etikèt la? Sa a se aktyèlman 128 jigokte, se konsa li plis. Men, nou pral pretann sa a se jis yon jigokte. Se konsa, sa vle di gen nan yon milya dola bytes nan memwa disponib nan m ' oswa 8 milya dola Bits, men nou ap ale yo pale an tèm de bytes kounye a, fè pi devan. Se konsa, sa sa vle di se sa a se youn multiple, sa a se yon lòt multiple, sa a se yon lòt multiple, epi si nou reyèlman te vle yo dwe espesifik nou ta gen trase yon milya dola ti kras kare. Men, sa ki sa vle di? Oke, kite m 'jis rale nan sou foto sa a. Si mwen te gen yon bagay ki sanble tankou sa a kounye a, sa a, se kat bytes. Se konsa, mwen te kapab mete kat nimewo isit la. Youn, de, twa, kat. Oswa mwen te kapab mete kat lèt oswa senbòl. "Hey!" t 'ka ale la a, paske chak nan lèt yo, nou diskite pi bonè, ta ka reprezante ak wit Bits oswa ASCII oswa yon multiple. Se konsa, nan lòt mo, ou kapab mete 8 milya dola bagay sa yo andedan nan sa a bwa youn nan memwa. Kounye a ki sa sa vle di mete bagay sa yo tounen nan do nan do nan memwa tankou sa a? Sa a se sa yon pwogramè ta ka rele yon "etalaj." Nan yon pwogram òdinatè, ou pa panse sou pyès ki nan konpitè kache, se pou chak. Ou jis panse a tèt ou tankou ke li gen aksè a yon total milya dola bytes, epi ou ka nenpòt sa ou vle ak li. Men, pou konvenyans li nan jeneralman itil kenbe dwat memwa ou pwochen youn ak lòt tankou sa a. Se konsa, si mwen rale nan sou sa a men paske nou ap sètènman pa pral trase yon milya dola ti kras squares-- se pou yo ta kwè ke tablo sa a reprezante ki baton nan memwa kounye a. Apre sa, mwen pral jis trase kòm anpil ke mwen makè fini moute bay m 'isit la. Se konsa, kounye a nou gen yon baton nan memwa sou tablo a ki nan te resevwa yon sèl, de, twa, kat, senk, sis, yonn, de, twa, kat, senk, sis, seven-- se konsa 42 bytes nan memwa sou total la ekran. Mèsi. Wi, te fè aritmetik mwen dwat. Se konsa, 42 bytes nan memwa isit la. Se konsa, sa sa a aktyèlman vle di? Oke, yon pwogramè konpitè ta aktyèlman jeneralman panse a memwa sa a kòm adressable. Nan lòt mo, chak youn nan sa yo kote nan memwa, nan pyès ki nan konpitè, gen yon adrès inik. Li pa kòm konplèks kòm Youn BRATTLE Square, Cambridge, Mass., 02138. Olye de sa, li nan jis yon kantite. Sa a se nimewo multiple zewo, sa a se yon sèl, sa a se de, sa a se twa, ak sa a se 41. Tann yon minit. Mwen te panse mwen te di 42 yon ti moman de sa. Mwen te kòmanse konte nan zewo, se konsa sa a, se aktyèlman kòrèk. Koulye a, nou pa bezwen aktyèlman trase li kòm yon griy, epi si ou trase li kòm yon griy Mwen panse ke bagay sa yo aktyèlman jwenn yon ti jan erè ladann. Ki sa ki yon pwogramè ta, nan tèt ou pwòp tèt li oswa li, jeneralman panse a sa a memwa kòm se jis tankou yon kasèt, tankou yon moso nan tep maskin ki jis ale sou yo ak sou sou pou tout tan oswa jiskaske ou kouri soti nan memwa. Se konsa, yon fason pi plis komen nan trase ak jis panse osijè de memwa ta dwe ke sa a se multiple zewo, yon sèl, de, twa, ak Lè sa a dot, dot, dot. Epi ou gen 42 bytes sa yo manm, menm menm si li ta ka fizikman aktyèlman gen yon bagay ki pi tankou sa a. Se konsa, si ou kounye a panse a ou memwa tankou sa a, jis tankou yon tep, sa a se sa yon pwogramè ankò ta ka rele yon etalaj de memwa. Men, lè ou vle aktyèlman magazen yon bagay nan memwa yon òdinatè a, anjeneral ou fè bagay sa yo magazen tounen-a-tounen nan tounen-a-tounen. Se konsa, nou ve yo te ap pale de chif yo. Lè m 'te vle rezoud pwoblèm tankou kat, yon sèl, twa, de, menm si mwen te jis desen sèlman nimewo kat la, yon sèl, twa, de sou tablo a, òdinatè a ta reyèlman gen konfigirasyon sa a nan memwa. Ak sa ki ta dwe pwochen nan la de nan memwa òdinatè a? Oke, gen nan pa gen repons nan sa. Nou pa vrèman konnen. Se konsa, lontan ke la òdinatè pa bezwen li, li pa gen yo pran swen sa se pwochen nan nimewo yo li fè sa swen sou. Lè m 'te di byen bonè ke yon òdinatè ka sèlman gade nan yon sèl adrès nan yon moman, sa a se kalite pou ki rezon. Pa kontrèman ak yon dosye jwè ak yon tèt lekti sèlman ke yo te kapab fè yon gade nan yon sèten Groove nan yon dosye fin vye granmoun-lekòl fizik nan yon moman, Menm jan an tou kapab yon mèsi òdinatè CPU li yo ak li yo Intel enstriksyon seri, nan mitan ki gen enstriksyon se li soti nan memwa oswa sove nan memory-- yon òdinatè ka sèlman gade nan yon sèl kote nan yon time-- pafwa yon konbinezon de yo, men vrèman sèlman yon sèl kote nan yon tan. Se konsa, lè nou te fè sa yo algoritm divès kalite, Mwen pa jis ekri nan yon vacuum-- kat, yon sèl, twa, de. moun ki nimewo aktyèlman fè pati yon kote fizik nan memwa. Se konsa, gen ti ti kras tranzistò oswa kèk kalite de elektwonik anba a kapo estoke valè sa yo. Ak nan total, konbyen Bits yo patisipe kounye a, jis yo dwe klè? Se konsa, sa a se kat bytes, oswa kounye a li nan 32 Bits total. Se konsa, gen aktyèlman 32 zewo ak yo menm konpozisyon kat bagay sa yo. Genyen nan menm plis sou isit la, men ankò nou pa pran swen sou sa. Se konsa, kounye a kite a mande yon lòt kesyon lè l sèvi avèk memwa, paske ke nan fen a nan jounen an se nan divèjans. Pa gen pwoblèm sa nou ta ka fè ak òdinatè a, nan fen jou a pyès ki nan konpitè se toujou nan menm anba kapo a. Kouman pou m ta magazen yon mo nan isit la? Oke, yon mo nan yon òdinatè tankou "Hey!" ta dwe estoke jis tankou sa a. Men, si ou te vle yon pi long mo, ou ka senpleman recouvrir sa ki epi di yon bagay tankou "alo" ak magazen ki isit la. Se konsa, isit la, tou, sa a contiguousness se aktyèlman yon avantaj, paske yon òdinatè ka jis li de dwat a gòch. Men, isit la yon kesyon. Nan kontèks la nan pawòl Bondye sa a, h-e-l-l-o, pwen esklamasyon, ki jan ta ka òdinatè a konnen a ki kote mo kòmanse ak ki kote pawòl Bondye a fini? Nan kontèks la nan nimewo, ki jan fè òdinatè a konnen konbyen tan sekans nan nimewo se oswa kote li kòmanse? Oke, li vire out-- epi nou pa pral ale twòp nan nivo sa a nan detail-- òdinatè deplase bagay alantou an memwa literalman pa fason pou adrès sa yo. Se konsa, nan yon òdinatè, si w ap ekri kòd nan magazen bagay sa yo tankou mo, sa w ap reyèlman fè se tape ekspresyon ki sonje ki kote nan memwa òdinatè a pawòl sa yo ye. Se konsa, kite m 'fè yon trè, trè senp egzanp. Mwen pral ale pi devan epi louvri moute yon pwogram tèks senp, ak mwen pral yo kreye yon dosye rele hello.c. Pifò nan enfòmasyon sa a nou pa pral antre nan nan gwo detay, men mwen pral ekri yon pwogram nan lang sa menm, C. Sa a se byen lwen plis entimidasyon, Mwen ta diskite, pase grafouyen, men li la trè menm jan nan Lespri Bondye. An reyalite, sa yo Curly braces-- ou kapab kalite panse a ki sa mwen jis te fè tankou sa a. Se pou yo fè sa a, aktyèlman. Lè drapo vèt klike, fè sa ki annapre yo. Mwen vle enprime soti "hello." Se konsa, sa se kounye a pseudocode. Mwen kalite flou liy yo. Nan C, lang sa a mwen ap pale sou, sa a liy ekri an lèt detache alo aktyèlman vin "printf" ak kèk parantèz ak yon semi-kolon. Men, li la egzak lide la menm. Lè sa a trè user-zanmitay "Lè vèt drapo klike" vin tounen pi plis Esoteric "int anile prensipal la." Lè sa a vrèman pa gen okenn kat, se konsa mwen jis ale nan inyore sa. Men, aparèy òtopedik yo Curly yo renmen an moso devinèt koube tankou sa a. Se konsa, ou kapab kalite devine. Menm si ou pa janm te pwograme anvan, sa pwogram sa a pwobableman fè? Pwobableman simagri alo ak yon pwen esklamasyon. Se konsa, kite a eseye sa. Mwen pral sove li. Lè sa a se, ankò, yon trè fin vye granmoun anviwònman lekòl la. Mwen pa ka klike sou, mwen pa ka trennen. Mwen gen tape kòmandman. Se konsa, mwen vle kouri pwogram mwen, se konsa Mwen ta ka fè sa, tankou hello.c. Sa a dosye a mwen kouri. Men, tann, mwen manke yon etap. Ki sa nou di se yon nesesè etap pou yon lang tankou C? Mwen te jis ekri sous Kòd, men ki sa mwen bezwen? Yeah, mwen bezwen yon du. Se konsa, sou Mac m 'isit la, mwen gen yon pwogram ki rele GCC, GNU C du, ki pèmèt m 'fè sa a men vire kòd sous mwen an, nou pral rele l ', machin kòd. Apre sa, mwen ka wè ke, ankò, jan sa a, sa yo yo zewo yo ak moun yo mwen jis kreye nan kòd sous mwen, tout nan zewo yo ak inite. Men, si mwen vle kouri mwen program-- bagay sa yo rive yo dwe rele a.out pou istorik reasons-- "hello." Mwen ka kouri l 'ankò. Hello, hello, hello. Epi li sanble yo dwe ap travay. Men, sa vle di yon kote nan mwen memwa òdinatè a se mo yo h-e-l-l-o, pwen esklamasyon. Epi li vire soti, menm jan yon sou kote, ki sa yon òdinatè ta tipikman fè sa ke li konnen ki kote bagay sa yo kòmanse ak end-- li a pral mete yon senbòl espesyal isit la. Apre sa, konvansyon an se yo mete nan Nimewo zewo nan fen yon mo pou ke ou konnen ki kote li aktyèlman fini, pou ke ou pa kenbe enprime soti pi plis ak plis karaktè pase ou aktyèlman gen entansyon. Men, Takeaway a isit la, menm menm si sa a se jistis Esoteric, se ke li nan finalman relativman senp. Ou te resevwa sòt de yon tep, yon vid espas ki te sou ou ka ekri lèt yo. Ou tou senpleman gen gen yon senbòl espesyal, tankou abitrèman nimewo a zewo, yo mete nan fen Mo ou pou sa òdinatè a konnen, oh, mwen ta dwe sispann enprime apre Mwen wè pwen an esklamasyon. Paske bagay la pwochen gen se yon valè ASCII nan zewo, oswa pèsonaj la nil kòm yon moun ta rele li. Men, gen nan kalite yon pwoblèm isit la, e kite yo retounen tounen nan nimewo pou yon moman. Sipoze ke mwen fè, an reyalite, gen yon etalaj nan nimewo, ak ta kwè ke nan pwogram mwen ekri se tankou yon liv klas pou yon pwofesè ak yon sal klas pwofesè yo. Ak pwogram sa a pèmèt l 'oswa li tape nan nòt elèv yo ' sou ti tès. Apre sa, ta kwè ke elèv la vin 100 sou premye egzamen yo, petèt tankou yon 80 sou yon sèl kap vini an, lè sa a yon 75, Lè sa a, yon 90 Sou katriyèm egzamen an. Se konsa, nan pwen sa a nan istwa a, etalaj la se nan gwosè kat. Genyen absoliman plis memwa nan la òdinatè, men etalaj la, se konsa pale, se nan gwosè kat. Sipoze kounye a ke pwofesè a vle yo asiyen yon egzamen senkyèm nan klas la. Oke, youn nan bagay ki li oswa li te ki pral dwe fè se kounye a magazen yon valè plis isit la. Men, si etalaj la pwofesè a gen ki te kreye nan pwogram sa a se nan gwosè pou, youn nan pwoblèm nan ak yon etalaj se ke ou pa kapab jis kenbe ajoute nan memwa. Paske, sa ki si yon lòt pati nan la pwogram gen pawòl Bondye a "hey" dwa a? Nan lòt mo, memwa mwen kapab itilize pou anyen nan yon pwogram. Men, si nan avanse mwen tape nan, hey, Mwen vle D 'kat nòt egzamen, yo ta ka ale isit la ak isit la. Men, si ou toudenkou chanje lide w pita e di mwen vle yon egzamen senkyèm nòt, ou pa ka jis mete l 'tout kote ou vle, paske sa si sa a se memwa ki te itilize pou yon bagay else-- kèk lòt pwogram oswa kèk lòt karakteristik nan pwogram lan ke w ap kouri? Se konsa, ou gen yo panse an avanse ki jan ou vle nan magazen done ou a, paske kounye a ou te pentire tèt ou nan yon kwen dijital. Se konsa, yon pwofesè ta ka olye pou di lè li ap ekri yon pwogram nan magazen li oswa li klas, ou konnen ki sa? Mwen pral jwenn mande, lè li ap ekri pwogram mwen, ke mwen vle zewo, yonn, de, twa, kat, senk, sis, uit klas totalize. Se konsa, yon sèl, de, twa, kat, senk, sis, sèt, uit. Pwofesè a ka jis sou-asiyen memwa lè li ap ekri pwogram li oswa li ak di, ou konnen ki sa? Mwen pa janm ale nan bay plis pase uit ti tès nan yon semès. Se jis fou. Mwen pap janm asiyen sa. Se konsa, ki fason sa a li gen nan fleksibilite nan nòt magazen elèv, tankou 75, 90, e petèt youn siplemantè kote elèv la te resevwa siplemantè kredi, 105. Men, si pwofesè a pa janm sèvi ak twa espas sa yo, gen nan yon Takeaway entwisyon isit la. Li oswa li te se jis gaspiye espas. Se konsa, nan lòt mo, gen nan sa a arbitraj komen nan pwogram kote ou ka swa asiyen egzakteman kòm anpil memwa jan ou vle, tèt la nan ki se ke w ap super efficient-- ou pa ap ke yo te inutil nan all-- men anba kote an nan yo ki se sa ki si ou chanje lide w lè lè l sèvi avèk pwogram nan ke ou vle nan magazen plis done pase ou orijinal gen entansyon. Se konsa, petèt solisyon an se, lè sa a, ekri pwogram ou nan yon fason yo ke yo sèvi ak plis memwa pase yo aktyèlman bezwen. Sa a jan ou pa ap ale kouri antre nan ke pwoblèm, men w ap ke yo te inutil. Ak memwa a plis pwogram ou itilize, kòm nou diskite yè, mwens la memwa sa a, se disponib pou lòt pwogram, pi bonè nan òdinatè w lan ta ka ralanti desann paske nan memwa vityèl. Se konsa, solisyon an ideyal ta ka ki sa? Anba-répartition sanble move. Plis pase-répartition sanble move. Se konsa, sa ta kapab yon solisyon pi byen? Reatribue. Gen plis dinamik. pa fòse tèt ou yo chwazi yon priori, nan kòmansman an, sa ou vle. Epi sètènman pa sou-asiyen, pou ou gen inutil. Se konsa, nan reyalize objektif sa, nou bezwen voye jete estrikti sa a done, se konsa pale, ale. Se konsa, sa yon pwogramè pral tipikman sèvi ak se yon bagay yo rele pa yon etalaj men yon lis lye. Nan lòt mo, li oswa li te pral kòmanse panse nan memwa yo tankou se te kalite yon fòm ke yo ka trase nan fason sa a. Si m 'vle nan magazen yon sèl nimewo nan yon program-- se konsa li a mwa septanm nan, Mwen te ban elèv mwen yon egzamen; mwen vle nan magazen premye egzamen elèv la, epi yo te resevwa yon 100 sou l-- mwen mwen pral jwenn mande òdinatè mwen an, pa fason pou pwogram nan Mwen te ekri nan Liv la pou yon ti moso nan memwa. Men, mwen pral nan magazen an Nimewo 100 nan li, e ke sa a li. Lè sa a, yon kèk semèn pita lè mwen jwenn dezyèm egzamen m 'yo, ak li lè yo tape nan ki 90%, mwen pral mande òdinatè a, hey, òdinatè, Mwen kapab gen yon lòt ti moso nan memwa? Li nan ale nan ban m 'sa a moso vid nan memwa. Mwen pral mete nan nimewo a 90, men nan pwogram mwen yon jan kanmenm oswa other-- epi nou pa pral enkyete sou sentaks la pou sa a men mwen bezwen yon jan kanmenm chèn bagay sa yo ansanm. Apre sa, mwen pral chèn yo ansanm ak sa ki sanble yon flèch isit la. egzamen nan twazyèm ki vini leve, Mwen pral di, hey, òdinatè, ban m 'yon lòt ti moso nan memwa. Men, mwen pral yo mete ajenou tou sa li te, tankou 75, ak mwen gen chenn sa a ansanm kounye a yon jan kanmenm. Katriyèm egzamen vini ansanm, e petèt sa a, se nan direksyon nan fen semès la. Ak nan pwen sa a pwogram mwen ta ka lè l sèvi avèk memwa tout lòt peyi sou plas la, tout lòt peyi sou fizikman. Se konsa, jis pou anvwaye, mwen se ale nan trase sa a soti quiz-- nou bliye sa l 'te; mwen panse ke petèt yon 80 oswa something-- fason sou isit la. Men, sa a amann, paske pictorially Mwen pral trase liy sa a. Nan lòt mo, an reyalite, nan pyès ki nan konpitè òdinatè w lan an, nòt nan premye ta ka fini isit la paske li a dwa nan kòmansman an nan semès la. Youn nan pwochen ta ka fini isit la paske yon ti jan nan tan pase ak pwogram nan kenbe kouri. nòt kap vini an, ki te yon 75, ta ka sou isit la. Ak nòt ki sot pase a ta ka yon 80, ki se sou isit la. Se konsa, an reyalite, fizikman, sa a ta kapab sa memwa òdinatè w lan an sanble. Men, sa a se pa yon mantal itil paradigm pou yon pwogramè konpitè. Poukisa ou ta dwe pran swen kote a èk done ou se fini monte? Ou jis vle nan magazen done. Sa a se kalite tankou diskisyon nou an pi bonè nan desen kib la. Poukisa ou pran swen sa ang a se nan kib la ak ki jan ou gen vire fè desen li? Ou jis vle yon kib. Menm jan an tou isit la, ou jis vle liv klas. Ou jis vle panse nan sa a kòm yon lis nimewo. Ki moun ki traka li montre kouman li a aplike nan pyès ki nan konpitè? Se konsa, distraksyon an kounye a se foto sa a isit la. Sa a se yon lis lye, kòm yon pwogramè ta rele l ', tèl degre ke ou gen yon lis, evidamman nan nimewo. Men, li la lye pictorially pa fason pou flèch sa yo, ak tout flèch sa yo sont- anba kapo a, si w ap kirye, sonje ke pyès ki nan konpitè fizik nou an ki gen adrès zewo, yonn, de, twa, kat. Tout flèch sa yo, se se tankou yon kat jeyografik oswa direksyon, kote si 90 is-- kounye a Mwen te rive nan konte. Zewo, yon sèl, de, twa, kat, senk, sis, sèt. Li sanble ke 90 an se nan memwa adrès nimewo sèt. Tout flèch sa yo, se se tankou yon ti bouyon an papye ki nan bay direksyon an pwogram ki di swiv kat jeyografik sa a pou li ale nan kote sèt. Apre sa, ou pral jwenn nan dezyèm nòt egzamen elèv la. Pandan se tan, 75-- si mwen kontinye sa a, sa a se sèt, uit, nèf, 10, 11, 12, 13, 14, 15. Sa a lòt flèch jis reprezante yon kat jeyografik nan kote memwa 15. Men, ankò, pwogramè a jeneralman fè pa pran swen sou nivo sa a nan detay. Ak nan pifò chak pwogram lang jodi a, pwogramè a pa pral menm konnen ki kote nan memwa nimewo sa yo aktyèlman yo. Tout li gen nan swen sou se yo ke yo ap yon jan kanmenm lye ansanm nan yon estrikti done tankou sa a. Men, li vire soti pa yo ka resevwa twò teknik. Men, jis paske nou kapab petèt peye gen diskisyon sa a isit la, ta kwè ke nou revize pwoblèm sa a isit la nan yon etalaj. Se pou nou wè si nou regrèt pral isit la. Sa a se 100, 90, 75, ak 80. Kite m 'yon ti tan fè reklamasyon sa a. Sa a se yon etalaj, epi ankò a, essayant karakteristik yon etalaj se ke tout nan done ou se tounen nan tounen nan tounen nan memory-- literalman youn multiple oswa petèt kat bytes, kèk nimewo fiks de bytes ale. Nan yon lis lye, ki nou ta ka trase tankou sa a, anba kapo a ki konnen ki kote sa ki bagay se? Li pa menm bezwen koule tankou sa a. Gen kèk nan done yo ta ka tounen nan bò gòch la moute a. Ou pa menm konnen. Se konsa, ak yon etalaj, ou gen yon karakteristik li te ye tankou aksè o aza. Ak sa ki aksè o aza vle di se ke òdinatè a ka sote imedyatman nan nenpòt kote nan yon etalaj. Poukisa? Paske òdinatè a konnen ki kote nan premye se zewo, yonn, de, ak twa. Se konsa, si ou vle ale soti nan sa a eleman nan eleman kap vini an, ou literalman, nan la lide òdinatè a, jis ajoute yon sèl. Si ou vle pou yo ale nan eleman nan twazyèm, jis ajoute yonn-eleman kap vini an, jis ajoute yon sèl. Sepandan, nan vèsyon sa-a nan istwa a, ta kwè òdinatè a se kounye a kap nan oswa fè fas ak nimewo a 100. Kouman nou ka jwenn nan pwochen an klas nan liv la klas la? Ou dwe pran sèt etap, ki se abitrè. Pou li ale nan youn nan pwochen, ou gen pran yon lòt wit macheskalye pou li ale nan 15. Nan lòt mo, li pa yon diferans konstan ant nimewo yo, e konsa li jis pran nan òdinatè plis tan se pwen an. òdinatè a gen fè rechèch nan memwa nan lòd ou jwenn sa ou ap chèche pou. Se konsa, Lè nou konsidere ke yon etalaj gen tandans ka yon done vit structure-- paske ou ka literalman jis fè senp aritmetik epi pou yo jwenn kote ou vle yo ajoute yon, pou instance-- yon lis lye, ou touye bèt n'ap ofri ki karakteristik. Ou pa ka jis ale soti nan premye nan dezyèm bay twazyèm nan katriyèm. Ou gen yo swiv kat la. Ou dwe pran plis etap pou li ale nan valè sa yo, ki ta sanble yo gen ajoute yon pri. Se konsa, nou ap peye yon pri, men sa ki te karakteristik nan ki Dann te ap chèche isit la? Ki sa yon lis lye aparamman pèmèt nou fè, ki te orijin nan istwa sa a an patikilye? Egzakteman. Yon gwosè dinamik nan li. Nou ka ajoute nan lis sa a. Nou ka menm retresi lis la, se konsa ke nou ap sèlman lè l sèvi avèk kòm anpil memwa jan nou aktyèlman vle ak sa nou ap pa janm sou-répartition. Koulye a, jis yo dwe reyèlman lav-serye, gen nan yon pri kache. Se konsa, ou pa ta dwe jis kite m 'konvenk ou ke sa a se yon arbitraj irezistib. Genyen yon lòt pri kache isit la. Benefis la, yo dwe klè, se ke nou jwenn dynamism. Si m 'vle yon lòt eleman, mwen ka jis trase li, li mete yon nimewo nan la. Lè sa a, mwen kapab konekte li ak yon foto isit la, Lè nou konsidere ke sou isit la, ankò, si mwen te pentire tèt mwen nan yon kwen, si yon lòt bagay se deja lè l sèvi avèk memwa a isit la, mwen se soti nan chans. Mwen te pentire tèt mwen nan kwen an. Men, sa ki nan kache nan koute nan foto sa a? Li pa jis kantite lajan an nan tan ke li pran yo ale soti isit la isit la, ki se sèt etap, lè sa a uit etap, ki se pi plis pase yon sèl. Ki sa ki nan yon lòt pri kache? Pa sèlman tan. Lòt enfòmasyon ki nesesè yo reyalize foto sa a. Yeah, ki kat jeyografik, moun Scraps ti kras nan papye, jan mwen kenbe dekri yo kòm. Sa yo arrows-- sa yo se pa gratis. Yon computer-- ou konnen ki sa yon òdinatè te genyen an. Li te gen zewo ak inite. Si ou vle reprezante yon flèch oswa yon kat jeyografik oswa yon nimewo, ou bezwen kèk memwa. Se konsa, pri a lòt ou peye pou yon lis lye, yon syans òdinatè komen resous, se tou espas. Ak tout bon se konsa, se konsa souvan, nan mitan konpwomi yo nan desine jeni lojisyèl sistèm se tan ak galeri- se de nan engredyan ou, de nan engredyan pi koute chè ou yo. Sa a se Des m 'plis tan paske mwen gen yo swiv kat jeyografik sa a, men li la tou Des m 'plis espas paske mwen gen kenbe kat jeyografik sa a alantou. Se konsa, espwa a, menm jan nou te kalite diskite sou yè ak jodi a, se ke benefis ki genyen pral depasse depans sa yo. Men, gen nan pa gen solisyon evidan isit la. Petèt li se better-- yon rapid la ak sal, kòm Kareem pwopoze earlier-- voye jete memwa nan pwoblèm nan. Jis achte plis memwa, panse mwens di sou rezoud pwoblèm nan, ak rezoud li nan yon fason pi fasil. Ak tout bon pi bonè, lè nou te pale de konpwomi, li pa t 'espas nan òdinatè a ak tan. Li te tan pwomotè, ki se ankò yon lòt resous. Se konsa, ankò, li nan zak balanse sa a ap eseye deside ki nan bagay sa yo yo ou vle yo ap depanse? Ki se pi piti chè a? Ki vin bay rezilta yo pi byen? Yeah? Vreman vre. Nan ka sa a, si w ap reprezante nimewo nan maps-- la sa yo yo rele yo nan plizyè lang "Endikasyon" oswa "adrès" - li nan doub espas ki la. Sa pa bezwen tankou move jan doub si kounye a nou ap jis estoke chif yo. Sipoze ke nou te estoke dosye pasyan nan yon hospital-- se konsa non Pierson la, nimewo telefòn, nimewo sekirite sosyal, doktè listwa. bwat Sa a ta kapab anpil, pi gwo anpil, nan ka sa yon ti konsèy ti kras, adrès ki nan pwochen an element-- li pa yon kontra gwo. Li nan tankou yon plizyer koute li pa gen pwoblèm. Men, nan ka sa a, yeah, li nan yon double. Bon kesyon. Se pou nou pale sou tan yon ti kras pi plis konkrètman. Ki sa ki nan tan an kouri nan chèche lis sa a? Sipoze mwen te vle rechèch nan tout klas elèv la, ak gen nan n klas nan sa a estrikti done. Isit la, tou, nou ka prete vokabilè a nan pi bonè. Sa a se yon estrikti done lineyè. Big O nan n se sa ki oblije jwenn nan fen a nan estrikti sa a done, whereas-- epi nou pa gen pou wè sa a fè anvan yon etalaj ba ou sa ki rele konstan tan, ki vle di yon sèl etap oswa de etap oswa 10 steps-- pa gen pwoblèm. Li se yon nimewo fiks yo. Li te gen anyen fè ak gwosè a nan etalaj la. Ak rezon an pou sa, ankò, se aksè o aza. Òdinatè a ka jis imedyatman Ale nan yon lòt kote, paske yo ap tout menm bagay la distans soti nan tout lòt bagay. Pa gen okenn panse enplike nan sa. Tout dwa. Se konsa, si mwen kapab, kite m 'eseye penti de foto final la. Yon yon sèl trè komen ke yo rekonèt kòm yon tab regle. Se konsa, yo motive diskisyon sa a, kite m 'panse osijè de ki jan fè sa a. Se konsa, kouman sou sa a? Sipoze ke pwoblèm nan nou vle rezoud kounye a ap aplike nan yon dictionary-- se konsa yon pakèt antye nan mo angle oswa kèlkeswa sa. Ak objektif la se yo dwe kapab reponn kesyon nan fòm lan se sa a yon mo? Se konsa, ou vle aplike yon korektè période, jis tankou yon diksyonè fizik ke ou ka gade bagay yo nan. Sipoze m 'te fè sa ak yon etalaj. Mwen te kapab fè sa a. Apre sa, ta kwè mo sa yo yo se pòm ak bannann ak Kantaloup. Apre sa, mwen pa ka panse a fwi ki kòmanse ak d, se konsa nou ap jis ale nan gen twa fwi. Se konsa, sa a se yon etalaj, epi nou ap estoke tout nan mo sa yo an nan diksyonè sa a kòm yon etalaj. Kesyon an, lè sa a, se ki jan lòt moun , ou te kapab magazen enfòmasyon sa a? Oke, mwen kalite fason ou kapab triche isit la, paske chak nan lèt sa yo nan pawòl Bondye a se reyèlman yon multiple endividyèl elèv yo. Se konsa, si mwen reyèlman te vle fè lav-serye, mwen ta dwe reyèlman dwe divize sa a moute nan anpil pi piti fragman nan memwa, epi nou ta ka fè egzakteman sa. Men, nou ap ale nan kouri antre nan pwoblèm nan menm jan ak anvan. E si, kòm Merriam Webster oswa Oxford fè chak year-- yo ajoute mo dictionary-- nan nou pa fè sa nesesèman vle nan penti tèt nou nan yon kwen ak yon etalaj? Se konsa, olye, petèt yon apwòch pi entelijan se yo mete pòm nan ne pwòp li yo oswa bwat, jan nou ta ka di, fig, ak Lè sa a, isit la nou gen Kantaloup. Apre sa, nou fisèl bagay sa yo ansanm. Se konsa, sa a se etalaj la, ak sa a se lis la lye. Si ou pa kapab byen wè, li jis di "etalaj," ak sa a di "lis." Se konsa, nou gen menm bagay la tou pwoblèm egzak tankou anvan, kijan nou genyen kounye a dynamism nan lis lye nou an. Men, nou gen yon diksyonè san patipri ralanti. Sipoze mwen vle yo gade jiska yon mo. Li ta ka pran m 'gwo O n etap, paske pawòl Bondye a ta ka gen tout wout la nan fen lis la, tankou Kantaloup. Epi li vire soti ki nan pwogram, sòt nan grail a apa pou Bondye nan done estrikti, se yon bagay ki ba ou konstan tan tankou yon etalaj men ki toujou ba ou dinamik. Se konsa, nou ka gen pi bon nan tou de mond? Ak tout bon, gen yon bagay rele tab la regle ki pèmèt ou fè egzakteman ki, kwake apeprè. Yon tab regle se yon amateur estrikti done ke nou ka panse a kòm nan konbinezon de yon array-- ak mwen pral fè desen li tankou sa a men e li bay lis lye ke mwen pral trase tankou sa a sou isit la. Men, wout la bagay sa a travay se jan sa a. Si sa a now-- Hash table-- se twazyèm estrikti done m 'yo, e mwen vle nan magazen mo nan sa a, mwen pa fè sa vle jis magazen tout nan a Mo tounen nan tounen nan do nan do. Mwen vle ogmante kèk moso nan enfòmasyon sou mo sa yo ki pral kite m 'jwenn li kote li nan pi vit. Se konsa, bay pòm nan mo ak bannann ak Kantaloup, Mwen fè espre te chwazi mo sa yo. Poukisa? Ki sa ki nan sòt de fondamantalman diferan sou twa a? Ki sa ki nan evidan an? Yo kòmanse ak yon lèt diferan. Se konsa, ou konnen ki sa? Olye ke mete tout pawòl mwen nan bokit la menm, se konsa pale, tankou nan yon sèl lis gwo, poukisa pa fè sa Mwen omwen eseye yon optimize , epi fè lis mwen an 1/26 osi lontan. Yon optimize irezistib ta ka poukisa pa fè sa I-- lè mete yon mo nan sa a estrikti done, nan memwa òdinatè a nan, poukisa pa mwen mete tout 'yon' mo sa yo isit la, tout 'b' mo sa yo isit la, ak tout 'c' mo sa yo isit la? Se konsa, sa fini moute mete yon pòm isit la, fig isit la, Kantaloup isit la, ak pou fè. Men, si mwen gen yon lòt mo like-- sa ki nan yon lòt? Apple, fig, pwa. Nenpòt moun ki panse a yon fwi ki kòmanse ak a, b, oswa c? Blueberry-- pafè. Sa se ale nan fini isit la. Se konsa, nou sanble yo gen yon très pi bon solisyon, paske kounye a si mwen vle pou fè rechèch pou pòm, mwen first-- mwen pa fè sa jis plonje nan estrikti done m 'yo. Mwen pa plonje nan memwa òdinatè mwen an. M 'premye gade nan lèt la an premye. Lè sa a se ki sa yon òdinatè syantis ta ka di. Ou Hash nan estrikti done ou. Ou pran opinyon ou, ki nan ka sa a se yon mo tankou pòm. Ou analize li, gade nan lèt an premye nan ka sa a, kidonk achin li. Achin se yon kijan jeneral tèm ou pran yon bagay kòm opinyon epi ou pwodwi kèk pwodiksyon. Ak pwodiksyon an nan ki a se kote a ou vle fè rechèch, premye a kote, dezyèm kote, twazyèm. Se konsa, D 'a se pòm, pwodiksyon an se premye. D 'a se fig, nan pwodiksyon ta dwe dezyèm fwa. D 'a se Kantaloup, pwodiksyon an ta dwe twazyèm. D 'a se blueberry, nan pwodiksyon ta dwe ankò ap dezyèm fwa. Epi sa a, sa ki ede ou pran rakoursi nan memwa ou yo nan lòd pou li ale nan mo oswa done plis efikasite. Koulye a, sa koupe desann tan nou an ki kapab pa otan ke yon sèl soti nan 26, paske si ou asime ke ou gen kòm anpil "yon" mo kòm "z" mo kòm mo "q", ki se pa reyèlman realistic-- w ap ale nan gen krochi atravè sèten lèt yo nan alphabet-- la men sa a ta pwal genyen yon incrémentielle apwòch ki pèmèt ou pou li ale nan mo pi plis byen vit. Ak nan reyalite, yon sofistike pwogram, Googles la nan mond lan, Facebooks nan world-- la yo ta sèvi ak yon tab regle pou yon anpil nan rezon diferan. Men, yo pa ta dwe konsa nayif kòm jis gade nan lèt la premye nan pòm oswa fig oswa pwa oswa Kantaloup, paske jan ou ka wè sa yo lis te ka toujou jwenn long. Se konsa, sa a ta ka toujou gen sòt nan lineyè se konsa sòt de dousman, tankou ak O la gwo nan n ke nou diskite pi bonè. Se konsa, sa yon reyèl bon tab regle pral do-- li pral gen yon etalaj pi gwo anpil. Epi li pral sèvi ak yon pi plis sofistike fonksyon achin, konsa ke li pa jis gade nan "yon nan." Petèt li parèt nan "yon-p-p-l-e" ak yon jan kanmenm konvèti senk lèt ​​moun nan kote a kote pòm yo ta dwe estoke. Nou jis ap naivman lè l sèvi avèk 'yon' lèt la pou kont li, paske li nan bèl ak senp. Men, yon tab regle, nan fen a, ou ka panse a kòm yon konbinezon de yon etalaj, chak nan yo ki gen yon lis lye ki depreferans yo ta dwe kòm kout ke posib. Lè sa a se pa yon solisyon evidan. An reyalite, anpil nan akor la amann ki ale sou anba kapo a lè mete ann aplikasyon sa yo kalite sofistike estrikti done se sa ki dwat nan longè nan etalaj la? Ki sa ki se fonksyon an regle dwa? Ki jan ou sere bagay sa yo nan memwa? Men, reyalize ki jan byen vit sa a sòt de diskisyon ogmante, swa byen lwen tèlman ke li nan kalite nan sou tèt yon sèl la nan pwen sa a, ki se amann. Men, nou te kòmanse, sonje, ak se vre wi: yon bagay ki ba-nivo ak elektwonik. Se konsa, sa a ankò se sa a tèm nan distraksyon, kote yon fwa ou kòmanse pran pou akòde, OK, Mwen te gen l-- gen nan memwa fizik, OK, te resevwa li, chak fizik kote gen yon adrès, OK, mwen te resevwa li, mwen kapab reprezante sa yo adrès kòm arrows-- ou ka trè byen vit kòmanse gen konvèsasyon pi plis sofistike ki nan fen a sanble yo dwe sa ki pèmèt nou yo rezoud pwoblèm tankou chèche ak klasman plis efikasite. Apre sa, rès asire, too-- paske mwen panse ke sa a se pwofon nan nou te ale nan kèk nan sa yo sijè CS proper-- nou te fè nan yon jou ak yon demi nan nivo sa a pwen sa ou ta ka tipikman fè sou kou a nan uit semenn nan yon semès. Nenpòt kesyon sou sa yo? Pa gen? Tout dwa. Oke, poukisa pa nou pran yon poz la, kòmanse manje midi yon kèk minit byen bonè, rezime nan jis sou yon èdtan? Apre sa, mwen pral retade ankò pou yon ti jan ak kesyon. Lè sa a, mwen pral gen yo ale pran yon apèl koup si ke se ok. Mwen pral vire sou kèk mizik nan entre-temps la, men manje midi yo ta dwe alantou kwen an.