DAVID Malan: zote haki. Sisi ni nyuma. Hivyo katika sehemu hii juu ya programu nini Nilidhani tunatarajia kufanya ni mchanganyiko wa mambo. One, kufanya kidogo kidogo ya kitu mikono-on, japo kwa kutumia zaidi playful programu environment-- moja kwamba ni demonstrative ya hasa aina ya mawazo tumekuwa kuzungumza juu, lakini kidogo zaidi rasmi. Mbili, kuangalia baadhi ya njia zaidi ya kiufundi kwamba programu ingekuwa kweli kutatua matatizo kama tatizo kutafuta kwamba sisi inaonekana katika kabla na pia ni zaidi kimsingi kuvutia tatizo la kuchagua. Sisi tu kudhani kutoka kupata kwenda kwamba kitabu cha simu ilikuwa yamepangwa, lakini hiyo peke yake ni kweli aina ya ngumu tatizo na njia nyingi tofauti kulitatua. Hivyo tutaweza kutumia haya kama darasa la matatizo mwakilishi wa mambo ambayo inaweza kutatuliwa kwa ujumla. Na kisha tutaweza majadiliano kuhusu katika baadhi ya kina nini zinaitwa data structures-- njia fancier kama orodha wanaohusishwa na meza hash na miti ambayo programu ingekuwa kweli kutumia na kwa ujumla kutumia juu ya ubao mweupe rangi picha ya nini yeye au yeye inataka kwa ajili ya utekelezaji baadhi kipande cha programu. Basi hebu kufanya mikono juu ya sehemu ya kwanza. Hivyo tu kupata mikono yako chafu na mazingira aitwaye scratch.mit.edu. Hii ni chombo kwamba sisi kutumia katika darasa letu shahada ya kwanza. Hata ingawa ni iliyoundwa kwa miaka 12 na juu, sisi kuitumia kwa ajili ya up sehemu ya kwamba kidogo kabisa tangu ni nzuri, furaha njia graphical ya kujifunza kitu kidogo kuhusu programu. Hivyo kichwa na URL kwamba, ambapo unapaswa kuona ukurasa kabisa kama hii, na kwenda mbele na bonyeza Kujiunga Scratch katika haki juu na kuchagua jina la mtumiaji na a password na hatimaye kupata mwenyewe account-- scratch.mit.edu. Nilidhani ningependa kutumia hii kama nafasi ya kwanza ili kuonyesha hili. swali walifika wakati wa mapumziko kuhusu nini kificho kwa kweli inaonekana kama. Na sisi walikuwa wanazungumza wakati wa mapumziko kuhusu C, katika particular-- hasa ngazi ya chini katika lugha wakubwa. Na mimi tu alifanya haraka Google kutafuta na kupata C kificho kwa ajili ya kutafuta binary, algorithm kwamba sisi kutumika kutafuta kwamba kitabu cha simu mapema. mfano huu hasa, bila shaka, haina kutafuta kitabu cha simu. Ni tu misako rundo zima la idadi katika kumbukumbu ya kompyuta. Lakini kama wewe Ningependa kupata tu Visual hisia ya kile programu halisi Lugha inaonekana kama, inaonekana kitu kidogo kama hii. Hivyo ni kuhusu 20-plus, 30 au mstari wa kanuni, lakini mazungumzo sisi walikuwa kuwa juu ya mapumziko Ilikuwa kuhusu jinsi hii kwa kweli anapata morphed katika zeros na ndio na kama huwezi tu revert kwamba mchakato na kwenda kutoka zeros na ndio nyuma kwa kificho. Kwa bahati mbaya, mchakato ni hivyo transformative kwamba ni rahisi sana kusema kuliko kutenda. Nilikwenda mbele na kwa kweli akageuka kwamba mpango, Binary Search, katika zeros na ndio kwa njia ya programu inayoitwa Compiler kwamba mimi kutokea kwa kuwa hapa haki juu ya Mac yangu. Na kama ukiangalia screen hapa, kwa kulenga hasa juu ya haya katikati ya nguzo sita tu, utaona zeros tu na ndio. Na wale ni zeros na ndio kwamba kutunga hasa kwamba mpango kutafuta. Na hivyo kila chunk ya bits tano, kila Byte ya zeros na ndio hapa, kuwakilisha baadhi ya mafundisho kawaida ndani ya kompyuta. Na kwa kweli, kama wewe Nimesikia masoko kauli mbiu ya "Intel ndani" - kwamba, bila shaka, tu ina maana una Intel CPU au ubongo ndani ya kompyuta. Na nini maana ya kuwa CPU ni kwamba una maelekezo kuweka, hivyo kusema. Kila CPU katika dunia, wengi wa yao yaliyotolewa na Intel siku hizi, anaelewa finite idadi ya maelekezo. Na maagizo hayo ni kiwango cha hivyo chini kama kuongeza idadi ya hizi mbili pamoja, kuzidisha idadi hizi mbili pamoja, hoja kipande hii ya data kutoka hapa kwa hapa katika kumbukumbu, kuokoa hii habari kutoka hapa kwa hapa katika kumbukumbu, na hivyo sana aliye mzaa hivyo sana, sana ngazi ya chini, maelezo karibu elektroniki. Lakini kwa wale hisabati shughuli ikiwa ni na kile sisi kujadiliwa mapema, uwakilishi wa data kama zeros na ndio, Unaweza mnaimarisha kila kitu kwamba kompyuta anaweza kufanya leo, iwe ni textual, graphical, muziki, au vinginevyo. Hivyo hii ni rahisi sana kupata waliopotea katika magugu ya haraka. Na kuna mengi ya changamoto syntactical ambapo kama wewe kufanya rahisi, stupidest ya typos hakuna wa mpango kazi yo. Na hivyo badala ya kutumia lugha kama C asubuhi hii, Mimi walidhani itakuwa zaidi ya kujifurahisha na kwa kweli kufanya kitu zaidi ya Visual, ambayo wakati iliyoundwa kwa ajili ya watoto ni kweli udhihirisho kamili ya programu halisi language-- hutokea tu kutumia picha badala ya maandishi kuiwakilisha mawazo hayo. Hivyo mara moja kweli kuwa akaunti kwenye scratch.mit.edu, bonyeza Kujenga kifungo katika juu ya kushoto ya tovuti. Na unapaswa kuona mazingira kama moja mimi nina kuhusu kuona kwenye screen yangu hapa. Na tutaweza kutumia kidogo tu kidogo ya muda kucheza hapa. Hebu angalia kama hatuwezi zote kutatua baadhi matatizo kwa pamoja katika njia ifuatayo. Hivyo kile utaona ndani ya hii environment-- na kwa kweli tu basi me kutulia. Kuna mtu yeyote si hapa? Sio hapa? SAWA. Hivyo basi mimi kumweka nje chache tabia ya mazingira haya. Hivyo juu kushoto wa screen, sisi na hatua Scratch, hivyo kusema. Scratch si tu jina wa lugha hii programu; pia ni jina la paka kwamba unaona by default huko katika machungwa. Yeye ni juu ya hatua, hivyo kiasi kama mimi ilivyoelezwa kobe ​​mapema kama kuwa katika rectangular nyeupe bodi mazingira. dunia paka hii ya linabakia tu kwa kuwa Mstatili juu juu huko. Wakati huo huo, juu ya haki upande wa hapa, ni tu scripts eneo hilo, slate tupu kama wewe. Hii ni wapi tunakwenda kuandika mipango yetu katika muda tu. Na vitalu jengo kwamba sisi ataona kutumia kuandika hii program-- puzzle vipande, kama wewe will-- ni wale haki hapa katikati, na wao uko katika kundi na utendaji. Hivyo, kwa mfano, mimi nina kwenda mbele na kuonyesha angalau mmoja wa haya. Mimi nina kwenda mbele na bonyeza Control jamii juu juu. Basi hizi ni makundi juu juu. Mimi nina kwenda bonyeza Control jamii. Badala yake, mimi nina kwenda bonyeza Matukio jamii, kwanza kabisa moja juu juu. Na kama Ningependa kufuata pamoja hata kama sisi kufanya hivyo, wewe ni kabisa kuwakaribisha kwa. Mimi nina kwenda click na Drag hii moja kwanza, "wakati kijani bendera clicked." Na kisha mimi nina kwenda kuacha tu takribani utafutaji juu ya slates yangu tupu. Na nini ni nzuri kuhusu Scratch ni kwamba hii puzzle kipande, wakati interlocked kwa puzzle mengine vipande, ni kwenda kufanya literally nini vipande wale puzzle kusema kufanya. Hivyo, kwa mfano, Scratch ni haki sasa katikati ya ulimwengu wake. Mimi nina kwenda mbele na kuchagua sasa, hebu sema, Mwendo jamii, kama Ningependa kufanya same-- Motion jamii. Na sasa taarifa Nina nzima rundo la vipande puzzle hapa tena kuwa, aina ya kufanya kile wanachosema. Na mimi nina kwenda mbele na Drag na kuacha hoja kuzuia haki zaidi ya hapa. Na taarifa kwamba haraka kama wewe kupata karibu na chini ya "kijani bendera clicked "button, ilani jinsi mstari nyeupe inaonekana, kana kwamba ni karibu magnetic, ni anataka kwenda huko. Tu basi kwenda, na itakuwa snap pamoja na maumbo mechi. Na sasa unaweza labda karibu nadhani ambapo tunakwenda na hii. Kama ukiangalia katika hatua Scratch zaidi ya hapa na kuangalia juu ya jambo hilo, utaona taa nyekundu, kuacha ishara, na bendera ya kijani. Na mimi nina kwenda mbele na kuangalia screen-- yangu kwa muda tu, kama unaweza. Mimi nina kwenda bonyeza kijani bendera sasa hivi, na alihamia kile kinachoonekana kuwa hatua 10 au 10, saizi dots 10, juu ya screen. Na hivyo si kwamba kusisimua, lakini napenda kupendekeza bila hata kufundisha hii, tu kutumia mwenyewe intuition-- yako mwenyewe hebu me kupendekeza kwamba wewe kufikiri jinsi ya kufanya Scratch kutembea haki mbali ya hatua. Kuwa naye kupisha upande wa kulia wa screen, njia yote ya haki. Nikupe wakati au hivyo na kushindana na hiyo. Unaweza kutaka kuangalia katika makundi mengine ya vitalu. Sawa. Hivyo tu kwa kurejea, wakati tuna bendera ya kijani clicked hapa na hoja hatua 10 ni mafundisho tu, kila wakati mimi bonyeza bendera ya kijani, nini kinatokea? Naam, kwamba mbio mpango wangu. Hivyo mimi naweza kufanya hili labda mara 10 manually, lakini hii anahisi kidogo bit hackish, hivyo kusema, ambapo mimi si kweli kutatua tatizo. Mimi nina kujaribu tu tena na tena na tena na tena mpaka mimi aina ya ajali kufikia azma kwamba mimi kuweka nje kufikia mapema. Lakini tunajua kutoka wetu pseudocode awali kwamba kuna wazo hili katika programu ya looping, kufanya kitu tena na tena. Pia nikaona kwamba rundo la wewe kufikiwa kwa nini puzzle kipande? Kurudia mpaka. Hivyo tunaweza kufanya kitu kama kurudia mpaka. Na nini wewe kurudia mpaka hasa? SAWA. Na napenda kwenda kwa moja hiyo ni fulani ni rahisi kwa muda tu. Hebu kwenda mbele na kufanya hili. Taarifa kwamba, kama unaweza kuwa aligundua chini ya Control, kuna hii kuzuia kurudia, ambayo haina kuangalia kama ni kuwa kubwa. Kuna chumba si sana katika kati ya wale mistari miwili ya njano. Lakini kama baadhi yenu wanaweza kuwa na niliona, kama wewe Drag na kuacha, taarifa jinsi hukua kujaza sura. Na unaweza hata Cram zaidi. Ni itabidi kuendelea kukua kama wewe Drag na hover juu yake. Na sijui nini bora hapa, hivyo basi mimi angalau kurudia mara tano, kwa mfano, na kisha kwenda nyuma ya hatua na bonyeza bendera ya kijani. Na sasa taarifa ni kabisa huko. Sasa baadhi yenu mapendekezo, kama Victoria tu hakuwa, kurudia mara 10. Na kwamba kwa ujumla anafanya kupata naye njia yote, lakini hakutaka kuwe na imara zaidi njia ya kiholela kuhesabia nje jinsi hatua nyingi kufanya? Nini kinaweza kuwa kuzuia bora kuliko kurudia mara 10 kuwa? Yeah, hivyo kwa nini kufanya kitu milele? Na sasa napenda hoja hii kipande puzzle ndani kuna na kujikwamua hii moja. Sasa angalia hakuna jambo ambapo Scratch kuanza, yeye huenda kwa makali. Na nashiriki MIT, ambao hufanya Scratch, tu hufanya uhakika kwamba kamwe kutoweka kabisa. Daima unaweza kunyakua mkia wake. Na tu intuitively, kwa nini yeye kusonga? Ni nini kinachoendelea hapa? Yeye inaonekana kuwa kusimamishwa, lakini kisha kama mimi kuchukua na Drag yeye anaendelea kutaka kwenda zaidi ya hapo. Kwanini hivyo? Kweli, kompyuta ni literally kwenda kufanya nini kuwaambia ni kufanya. Hivyo kama wewe aliiambia yake mapema kufanya kufuatia jambo milele, hoja hatua 10, itakuja kuendelea na kwenda mpaka mimi hit nyekundu kuacha ishara na kuacha mpango kabisa. Hivyo hata kama alivyofanya si kufanya hivyo, ni jinsi gani mimi kufanya Scratch hoja kwa kasi katika screen? Zaidi hatua, haki? Hivyo badala ya kufanya 10 wakati, kwa nini sio sisi kwenda mbele na mabadiliko hayo to-- ungefanya ya kupendekeza 50? Hivyo sasa mimi nina kwenda bonyeza kijani bendera, na kwa kweli, yeye huenda kweli haraka. Na hii, bila shaka, ni tu udhihirisho wa uhuishaji. uhuishaji ni nini? Ni kuonyesha tu wewe a binadamu zima rundo la picha bado kweli, kweli, kweli haraka. Na hivyo kama sisi ni kuwaambia tu naye kwa hoja hatua zaidi, sisi ni kuwa tu athari itakuwa kwa mabadiliko ambapo yeye ni juu ya screen zote kwa kasi zaidi kwa kitengo cha wakati. Sasa changamoto ijayo kwamba mimi mapendekezo Ilikuwa kwa kuwa naye bounce mbali makali. Na bila kujua nini puzzle vipande exist-- kwa sababu ni faini kama huna kupata hatua ya challenge-- nini Unataka kufanya intuitively? Jinsi gani sisi kuwa naye Bounce nyuma na nje, kati ya kushoto na kulia? Yeah. Kwa hiyo, tunahitaji aina fulani ya hali, na sisi wanaonekana kuwa na conditionals, hivyo kusema, chini ya Kudhibiti jamii. Ni yupi kati ya vitalu haya Je, sisi pengine wanataka? Yeah, labda "kama, basi." Hivyo taarifa kwamba kati ya vitalu njano sisi hapa, kuna hii "kama" au hii "kama, mwingine" kuzuia kwamba mapenzi kuruhusu sisi kufanya uamuzi wa kufanya hivyo au kufanya hivyo. Na unaweza hata kiota yao kufanya mambo mbalimbali. Au kama umefanya si gone hapa bado, kwenda mbele kwa Sensing jamii and-- hebu angalia kama ni hapa. Kwa hiyo kile block inaweza kuwa na manufaa hapa kuchunguza kama yeye ni mbali ya hatua? Yeah, taarifa kwamba baadhi ya vitalu haya inaweza parametrized, hivyo kusema. Wanaweza kuwa aina ya customized, si tofauti na HTML jana na sifa, ambapo sifa hizo aina ya Customize tabia ya tag. Vile vile hapa, naweza kunyakua kugusa hii kuzuia na mabadiliko na kuuliza swali, ni wewe kugusa panya pointer kama mshale au ni wewe kugusa makali? Hivyo basi mimi kwenda katika na kufanya hili. Mimi nina kwenda kuvuta nje kwa muda. Hebu kunyakua hii kipande puzzle hapa, hii kipande puzzle hii, na mimi nina kwenda kwa jumble yao juu kwa muda tu. Mimi nina kwenda kwa hoja hii, kubadili hali hii kwa kugusa makali, na mimi nina kwenda kwa mwendo kufanya hivyo. Hivyo hapa ni baadhi ya viungo. Nadhani nimepata kila kitu nataka. Je, mtu kama kupendekeza jinsi mimi unaweza kuunganisha hizi labda top hadi chini ili kutatua tatizo la kuwa na Scratch hoja kulia na kushoto na haki ya kushoto na kulia na kushoto, kila muda tu bouncing off ukuta? Je, nataka kufanya? Ambayo kuzuia anatakiwa kuungana na "Bendera wakati kijani clicked kwanza"? OK, hivyo hebu kuanza na "milele." Yale yanayoendelea ndani ya ijayo? Mtu mwingine. OK, hoja hatua. Sawa. Halafu? Hivyo basi kama. Na taarifa, hata kama inaonekana ipo pamoja kukazwa, itakuwa tu kukua kujaza. Itakuwa tu kuruka katika ambapo mimi nataka. Na nini mimi kuweka kati kama na kisha? Pengine "kama kugusa makali." Na taarifa, tena, ni kubwa mno kwa ajili yake, lakini itakua kujaza. Na kisha kugeuka digrii 15? Jinsi wengi digrii? Yeah, hivyo 180 itakuwa spin me njia yote kote. Basi hebu angalia kama mimi got haki hii. Hebu zoom nje. Napenda Drag Scratch up. Hivyo yeye ni kidogo potofu sasa, lakini hiyo ni faini. Ninawezaje upya yake kwa urahisi? Mimi nina kwenda kudanganya kidogo. Hivyo mimi nina akiongeza mwingine kuzuia, tu kuwa wazi. Nataka yake kwa uhakika nyuzi 90 na haki by default, hivyo mimi nina kwenda tu kumwambia kufanya hivyo programmatically. Na hapa sisi kwenda. Sisi wanaonekana wamefanya hivyo. Ni kidogo weird, kwa sababu yeye kutembea juu chini. Hebu piga kwamba mdudu. Hiyo ni makosa. mdudu ni kosa katika mpango, a mantiki kosa kwamba mimi, binadamu, alifanya. Kwa nini yeye kwenda kichwa chini? Je, MIT screw up au alifanya mimi? Yeah, I mean, ni si MIT kosa. Wao alinipa puzzle kipande kwamba anasema kurejea baadhi idadi ya digrii. Na katika maoni Victoria, Mimi nina kugeuka digrii 180, ambayo ni Intuition haki. Lakini kugeuka digrii 180 literally ina maana kugeuka digrii 180, na kwamba si kweli nini nataka, inaonekana. Kwa sababu angalau yeye ni katika hii dunia mbili-dimensional, hivyo kugeuka ni kweli kwenda flip yake kichwa chini. Mimi labda wanataka kutumia kuzuia kile badala yake, kulingana na kile unaweza kuona hapa? Jinsi gani tunaweza kurekebisha hili? Yeah, hivyo tunaweza kumweka katika mwelekeo kinyume. Na kwa kweli hata hiyo ni si kwenda kuwa kutosha, kwa sababu tunaweza tu kificho kwa bidii kwa akizungumzia kushoto au kulia. Unajua nini tunaweza kufanya? Inaonekana kama tuna urahisi kuzuia hapa. Kama mimi kuvuta, angalia kitu sisi kama hapa? Hivyo inaonekana kama MIT ina uchukuaji kujengwa katika hapa. kuzuia Hii inaonekana kuwa sawa ambayo vitalu nyingine, wingi? Hii kuzuia mmoja inaonekana kuwa sawa kwa hii Trio mzima wa vitalu kwamba sisi hapa. Hivyo ni zamu nje siwezi kurahisisha yangu mpango na kupata kuondoa yote ya kwamba na kuweka tu hii hapa. Na sasa yeye bado ni kidogo buggy, na hiyo ni faini kwa sasa. Tutaweza kuondoka kwamba kuwa. Lakini mpango wangu ni hata rahisi, na hii, pia, itakuwa mwakilishi ya lengo katika programming-- ni walau kufanya kanuni yako kama rahisi, kama Compact iwezekanavyo, wakati bado kuwa kama someka iwezekanavyo. You hawataki kufanya hivyo succinct kwamba ni vigumu kuelewa. Lakini taarifa nimekuwa kubadilishwa vitalu tatu na moja, na hiyo ni arguably jambo jema. Nimekuwa yanayotumika mbali dhana ya kuangalia kama uko makali na kuzuia moja tu. Sasa tunaweza kuwa na furaha na hii, kwa kweli. Hii haina kuongeza kiasi thamani ya kiakili lakini thamani playful. Mimi nina kwenda mbele na kunyakua sauti hii hapa. Hivyo basi mimi kwenda mbele, na napenda kuacha mpango kwa muda. Mimi nina kwenda kurekodi yafuatayo, kuruhusu upatikanaji wa kipaza sauti yangu. Twende sasa. Ouch. Hebu jaribu hii tena. Twende sasa. OK, mimi kumbukumbu kitu kibaya. Twende sasa. Ouch. Ouch. Sawa. Sasa mimi haja ya kujikwamua hiyo. Sawa. Hivyo sasa nina kurekodi ya tu "ouch." Hivyo sasa mimi nina kwenda mbele na wito huu "ouch." Mimi nina kwenda nyuma kwa scripts yangu, na sasa ilani kuna block hii kwamba wito kucheza sauti "meow" au kucheza sauti "ouch." Mimi nina kwenda Drag hii, na ambapo lazima mimi kuweka hii kwa ajili ya athari comical? Yeah, hivyo sasa ni aina ya buggy, kwa sababu sasa hii block-- taarifa jinsi hii "kama makali, bounce "ni aina ya binafsi zilizomo. Kwa hiyo mimi haja ya kurekebisha hii. Hebu kwenda mbele na kufanya hili. Napenda kujikwamua hii na kurudi nyuma ya awali wetu, zaidi ya makusudi utendaji. Hivyo "kama kugusa makali, kisha" Nataka kugeuka, kama Victoria mapendekezo, digrii 180. Na mimi nataka kucheza sauti "ouch" huko? Yeah, taarifa ni nje kwamba kuzuia njano. Hivyo hii, pia, itakuwa mdudu, lakini nimekuwa niliona hiyo. Hivyo nina kwenda kwa Drag it up hapa, na taarifa ya sasa ni ndani ya "kama." Hivyo "ikiwa" aina hii ya kama Msamehevu mkono-kama kwamba kwenda tu kufanya nini ndani yake. Hivyo sasa kama mimi kuvuta nje katika hatari ya annoying-- COMPUTER: Ouch, ouch, ouch. DAVID Malan: Na ni mapenzi tu kwenda juu ya milele. Sasa tu kuongeza kasi ya mambo hapa, napenda kwenda mbele na kufungua, hebu say-- napenda kwenda kwa baadhi ya ya mambo yangu mwenyewe kutoka darasani. Na napenda kufungua, hebu sema, hii moja yaliyotolewa na mmoja wa wenzetu mafundisho miaka michache iliyopita. Hivyo baadhi yenu wanaweza kukumbuka mchezo huu kutoka yesteryear, na ni kweli ajabu. Hata ingawa sisi tumefanya rahisi ya mipango sasa hivi, hebu fikiria nini hii kweli inaonekana kama. Napenda kugonga kucheza. Hivyo katika mchezo huu, tuna frog, na kwa kutumia mshale keys-- yeye anachukua hatua kubwa kuliko mimi remember-- Mimi kuwa na udhibiti juu frog hii. Na lengo ni kupata hela busy barabara bila ya mbio katika magari. Na hebu see-- kama mimi kwenda juu hapa, mimi kusubiri kwa ajili ya gogo na kitabu kwa. Hii anahisi kama mdudu. Hii ni aina ya mdudu. Sawa. Mimi nina juu ya hii hapa, huko, na kisha kuweka kwenda mpaka kupata zote vyura usafi lily. Sasa hii ili kuangalia zote ngumu zaidi, lakini hebu kujaribu kuvunja hii chini kiakili na kwa maneno katika sehemu vitalu yake. Hivyo kuna pengine puzzle kipande kwamba hatujaona bado lakini hiyo ni kukabiliana na keystrokes, kwa mambo ya mimi kugonga kwenye keyboard. Hivyo pengine kuna baadhi ya aina ya kuzuia kwamba anasema, kama ufunguo sawa up, basi kufanya kitu kwa Scratch-- labda hoja hiyo hatua 10 kwa njia hii. Kama ufunguo chini ni taabu, hoja hatua 10 njia hii, au muhimu kushoto, hoja hatua 10 njia hii, 10 hatua hiyo. Nimekuwa wazi akageuka paka katika frog. Hivyo hiyo ni tu ambapo Costume, kama Scratch wito it-- sisi tu kutoka nje picha ya frog. Lakini kile kingine kinachotokea? Nini mistari mingine ya kificho, nini vipande vingine puzzle alifanya Blake, mafundisho wenzetu, kutumia katika mpango huu, inaonekana? Nini kufanya kila kitu move-- nini programu kujenga? Mwendo, sure-- hivyo hoja block, kwa uhakika. Na nini kwamba kuzuia hoja ndani ya, uwezekano mkubwa? Yeah, baadhi ya aina ya kitanzi, labda milele kuzuia, labda kurudia block-- kurudia mpaka block. Na kwamba ni nini kufanya magogo na usafi lily na kila kitu kingine hoja na kurudi. Ni kinatokea tu bila ukomo. Kwa nini baadhi ya magari kusonga kwa kasi zaidi kuliko wengine? Nini ni tofauti kuhusu programu hizo? Yeah, pengine baadhi yao ni kuchukua hatua zaidi kwa mara moja na baadhi yao hatua chache mara moja. Na athari za kuona ni haraka dhidi ya polepole. Je, unafikiri kilitokea? Nilipofika frog yangu njia yote hela mitaani na mto kwenye lily pedi, kitu vyema ijulikane kilichotokea. Ni nini kilichotokea kwa haraka kama mimi alifanya hivyo? Ni kusimamishwa. frog kwamba kusimamishwa, na I got frog pili. Hivyo kile lazima kujenga kutumika huko, nini kipengele? Yeah, hivyo kuna aina fulani ya "Kama" hali ya juu huko, pia. Na ni zamu nje hatukuona Haya lakini kuna vitalu nyingine katika pale kwamba unaweza kusema, kama wewe ni kugusa jambo lingine juu ya screen, kama wewe ni kugusa pedi lily, "basi." Na kisha kwamba wakati sisi kufanya frog pili kuonekana. Hivyo hata ingawa mchezo huu ni hakika tarehe sana, ingawa katika mtazamo wa kwanza kuna mambo mengi kwenda on-- na Blake hakuwa mjeledi hii up katika dakika mbili, pengine kumpeleka kadhaa masaa kuunda mchezo huu msingi kumbukumbu au video zake ya toleo yesteryear ya yake. Lakini mambo yote haya kidogo kinachoendelea screen katika kutengwa jipu chini kwa hizi rahisi sana harakati constructs-- au kauli kama tumekuwa kujadiliwa, matanzi na masharti, na hiyo ni juu yake. Kuna wachache makala nyingine fancier. Baadhi yao ni rena aesthetic au acoustic, kama sauti I just alicheza na. Lakini kwa sehemu kubwa, wewe kuwa katika lugha hii, Scratch, yote ya msingi matofali ya ujenzi kwamba wewe kuwa katika C, Java, JavaScript, PHP, Ruby, Python, na idadi yoyote ya lugha nyingine. maswali yoyote kuhusu Scratch? Sawa. Hivyo sisi si kupiga mbizi katika undani kwa Scratch, ingawa wewe ni kuwakaribisha mwishoni mwa wiki hii, hasa kama una watoto au wapwa na wajukuu na vile, kuwasilisha kwao Scratch. Ni kweli ajabu playful mazingira na, kama waandishi wake kusema, juu sana dari. Hata ingawa sisi ilianza na sana ngazi ya chini maelezo, unaweza kweli kufanya kidogo kabisa na hayo, na hii ni labda maandamano ya hasa kwamba. Lakini hebu sasa mpito kwa baadhi ya zaidi matatizo ya kisasa, kama wewe, inayojulikana kama "kutafuta" na "Kuchagua," zaidi kwa ujumla. Tulikuwa na hii kitabu cha simu earlier-- hapa ni mwingine mmoja tu kwa discussion-- kwamba tulikuwa na uwezo wa kutafuta ufanisi zaidi kwa sababu ya dhana muhimu. Na tu kuwa wazi, nini Dhana ilikuwa ni mimi kufanya wakati wa kutafuta kupitia kitabu hiki simu? Hiyo Mike Smith alikuwa katika kitabu cha simu, ingawa mimi itakuwa na uwezo wa kushughulikia scenario bila yeye kuna kama mimi tu kusimamishwa mapema. kitabu ni herufi. Na kwamba ni wakarimu sana Dhana, kwa sababu hiyo ina maana someone-- mimi nina aina ya kukata kona, kama mimi ni kwa kasi kwa sababu mtu mwingine alifanya mengi ya kazi ngumu kwa ajili yangu. Lakini nini kama simu kitabu walikuwa zisizochambuliwa? Labda Verizon got wavivu, tu kurusha majina ya kila mtu na namba katika huko labda katika utaratibu ambao wao saini kwa ajili ya huduma ya simu. Na ni kiasi gani wakati gani kuchukua me kupata mtu kama Mike Smith? 1,000 ukurasa simu book-- wangapi kurasa kufanya nina kuangalia njia? Wote. Wewe ni aina ya nje ya bahati. You literally kuangalia kila ukurasa kama kitabu cha simu ni tu nasibu yamepangwa. Unaweza kupata bahati na kupata Mike katika ukurasa wa kwanza sana, kwa sababu yeye Ilikuwa mteja ya kwanza ili huduma ya simu. Lakini yeye anaweza kuwa mwisho, pia. Hivyo ili random si nzuri. Hivyo tuseme tuna kutatua kitabu cha simu au katika data ujumla aina kwamba sisi tumekuwa aliyopewa. Tunawezaje kufanya hivyo? Naam, napenda tu kujaribu mfano rahisi hapa. Hebu kwenda mbele na toss idadi chache juu ya bodi. Tuseme idadi tuna watu, hebu sema, nne, mbili, moja, na tatu. Na, Ben, kutatua namba hizi kwa ajili yetu. OK, vizuri. Jinsi gani unaweza kufanya hivyo? Sawa. Hivyo kuanza na ndogo thamani na ya juu, na kwamba ni kweli nzuri Intuition. Na kutambua kwamba sisi binadamu ni kweli pretty nzuri katika kutatua matatizo kama hii, angalau wakati data ni ndogo. Haraka kama wewe kuanza kuwa na mamia ya idadi, maelfu ya namba, mamilioni ya idadi, Ben pengine hakuweza kufanya hivyo kabisa kwamba haraka, kuchukua kwamba kulikuwa na mapengo katika namba. Pretty rahisi kuhesabu hadi milioni vinginevyo, wakati tu ya kuteketeza. Hivyo algorithm ni sauti kama Ben kutumika tu sasa Ilikuwa search kwa idadi ndogo. Hivyo hata kama sisi binadamu wanaweza kuchukua katika mengi ya habari kuibua, kompyuta ni kweli zaidi kidogo mdogo. kompyuta Unaweza tu kuangalia Byte moja kwa wakati mmoja au labda ka nne katika time-- siku hizi labda 8 ka katika time-- lakini idadi ndogo sana ya ka wakati huo. Hivyo kutokana na kwamba sisi kweli kuwa maadili nne tofauti here-- na unaweza kufikiria Ben kama kuwa blinders juu kama angekuwa kompyuta kama kwamba hawezi kuuona kitu kingine chochote kuliko namba moja katika time-- hivyo sisi ujumla kudhani, kama katika Kiingereza, tutaweza kusoma kutoka kulia kwenda kushoto. Hivyo idadi ya kwanza Ben pengine inaonekana katika mara nne na kisha kwa haraka sana barabara hiyo ni pretty big number-- napenda kuendelea kutafuta. Kuna mawili. Subiri kidogo. Mbili ni ndogo kuliko nne. Mimi nina kwenda kukumbuka. Mbili ni sasa ndogo. Sasa one-- hiyo ni bora zaidi. Hiyo ni hata kidogo. Mimi nina kwenda kusahau kuhusu mbili na kumbuka tu moja sasa. Na hakuweza kuacha kuangalia? Naam, hakuweza msingi juu ya habari hii, lakini yeye d search bora mapumziko ya orodha. Kwa sababu nini kama zero walikuwa katika orodha? Nini kama hasi moja walikuwa katika orodha? Yeye tu anajua kwamba jibu lake ni sahihi kama yeye ni vyema kuchunguzwa orodha nzima. Hivyo sisi kuangalia wengine wa hii. Three-- kwamba ilikuwa ni kupoteza muda. Got unlucky, lakini mimi nilikuwa bado sahihi kufanya hivyo. Na hivyo sasa yeye labda kuchaguliwa idadi ndogo na tu ya kuweka katika mwanzo ya orodha, kama mimi itabidi kufanya hapa. Sasa mlifanya nini ijayo, ingawa wewe si kufikiri kuhusu hilo karibu kwa kiasi hiki? Kurudia utaratibu, hivyo baadhi ya aina ya kitanzi. Kuna wazo ukoo. Hivyo hapa ni nne. Hiyo ni kwa sasa ndogo. Hiyo ni mgombea. Sivyo tena. Sasa nimeona mbili. Hiyo ni kipengele ijayo ndogo. Three-- si kwamba ndogo, hivyo sasa Ben unaweza kuyang'oa mbili. Na sasa sisi kurudia utaratibu, na bila shaka tatu anapata vunjwa nje ijayo. Kurudia utaratibu. Nne anapata vunjwa nje. Na sasa tuko nje ya namba, hivyo orodha lazima kutatuliwa. Na hakika, hii ni algorithm rasmi. mwanasayansi kompyuta ingekuwa wito huu "uteuzi aina," Wazo kuwa aina a orodha iteratively-- tena na tena na tena kuchagua idadi ndogo. Na nini ni nzuri juu yake ni ni tu hivyo darn Intuitive. Ni rahisi hivyo. Na unaweza kurudia huo operesheni tena na tena. Ni rahisi. Katika kesi hiyo ilikuwa ni ya haraka, lakini muda gani kweli kuchukua? Hebu kufanya hivyo kuonekana na kujisikia kidogo zaidi tedious. Hivyo moja, mbili, tatu, nne, tano na sita, saba, nane, tisa, 10, 11, 12, 13, 14, 15, 16-- idadi holela. Mimi nilitaka huu zaidi muda kuliko tu minne. Hivyo kama mimi nimepata nzima rundo la idadi now-- ni haina hata jambo wanayo are-- ya basi fikiria yale ambayo algorithm kweli ni kama. Tuseme kuna idadi huko. Tena, haijalishi nini wao, lakini wao uko random. Ninaomba algorithm Ben. Mimi haja ya kuchagua idadi ndogo. Nifanyeje? Na mimi nina kwenda kwa kimwili kufanya hivyo wakati huu kutenda nje. Kuangalia, kuangalia, kuangalia, kuangalia, kuangalia. Tu kwa wakati mimi kupata mwisho wa orodha Unaweza Mimi kutambua ndogo idadi mara mbili wakati huu. Moja siyo katika orodha. Hivyo mimi kuweka chini mbili. Je, nini baada ya hapo? Kuangalia, kuangalia, kuangalia, kuangalia. Sasa nimeona namba saba, kwa sababu kuna mapengo katika numbers-- hizi lakini tu kiholela. Sawa. Hivyo sasa siwezi kuweka chini saba. Kuangalia kuangalia, kuangalia. Sasa mimi nina kuchukua, ya Bila shaka, kwamba Ben hana na RAM ziada, ziada kumbukumbu, kwa sababu, bila shaka, Mimi nina kuangalia idadi sawa. Hakika mimi naweza kuwa ikumbukwe yote ya namba hizo, na hiyo ni kweli kabisa. Lakini kama Ben anakumbuka zote ya idadi yeye kuonekana, yeye si kweli alifanya maendeleo ya msingi kwa sababu yeye tayari ana uwezo wa kutafuta kupitia namba kwenye bodi. Kukumbuka yote ya idadi hana msaada, kwa sababu yeye bado anaweza kama kompyuta tu kuangalia, tumekuwa alisema, namba moja kwa wakati. Hivyo hakuna aina ya kudanganya pale kwamba unaweza kujiinua. Hivyo katika hali halisi, kama mimi kuweka kutafuta orodha, I literally kuwa na kushika tu kwenda na kurudi kwa njia hiyo, kukwanyua nje idadi ya pili ndogo. Na kama unaweza aina ya infer kutoka harakati yangu silly, hii anapata tu sana tedious haraka sana, na mimi wanaonekana kuwa kwenda nyuma na nje, na kurudi kidogo kabisa. Sasa kuwa wa haki, sina ya kwenda kabisa kama, vizuri, hebu see-- kuwa wa haki, Sina kutembea kabisa hatua kama wengi kila wakati. Kwa sababu, bila shaka, kama mimi kuchagua idadi kutoka orodha, orodha iliyobaki ni kupata mfupi. Na hivyo hebu fikiria kuhusu jinsi hatua nyingi mimi nina kweli traipsing kwa njia ya kila wakati. Katika hali ya kwanza kabisa tulikuwa na idadi 16, na hivyo maximally-- hebu tu kufanya hivyo kwa discussion-- Mimi nilikuwa na kuangalia kwa njia ya 16 idadi kupata ndogo. Lakini mara moja mimi kumpokonya nje idadi ndogo, jinsi muda mrefu alikuwa orodha iliyobaki, bila shaka? 15 tu. Hivyo ni jinsi wengi idadi alivyofanya Ben au nina kuangalia njia wakati wa marudiano? 15, tu kwenda na kupata ndogo. Lakini sasa, bila shaka, orodha ni, pia, ndogo kuliko ilivyokuwa kabla. Hivyo hatua ngapi alifanya mimi Una kuchukua wakati mwingine? 14 na kisha 13 na kisha 12, plus dot, dot, dot, hata mimi nina kushoto na moja tu. Hivyo sasa kompyuta mwanasayansi ingekuwa kuuliza, vizuri, ni nini kwamba wote ni sawa? Ni kweli ni sawa na baadhi ya saruji idadi hiyo tunaweza hakika kufanya hesabu, lakini tunataka kuzungumza kuhusu ufanisi wa algorithms kidogo formulaically zaidi, huru ya muda gani orodha ni. Na hivyo unajua nini? Hii ni 16, lakini kama nilivyosema hapo kabla, hebu tu kuiita ukubwa wa tatizo n, ambapo n ni idadi fulani. Labda ni 16, labda ni tatu, labda ni milioni. Sijui. Sijali. Nini kweli mimi nataka ni formula kwamba naweza kutumia kulinganisha algorithm hii dhidi ya algorithms mengine kwamba mtu anaweza kudai ni bora au mbaya. Hivyo ni zamu nje, na mimi tu najua hili kutoka shule ya daraja, kwamba hii kweli kazi nje kwa moja Jambo kama n juu ya n pamoja na moja juu ya mbili. Na hii hufanyika kwa sawa, ya Bila shaka, n squared pamoja n zaidi ya miaka miwili. Hivyo kama nilitaka formula kwa hatua jinsi wengi walihusika katika kuangalia wakati wote ya idadi ya wale tena na tena na tena na tena, napenda kusema ni n squared pamoja n zaidi ya miaka miwili. Lakini unajua nini? Hii tu inaonekana messy. I just kweli unataka ujumla hali ya mambo. Na unaweza kukumbuka kutoka shule ya sekondari kwamba kuna ni dhana ya hali ya juu mrefu. Ni yupi kati ya sheria hizi, n mraba, n, au nusu, ina athari zaidi baada ya muda? n kubwa anapata, ambayo wa mambo haya zaidi? Kwa maneno mengine, kama mimi kuziba katika milioni, n squared ni kwenda kuwa na uwezo mkubwa dominating sababu, kwa sababu mara milioni yenyewe ni mengi kubwa kuliko plus milioni moja ya ziada. Hivyo unajua nini? Hii ni kama darn kubwa idadi kama wewe mraba idadi. Hii haina kweli jambo. Sisi ni kwenda tu msalaba kwamba nje na kusahau kuhusu hilo. Na hivyo kompyuta mwanasayansi kusema kwamba ufanisi wa algorithm hii ni juu ya utaratibu wa n squared-- I mean kweli makadirio. Ni aina ya takribani n squared. Baada ya muda, kubwa na kubwa zaidi n anapata, hii ni kukadiria nzuri kwa nini ufanisi au ukosefu wa ufanisi ya algorithm hii kwa kweli ni. Na mimi hupata kwamba, bila shaka, kutoka kweli kufanya math. Lakini sasa mimi nina akipunga tu mikono yangu, kwa sababu mimi tu wanataka maana ya jumla ya algorithm hii. Hivyo kwa kutumia mantiki hiyo, wakati huo huo, hebu fikiria algorithm mwingine sisi tayari inaonekana at-- search linear. Nilipokuwa kutafuta kwa book-- simu si kuchagua ni, kutafuta kupitia book-- simu sisi naendelea kusema kuwa ilikuwa ni hatua 1,000, au hatua 500. Lakini hebu kujumlisha hiyo. Kama kuna kurasa n katika kitabu cha simu, nini wakati mbio au ufanisi wa tafuta linear? Ni juu ya utaratibu wa jinsi hatua nyingi ili kupata Mike Smith kutumia search linear, algorithm kwanza, au hata ya pili? Katika hali mbaya zaidi, Mike ni mwishoni mwa kitabu. Hivyo kama kitabu cha simu ina kurasa 1,000, tulivyosema mara ya mwisho, katika kesi mbaya, inaweza kuchukua takribani kiasi kurasa nyingi kupata Mike? Kama 1,000. Ni amefungwa juu. Ni hali mbaya iwezekanavyo. Lakini tena, sisi ni kusonga mbali kutoka idadi kama 1,000 sasa. Ni tu n. Basi nini mantiki hitimisho? Kutafuta Mike katika simu kitabu ambayo ina kurasa n inaweza kuchukua, katika kesi mbaya sana, jinsi hatua juu ya utaratibu wa n wengi? Na hakika kompyuta mwanasayansi kusema kwamba wakati mbio, au utendaji au ufanisi au uzembe, wa algorithm kama tafuta linear ni juu ya utaratibu wa n. Na tunaweza kuomba sawa mantiki ya kuvuka kitu nje kama mimi tu alifanya kwa pili algorithm tulikuwa na kitabu cha simu, ambapo tulikwenda kurasa mbili kwa wakati. Hivyo 1,000 ukurasa simu kitabu nguvu kutupeleka 500 ukurasa zamu, pamoja na moja kama sisi mara mbili nyuma kidogo. Hivyo kama kitabu cha simu ina kurasa n, lakini tuko kufanya kurasa mbili kwa wakati mmoja, hiyo ni takribani nini? N zaidi ya miaka miwili, hivyo hiyo ni kama n zaidi ya miaka miwili. Lakini mimi alifanya dai a wakati iliyopita kwamba n juu ya two-- hiyo ni aina ya sawa na n tu. Ni tu sababu mara kwa mara, kompyuta wanasayansi kusema. Hebu tu kulenga katika vigezo, really-- vigezo kubwa katika equation. search hivyo linear, iwe amefanya moja ukurasa wakati au kurasa mbili kwa wakati, ni aina ya kimsingi sawa. Bado ni juu ya utaratibu wa n. Lakini mimi alidai na picha yangu mapema kwamba algorithm tatu ilikuwa si linear. Haikuwa mstari sawa. Ilikuwa ni kwamba line curved, na kimahesabu formula kulikuwa na nini? Log ya n-- hivyo kuingia msingi mbili za n. Na hatuna kwenda katika mno habari nyingi juu ya logarithms leo, lakini wengi wanasayansi wa kompyuta bila hata kukuambia nini msingi ni. Kwa sababu ni wote tu mambo mara kwa mara, hivyo kusema, tu kidogo numeric tofauti. Na hivyo hii itakuwa ni ya kawaida sana njia kwa ajili ya kompyuta hasa rasmi wanasayansi katika bodi au programmers katika bodi nyeupe kweli akisema ambayo algorithm wangeweza kutumia au nini ufanisi ya algorithm yao ni. Na hii ni si lazima kitu wewe kujadili kwa kina yoyote kubwa, lakini programu nzuri ni mtu ambaye ana imara, rasmi background. Yeye ni uwezo wa kuzungumza na wewe katika aina hii ya njia na kwa kweli kufanya hoja ya ubora kama kwa nini moja algorithm au kipande kimoja cha programu ni bora kuliko katika baadhi ya njia ya mwingine. Kwa sababu wewe alivyoweza shaka kukimbia tu mpango ya mtu mmoja na kuhesabu idadi ya sekunde inachukua kutatua idadi ya baadhi, na unaweza kuendesha baadhi mpango wa mtu mwingine na kuhesabu idadi la sekunde inachukua. Lakini hii ni njia zaidi ya jumla kwamba unaweza kutumia ili kuchambua algorithms, kama wewe, tu juu ya karatasi au tu kwa maneno. Bila hata mbio, bila hata kujaribu pembejeo sampuli, unaweza tu kujiuliza kwa njia hiyo. Na hivyo na kukodisha developer au kama kuwa kwake aina ya wanasema na wewe kwa nini algorithm zao, siri yao mchuzi kwa ajili ya kutafuta mabilioni ya kurasa za mtandao kwa ajili yako Kampuni hiyo ni bora, hao ni aina ya hoja wao lazima walau kuwa na uwezo wa kufanya. Au angalau hizi ni aina ya mambo kwamba atakuja up katika majadiliano, kwenye angalau katika majadiliano rasmi sana. Sawa. Hivyo Ben mapendekezo kitu aitwaye uteuzi aina. Lakini mimi nina kwenda kupendekeza kwamba kuna njia nyingine ya kufanya hivyo, pia. Nini mimi si kweli kama kuhusu algorithm Ben ni kwamba yeye naendelea kutembea, au baada me kutembea, na kurudi na kurudi na na kurudi. Nini kama badala ningekuwa na kufanya kitu kama namba hizi hapa na ningekuwa na kushughulika tu na kila idadi kwa upande kama mimi nina kupewa hilo? Kwa maneno mengine, hapa ni orodha yangu ya namba. Nne, moja, tatu, mbili. Na mimi nina kwenda kufanya yafuatayo. Mimi nina kwenda kuingiza namba ambapo wao ni badala kuliko kuchagua yao moja kwa wakati. Kwa maneno mengine, hapa ni namba nne. Hapa ni orodha yangu ya awali. Na mimi nina kwenda kudumisha kimsingi orodha mpya hapa. Hivyo hii ni orodha ya zamani. Hii ni orodha mpya. Mimi naona namba nne ya kwanza. Orodha yangu mpya ni awali tupu, hivyo ni trivially kesi kwamba nne sasa assorted orodha. Mimi tu kuchukua idadi mimi nina kutolewa, na mimi nina kuweka katika orodha yangu mpya. Ni orodha hii mpya yamepangwa? Yeah. Ni kijinga kwa sababu kuna moja tu kipengele, lakini ni kabisa yamepangwa. Kuna kitu nje ya mahali. Ni jambo la kushangaza zaidi, algorithm hii, wakati mimi hoja na hatua inayofuata. Sasa nina moja. Hivyo moja, bila shaka, ni mali katika mwanzo au mwisho wa orodha hii mpya? Mwanzo. Hivyo nina kufanya baadhi ya kazi sasa. Nimekuwa kuchukua baadhi uhuru na marker yangu kwa kuchora tu mambo ambapo nataka yao, lakini kwamba si kweli sahihi katika kompyuta. kompyuta, kama sisi kujua, ina RAM, au Random Access Memory, na hiyo ni byte moja na mwingine Byte na Byte mwingine. Na kama una gigabyte ya RAM, una ka bilioni, lakini wao ni kimwili katika eneo moja. Huwezi tu hoja mambo kuzunguka kwa kuchora juu ya bodi popote unataka. Hivyo kama orodha yangu mpya ina maeneo ya nne katika kumbukumbu, kwa bahati mbaya nne ni tayari katika mahali sahihi. Hivyo kuingiza namba moja Siwezi tu kuteka ni hapa. Hii eneo ya kumbukumbu haipo. Hiyo itakuwa cheating, na nimekuwa kudanganya pictorially kwa dakika chache hapa. Hivyo kweli, kama nataka kuweka moja hapa, Mimi kuwa na nakala kwa muda nne na kisha kuweka moja huko. Hiyo ni sawa, hiyo ni sahihi, hiyo ni kitaalam inawezekana, lakini kutambua kwamba kazi ya ziada. Sikuwa tu ya kuweka idadi katika mahali. Mimi kwanza alikuwa na hoja namba, kisha kuiweka katika nafasi, hivyo mimi aina ya mara mbili ya kiasi yangu ya kazi. Hivyo kuendelea kuwa katika akili. Lakini mimi nina sasa kufanyika na hii kipengele. Sasa nataka kunyakua namba tatu. Ambapo, bila shaka, je, ni mali? Katikati. Siwezi kudanganya tena na tu kuiweka huko, kwa sababu, tena, hii kumbukumbu ni katika maeneo ya kimwili. Hivyo nina nakala nne na kuweka tatu zaidi ya hapa. Si mpango kubwa. Ni hatua moja tu ya ziada again-- anahisi ghali sana. Lakini sasa mimi hoja juu ya mbili. mbili, bila shaka, ni mali hapa. Sasa kuanza kuona jinsi kazi inaweza rundo up. Sasa nini mimi kufanya? Yeah, mimi na hoja nne, Mimi kisha kuwa na nakala tatu, na sasa siwezi kuingiza mbili. Na kukamata na hii algorithm, Inafurahisha kutosha, ni kudhani tuna zaidi uliokithiri kesi ambapo ni hebu sema nane, saba, sita, tano, nne, tatu, mbili, moja. Hii ni, katika hali nyingi, mbaya zaidi kesi, kwa sababu jambo darn ni literally nyuma. Ni kweli haina kuathiri algorithm Ben, kwa sababu katika uteuzi Ben aina yeye kwenda kuweka kwenda na kurudi kupitia orodha. Na kwa sababu alikuwa daima kuangalia kupitia orodha nzima iliyobaki, haijalishi ambapo mambo ni. Lakini katika kesi hii kwa inserting yangu approach-- hebu jaribu hii. Hivyo moja, mbili, tatu, nne, tano, sita, saba, nane. Moja mbili tatu nne, tano, sita, saba, nane. Mimi naenda kuchukua nane, na wapi mimi kuweka yake? Naam, katika mwanzo wa orodha yangu, kwa sababu orodha hii mpya ni Iliyopangwa. Na mimi kuvuka nje. Wapi mimi kuweka saba? Darn yake. Inahitaji kwenda huko, ili Nina kufanya baadhi kuiga. Na sasa saba huenda hapa. Sasa mimi hoja juu ya sita. Sasa ni kazi hata zaidi. Nane ana kwenda hapa. Saba ina kwenda hapa. Sasa sita wanaweza kwenda hapa. Sasa mimi kunyakua tano. Sasa nane ana kwenda hapa, saba ina kwenda hapa, sita ina kwenda hapa, na sasa tano na kurudia. Na mimi nina pretty much kusonga ni mara kwa mara. Hivyo mwisho, algorithm hii tutaweza kuiita kuingizwa sort-- kweli ina mengi ya kazi, pia. Ni tu tofauti aina ya kazi ya Ben. kazi Ben alikuwa na mimi kwenda na kurudi wakati wote, kuchagua ijayo ndogo kipengele tena na tena. Hivyo ilikuwa hii aina ya Visual sana ya kazi. Hii algorithm nyingine, ambayo ni bado correct-- itakuwa kupata kazi done-- tu mabadiliko kiasi cha kazi. Inaonekana kama awali uko kuokoa, kwa sababu wewe ni tu kushughulika na kila kipengele hadi mbele bila kutembea zote njia ya kupitia orodha kama Ben alikuwa. Lakini tatizo ni, hasa katika hizi kesi mambo ambapo ni wote nyuma, uko tu aina ya kuahirisha kufanya kazi kwa bidii mpaka una kurekebisha makosa yako. Na hivyo kama unaweza kufikiria hii nane na saba na sita na tano na baadaye nne na mitatu na mbili kusonga njia yao kupitia orodha, tumekuwa iliyopita tu aina ya kazi sisi ni kufanya. Badala ya kufanya hivyo kwa mwanzo wa iteration yangu, Mimi tu kufanya hivyo kwa Mwisho wa kila iteration. Hivyo zinageuka kuwa algorithm hii, sana, kwa ujumla aitwaye kuingizwa aina, pia ni juu ya utaratibu wa n squared. Ni kweli hakuna bora, hakuna bora wakati wote. Hata hivyo, kuna njia ya tatu Napenda kuwatia moyo sisi kufikiria, ambayo ni hii. Hivyo tuseme orodha yangu, kwa unyenyekevu tena, ni nne, moja, tatu, two-- namba nne tu. Ben alikuwa Intuition nzuri, nzuri Intuition binadamu kabla, na ambayo sisi fasta nzima orodha kuingizwa aina eventually--. Mimi shawishiwa yetu pamoja. Lakini hebu fikiria njia rahisi ya kurekebisha orodha hii. Orodha hii ni si yamepangwa. Kwa nini? Kwa Kiingereza, kueleza kwa nini siyo kweli yamepangwa. Ina maana gani si kutatuliwa? STUDENT: Ni si utaratibu wa kudumu. DAVID Malan: Si utaratibu wa kudumu. Nipe mfano. STUDENT: Kuziweka katika utaratibu. DAVID Malan: Sawa. Nipe mfano maalum zaidi. STUDENT: Wakipanda ili. DAVID Malan: Si wakipanda ili. Kuwa sahihi zaidi. Sijui nini maana ya kupaa. Nini tatizo? STUDENT: ndogo ya idadi si katika nafasi ya kwanza. DAVID Malan: Ndogo idadi ya si katika nafasi ya kwanza. Kuwa maalumu zaidi. Mimi nina kuanza kukamata. Tuko kuhesabu, lakini nini nje ya utaratibu hapa? STUDENT: namba mlolongo. DAVID Malan: namba mlolongo. aina ya kila mtu wa utunzaji ni here-- kiwango cha juu sana. Tu literally kuniambia nini vibaya kama nguvu-umri wa miaka mitano. STUDENT: Plus moja. DAVID Malan: Nini hiyo? STUDENT: Plus moja. DAVID Malan: Ni nini maana pamoja na moja? Nipe tofauti-umri wa miaka mitano. Nini mbaya, mama? Nini mbaya, baba? Ni nini maana hii si yamepangwa? STUDENT: Ni si mahali pa haki. DAVID Malan: Nini si katika mahali sahihi? STUDENT: Nne. DAVID Malan: Sawa, nzuri. Hivyo nne si ambapo ni lazima. Hasa, ni haki hii? Nne na moja, kwanza namba mbili naona. Je, hii ni haki? Hakuna, wao uko nje ya utaratibu, sawa? Kwa kweli, nadhani sasa kuhusu kompyuta, pia. Ni inaweza tu kuangalia labda moja, labda mambo mawili kwa wakati once-- na kwa kweli jambo moja tu wakati huo, lakini inaweza angalau kuangalia jambo moja kisha Jambo la pili kulia karibu na hiyo. Hivyo ni haya ili? Bila shaka hapana. Hivyo unajua nini? Mbona sisi kuchukua mtoto hatua fixing tatizo hili badala ya kufanya hizi dhana algorithms kama Ben, ambapo yeye aina ya fixing na looping kupitia orodha badala ya kufanya nini mimi, ambapo Mimi tu aina ya fasta hivyo kama sisi kwenda? Hebu tu literally kuvunja dhana ya order-- ili masuala mbalimbali, kuiita chochote want-- katika kulinganisha hizi pairwise. Nne na moja. Je, hii ni mpangilio sahihi? Basi hebu kurekebisha hiyo. Mmoja na nne, na kisha tutaweza tu nakala hiyo. Yote ya haki, nzuri. Mimi fasta mmoja na nne. Tatu na mbili? Hakuna Hebu maneno yangu mechi vidole yangu. Nne na mitatu? Siyo ili, hivyo mimi nina kwenda kufanya moja, tatu, nne, mbili. OK, vizuri. Sasa nne na mbili? Tunahitaji kurekebisha hili, pia. Hivyo moja, tatu, mbili, nne. Hivyo ni sorted? Hapana, lakini ni karibu na yamepangwa? Ni, kwa sababu sisi fasta hii makosa, sisi fasta kosa hili, na sisi fasta kosa hilo. Hivyo sisi fasta makosa matatu arguably. Bado haina kweli kuangalia sorted, lakini ni objectively karibu na sorted kwa sababu sisi fasta baadhi ya makosa hayo. Sasa nini mimi kufanya ijayo? Mimi aina ya kufikiwa mwisho wa orodha. Mimi yalionekana kuwa fasta makosa yote, lakini hakuna. Kwa sababu katika kesi hii, idadi ya baadhi ya anaweza kuwa bubbled juu karibu kwa idadi nyingine kwamba bado ni nje ya utaratibu. Basi hebu kufanya hivyo tena, na mimi itabidi tu kufanya hivyo katika mahali wakati huu. Moja na tatu? Ni faini. Tatu na mbili? Bila shaka hakuna, hivyo hebu mabadiliko hayo. Hivyo mbili, tatu. Tatu na nne? Na sasa hebu tu kuwa hasa pedantic hapa. Je, ni yamepangwa? You binadamu kujua ni sorted. Nitajaribu tena. Hivyo Olivia ni kupendekeza mimi kujaribu tena. Kwa nini? Kwa sababu kompyuta haina anasa ya macho yetu binadamu ya tu glancing back-- OK, mimi nina kufanyika. Jinsi gani kompyuta kuamua kwamba orodha ni sasa yamepangwa? Mechanically. Mimi lazima kwenda kwa njia ya mara moja zaidi, na tu kama mimi hatuwezi kufanya / kupata makosa yoyote naweza kisha kuhitimisha kama kompyuta, yep, sisi ni vizuri kwenda. Hivyo moja na mbili, mbili na tatu, tatu na nne. Sasa naweza kipekee kusema hii ni yamepangwa, kwa sababu mimi alifanya hakuna mabadiliko. Sasa itakuwa ni mdudu na tu wajinga kama mimi, kompyuta, kuulizwa maswali hizo hizo tena wanatarajia majibu tofauti. Haikupaswa kutokea. Na hivyo sasa orodha ni Iliyopangwa. Kwa bahati mbaya, mbio wakati wa algorithm hii pia ni n squared. Kwa nini? Kwa sababu una idadi n, na katika kesi mbaya una hoja idadi n n mara kwa sababu una kuendelea nyuma ya kuangalia na uwezekano wa kurekebisha namba hizi. Na tunaweza kufanya zaidi uchambuzi rasmi, pia. Hivyo hii yote ni kusema tumekuwa kuchukuliwa tatu mbinu mbalimbali, moja wao mara moja Intuitive mbali bat kutoka Ben kwa insertion yangu alipendekeza aina ya hii moja ambapo aina ya kupoteza mbele ya msitu kwa ajili ya miti awali. Lakini basi kama wewe kuchukua hatua nyuma, voila, tumekuwa fasta dhana kuchagua. Hivyo hii ni, kuthubutu kusema, ngazi ya chini labda kuliko baadhi ya wale wengine algorithms, lakini hebu kuona kama hatuwezi taswira hizi kwa njia ya hii. Hivyo hii ni baadhi nzuri programu kwamba mtu aliandika kwa kutumia baa rangi hiyo ni kwenda kufanya yafuatayo kwa ajili yetu. Kila moja ya baa haya inawakilisha idadi. Taller bar, kubwa idadi, ndogo bar, idadi ndogo. Hivyo walau tunataka piramidi nzuri ambapo ni kuanza ndogo na anapata kubwa, na kwamba itakuwa na maana kwamba baa haya ni yamepangwa. Hivyo mimi nina kwenda mbele na kuchagua, Kwa mfano, algorithm Ben first-- uteuzi aina. Na taarifa ya nini ni kufanya. njia wameweza waliochaguliwa taswira algorithm hii ni kwamba, kama mimi nilikuwa kutembea kwa njia ya orodha yangu, mpango huu ni kutembea kupitia orodha yake ya namba, kuonyesha katika nyekundu kila idadi hiyo ni kuangalia. Na nini kuhusu kutokea hivi sasa? idadi ndogo kwamba Mimi au Ben kupatikana ghafla anapata wakiongozwa na mwanzo wa orodha. Na ilani walivyofanya kumfukuza idadi hiyo ilikuwa pale, na hiyo ni kikamilifu faini. Sikuweza kupata ndani ya kwamba kiwango cha zaidi. Lakini tunahitaji kuweka idadi hiyo mahali fulani, hivyo sisi tu kuhamia kwa wazi doa ambayo iliundwa. Hivyo nina kwenda kuongeza kasi hii up, kwa sababu vinginevyo inakuwa tedious sana haraka. Uhuishaji speed-- kuna sisi kwenda. kanuni hiyo sasa huo Mimi nilikuwa kutumia, lakini Unaweza kuanza kujisikia algorithm, kama wewe mapenzi, au kuona wazi zaidi kidogo. Na algorithm hii ina athari ya kuchagua ijayo ndogo kipengele, hivyo wewe ni kwenda kuanza kuiona njia panda juu upande wa kushoto. Na juu ya kila iteration, kama mimi mapendekezo, ni gani kidogo kidogo ya kazi. Haina kwenda njia yote nyuma na mwisho kushoto wa orodha, kwa sababu tayari anawajua hao ni yamepangwa. Hivyo ni aina ya anahisi kama ni kuongeza kasi ya, ingawa kila hatua ni kuchukua kiasi hicho cha wakati. Kuna wachache tu hatua iliyobaki. Na sasa unaweza aina ya kujisikia algorithm kusafisha mwisho wake, na kwa kweli sasa ni sorted. Hivyo kuingizwa aina ni yote kufanyika. Mimi haja ya re-randomize safu. Na taarifa naweza tu kuweka randomizing yake, na tutaweza kupata makadirio ya mbinu hiyo hiyo, kuingizwa aina. Napenda kupunguza ni chini ya hapa. Hebu kuanza kuwa juu. Kukomesha. Hebu turukie nne. Kuna sisi kwenda. Randomize safu wao. Na hapa sisi go-- kuingizwa aina. Kucheza. Taarifa kwamba ni kushughulika na kila kipengele atakutana haki mbali, lakini kama ni mali katika vibaya ilani mahali yote ya kazi ambayo ina kutokea. Tuna kuweka shifting zaidi na mambo zaidi ya kufanya chumba kwa moja tunataka kuweka. Hivyo sisi ni kulenga mwisho wa kushoto wa orodha tu. Ilani sisi si hata inaonekana at-- sisi si yalionyesha katika nyekundu chochote na haki. Sisi ni tu kushughulika na matatizo kama sisi kwenda, lakini sisi ni kujenga mengi ya kazi kwa wenyewe bado. Na hivyo kama sisi kasi hii up sasa kwenda kukamilika, ina kujisikia tofauti na hiyo kweli. Ni kulenga tu juu ya mwisho wa kushoto lakini kufanya kidogo kazi zaidi kama needed-- aina ya Ng'ombe mambo juu, kurekebisha vitu, lakini kushughulika hatimaye pamoja na kila kipengele moja kwa wakati mmoja mpaka sisi kupata the-- vizuri, sisi wote tunajua jinsi hii ni kwenda mwisho, hivyo ni aghali kidogo labda. Lakini orodha katika end-- spoiler-- ni kwenda kutatuliwa. Hivyo hebu tuangalie moja iliyopita moja. Hatuwezi tu ruka sasa. Tuko karibu na hapo. Miwili na kwenda, moja kwenda. Na voilà. Excellent. Hivyo sasa hebu kufanya moja ya mwisho moja, re-randomizing na Bubble aina. Na taarifa hapa, hasa kama mimi polepole chini, hii haina kuweka swooping kupitia. Lakini taarifa ni tu hufanya pairwise comparisons-- aina ya ufumbuzi wa ndani. Lakini kwa haraka kama sisi kupata mwisho wa orodha katika pink, nini kinaendelea na kutokea tena? Yeah, ni kwenda kuwa na kuanza juu, kwa sababu tu fasta pairwise makosa. Na kwamba wanaweza kuwa na umebaini wengine bado. Na hivyo kama wewe kasi hii up, itabidi kuona kwamba, kiasi kama jina ina maana, ndogo elements-- au tuseme, elements-- kubwa ni mapya Bubble hadi juu, kama wewe. Na mambo madogo ni kuanzia Bubble chini upande wa kushoto. Na hakika, hiyo ni aina ya athari za kuona kama vizuri. Na hivyo hii itakuwa kuishia kumaliza katika njia sawa sana, pia. Hatuna kukaa juu ya hili fulani. Hebu kufungua hii sasa, pia. Kuna wengine wachache algorithms kuchagua duniani, baadhi yake ni alitekwa hapa. Na hasa kwa wanafunzi ambao si lazima Visual au hisabati, kama tulivyofanya kabla, tunaweza Pia kufanya hivyo audially kama tujiunge sauti na hili. Na kwa ajili ya kujifurahisha, hapa ni chache algorithms mbalimbali, na mmoja wao hasa uko kwenda taarifa inaitwa "kuunganisha aina." Ni kweli kimsingi bora algorithm, kiasi kwamba kuunganisha aina, moja ya ndio uko juu ya kuona, si utaratibu wa n squared. Ni juu ya utaratibu wa n mara logi ya n, ambayo ni kweli ndogo na hivyo kasi zaidi kuliko wale wengine watatu. Na kuna wanandoa wengine ndio silly kwamba tutaweza kuona. Hivyo hapa sisi kwenda pamoja na sauti fulani. Hii ni kuingizwa aina, hivyo tena ni tu kushughulika na mambo kama wao kuja. Hii ni Bubble aina, hivyo ni kuzingatia yao jozi wakati huo. Na tena, vipengele kubwa ni bubbling hadi juu. Next up uteuzi aina. Hii ni algorithm Ben, ambapo tena yeye kuchagua iteratively kipengele ijayo ndogo. Na tena, sasa unaweza kweli kusikia kwamba ni kuongeza kasi ya lakini tu katika hivyo mbali kama ni kufanya kidogo na kidogo kazi juu ya kila iteration. Hii ni kwa kasi moja, kuunganisha aina, ambayo ni kuchagua nguzo ya namba pamoja na kisha kuchanganya yao. Hivyo look-- kushoto nusu tayari yamepangwa. Sasa ni kuchagua nusu haki, na sasa ni kwenda kwa kuchanganya yao katika moja. Hii ni kitu kinachoitwa "Gnome aina." Na unaweza aina ya kuona kwamba ni kwenda na kurudi, fixing kazi kidogo hapa na huko mbele ni kuendelea kazi mpya. Na hiyo ni yake. Kuna aina nyingine, ambayo ni kweli tu kwa madhumuni ya kielimu, inayoitwa "kijinga aina," ambayo inachukua data yako, aina yake nasibu, na kisha hundi kama ni yamepangwa. Na kama ni hivyo, ni re-kuipanga nasibu, hundi kama ni sorted, na kama si kurudia. Na katika nadharia, probabilistically hii itaendelea kukamilisha, lakini baada ya kidogo kabisa ya muda. Siyo wengi ufanisi wa algorithms. Hivyo maswali yoyote juu ya wale algorithms fulani au kitu chochote kuhusiana na huko, pia? Naam, hebu sasa tease mbali nini zote mistari haya ni kwamba nimekuwa kuchora na kile Mimi nina kuchukua kompyuta anaweza kufanya chini ya Hood. Napenda kusema kwamba yote ya namba hizi Mimi kushika drawing-- wanahitaji kupata kuhifadhiwa mahali fulani katika kumbukumbu. Tutaweza kujikwamua guy hii sasa, pia. Hivyo kipande cha kumbukumbu katika computer-- hivyo RAM DIMM ni nini sisi searched kwa jana, dual inline kumbukumbu module-- inaonekana kama hii. Na kila moja ya haya chips nyeusi kidogo ni baadhi ya idadi ya ka, kawaida. Na kisha pini dhahabu ni kama waya kwamba kuungana kwa kompyuta, na kijani silicon bodi ni tu nini anaendelea kila kitu wote kwa pamoja. Basi nini hii kweli maana? Kama mimi aina ya kuchora picha hiyo, hebu tuseme kwa unyenyekevu kwamba DIMM hii, dual inline kumbukumbu moduli, ni gigabyte moja ya RAM, moja gigabyte ya kumbukumbu, ambayo ni wangapi ka jumla? gigabyte moja ni ka ngapi? Zaidi ya hapo. 1,124 ni kilo, 1000. Mega ni milioni. Giga ni bilioni. Mimi uongo? Je, tunaweza hata kusoma studio? Hii ni kweli 128 gigabytes, hivyo ni zaidi. Lakini tutaweza kujifanya huu ni gigabyte moja tu. Hivyo kwamba maana kuna bilioni ka ya kumbukumbu inapatikana kwa mimi au bilioni 8 bits, lakini tunakwenda kuzungumza katika suala la ka sasa, Songa mbele. Hivyo nini maana ya ni hii ni Byte moja, hii ni mwingine Byte, hii ni mwingine Byte, na kama sisi kweli alitaka kuwa maalum tunataka kuwa na kuteka bilioni mraba kidogo. Lakini hiyo ina maana gani? Naam, napenda tu kuvuta katika juu ya picha hii. Kama mimi nimepata kitu ambacho inaonekana kama hii sasa, hiyo ni ka nne. Na hivyo mimi naweza kuweka namba nne hapa. Moja mbili tatu nne. Au mimi naweza kuweka herufi nne au alama. "Hey!" anaweza kwenda haki pale, kwa sababu kila moja ya barua, sisi kujadiliwa mapema, inaweza kuwakilishwa na bits nane au ASCII au Byte. Hivyo kwa maneno mengine, unaweza kuweka mambo bilioni 8 ndani ya ya fimbo hii moja ya kumbukumbu. Sasa ni nini maana kuweka mambo nyuma kwa nyuma kwa nyuma katika kumbukumbu kama hii? Hii ni nini programu kuita "safu." Katika programu ya kompyuta, wewe sidhani kuhusu vifaa msingi, per se. Wewe tu kufikiria mwenyewe kama kuwa upatikanaji wa bilioni ka jumla, na unaweza kitu chochote unataka na hayo. Lakini kwa urahisi ni kwa ujumla na manufaa kuweka kumbukumbu wako wa kulia karibu na kila mmoja kama hii. Hivyo kama mimi kuvuta Haya kwa sababu tuko hakika si kwenda kuteka bilioni squares-- kidogo hebu tuseme kwamba hii bodi inawakilisha kwamba fimbo ya kumbukumbu sasa. Na mimi itabidi kuteka wengi kama yangu marker kuishia kunipa hapa. Hivyo basi, tuna fimbo ya kumbukumbu kwenye ubao kwamba got moja, mbili, tatu, nne, tano, sita, moja, mbili, tatu, nne, tano, sita, seven-- hivyo 42 ka ya kumbukumbu juu ya jumla screen. Asante. Ndiyo, alifanya hesabu wangu wa kulia. Hivyo 42 ka ya kumbukumbu hapa. Basi nini hii kwa kweli maana? Naam, programu za kompyuta ingekuwa kweli kwa ujumla kufikiri ya kumbukumbu hii kama addressable. Kwa maneno mengine, kila mmoja wa haya maeneo katika kumbukumbu, katika vifaa, ina anwani kipekee. Siyo kama tata kama One Brattle Square, Cambridge, Misa., 02138. Badala yake, ni tu idadi. Hii ni Byte idadi zero, hii ni moja, hii ni mbili, hii ni tatu, na hii ni 41. Subiri kidogo. Mimi nilifikiri alisema 42 wakati iliyopita. Mimi kuanza kuhesabu saa sifuri, hivyo hiyo ni kweli sahihi. Sasa hatuna kwa kweli kuteka ni kama gridi ya taifa, na kama wewe kuteka ni kama gridi ya taifa Nadhani mambo kweli kupata kidogo kupotosha. Nini programu ingekuwa, katika akili yake mwenyewe, ujumla kufikiri ya hii kumbukumbu kama ni kama mkanda, kama kipande cha mkanda Masking kwamba tu unaendelea na juu milele au mpaka kukimbia nje ya kumbukumbu. Hivyo njia zaidi ya kawaida kuteka na tu kufikiri juu ya kumbukumbu itakuwa kwamba hii ni Byte sifuri, moja, mbili, tatu, na kisha dot, dot, dot. Na una 42 kama ka jumla, hata ingawa kimwili ni wazi kunaweza kuwa ni kitu zaidi kama hii. Hivyo kama wewe sasa kufikiria yako kumbukumbu kama hii, tu kama mkanda, hii ni nini programu tena kuita safu ya kumbukumbu. Na wakati unataka kweli kuhifadhi kitu katika kumbukumbu ya kompyuta, wewe kwa ujumla kufanya kuhifadhi mambo nyuma-ya-nyuma kwa nyuma kwa nyuma. Hivyo tumekuwa kuzungumza kuhusu namba. Na wakati nilitaka kutatua matatizo kama nne, moja, tatu, mbili, ingawa nilikuwa tu kuchora tu namba nne, moja, tatu, mbili juu ya bodi, kompyuta ingekuwa kweli kuwa kuanzisha hii katika kumbukumbu. Na nini itakuwa karibu na mbili katika kumbukumbu ya kompyuta? Naam, hakuna jibu la kwamba. Sisi si kweli kujua. Na muda mrefu kama kompyuta haina haja yake, haina kuwa na huduma kile ni ijayo kwa idadi ni gani huduma ya juu. Na wakati nilivyosema awali kwamba kompyuta unaweza tu kuangalia katika anuani moja kwa wakati mmoja, hii ni aina ya nini. Si tofauti na rekodi mchezaji na kichwa kusoma tu kuwa na uwezo wa kuangalia fulani Groove katika rekodi ya kimwili umri wa kwenda shule wakati huo, vile vile Unaweza kompyuta shukrani kwa CPU yake na wake Intel maelekezo kuweka, miongoni mwa ambao mafundisho ni kusoma kutoka kumbukumbu au kuokoa na memory-- kompyuta inaweza tu kuangalia katika eneo moja kwa wakati time-- wakati mwingine macho yao, lakini eneo moja kweli tu wakati huo. Hivyo wakati sisi walikuwa kufanya hizi algorithms mbalimbali, Mimi si tu kuandika katika vacuum-- nne, moja, tatu, mbili. Wale idadi kweli ni mali mahali fulani kimwili katika kumbukumbu. Hivyo kuna kidogo kidogo transistors au aina fulani ya umeme chini kofia kuhifadhi maadili haya. Na katika jumla, bits ni wangapi wanaohusika hivi sasa, tu kuwa wazi? Hivyo hii ni ka nne, au sasa ni 32 bits jumla. Hivyo ni kweli kuna 32 zeros na ndio kutunga mambo haya manne. Kuna hata zaidi juu hapa, lakini tena sisi hawajali kuhusu hilo. Hivyo sasa hebu kuuliza mwingine swali kwa kutumia kumbukumbu, kwa sababu kwamba mwishoni wa siku ni katika ugomvi. Hakuna jambo gani tupate kufanya na kompyuta, mwisho wa siku vifaa ni bado huo chini ya Hood. Jinsi gani mimi kuhifadhi neno katika hapa? Naam, neno katika kompyuta kama "Hey!" itakuwa kuhifadhiwa tu kama hii. Na kama alitaka tena neno, unaweza tu overwrite kwamba na kusema kitu kama "hello" na kuhifadhi kwamba hapa. Na hivyo hapa, pia, hii contiguousness ni kweli faida, kwa sababu kompyuta Unaweza tu kusoma kutoka kulia kwenda kushoto. Lakini hapa ni swali. Katika mazingira ya neno hili, h-e-l-l-o, mshangao uhakika, jinsi gani kompyuta kujua ambapo neno huanza na ambapo neno kuishia? Katika mazingira ya namba, jinsi gani kompyuta kujua ni muda mlolongo wa jinsi idadi ni au ambapo ni kuanza? Naam, ni zamu nje na sisi si kwenda sana katika ngazi hii ya detail-- kompyuta kusonga mambo kuzunguka katika kumbukumbu literally kwa njia ya anwani hizi. Hivyo katika kompyuta, kama wewe ni kuandika kanuni kuhifadhi vitu kama maneno, nini wewe kweli kufanya ni kuandika maneno kwamba kukumbuka ambapo katika kumbukumbu ya kompyuta maneno haya ni. Hivyo basi mimi kufanya sana, rahisi sana mfano. Mimi nina kwenda mbele na kufungua maandishi mpango rahisi, na mimi nina kwenda kujenga faili inayoitwa hello.c. Wengi wa habari hii sisi si kwenda katika katika kina kubwa, lakini mimi nina kwenda kuandika programu katika lugha hiyo hiyo, C. Hii ni mbali zaidi vitisho, Napenda kusema, kuliko Scratch, lakini ni sawa sana katika roho. Kwa kweli, haya curly braces unaweza aina ya kufikiria nini mimi tu alifanya kama hii. Hebu kufanya hili, kwa kweli. Wakati bendera ya kijani clicked, kufanya yafuatayo. Nataka magazeti nje "hello." Hivyo hii ni sasa pseudocode. Mimi nina aina ya blurring mistari. Katika C, lugha hii mimi kuzungumza kuhusu, mstari huu magazeti hodi kweli inakuwa "printf" na baadhi mabano na nusu koloni. Lakini ni exact wazo. Na hii user-kirafiki sana "Wakati kijani bendera clicked" inakuwa mengi zaidi arcane "int kuu utupu." Na hii kweli hana ramani, hivyo mimi nina kwenda tu kupuuza kwamba. Lakini braces curly ni kama vipande ikiwa puzzle kama hii. Hivyo unaweza aina ya nadhani. Hata kama wewe sijawahi iliyowekwa mbele, nini mpango huu pengine kufanya? Pengine Prints hujambo na kumweka Moderators. Basi hebu jaribu hilo. Mimi nina kwenda kuokoa yake. Na hii ni, tena, sana mazingira na umri wa shule. Siwezi click, siwezi Drag. Mimi na aina amri. Hivyo nataka kukimbia mpango wangu, hivyo Nipate kufanya hivyo, kama hello.c. Hiyo ni file mimi mbio. Lakini kusubiri, mimi kukosa hatua. Nini tunasema ni muhimu hatua kwa lugha kama C? Nimekuwa tu imeandikwa chanzo kanuni, lakini je, mimi haja? Yeah, mimi haja compiler. Hivyo juu ya Mac yangu hapa, nina programu inayoitwa GCC, GNU C compiler, ambayo inaruhusu mimi kufanya Haya upande chanzo kanuni wangu katika, tutaweza simu yake, mashine kanuni. Na mimi kuona kwamba, tena, kama ifuatavyo, hizi ni zeros na ndio mimi tu kuundwa kutoka chanzo kanuni yangu, yote ya zeros na ndio. Na kama nataka kukimbia yangu program-- hutokea kuitwa a.out kwa kihistoria reasons-- "hello." Siwezi kukimbia tena. Hello, hello, hello. Na inaonekana kuwa kazi. Lakini hiyo ina maana mahali fulani katika wangu kumbukumbu ya kompyuta ni maneno h-e-l-l-o, mshangao uhakika. Na zinageuka, tu kama kando, nini kompyuta ingekuwa kawaida kufanya hivyo kwamba anajua ambapo mambo kuanza na end-- ni kwenda kuweka alama maalum hapa. Na mkataba ni kuweka idadi zero mwishoni mwa neno ili kujua ambapo ni kweli mwisho, ili si kuweka uchapishaji nje zaidi na zaidi wahusika kuliko wewe kweli nia. Lakini takeaway hapa, hata ingawa hii ni haki arcane, ni kwamba ni hatimaye rahisi kiasi. Wewe walipewa aina ya mkanda, tupu nafasi ambayo unaweza kuandika barua. Wewe tu kuwa na maalum ishara, kama kiholela idadi sifuri, kuweka mwishoni mwa maneno yako ili kompyuta anajua, oh, I wanapaswa kuacha uchapishaji baada Mimi naona mshangao uhakika. Kwa sababu jambo la pili huko ni thamani ASCII ya sifuri, au tabia null kama mtu bila simu yake. Lakini kuna aina ya tatizo hapa, na hebu revert nyuma kwa idadi kwa muda. Tuseme kwamba mimi kufanya, kwa kweli, na safu ya idadi, na tuseme kwamba Mpango mimi nina kuandika ni kama kitabu daraja kwa mwalimu na darasa walimu. Na mpango huu inaruhusu kwake aina katika alama ya wanafunzi wao juu ya Quizzes. Na tuseme kwamba mwanafunzi anapata 100 juu ya jaribio lao la kwanza, labda kama 80 kwenye moja ijayo, basi 75, kisha 90 juu ya jaribio la nne. Hivyo katika hatua hii ya hadithi, safu ni ya kawaida nne. Kuna kabisa zaidi ya kumbukumbu katika kompyuta, lakini safu, hivyo kusema, ni ya kawaida nne. Tuseme sasa kwamba mwalimu anataka hawawajui Jaribio tano darasani. Naam, moja ya mambo yeye au yeye ni kwenda kufanya sasa ni kuhifadhi thamani ya ziada hapa. Lakini kama safu mwalimu ana kuundwa katika mpango huu ni wa kawaida kwa ajili ya, moja ya tatizo na safu ni kwamba huwezi kuendelea kuongeza kwa kumbukumbu. Kwa sababu nini kama sehemu nyingine ya mpango ina neno "hey" haki pale? Kwa maneno mengine, kumbukumbu yangu inaweza kuwa kutumika kwa ajili ya kitu chochote katika mpango. Na kama mapema mimi typed katika, hey, Nataka alama pembejeo nne jaribio, wapate kwenda hapa na hapa. Na kama kwa ghafla mabadiliko ya akili yako baadaye na kusema nataka Jaribio tano alama, huwezi tu kuiweka popote unataka, kwa sababu nini kama hii kumbukumbu unatumiwa kwa ajili ya kitu else-- baadhi ya programu nyingine au baadhi ya kipengele mengine ya mpango kwamba wewe ni mbio? Hivyo kuwa na kufikiri mapema jinsi gani unataka kuhifadhi data yako, kwa sababu sasa umefanya walijenga mwenyewe katika kona digital. Hivyo mwalimu anaweza badala kusema wakati kuandika mpango kuhifadhi yake darasa, unajua nini? Mimi naenda kuomba, wakati wa kuandika mpango wangu, kuwa nataka sifuri, moja, mbili, tatu, nne, tano, sita, nane darasa jumla. Hivyo moja, mbili, tatu, nne, tano, sita, saba, nane. Mwalimu anaweza tu juu-kutenga kumbukumbu wakati wa kuandika mpango wake na kusema, unajua nini? Mimi kamwe kwenda hawawajui zaidi ya nane Quizzes katika muhula. Hiyo ni tu mambo. Mimi hutaweza kutenga hiyo. Hivyo kwamba njia hii yeye au yeye ana kubadilika kwa alama duka mwanafunzi, kama 75, 90, na labda moja ya ziada ambapo mwanafunzi got mikopo ya ziada, 105. Lakini kama mwalimu kamwe anatumia nafasi hizi tatu, kuna takeaway Intuitive hapa. Yeye au yeye ni tu kupoteza nafasi. Hivyo kwa maneno mengine, kuna hii kawaida tradeoff katika programu ambapo unaweza ama kutenga kumbukumbu hasa kama vile unataka, suala la mafanikio ya ambayo ni kwamba wewe ni super efficient-- wewe si kuwa fujo katika all-- lakini upande wa chini ya ambayo ni nini kama wewe kubadili akili yako wakati kutumia mpango kwamba unataka kuhifadhi data zaidi kuliko wewe awali lengo. Hivyo labda ufumbuzi ni, basi, kuandika mipango yako kwa namna kwamba wanatumia zaidi ya kumbukumbu kuliko wao kweli wanahitaji. Kwa njia hii wewe si kwenda kukimbia katika tatizo kwamba, lakini wewe kuwa fujo. Na zaidi ya kumbukumbu ya mpango wako anatumia, kama sisi kujadiliwa jana, chini ya kumbukumbu hiyo inapatikana kwa programu nyingine, mapema kompyuta yako inaweza kupunguza chini kwa sababu ya kumbukumbu virtual. Na hivyo ufumbuzi bora inaweza kuwa nini? Chini ya kugawa inaonekana mbaya. Zaidi ya-kugawa inaonekana mbaya. Hivyo kile anaweza kuwa suluhisho bora? Reallocating. Kuwa nguvu zaidi. Je, si nguvu mwenyewe kwa kuchagua priori, mwanzoni, unataka nini. Na hakika si juu-kutenga, usije kuwa fujo. Na hivyo kufikia lengo hilo, sisi unahitaji kutupa muundo huu data, hivyo kusema, mbali. Na hivyo kile programu itakuwa kawaida kutumia ni kitu kinachoitwa si safu lakini orodha wanaohusishwa. Kwa maneno mengine, yeye au yeye mapenzi kuanza kufikiri ya kumbukumbu yao kama kuwa aina ya sura kwamba wao Unaweza kuteka kwa njia hii. Kama nataka kuhifadhi namba moja katika program-- hivyo ni Septemba, Nimekupa wanafunzi wangu jaribio; nataka kuhifadhi wanafunzi 'jaribio la kwanza, na wao got 100 juu ya mimi it-- naenda kuuliza kompyuta yangu, kwa njia ya mpango nimekuwa Imeandikwa, kwa chunk moja ya kumbukumbu. Na mimi nina kwenda kuhifadhi idadi 100 ndani yake, na hiyo ni yake. wiki chache baadaye basi wakati mimi kupata Jaribio yangu ya pili, na ni wakati wa aina katika kwamba 90%, nakwenda kuuliza kompyuta, hey, kompyuta, nitampata mwingine chunk ya kumbukumbu? Ni kwenda nipe huu tupu chunk ya kumbukumbu. Mimi nina kwenda kuweka katika idadi 90, lakini katika mpango wangu kwa namna fulani au other-- na hatutakuwa na wasiwasi juu ya syntax kwa Haya nahitaji kwa namna fulani mlolongo mambo haya kwa pamoja. Na mimi itabidi mlolongo yao pamoja na kile kinachoonekana kama mshale hapa. Jaribio la tatu kuja juu, Mimi nina kwenda kusema, hey, kompyuta, nipe mwingine chunk ya kumbukumbu. Na mimi nina kwenda kuweka chini chochote ilikuwa, kama 75, na mimi kuwa na mlolongo huu pamoja sasa kwa namna fulani. Jaribio la nne huja pamoja, na labda hiyo ni kuelekea mwisho wa muhula. Na kwa kuwa hatua mpango wangu inaweza kuwa kutumia kumbukumbu kila mahali, kote kimwili. Na hivyo tu kwa mateke, mimi nina kwenda kuteka hii nje quiz-- mimi kusahau ni kitu gani, mimi kufikiri labda 80 au something-- njia zaidi ya hapa. Lakini hiyo ni nzuri, kwa sababu pictorially Mimi nina kwenda kuteka mstari huu. Kwa maneno mengine, katika hali halisi, katika vifaa vya kompyuta yako, alama ya kwanza wapate kuishia hapa kwa sababu ni haki katika mwanzo wa muhula. moja ijayo inaweza kuishia hapa kwa sababu muda kidogo umepita na mpango anaendelea mbio. alama ya pili, ambayo ilikuwa 75, inaweza kuwa zaidi ya hapa. Na alama ya mwisho inaweza kuwa 80, ambayo ni zaidi ya hapa. Hivyo katika hali halisi, kimwili, hii inaweza kuwa nini kumbukumbu ya kompyuta yako inaonekana kama. Lakini hii si muhimu akili dhana kwa ajili ya programu ya kompyuta. Kwa nini wewe huduma ambapo heck data yako ni kuishia? Wewe tu unataka kuhifadhi data. Hii ni aina ya kama mjadala wetu awali ya kuchora mchemraba. Kwa nini huduma ya kile pembeni ni wa mchemraba na jinsi una kugeuka kuteka ni? Unataka tu mchemraba. Vile vile hapa, nataka tu kitabu daraja. Wewe tu nataka kufikiri ya hili kama orodha ya namba. Nani anayejali jinsi gani ni kutekelezwa katika vifaa? Hivyo uchukuaji sasa ni picha hii hapa. Hii ni wanaohusishwa orodha, kama programu kuita yake, kadiri una orodha, ni wazi wa idadi. Lakini ni wanaohusishwa pictorially kwa njia ya mishale haya, na mishale yote haya are-- chini kofia, kama wewe ni curious, kukumbuka kuwa vifaa yetu ya kimwili ina anwani sifuri, moja, mbili, tatu, nne. mishale haya yote ni ni kama ramani au maelekezo, ambapo kama 90 is-- sasa I got kuhesabu. Sifuri, moja, mbili, tatu, nne, tano, sita, saba. Inaonekana kama 90 ni katika kumbukumbu anuani namba saba. mishale haya yote ni ni kama chakavu kidogo cha karatasi hiyo kutoa maelekezo kwa mpango kwamba anasema kufuata ramani hii kupata eneo saba. Na kuna utapata mwanafunzi Jaribio la pili score. Wakati huo huo, 75-- kama mimi kuendelea hii, hii ni saba, nane, tisa, 10, 11, 12, 13, 14, 15. Hii mshale mmoja tu inawakilisha ramani ya eneo ya kumbukumbu 15. Lakini tena, programu ujumla gani hawajali ngazi hii ya kina. Na katika wengi kila programu Lugha leo, programu huwezi hata kujua ambapo katika kumbukumbu namba hizi kweli ni. All yeye au yeye ana huduma ya juu ni kwamba wao ni namna fulani wanaohusishwa pamoja katika muundo data kama hii. Lakini zinageuka si kupata pia kiufundi. Lakini kwa sababu tu tunaweza labda kumudu kuwa na mjadala huu hapa, tuseme kwamba sisi kupitia upya suala hili hapa ya safu. Hebu tuone kama sisi majuto kwenda hapa. Hii ni 100, 90, 75, na 80. Napenda kwa ufupi kufanya dai hili. Hii ni safu, na tena, salient tabia ya safu ni kwamba wote wa data zako ni nyuma nyuma kwa nyuma katika memory-- literally byte moja au labda nne ka, baadhi idadi maalum ya ka mbali. Katika orodha wanaohusishwa, ambayo sisi tupate kuteka kama hii, chini ya Hood ambaye anajua ambapo mambo ambayo ni? Haina hata haja ya kumiminika kama hii. Baadhi ya data inaweza kuwa nyuma ya kushoto hadi pale. Huwezi hata kujua. Na hivyo na safu, una kipengele inayojulikana kama upatikanaji random. Na nini random kupata njia ni kompyuta inaweza kuruka instantly kwa eneo lolote katika safu. Kwa nini? Kwa sababu kompyuta anajua kwamba eneo la kwanza ni sifuri, moja, mbili, na tatu. Na hivyo kama unataka kwenda kutoka kipengele huu kwa kipengele ijayo, wewe literally, katika akili ya kompyuta, tu kuongeza moja. Kama unataka kwenda kipengele cha tatu, tu kuongeza one-- kipengele ijayo, tu kuongeza moja. Hata hivyo, katika toleo hili ya hadithi, tuseme kompyuta sasa ni kuangalia katika au kushughulika na idadi 100. Jinsi gani unaweza kupata ijayo daraja katika kitabu daraja? Una kuchukua saba hatua, ambayo ni holela. Ili kupata moja ijayo, una kuchukua hatua nyingine nane kupata 15. Kwa maneno mengine, siyo pengo mara kwa mara kati ya idadi, na hivyo ni tu inachukua kompyuta muda zaidi ni uhakika. kompyuta ina kutafuta kupitia kumbukumbu ili kupata nini ni kuangalia kwa. Hivyo ambapo safu inaelekea kuwa haraka data structure-- kwa sababu wewe Unaweza literally tu kufanya hesabu rahisi na kupata wapi unataka na kuongeza moja, kwa instance-- orodha wanaohusishwa, wewe sadaka kipengele kwamba. Huwezi tu kwenda kutoka kwanza kwa ya pili ya tatu kwa nne. Una kufuata ramani. Una kuchukua hatua zaidi kupata maadili hayo, ambayo bila ya kuonekana kuwa na kuongeza gharama. Hivyo sisi ni kulipa bei, lakini kile alikuwa kipengele kwamba Dan alikuwa akitafuta hapa? Je orodha wanaohusishwa inaonekana kuruhusu sisi kufanya, ambayo ilikuwa chanzo cha hii hadithi fulani? Hasa. ukubwa nguvu yake. Tunaweza kuongeza kwenye orodha hii. Tunaweza hata kuogopa orodha, hivyo kwamba tuko tu kutumia kumbukumbu kama kiasi kama sisi kweli wanataka na hivyo tuko kamwe juu-kugawa. Sasa tu kuwa kweli NIT-picky, kuna gharama za siri. Hivyo unapaswa tu basi mimi kuwashawishi kwamba hii ni kulazimisha tradeoff. Kuna mwingine gharama za siri hapa. faida, kuwa wazi, ni kwamba sisi kupata mabadiliko. Kama mimi nataka kipengele mwingine, naweza tu kuteka yake na kuweka namba katika huko. Na kisha naweza kuhusisha na picha hapa, ambapo zaidi ya hapa, tena, kama mimi wameweza walijenga mwenyewe kwenye kona, kama kitu kingine ni tayari kutumia kumbukumbu hapa, mimi nina nje ya bahati. Nimekuwa walijenga mwenyewe katika kona. Lakini nini siri gharama katika picha hii? Siyo tu kiasi muda kwamba inachukua kwenda kutoka hapa hapa, ambayo ni hatua saba, kisha hatua nane, ambayo ni zaidi ya moja. Nini gharama nyingine ya siri? Sio tu wakati. Maelezo ya ziada ni muhimu ili kufikia picha hii. Yeah, kwamba ramani, wale vyuma chakavu kidogo ya karatasi, kama mimi kuweka wakielezea kama. Hizi arrows-- wale si bure. computer-- unajua nini kompyuta ina. Ina zeros na ndio. Kama unataka kuwakilisha mshale au ramani au idadi, unahitaji baadhi ya kumbukumbu. Hivyo bei nyingine kulipia orodha wanaohusishwa, kawaida sayansi ya kompyuta rasilimali, pia ni nafasi. Na hakika hivyo, hivyo kawaida, miongoni mwa ujanja katika kubuni programu uhandisi mifumo ni muda na space-- ni mbili ya viungo yako, wawili ya viungo yako na gharama kubwa zaidi. Hii ni gharama yangu muda zaidi kwa sababu mimi na kufuata ramani hii, lakini pia ni gharama yangu nafasi zaidi kwa sababu mimi na kuweka ramani huu. Hivyo matumaini, kama tumekuwa aina ya kujadiliwa zaidi jana na leo, ni kwamba faida itakuwa outweigh gharama. Lakini hakuna ufumbuzi wa dhahiri hapa. Labda ni better-- la haraka na chafu, kama Kareem mapendekezo earlier-- kutupa kumbukumbu katika tatizo. Tu kununua zaidi ya kumbukumbu, kufikiri chini ngumu kuhusu utatuzi wa matatizo, na kutatua hayo katika njia rahisi zaidi. Na hakika kabla ya wakati kuongelea ujanja, haikuwa nafasi katika Kompyuta na wakati. Ilikuwa ni developer wakati, ambayo bado rasilimali nyingine. Hivyo tena, ni tendo hili ambalo kusawazisha kujaribu kuamua ambayo ya mambo hayo ni wewe tayari kutumia? Ambayo ni mdogo na gharama kubwa? Ambayo huleta matokeo bora? Yeah? Hakika. Katika kesi hiyo, kama wewe ni anayewakilisha idadi katika maps-- hizi zinaitwa katika lugha nyingi "Kuyatumia" au "anwani" - ni mara mbili nafasi. Hiyo haihitaji kuwa mbaya kama mara mbili kama sasa hivi sisi ni hifadhi tu idadi. Tuseme kwamba tulikuwa kuhifadhi kumbukumbu na subira katika hospital-- hivyo majina Pierson, namba za simu, idadi ya usalama ya kijamii, daktari historia. sanduku hii inaweza kuwa mengi, kubwa sana, katika kesi ambayo kidogo kidogo pointer, pepe ya ijayo element-- ni si kubwa mpango huo. Ni kama pindo gharama haijalishi. Lakini katika kesi hii, yeah, ni mara dufu. swali zuri. Hebu majadiliano juu ya muda a kidogo uthabiti zaidi. Nini wakati mbio ya kutafuta orodha hii? Tuseme nilitaka kutafuta kupitia kila darasa la wanafunzi, na kuna n darasa katika muundo huu data. Hapa pia, tunaweza kukopa msamiati wa awali. Hii ni data linear muundo. Big O ya n ni nini wanatakiwa kupata hadi mwisho wa muundo huu data, whereas-- na hatujaona huu kabla, safu anatoa kile kinachoitwa wakati mara kwa mara, ambayo ina maana hatua moja au hatua mbili au 10 steps-- haijalishi. Ni idadi fasta. Ina chochote cha kufanya na ukubwa wa safu. Na sababu ya kuwa, tena, ni upatikanaji random. kompyuta Unaweza tu mara moja kuruka kwa eneo jingine, kwa sababu wao uko wote ni sawa umbali kutoka kila kitu kingine. Hakuna kufikiri wanaohusika. Sawa. Hivyo kama naweza, napenda kujaribu kuchora picha mbili za mwisho. moja ya kawaida sana inayojulikana kama meza hash. Hivyo kuwahamasisha mjadala huu, napenda kufikiri kuhusu jinsi ya kufanya hivyo. Hivyo ni jinsi kuhusu hili? Tuseme kwamba tatizo tunataka kutatua sasa inatekeleza katika dictionary-- hivyo rundo zima la maneno ya Kiingereza au chochote. Na lengo ni kuwa na uwezo wa kujibu maswali ya aina hii si kauli? Kwa hiyo unataka kutekeleza Spell kusahihisha, tu kama kamusi kimwili kwamba unaweza kuangalia mambo juu katika. Tuseme ningekuwa na kufanya huu kwa safu. Mimi naweza kufanya hili. Na tuseme maneno ni apple na ndizi na tikiti maji. Na siwezi kufikiria matunda zinazoanza na d, hivyo tuko tu kwenda na matunda tatu. Hivyo hii ni safu, na tuko kuhifadhi wote wa maneno haya katika kamusi hii kama safu. swali, basi, ni jinsi mwingine inaweza kuhifadhi habari hii? Naam, mimi nina aina ya cheating hapa, kwa sababu kila moja ya barua hizo katika neno ni kweli Byte mtu binafsi. Hivyo kama mimi kwa kweli alitaka kuwa nit-picky, mimi lazima kweli kuwa kugawa hii up katika mengi chunks ndogo ya kumbukumbu, na tunaweza kufanya hasa kwamba. Lakini tunakwenda kukimbia katika tatizo sawa mbele. Nini kama, kama Merriam Webster au Oxford anafanya kila year-- wao kuongeza maneno kwa dictionary-- hatufanyi lazima unataka rangi wenyewe ndani ya kona na safu? Hivyo badala yake, labda mbinu nadhifu ni kuweka apple katika node yake mwenyewe au sanduku, kama tunataka kusema, ndizi, na basi hapa tuna tikiti maji. Na sisi kamba mambo haya kwa pamoja. Hivyo hii ni safu, na hii ni orodha wanaohusishwa. Kama huwezi kabisa kuona, ni tu anasema "safu," na hii anasema "orodha." Hivyo tuna huo masuala halisi kama kabla, ambapo sisi sasa kuwa mabadiliko katika orodha yetu wanaohusishwa. Lakini tuna haki polepole kamusi. Tuseme nataka kuangalia juu ya neno. Ni inaweza kuchukua me O kubwa ya n hatua, kwa sababu neno nguvu kuwa njia zote mwishoni mwa orodha, kama tikiti maji. Na zinageuka kuwa katika programu, aina ya grail takatifu ya data miundo, ni kitu kwamba anatoa mara kwa mara muda kama safu lakini hiyo bado anatoa mabadiliko. Hivyo tunaweza kuwa bora wa walimwengu wote? Na hakika, kuna kitu aitwaye hash meza kwamba utapata kufanya hasa kwamba, angalau takriban. meza hash ni fancier muundo wa data kwamba sisi unaweza kufikiria kama mchanganyiko wa array-- na mimi nina kwenda kuteka ni kama hii na orodha wanaohusishwa kwamba mimi itabidi kuteka kama hii zaidi ya hapa. Na jinsi suala hili kazi ni kama ifuatavyo. Kama hii now-- hash table-- ni data ya tatu muundo wangu, na nataka kuhifadhi Maneno katika hili, mimi si unataka kuhifadhi tu wote wa Maneno nyuma kwa nyuma kwa nyuma kwa nyuma. Nataka kujiinua baadhi kipande cha habari kuhusu maneno kwamba basi me kupata ambapo ni kwa kasi zaidi. Hivyo kutokana na maneno apple na ndizi na tikiti maji, Mimi alichagua maneno hayo. Kwa nini? Nini aina ya kimsingi tofauti kuhusu tatu? Nini wazi? Wao kuanza na barua tofauti. Hivyo unajua nini? Badala ya kuweka maneno yangu yote katika ndoo moja, hivyo kusema, kama katika orodha moja kubwa, kwa nini sio Mimi angalau kujaribu optimization na kufanya orodha yangu 1/26 kwa muda mrefu. optimization kulazimisha inaweza kuwa ni kwa nini hawana I-- wakati kuingiza neno katika muundo huu data, katika kumbukumbu ya kompyuta, kwa nini si mimi kuweka '' maneno yote hapa, wote 'b' maneno hapa, na 'c' maneno yote hapa? Hivyo hii kuishia kuweka apple hapa, ndizi hapa, tikiti maji hapa, na kadhalika. Na kama nina ziada neno like-- nini kingine? Apple, ndizi, pear. Mtu yeyote kufikiri ya matunda kwamba huanza na, b, au c? Blueberry-- kamilifu. Hiyo ni kwenda kuishia hapa. Na hivyo sisi wanaonekana kuwa na kidogo ufumbuzi bora, kwa sababu sasa kama nataka kutafuta apple, mimi first-- mimi si tu kupiga mbizi ndani ya muundo yangu data. Sina mbizi katika kumbukumbu ya kompyuta yangu. Mimi kwanza tuangalie barua ya kwanza. Na hii ni nini kompyuta mwanasayansi kusema. You hash katika muundo yako data. Wewe kuchukua mchango wako, ambayo katika kesi hii ni neno kama apple. You kuchambua, kuangalia barua ya kwanza katika kesi hiyo, hivyo hashing yake. Hashing ni neno la jumla ambapo wewe kuchukua kitu kama pembejeo na wewe kuzalisha baadhi pato. Na pato katika kwamba kesi ni eneo unataka kutafuta, kwanza eneo, eneo la pili, tatu. Hivyo pembejeo ni apple, pato ni ya kwanza. pembejeo ni ndizi, pato lazima pili. pembejeo ni tikiti maji, pato lazima tatu. pembejeo ni Blueberry, pato lazima tena kuwa ya pili. Na kwamba ni nini husaidia kuchukua shortcuts kupitia kumbukumbu yako ili kupata maneno au data kwa ufanisi zaidi. Sasa hii kupunguzwa chini wakati wetu uwezekano kwa kadri mmoja kati ya 26, kwa sababu kama wewe kudhani kuwa wewe kuwa kama wengi "" Maneno kama "z" Maneno kama "q" maneno, ambayo si kweli realistic-- wewe ni kwenda na skew hela baadhi ya herufi ya alphabet-- lakini hii itakuwa Unaozidi mbinu hiyo haina kuruhusu wewe kupata maneno haraka zaidi. Na katika hali halisi, kisasa mpango, Googles ya dunia, Facebooks ya world-- wangeweza kutumia meza hash kwa mengi ya malengo tofauti. Lakini wao isingekuwa hivyo naive kama tu kuangalia barua ya kwanza katika apple au ndizi au pear au tikiti maji, kwa sababu kama unaweza kuona haya orodha bado anaweza kupata muda mrefu. Na hivyo hii bado wanaweza kuwa na aina ya linear-- hivyo aina ya polepole, kama na O kubwa ya n kwamba sisi kujadiliwa mapema. Kwa hiyo kile halisi nzuri hash meza mapenzi do-- itakuwa na safu kubwa sana. Na itakuwa kutumia mengi zaidi kisasa hashing kazi, hivyo kwamba hana si tu kuangalia "." Labda ni inaangalia "-p-p-l-e" na namna fulani waongofu barua hizo tano katika eneo ambapo apple kuhifadhiwa. Sisi ni tu naively kutumia barua '' peke yake, kwa sababu ni nzuri na rahisi. Lakini hash meza, katika mwisho, unaweza kufikiria ya kama mchanganyiko wa safu, ambayo kila mmoja ina orodha wanaohusishwa kwamba walau lazima kama mfupi iwezekanavyo. Na hii si ufumbuzi wa dhahiri. Kwa kweli, sehemu kubwa ya tuning faini kwamba unaendelea chini ya Hood wakati utekelezaji wa aina hii ya miundo ya kisasa data ni nini ni haki urefu wa safu? ni haki heshi nini? Jinsi gani unaweza kuhifadhi vitu katika kumbukumbu? Lakini kutambua jinsi ya haraka aina hii ya majadiliano ilienea, ama hivyo mbali ya kuwa ni aina ya juu ya kichwa ya mtu katika hatua hii, ambayo ni faini. Lakini sisi ilianza, kukumbuka, na kweli kitu ngazi ya chini na elektroniki. Na hivyo hii tena ni hii mandhari ya uchukuaji, ambapo mara moja kuanza kuchukua kwa nafasi, OK, mimi nimepata it-- kuna kumbukumbu ya kimwili, OK, got it, kila eneo kimwili ina mitaani, OK, I got it, siwezi kuwakilisha wale anwani kama arrows-- unaweza haraka sana kuanza na Mazungumzo ya kisasa zaidi kwamba katika mwisho wanaonekana kuwa kuruhusu sisi kutatua matatizo kama kutafuta na kuchagua kwa ufanisi zaidi. Na wengine uhakika, too-- kwa sababu nadhani hii ni kikubwa mno tumeenda katika baadhi ya mada hizi CS proper-- tumekuwa kufanyika katika siku moja na nusu saa hii uhakika nini unaweza kawaida ya kufanya zaidi ya kipindi cha wiki nane katika muhula. Maswali yoyote juu ya haya? Hakuna? Sawa. Naam, kwa nini sio sisi pause huko, kuanza chakula cha mchana dakika chache mapema, kuanza tena katika tu kuhusu saa? Na mimi itabidi linger kwa bit na maswali. Kisha mimi nina kwenda na kwenda kuchukua michache wito kama hiyo ni sawa. Mimi itabidi kurejea kwenye baadhi ya muziki katika huo huo, lakini chakula cha mchana lazima kuzunguka kona.