[SKAN MŪZIKA]
DEIVIDS DŽ. MEILENS (DAVID J. Malan): Labi.
Šis ir CS50, Hārvardas universitātes ievads par datorzinātnes
intelektuālajiem uzņēmumiem un programmēšanas mākslu.
Mani sauc Deivids Meilens, un patiesībā es pats apmeklēju šo kursu
1996. gadā.
Es tajā laikā biju otrā kursa students.
Es faktiski koncentrējos uz valdību. Kad gadu iepriekš ierados
Hārvardā, pirmajā kursā domāju, ka vidusskolā man patika vēsture un
konstitucionālās tiesības un līdzīgas nodarbības.
Un tāpēc, kad es šeit nokļuvu, es sliecos pievērsties tam, kas bija
pazīstams.
Es domāju, ja man patika un ja man padevās šis konkrētais priekšmets
vidusskolā, tad droši vien tādam man šeit jābūt.
Bet tikai otrajā kursā es iegāju CS50 nodarbībā, un pat tad tas bija
tikai ziņkārības dēļ.
Tāpat kā man nebija nodoma studēt datorzinātnes un pat apmeklēt CS50,
kad nokļuvu universitātes pilsētiņā.
Bet cilvēki par to runāja, un bija daudz piesardzības.
Un tas, iespējams, bija paredzēts tikai izredzētajiem, un es īsti
nesapratu, kas ir datorzinātne.
Bet tad man atausa gaisma.
Es atklāju, ka te bija pretēji tam, ko biju redzējis vidusskolā. Tur
es datoru klasē redzēju savus draugus, nolīkušus pie datora un
nesabiedriskus, kaut ko darām. Tā tiešām nebija, kad es nokļuvu šajā
konkrētajā kursā un šajā konkrētajā vietā.
Tas bija daudz vairāk par problēmu risināšanu vispārīgāk un tikai
mācīšanos izteikties ar kodu starpniecību dažādās valodās.
Lai jūs patiešām varētu atrisināt jūs interesējošās problēmas.
Pat ja jums nav nodoma būt datorzinātniekam vai inženierim, bet
vienkārši vēlaties prast risināt problēmas, analizēt datus, darīt
interesantas lietas mākslā, humanitārajās zinātnēs, sociālajās
zinātnēs, eksaktajās dabaszinātnēs vai tiešām jebkurā citā jomā.
Un, tiešām, šis konkrētais ceļš mani aizveda uz datorzinātnēm.
Cerības saistībā ar CS50 vispārīgākā nozīmē ir tādas, ka jūs patiešām
atradīsit veidu, kā piemērot principus, ko apgūsit turpmāko mēnešu
laikā, jebkurā jūs interesējošā jomā.
Tas nozīmē, ka bija daudz darba un ne bez vilšanās man.
Taču nebija labākas sajūtas par galvas lauzīšanu stundām un pat
dienām ilgi, mēģinot atrasts blusu, kļūdu savā kodā.
Un tad, ak Dievs, emociju uzliesmojums un lepnums par spēku izsīkumu,
kad beidzot atrisināt kādu problēmu, kas jūs patiešām nomākusi.
Tas ir tik neiedomājami iepriecinoši, bet arī dod spēku.
Jo atšķirībā no daudzām jomām datorzinātnes ir veidojuši paši cilvēki.
Un tātad, ja cilvēks to ir izveidojis, tad arī jūs, cits cilvēks,
varat to saprast.
Un tāpēc, lai gan pa ceļam būs daži traucējoši faktori, jūs redzēsit
to, kas izskatās neticami noslēpumaini, ja nekad iepriekš neesat
programmējis.
Laika gaitā un praksē viss sāk kļūt jēgpilnāks.
Un ar laiku un darot jūs vienkārši kļūstat labāki šajā konkrētajā
jomā.
Un, patiešām, patiešām, panākumu atslēga programmēšanā kopumā ir
tikai atvēlēt sev pietiekami daudz laika.
Un tāpēc, par laimi, es ātri pieradu sākt darbu nedēļas sākumā,
piemēram, rakstot faktisko kodu.
Kāpēc?
Jo tu atdursies kā pret sienu.
Jūs neredzēsit kļūdu.
Kaut kas jums nekritīs acīs, un tas ir labi.
Tas ir tad, kad jūs to pārtraucat darīt, paņemat pārtraukumu, pārejat
pie kaut kā cita un pēc tam atkal atgriežaties pie tā.
Un tas ir tas, kas man sagādā prieku programmēšanā visus šos gadus,
neatkarīgi no tā, vai tā ir mācīšana vai pielietošana.
Bet tur ir MIT uzlaušanas vēsture, un tas izskatījās aptuveni šādi.
Un MIT studenti bija apmierināti, kad viņi veica šo uzlaušanu.
Uz sienas ir rakstīts, ka iegūt izglītību MIT ir kā dzert no
ugunsdzēsības šļūtenes, ko ir savienojuši ar to, kam būtu jābūt
avotam.
Un tā dažkārt būs sajūta ne tikai datorzinātnēs kā tādās, bet
vienkārši nepazīstamā jomā.
Ja jūs neesat no STEM, ja neesat no datorzinātnes, tas ir labi.
Bet tik daudz no tā galu galā jūs apgūsiet, un semestra beigās tas
būs jūsu rīcībā.
Tāpēc paturiet prātā, ka tas ir nolūks, taču jūs būsiet pārsteigts,
ko varat izveidot, paveikt tikai pēc aptuveni trim mēnešiem.
Patiešām, 2/3 no jums, pretēji tam, ko jūs domājat, nekad iepriekš
nav apmeklējuši datorzinātnes nodarbības.
Tātad absolūti nav tā, ka cilvēkam pa kreisi vai pa labi noteikti ir
jāzina vairāk nekā jums.
Patiešām, ir tieši otrādi.
Un, kā jūs redzēsiet nākamajās nedēļās, rakstot pats savu kodu un
risinot savas problēmas, šajā kursā ne tik daudz svarīgi ir, kur jūs
nonākat attiecībā pret saviem kursabiedriem. Svarīgāk ir, kur jūs
nonākat attiecībā pret sevi, salīdzinot ar brīdi, kad tu sāki.
Un tas tiešām ir saistīts ar šo delta koeficientu, neatkarīgi no tā,
vai esat programmējis vai ne, iegūt kaut ko no šāda kursa.
Un, ja tas prasa laiku un ja jūs jūtat šo neapmierinātību, bet
vienlaikus ir sasnieguma sajūta, tas nozīmē, ka tas viss darbojas.
Un patiešām, cerams, galu galā tas ir vēl vērtīgāks un iepriecinošāks.
Tātad ko mēs darīsim nākamajās nedēļās?
Tātad šobrīd mēs esam nulles nedēļā.
Mēs drīz redzēsim, kāpēc datori un datorzinātnieki sāk skaitīt, tā
teikt, no 0.
Bet 0. nedēļa ir tāda, kurā mēs pētām skaitļošanas domāšanu, domājam
kā dators un sākam sakārtot jūsu domāšanas procesus.
Likt jums domāt, metodiskāk risināt problēmas un pēc tam to pārvērst
kodā.
Un daži no jums varētu atpazīt šo vidi šeit, AKA Scratch, sagadīšanās
pēc arī no MIT.
Jūs, iespējams, to izmantojāt pamatskolā.
Mēs to izmantosim šodien un nedaudz šajā nedēļas nogalē kursa pirmajā
mājasdarbā vai uzdevumu kopā.
Taču ne tik daudz, lai niekotos tā, kā jūs to būtu darījuši senāk,
bet gan lai izpētītu datorzinātnes un programmēšanas idejas, kuras
mēs nemitīgi izmantosim katru nedēļu arī turpmāk.
Tikai pēc tam mēs no nākamās nedēļas pāriesim uz pirmo nedēļu, tā
teikt.
Tādējādi mēs jūs iepazīstināsim ar tradicionālāku valodu, zemāka
līmeņa valodu, vecāku valodu, ko sauc par C.
Un C valodā jūs izmantosit tastatūru, nevis peli, kursoru un klikšķi,
bet gan rakstīsit kodu, kas drīz izskatīsies kaut kas līdzīgs šim.
Un, ja esat programmējuši iepriekš, iespējams, varat nojaust, ko tas
darīs.
Ja jūs nekad iepriekš neesat programmējuši, kā tas ir lielākajai
daļai no jums, arī tad tam drīz būs jēga.
Bet šī ir viskanoniskākā programma, ko vairums programmētāju jebkad
ir uzrakstījuši, ar nosaukumu Hello, World, un, patiesi, šī un visa
apkārtējā sintakse virs un zem šī teikuma Hello, World, drīz kļūs vēl
jēgpilnāka.
Jūs uzzināsit, kā izmantot nozares standarta rīkus.
Šeit ir redzams kaut kas, ko sauc par Visual Studio kodu vai VS kodu.
Sākotnēji jūs izmantosit tā mākoņa versiju, tāpēc jums nav jācieš no
tehniskām grūtībām vai tamlīdzīgām problēmām.
izmantojiet to, lai [NAV DZIRDAMS]
citi pēc tam izpētītu idejas datorzinātnēs, principus, kurus varat
piemērot.
Un mēs paskatīsimies zem jūsu datora pārsega, jūsu datora atmiņu jeb
RAM, brīvpiekļuves atmiņu, kur galu galā tiks glabāti visi dati.
Pēc tam mēs arī apskatīsim blusas.
Blusa ir kļūda programmā.
Šeit ir īsta kļūda īstā datorā, kas radās pagājušajā gadā, taču mēs
iemācīsim jums atkļūdot programmas, atrast savas kļūdas, atrast citu
kļūdas un arī uzlabot šo kodu.
Pēc tam mēs pāriesim pie algoritmiem, pakāpeniskām instrukcijām dažu
problēmu risināšanai, kam arī šodien pieskarsimies.
Un iedomājieties, šī patiesībā ir diezgan raksturīga problēma.
Visticamāk, ka jums nav nācies saskarties ar kaut ko līdzīgu, bet,
piemēram, tā ir reprezentatīvā kārtošana .
Ja jūs domājat, ka katra no šīm mazajām joslām ir mazs skaitlis,
katra no lielākajām joslām ir lielāks skaitlis, jūs varētu gribēt
uzzināt, kā jūs, cilvēciska būtne, varētu sakārtot visas šīs joslas,
piemēram, iegūt visas īsās joslas šeit, visas lielās joslas tur?
Visticamāk, ja jūs esat tāds pats kā es, jūs, iespējams, pētītu to,
un, ja jūs varētu fiziski mijiedarboties, jūs varētu vispirms sākt
mazākos elementus novietot kreisajā pusē.
Varbūt satvert lielākos elementus, novietot tos labajā pusē.
Bet kāds tur ir jūsu algoritms?
Piemēram, kā jūs iemācītu to darīt kādam, kas ir jaunāks par jums un
kurš to nekad agrāk nav darījis?
Kā jūs piespiestu savu Mac datoru vai personālo datoru, vai tālruni
darīt kaut ko līdzīgu?
Jūs nevarat vienkārši pamāt ar roku un teikt: ak, izdomā.
Mainiet lietas.
Jāizpauž sevi metodiskāk.
Tāpēc mēs pārtulkosim kodā pat tādas idejas kā šī.
Un tas ir tas, ko Google un citi pasaulē pastāvīgi dara, šķirojot un
kārtojot pasaules informāciju.
Mēs izmantosim metaforas, ja tas palīdzēs.
Mēs runāsim par jūsu datora atmiņu kā pasta adresi.
Tāpat kā katrai pastkastei pasaulē ir sava veida pasta adrese, iela,
pilsēta, štats, valsts un tamlīdzīgi, izrādās, ka šādi darbojas arī
jūsu Mac dators, personālais dators un tālrunis.
Jums ir liela datora atmiņa, piemēram, attēlā iepriekš, taču jūs to
varat uzskatīt par atsevišķām pastkastēm.
Un šajās pastkastītēs varat ievietot visu, ko vēlaties, un varat
doties uz pastkastīti, lai iegūtu no tās informāciju.
Un galu galā tas ir viss, ko jūsu dators dara ar informāciju.
Tā ir tikai tās sakārtošana, nevis pastkastītēs kā tādās, bet,
piemēram, baitos, termins, ko jūs droši vien zināt.
Mēs runāsim par problēmām, kas rodas pat mūsdienās.
Patiesībā lielākā daļa no jums dažkārt ir sastapušies savā Mac
datorā, personālajā datorā, pat tālrunī ar spontānu atsāknēšanu,
avarēšanu, mazo kaitinošo pludmales bumbiņu, kas griežas, vai smilšu
pulksteņa ikonu.
Ko tas nozīmē?
Tās ir tikai kļūdas programmās, kuras Apple un Google, Microsoft un
citu uzņēmumu darbinieki salaida grīstē un uzrakstīja kļūdainu kodu.
Un jūsu dators, saskaroties ar šīm kļūdām, nezina, ko darīt.
Un tā 9 reizes no 10 tas avarē vai sastingst, vai tamlīdzīgi, bet
šāda veida lietām būs lielāka jēga.
Tāpēc pat reālajai pasaulei būs jēga, un šeit ir parādīti daži zemāka
līmeņa termini, līdz kuriem mēs galu galā nonāksim semestra vidū.
Bet, vispārīgi runājot, kad kaut kas notiek tā, kā pēc šīs bultiņas,
un kaut kas notiek saskaņā ar šo bultiņu, tas nebeidzas labi.
Un tas bieži notiek, kad jūsu dators avarē.
Kāds izmanto atmiņu šeit, bet kāds cits izmanto atmiņu šeit, un tad
īsti nerunā par kreiso un labo roku.
Tātad tas ir tikai augsta līmeņa pārskats par dažām problēmām, ar
kurām mēs saskarsimies, bet galu galā mēs koncentrēsimies uz datiem.
Tātad šeit ir kaut kas diezgan tehnisks, ko sauc par jaucējtabulu.
Tas ir apvienojums tam, ko mēs drīz sauksim par informācijas masīvu,
kā arī tam, ko mēs saucam par saiti uz sarakstu.
Un tie ir tikai izdomāti termini, lai aprakstītu, kā informāciju var
sakārtot vēl elastīgāk, nekā vienkārši ievietojot pastkastītēs
atsevišķas vērtības.
Kā jūs varētu izveidot struktūras, piemēram, faktiskas datu
struktūras, tā sakot, divdimensiju struktūras?
Un tāpēc tas, ko jūs šeit redzat, ir ieskats dažos Harija Potera
visuma nosaukumos, kā daži no jums varbūt atpazinuši, taču tie ir
sakārtoti alfabētiskā secībā.
Un ievērojiet, ka vienmēr ir vairāki cilvēki, kuru vārds sākas ar H,
piemēram, Hermione, Harijs un Hagrids, viņi visi nevar ietilpt šajā
pastkastē, ja katrs no šiem laukumiem pa kreisi ir tā pati pastkaste.
Tātad jums tie ir jāsavieno kopā.
Jūs uzzināsit, kā to izdarīt kodā.
Lai pat tad, ja jūs saņemat vairāk datu, nekā gaidāt, ja jūsu
uzņēmums uzplaukst un strādājat tīmeklī, kā jūs turpināt pievienot un
pievienot informāciju savai programmatūrai, lai tā patiešām tiktu
līdzi?
Bet šādi kods drīz izskatīsies, tiklīdz nākamnedēļ, pirmajā nedēļā,
šis šeit ir C, bet pēc dažām nedēļām mēs pāriesim uz modernāku,
augstāka līmeņa valodu, tā sakot, ko sauc par Python.
Patiešām, kurss ļoti apzināti, gan manā laikā, gan tagad, jūs
vispirms iepazīstina ar C, kas ir diezgan smieklīgi, daudzi cilvēki
nemēdz programmēt katru dienu.
Es izmantoju C, parasti septembrī, oktobrī, novembrī, decembrī, mācot
CS50.
Bet tas tomēr ir visur.
Patiesībā pat citās mūsdienu valodās, kuras jūs, iespējams, pazīstat,
piemēram, Python un Java un vēl citās, jūs atrodat šo pašu primitīvo
valodu, jo tā ir ļoti ātra.
Un, kā jūs uzzināsit nākamo nedēļu laikā, tas patiešām sniedz jums
piekļuvi un izpratni par to, kas konceptuāli notiek šeit.
Lai pēc tam, pēc CS50, rakstot kodu, jūs varētu ļoti augstā līmenī
domāt, kas patiesībā notiek.
Tātad patiesībā tikai pēc dažām nedēļām tas, kas izskatās šādi C
versijā, Python versijā izskatīsies šādi.
Un jūs labāk sapratīsit, kas notiek datora iekšienē, un pastāv
iespēja, ka pēc šīs nodarbības jūs meklēsit valodu, piemēram, Python
biežāk nekā C, taču jums noderēs šī augšupējā izpratne par to.
Pēc tam un semestra beigās mēs jūs iepazīstināsim ar dažām citām
idejām, piemēram, kur jūs ievietojat lielu datu apjomu?
Lietās, ko sauc par datu bāzēm, nevis izklājlapās, kā šeit, bet
faktiskās datubāzēs.
Mēs izmantojam tādas pašas datu struktūras, jūs interesantā veidā
izkārtojat lietas atmiņā.
Pēc tam mēs pāriesim uz ļoti pazīstamu vidi, ko jūs un es izmantojam
katru dienu, — tīmekli.
Tīmeklis ir kļuvis par lietotāja saskarni jeb UI, ko mūsdienās
lietojam visur — klēpjdatoros, galddatoros un pat mobilajās ierīcēs.
Šeit ir redzama valoda, ko sauc par HTML.
Tā nav programmēšanas valoda.
Tā ir iezīmēšanas valoda, un daži no jums, iespējams, agrāk ir
izveidojuši mājas lapas vai portfeļus.
Jūs sapratīsit, kas šeit notiek, bet vēljaudīgāk jūs sapratīsit, kā
dators redz tāda paša veida kodu, veido hierarhisku ciltskoka tipa
struktūru atmiņā.
Un tad jūs varat manipulēt ar šo koku ar kodu, lai faktiski
pievienotu arvien vairāk informācijas, tērzēšanas ziņojumus un visu,
kas ekrānā jums patīk.
Un visbeidzot mēs to visu savienosim, ieviešot tā sauktos satvarus un
bibliotēkas — trešās puses kodu, kas ievērojami atvieglo jūs
interesējošo problēmu risināšanu.
Un tāpēc jo īpaši, šeit šī ir pati pirmā tīmekļa lietotne, ko es pats
izveidoju 1997. gadā.
Es piedalījos pirmā kursa savas universitātes sporta programmā nevis
kā sportists, bet gan kā programmētājs, un es pats sevi mācīju, kā
veidot tīmekļa lietojumprogrammas.
Es tobrīd zināju tikai C un varbūt nedaudz ko citu.
Bet šī vismaz Hārvardai kļuva par pirmo vietni pirmā kursa studentu
universitātes sporta programmai, un tā nebija tikai statiska vietne
ar saitēm, attēliem un tamlīdzīgi.
Tā bija interaktīva.
Varēja reģistrēties sporta veidos.
Mēs varējām ievadīt tieši to, kurš bija turnīru grupā vai tamlīdzīgi,
un faktiski varēja automātiski izsekot šiem datiem.
Arī šajā gadījumā pēc trīs mēnešu ilgām šādām nodarbībām jūs pāriesit
no vienkāršas rakstīšanas šonedēļ un pēc tam Hello, World, lai
izveidotu šādas lietas neatkarīgi no tā, vai tas ir tīmeklī,
mobilajās ierīcēs vai citās platformās.
Bet mēs atbrīvosim jūs no kursa infrastruktūras līdz semestra beigām.
Pa ceļam jūs neizmantosiet rotaļu vidi.
Galu galā mēs dosim jums iespēju rakstīt kodu pēc CS50 nodarbībām, it
īpaši, ja šīs ir vienīgās jūsu apmeklētās CS nodarbība, savā Mac
datorā vai personālajā datorā, izmantojot to pašu programmatūru, bet
ne tās mākoņa versiju.
Bet visa šī programmatūra pati par sevi ir bezmaksas, un jūs varat to
efektīvi izmantot pēc kursa beigām.
Bet bez tam, kā jūs, iespējams, zināt, kursā ir šī tradīcija, jo
īpaši pēc Covid-19 ierobežojumiem, vairākos pasākumos, kas patiešām
pulcē cilvēkus ne tikai akadēmiski sadarboties, bet arī vienkārši
risināt problēmas un savstarpēji kontaktēties.
Vispirms ir CS50 Uzdevumu diena, domāti ir nevis mozaīkuzdevumi, bet
gan loģikas uzdevumi, kam nav nepieciešama iepriekšēja pieredze
datorzinātnēs vai programmēšanas jomā.
Bet tā ir iespēja klusi strādāt pie uzdevumu kopas ar dažiem
draugiem, lai iegūtu balvas un daudz ko citu.
Vēlāk semestrī, kad ķeraties pie saviem gala projektiem, kas ir kursa
stūrakmens, kur mēs nedodam jums mājasdarbu, ko rakstīt, jūs pats
izdomājat, ko veidot.
Mēs sanāksim kopā ap pulksten 19:00 vakarā, beigsim ap pulksten 7:00,
ja vēlaties.
Un tas ir vakars, 12 stundu iespēja sadarboties ar kursabiedriem pie
sava gala projekta lielā universitātes pilsētiņas telpā, un tas
beidzas - ja esi kopā ar mums - plkst. 5:00 no rīta.
Mēs varam iekāpt kādā no CS50 maršruta autobusiem un doties pēc
pankūkām IHOP restorānā ap pulksten 6:00.
Protams, protams, šajā brīdī tas ir pulksten 6:00, 7:00, taču tā ir
iespēja beidzot nokļūt tā sauktajā CS50 gadatirgū, kas ir semestra
beigu svinības, izstāde par visu, ko jūs paveiksiet nākamo mēnešu
laikā.
Un šeit ir redzami daži no jūsu priekšgājējiem pirms Covid-19
ierobežojumiem.
CS50 gadatirgū varat ierasties ar savu klēpjdatoru vai tālruni un
studentu, mācībspēku un darbinieku eksponāti visā universitātes
pilsētiņā saliek kopā klātienē un video, ko cilvēki priecājas redzēt,
jo jūs eksponējat to, ko esat radījis un ko esat iemācījies vairāku
nedēļu laikā.
Un galu galā iespēja vienkārši dalīties un iedvesmot arī citus.
Un beigās jūs visi dosieties mājās ar saviem T-krekliem ar uzrakstu
Es piedalījos CS50, kas daudz ko izsaka.
arī šajā zemākajā līmenī [NAV DZIRDAMS]arī.
Tātad kas ir datorzinātne?
Pa labi?
Ja jūs varbūt esat tāds pats kā es vai tādi jauni cilvēki kā mani
draugi vidusskolā, jūs droši vien pieņemat, ka tas nozīmē
programmēšanu.
Un tā daudziem cilvēkiem ir ļoti liela daļa, jo ar kodu jūs varat
rakstīt, izteikt idejas un atrisināt faktiskas problēmas, īpaši
saistībā ar datiem.
Bet datorzinātne pati par sevi patiesībā ir informācijas izpēte, tā
teikt.
Kā jūs to attēlojat un kā jūs to faktiski apstrādājat?
Un šajā ziņā skaitļošanas domāšana ir tikai datorzinātņu ideju
pielietošana, piemēram, šis kurss jūs interesējošo problēmu
risināšanā, mākslā, humanitārajās zinātnēs, dabas zinātnēs,
sociālajās zinātnēs, neatkarīgi no tā, kas jūs interesē. .
Tātad, ja datorzinātne ir saistīta ar informāciju un līdz ar to arī
problēmu risināšanu, ko tad īsti nozīmē atrisināt problēmu?
Redzēsim, vai mēs nevaram piedāvāt modeli, kurā galu galā tiks
izmantotas visas gūtās atziņas.
Un es teiktu, ka tas ir problēmas risinājums.
Jums ir zināma informācija, kas ir kā problēma, kuru vēlaties
atrisināt.
Mērķis ir to atrisināt.
Tā ir tā sauktā izvade, un tad kaut kur šeit, tā dēvētā melnā kaste,
ir tas sava veida slepenais elements, kas paveic darbu.
Un nākamajos mēnešos mums būs jāizlemj, kā mēs attēlosim šīs ievades
un izvades, un kā mēs šifrēsim ar kodu?
Kā mēs rakstām risinājumus tam, kas atrisina mūs interesējošo
problēmu?
Tātad, runājot par informācijas attēlojumu, ir daudz veidu, kā to
izdarīt.
Un, piemēram, ja problēma ir vienkārši apmeklēt nodarbības no sākuma,
pirmajā skolas dienā, kā mēs to varētu darīt?
Nu, mēs faktiski varētu izmantot sistēmu, ko sauc par unāro operāciju
Nu, kas tas ir?
Nu, tas ir izdomāts veids, kā pateikt 1, 2, 3, 4, 5, varbūt 6, 7, 8,
9, 10.
Un es varu izmantot savus ciparus — paredzēts kalambūrs — uz
pirkstiem, lai faktiski saskaitītu visus.
Un galu galā jums ir vajadzīgi kāju pirksti un kas tik vēl ne, ja
jums ir jāskaita tik tālu.
Bet unārā operācija ir ļoti vienkārša sistēma, kurā tiek izmantots
viens simbols, šajā gadījumā cilvēka pirksts, lai vienkārši
atrisinātu kādu problēmu, piemēram, lai saskaitītu cilvēkus telpā.
Padarīsim to uz brīdi nedaudz tehniskāku, nedaudz matemātiskāku.
To sauc par bāzi 1, kur bāzē, kurā jūs strādājat, ir viens cipars,
piemēram, cilvēka pirksts, un, iespējams, vairāki šādi pirksti, ja
jums ir nepieciešams skaitīt tālāk.
Bet, protams, lielākā daļa no jums, ja ne visi, kopumā neskaidri
zina, ka datoros tiek izmantots kaut kas cits, nevis unārā
operācija — un pat jūs un es, iespējams, to neizmantojam tik bieži —
tā vietā izmanto kādu valodu vai alfabētu.
Jā.
Tik bināra, tik bināra patiešām ir sistēma, ko datori kaut kā izmanto.
Tātad šajā gadījumā bi nozīmē divus, un tātad izrādās, ka datoru
rīcībā ir divi cipari.
Un patiesībā, ja kādreiz esat dzirdējuši tehnisko terminu bits, kas
ir kā mazāka baita versija, par to drīzumā.
Binārais cipars ir šī termina “Bit” izcelsme, jo, ja jūs
atbrīvojaties no dažiem burtiem un no binārā cipara paliek tikai BIT,
tas arī ir mazliet.
Bits ir tikai 0 un 1.
Tas ir par diviem cipariem vairāk, nekā jums varētu būt uz jūsu
pirksta, un, protams, tas ir mazāk nekā jums un man ir.
Jūs un es kā cilvēki parasti lietojam decimālo sistēmu.
Dec nozīmē 10, jo jūs un es parasti lietojam no 0 līdz 9.
Tātad no vienas puses — paredzēts vēl viens kalambūrs — jums ir unārā
sistēma.
Datori izmanto bināro.
Mēs, cilvēki, parasti domājam un runājam par decimālskaitļiem.
Bet galu galā tās būtībā būs viena un tā pati lieta, proti, tas viss
mums ir diezgan pieejams.
Pat ja jūs neesat datorlietotāji es uzdrošinos pieņemt, ka jūs drīz
tādi būsiet.
Tātad kas ir bits?
Tad bits ir 0 vai 1.
Tas ir tā sauktais binārais cipars.
Bet kā datori runā tikai bināri?
Kā tie risina problēmas, attēlo informāciju, izmantojot tikai bināros
datus?
Galu galā, ja tie vēlas attēlot 0 un 1, mums tas kaut kā fiziski
jādara.
Un es uzdrošinos apgalvot, ka varbūt visvienkāršākais veids, kā domāt
par bitu, 0 vai 1, ir kā spuldze.
Un tā pēc savstarpējas vienošanās pieņemsim, ka, ja jūs būtu dators,
neatkarīgi no tā, vai tas ir klēpjdators, galddators, tālrunis vai
tamlīdzīgi, un vēlaties attēlot skaitli 0, jūs zināt, ko, jūs
vienkārši turat izslēgtu gaismas slēdzi.
Jūs izslēdzat spuldzi.
Ja gluži pretēji, jūs esat tas pats dators un vēlaties attēlot
skaitli 1, jūs paņemat to pašu slēdzi, to pašu spuldzi un vienkārši
ieslēdzat to.
Tātad spuldze, kas ir ieslēgta, apzīmē 1, un spuldze, kas ir
izslēgta, apzīmē 0.
Tātad kāpēc tas attiecas uz datoriem?
Dienas beigās jūs un es naktī uzlādējam savus klēpjdatorus vai
tālruņus.
on battery or some power cord. Tātad tur tiek papildināts kāds
fiziskais resurss neatkarīgi no tā, vai izmantojat akumulatoru vai
strāvas vadu.
Un tā datorā mūsdienās ir tūkstošiem, miljoniem mazu slēdžu.
Jūs varat domāt par tiem metaforiski kā par spuldzēm, bet patiesībā
tās nedod gaismu.
Bet ir mazi, mazi slēdži, un šos slēdžus, ja esat kādreiz dzirdējuši
par šo terminu, sauc par tranzistoriem.
Tāpat kā datoros ir miljoniem tranzistoru, kurus var vai nu ieslēgt,
lai attēlotu 1, vai izslēgt, lai attēlotu 0.
Un no šī ļoti vienkāršā mehānisma elektrība ir vai nav, 1 vai 0.
Datori faktiski var skaitīt, acīmredzot, no 0 līdz 1, bet izrādās,
vēl tālāk, ja tie patērē arī nedaudz vairāk elektrības.
Tātad kā es to varētu izdarīt?
Ļaujiet man iet uz priekšu un ierosināt vienkārši paņemt vienu no
mūsu pašu spuldzēm šeit, uz skatuves.
Šī ir izslēgta.
Piemēram, ja tas būtu miniaturizēts jūsu Mac datorā, personālajā
datorā vai tālrunī, tas būtu tranzistors, un, patiešām, šeit ir
mazais slēdzis apakšā.
Un, ja jūsu dators vēlas attēlot 0, tas vienkārši atstāj slēdzi
izslēgtu un gaisma nespīd.
Ja vēlaties attēlot 1, tad tagad esmu saskaitījis līdz 1, jo slēdzis
tagad ir ieslēgts.
Esmu paņēmis nedaudz elektrības.
Turos pie tā datora iekšpusē, un tagad redzu, ka šis ir 1.
Labi, bet diemžēl ar vienu slēdzi, vienu spuldzi es varu saskaitīt
tikai no 0 līdz 1.
Kā es varu skaitīt tālāk, vai jūs varat izdomāt, intuitīvi?
KLAUSĪTĀJI: [NAV DZIRDAMS]
DEIVIDS DŽ. MEILENS: Sakiet to vēlreiz.
KLAUSĪTĀJI: Vairāk spuldžu.
DEIVIDS DŽ. MEILENS: Jā, tātad vairāk spuldzīšu.
Tāpēc ļaujiet man to izdarīt.
Ļaujiet man paņemt kaut ko, lai tās ieliktu, lai es varētu izmantot
dažas no tām vienlaikus.
Un ļaujiet man ierosināt, ka tā vietā, lai šeit būtu tikai viena
spuldze, ļaujiet man dot sev kopā varbūt trīs.
Tātad sākotnēji tās visas ir izslēgtas, un, ja jūs domājat par to
miniatūrā formā, iztēlē tas ir kā dators ar trim tranzistoriem.
Trīs slēdži, kas tagad apzīmē skaitli, kuru jūs un es zinām kā 0.
Tie visi ir izslēgti.
Tātad kā dators attēlo skaitli 1?
Nu, tas ieslēdz vienu no šīm spuldzēm.
Un kā dators attēlo skaitli 2?
Nu, jūs varētu domāt, ļaujiet man minēt, vienkārši ieslēdzat otru
spuldzi.
Un kā jūs domājat, kā dators attēlo 3?
Jūs vienkārši ieslēdzat trešo spuldzi.
Tādējādi, izmantojot trīs bitus, dators, šķiet, spēj skaitīt no 0
līdz 1, 2, 3.
Bet izrādās, ja es šeit esmu mazliet gudrāks, es faktiski varu
skaitīt tālāk par to.
Es tikai apsveru šeit ieslēgto spuldžu kombināciju.
Ja nu es izdaru šādi?
Tas joprojām ir 0, es apgalvošu, bet kā būtu, ja es tagad ierosinātu,
ka dators šādi attēlo 1 — ieslēgts, izslēgts, izslēgts.
Savukārt šādi dators attēlo 2.
Ievērojiet, es neieslēdzu tās pašas divas.
Es tikai ieslēdzu to, kas atrodas vidū.
Es tagad apgalvoju, ka šādi dators attēlo 3.
Tas būs - tikai pēc sekundes - kā dators attēlo skaitli, ko mēs zinām
kā 4, un tomēr es joprojām izmantoju tikai trīs spuldzes.
Tas būs skaitlis, ko dators attēlo kā 5.
Šādi dators attēlo skaitli 6, un, visbeidzot, izrādās, ka ar trim
spuldzēm, ja esat gudrs, varat saskaitīt, šķiet, līdz pat 7.
Pat ja jūs zaudējāt izpratni par to, ko es ieslēdzu un kāpēc, es
atgādinu, ka bija astoņi dažādi modeļi, sākot no visām izslēgtām līdz
visām ieslēgtām.
Bet ievērojiet, ka es sāku tās permutēt.
Es ņēmu vērā, kuras ir ieslēgtas un kuras ir izslēgtas.
Kāpēc tomēr tās attēlo skaitļus, kurus mēs zinām kā 0 līdz 7?
Nu, ļaujiet man iet uz priekšu, un varbūt darīsim šādi.
Tā vietā, lai tikai uzskatītu, ka tur ir spuldzes, piešķirsim katrai
no tām kādu īpašu nozīmi, pamatojoties uz to, kur tā atrodas.
Un varbūt tāpēc mēs varētu dabūt trīs brīvprātīgos, trīs brīvprātīgos?
LABI.
Jūs esat brīvprātīgie.
Nāciet augšā.
Ja gribat, tur var uzkāpt uz skatuves.
Jūs arī vēlaties uzkāpt un tur arī.
Tā, abos galos ir kāpnes.
Varbūt aplausi mūsu pirmajiem šī semestra brīvprātīgajiem.
[APLAUSI]
Viss kārtībā.
Tātad jūs vēlaties būt mūsu skaitlis 1 un, ja vēlaties turpināt,
stāviet aptuveni šeit.
Kā būtu, ja jūs gribētu būt skaitlis 2?
BRĪVPRĀT.: Jā.
DEIVIDS DŽ. MEILENS: Nāciet pa labi, pa labi no šejienes, un izrādās,
ka jūs būsiet skaitlis 4.
Ja vēlaties atnākt uz šejieni, tad dosim jums laiku, lai īsi
iepazīstinātu ar sevi kursa biedrus, ja vēlaties.
BRĪVPRĀT.: Sveiki.
Es esmu Elija.
Es esmu pēdējā kursa studente.
DEIVIDS DŽ. MEILENS: Prieks iepazīties.
BRĪVPRĀT.: Es esmu [? Reihena,?]
un es esmu pirmajā kursā.
DEIVIDS DŽ. MEILENS: Laipni lūdzam.
Es esmu Džozefs, un es mācos pirmo gadu.
Tik ļoti priecājos, ka esat šeit visi trīs.
Paldies.
Ļaujiet man tagad ierosināt, ka mēs vēlamies, lai jūs trīs attēlotu,
kā būtu ar skaitli 0.
Un tagad es apgalvoju, ka, ja katrs no jums tagad pārstāv slēdzi,
jums tagad ir skaistākas spuldzes.
Viens ir 1.
Viens ir 2.
Viens ir 4, taču katram no jums joprojām slēdzis ir jūsu plastmasas
ierīču apakšā.
Es apgalvoju, ka šie trīs brīvprātīgie attēlo skaitli 0.
Ļaujiet man tagad jums visiem pajautāt, kā jūs varētu attēlot skaitli
1?
Kā jums šeit būtu jāsadarbojas?
Tātad mums būtu ieslēgts, izslēgts, izslēgts, kas, manuprāt, atbilst
tam, ko es darīju arī ar savām trim spuldzēm, ja vēlaties izslēgt
savu.
Kā jūs trīs varētu attēlot skaitli 2?
Labi, tātad izslēgts, ieslēgts, izslēgts tagad, no labās puses uz
kreiso.
Kā jūs trīs attēlotu skaitli 3?
Ā, tāpēc manas divas spuldzītes beigās iedegās.
Kā jūs trīs attēlotu skaitli 4?
Lieliski.
Skaitļi 5, 6 un 7?
Labi, un parādiet mums vēl vienu.
Kā jūs attēlotu 8?
BRĪVPRĀT.: Mēs nevaram.
DEIVIDS DŽ. MEILENS: Labi.
Jūs nevarat.
Kā tad būtu ar vēl vienu brīvprātīgo, vēl vienu brīvprātīgo?
Kā jūs sauc?
BRĪVPRĀT.: Mani sauc [? Moins. ?]
DEIVIDS Dž. MEILENS: Ja varētu to šeit pateikt.
[? Un, Moin, ?] tu
Būsi skaitlis 8, un, ja tagad jūs visi – patiesībā, izveidosim to, kā
jūs attēlotu skaitli 8 visi kopā, kā 4 bitus vai slēdžus?
Labi, 8, un, visbeidzot, parādiet man 15.
Visi neveikli galvā rēķina, ak vai, lietojot unāro operāciju.
Vai visi... Jā.
Aplausi.
Paldies jums visiem.
Ja vēlaties atstāt savus skaitļus šeit, mums ir CS50 stresa bumba,
taču paldies par brīvprātīgo darbu.
Varat izslēgt šos skaitļus un atstāt tos šeit.
Tā, paldies.
Tātad kā mēs ejam – kā mēs no turienes varam izveidot šos modeļus?
Lai gan sākotnēji mums joprojām bija trīs biti un trīs slēdži, vēlāk
četri biti un četri slēdži, mēs joprojām izmantojām to pašu pieeju,
lai faktiski attēlotu informāciju.
Un tagad, kāpēc bija šie modeļi, un kāpēc es ļoti apzināti liku mūsu
brīvprātīgajiem sarindoties tādā veidā?
Nu, es gribēju, lai viņi izmanto base-2, aka Binary, bet ar bināro
operāciju ir noteikti noteikumi.
Un pat tad, ja neesat pazīstami ar bināro sistēmu, izņemot to, ka tā
pastāv un kaut kādā veidā ir saistīta ar datoriem, tā patiesībā ir
gandrīz identiska sistēmai, kuru jūs un mēs izmantojam katru dienu,
kas pazīstama kā base 10, aka Decimal.
Tātad, tā teikt, uz brīdi atgriežoties sākumskolā, apskatīsim, kā
darbojas decimāls.
Un jūs redzēsit, ka pat tad, ja neesat datorlietotājs jūs patiesībā
esat.
Jums tikai nedaudz jāpielāgo savs prāta modelis.
Tātad šeit ir skaitlis, ko jūs, iespējams, redzat kā 123, bet kāpēc
tas tā ir?
Nu, tas nav īsti 123.
Tas ir tikai trīs simbolu modelis uz ekrāna, 1, 2, 3, un jūsu prāts
tiem ātri piešķir matemātisko nozīmi, 123, bet kāpēc tas tā ir?
Ja jūs esat tāds pats kā es, jūs, iespējams, iemācījāties agrāk, ka
jums ir trīsciparu skaitlis, piemēram, šis galējais labajā pusē
atrodas 1 vietā, vidējais cipars ir 10 vietā, galējais kreisais
cipars ir 100 vietā, un kāpēc tas ir būtiski?
Ja jūs pēc tam ātri veicat galvā aprēķinus, kā jūs un es vienkārši to
darām mūsdienās, tas nozīmē tikai 100 reiz 1 plus 10 reiz 2 plus 1
reiz 3, protams, 100 plus 20 plus 3 dod mums skaitli, ko jūs un es
zinām kā 123.
Bet papildus tam, kā mēs varam dabūt tikai divus ciparus, nevis 9
decimālajā sistēmā?
Nu, vispārināsim šo.
Decimālajā sistēmā, kā mēs ar jums zinām, ja mums ir trīs cipari, kas
attēloti ar šīm jaucējzīmēm, jā, tā ir 1 vieta, 10 vieta, 100 vieta
un, ja mēs turpinām, 1000, 10 000 un tā tālāk, bet kāpēc tā?
Nu, bāzes terminoloģija tagad ir nedaudz precīzāka.
Tehniski tas ir no 10 līdz 0. kolonnai, 10 līdz 1, 10 līdz 2.
Tātad šīs ir 10 pakāpes, kur 10 ir jūsu bāze.
Datori tikai nedaudz vienkāršo lietas, jo datoriem galu galā ir
pieejama tikai elektrība, ieslēgta vai izslēgta.
Viņiem nav piekļuves 10 dažādiem elektrības veidiem, tikai 2 —
ieslēgts vai izslēgts, tā teikt.
Nu, tie vienkārši izmanto citu bāzi.
Un galējais labējais cipars būtu tā sauktajā 2 līdz 0.
Tad vidējais cipars ir no 2 līdz 1.
Visvairāk pa kreisi ir 2 pret 2, AKA 1 vieta, 2 vieta, 4 vieta, un,
tā kā mēs turpinājām, 8 un, ja mēs turpinām, 16, 32, 64, 128 utt.,
bet ideja ir pamatā tā pati.
Tātad kāpēc dators attēlo skaitli, kuru jūs un es zinām, ka tas ir 0?
Nu, izslēgts, izslēgts, izslēgts no labās puses uz kreiso vai šajā
gadījumā no kreisās uz labo ir tikai 0.
Jo tas ir 4 reiz 0 plus 2 reiz 0 plus 1 reiz 0, protams, ir 0.
Tāpēc 001 apzīmē 1.
Tāpēc 010 apzīmē 2 un 3, un 4, un 5, un 6, un 7 uz augšu.
Un kāpēc mums bija vajadzīgs 4. bits, lai attēlotu 8?
Nu, mums, tā sakot, vajadzēja 1, izmantojot mūsu pazīstamo cilvēku
terminoloģiju.
Bet tam mums ir nepieciešams 4. bits, vēl viens tranzistors, un tas
tagad apzīmē skaitli 8.
Un tāpēc mēs beidzām ar ieslēgts - no kreisās puses uz labo –
izslēgts, izslēgts, izslēgts.
Tāpēc es nepārtraukti saku ieslēgts un izslēgts, vai spuldze ir
ieslēgta vai izslēgta, bet patiesībā es domāju tikai 1 vai 0.
Un tāpēc datori un mēs, cilvēki, domā, ka lietas digitāli ir tikai 0
un 1, bet mehāniskā ziņā jūs varat iedomāties, ka tās patiešām ir šīs
spuldzes.
Nu tā, bits nav diez cik noderīgs.
Pat 3 biti, 4 biti, nav tik noderīgi.
Jūs varat skaitīt līdz 7 vai 15, vispārīgi runājot, baiti ir
noderīgāka mērvienība.
Un kāds zina, cik bitu ir baitā?
Tātad baitā ir 8 biti.
Jūs varat to uzskatīt par oktetu līdzvērtīgi.
Dažos gadījumos tur ir nianses, taču uzskatiet, ka baits ir tikai 8
biti, un tā ir tikai noderīgāka mērvienība.
Tātad ko tas nozīmē reālajā izteiksmē?
Tātad, ja kādreiz esat lejupielādējuši, piemēram, mūzikas failu,
fotoattēlu vai videoklipu, tie tiek mērīti baitos.
Droši vien nav mazs baitu skaits, iespējams, kilobaiti nozīmē
tūkstošiem baitu, megabaiti - miljoniem baitu, gigabaiti - miljardiem
baitu, īpaši video.
Tas nozīmē tikai to, ka datora cietajā diskā ir daudz 8 bitu modeļu,
0 un 1 kombināciju.
Lūk, kā ar bitu baitu, 8 bitiem, dators parasti attēlo skaitli 0.
Un, ja tas pats dators izmanto visus 8 bitus, pilno baitu, lai to
mainītu uz 1 — ikviens, kurš ātri rēķina vai ir to redzējis iepriekš,
cik tālu var skaitīt dators ar 8 bitiem vai 1?
[SKAN BALSIS]
Jā, 255.
Kāpēc tas tā ir?
Nu, mēs to nepārvērtīsim par pastāvīgu matemātikas uzdevumu.
Patiešām, pēc šodienas mēs vairs nedomāsim vai nerunāsim par bitiem
šajā zemajā līmenī.
Bet šī ir 1 vieta, 2, 4, 8, 16, 32, 64, 128, un, ja es visu aprēķinu
no kreisās uz labo pusi, tas patiešām dod 255.
Tas ignorē to, kā mēs varētu attēlot negatīvus skaitļus, bet varbūt
vairāk par tiem kādu citu dienu.
Bet datori, protams, dara daudz vairāk nekā skaitļi, matemātika un
visas šīs zemā līmeņa lietas.
Mēs sūtām īsziņas, rakstām dokumentus, e-pastus un tamlīdzīgi.
Tātad kā dators var attēlot kaut ko līdzīgu burtam A?
Es apgalvoju, ka galu galā jūsu Mac datorā, jūsu personālajā datorā,
jūsu tālrunī vienkārši ir daudz tranzistoru, daudz slēdžu, ko tas var
izmantot 8 vienībās, baitu vienībās.
Tomēr, ja tas jau izmanto šos 0 un 1 modeļus, lai attēlotu skaitļus
no 0 uz augšu, kā jūs domājat, kā jūs varētu attēlot alfabēta burtus?
Jā?
Tātad katram burtam varētu piešķirt skaitli.
Ļaujiet man tikai iedomāties, vienkārši nosauksim A 0 vienkāršības
labad B 1, C 2, un tagad ļaujiet man jūs provocēt.
Labi, kā tagad attēlot 0 vai 1, vai 2?
Nu, mēs varbūt esam radījuši sev problēmu, ja tagad mums ir jānozog
daži skaitļi, lai attēlotu burtus.
Mums ir jāizvēlas josla, bet arī tam ir risinājums, ko mēs redzēsim.
Un izrādās, ka pasaule nav tik vienkārša kā A ir 0.
A parasti visur datori, visur tālruņi attēlo ar skaitli 65,
decimālskaitli 65.
Izmantojot 8 bitus, ja mēs pārvēršam dažus no 0 uz 1, ļaujiet man
izteikt pieņēmumu, jūs varat attēlot burtu A, izmantojot 8 bitus,
ieslēdzot dažus bitus un dažus izslēdzot, bet mēs centīsimies
nekoncentrēties uz šo bināro līmeni pārāk daudz.
Tātad, ja A ir 65, izrādās, ka B būs 66, C būs 67 un tā tālāk, un kur
tas mūs noved?
Nu, izrādās, ir vesela sistēma, kas attēlo burtus ar skaitļiem.
Un šeit, kā jau es minēju pirms brīža, ir 0 un 1 modelis, ar kuru jūs
apzīmētu 65.
Un vienkārši pārbaudiet šeit, mēs nemitīgi neizmantosim matemātiku 1
vietā, tas ir vienkārši, 2, 4, 8, 16, 32, 64 vietā.
Tātad 64 plus 1 dod mums 65.
Tātad, kad es to izdarīju, kā es varu tikt pie visiem pārējiem?
Nu, izrādās, ka grupa amerikāņu pirms kāda laika nāca klajā ar šo
ASCII, Amerikas informācijas apmaiņas standartkodu.
Ko tas nozīmē?
Nu, tas ir tikai akronīms, kas apraksta to, ko jūs patiešām
piedāvājāt, burtu attēlošanu ar skaitļiem, kas nav tik vienkārša kā
0, 1, 2.
Sākas ar 65, 66, 67 lielajiem burtiem, bet šeit ir lielākā daļa
mūsdienās lietoto burtu, vismaz ar šo sistēmu.
Tātad šī ir liela tiešsaistes diagramma, un šīs diagrammas vidū
redzēsit, lūk, mans 65, A.
Šeit ir mans 66, B, C, un paskatīsimies, 72 ir H, 73 ir I un tā tālāk.
Tātad ir sakarība, vismaz angļu valodā, starp visiem šiem cipariem un
visiem šiem burtiem.
Un, ja mēs koncentrējamies šeit, tie ir mūsu lielo alfabēta burtu
sākums.
Pieņemsim, ka šodien, rīt jūs no kāda saņemat īsziņu un sistēmā,
tagad, kad esat datorlietotājs, jūs izdomājat veidu, kā redzēt, kāds
0 un 1 modelis tika nosūtīts.
Šajā gadījumā tas ir bezvadu, nevis vadu, taču tas joprojām ir 0 un 1
modelis.
Un jūsu tālrunis ieslēdz un izslēdz dažus slēdžus, lai attēlotu šo
drauga ziņojumu.
Pieņemsim, ka trīs modeļi, ko saņēmāt, bija šie trīs baiti, no
kreisās puses uz labo, uzrakstot trīs burtu vārdu.
Nu, ja mēs pielietosim matemātiku, 1 vieta, 2 vieta un tā tālāk, es
to jums sabojāšu.
Pieņemsim, ka saņēmāt īsziņu, kurā burtiski nav teikts 72, 73, 33,
bet esat saņēmuši shēmu 8 plus 8 plus 8, 24 biti, kas, veicot
aprēķinu, attēlo decimālskaitli 72, 73, 33.
Vai kāds atceras, kādu ziņojumu jūs varētu būt saņēmuši no zaļajām un
baltajām diagrammām?
DEIVIDS Dž. MEILENS: Sveiki - Hi!
Jā, sveiciens ir ziņa, bet 72, 73 dod mums H un I.
Kas ir 33? Vai ir minējumi par 33?
Jā, šeit.
Tātad tā ir izsaukuma zīme.
Kā jūs to zināt?
Nu, jums tiešām ir nepieciešams sava veida špikeris, šajā gadījumā
AKA ASCII.
Un, ja mēs skatāmies citur — ļaujiet man izcelt diagrammas kreiso
pusi, jūs varat redzēt, ka blakus decimālskaitlim 33 patiešām ir
izsaukuma zīme.
Tā nu toreiz bariņš cilvēku sanāca kopā un nolēma, ka tad, kad mēs
sākam būvēt personālos datorus un vēlāk Mac datorus un tālruņus, mums
visiem jāvienojas par šo angļu alfabēta burtu attēlojuma veidu šajā
gadījumā.
Mums tikai jāvienojas par šo kartēšanu.
Bet mazliet dīvaini, ievērojiet to.
Izrādās, ja reiz esat iedzinuši sevi stūrī un sākat lietot 65 — A, 66
— B, tad kā jūs attēlojat 65 kā skaitli un 66 kā skaitli, ja vēlaties
pielietot matemātiku vai izmantot Excel vai ko tamlīdzīgu?
Varbūt kāds redz risinājumu?
Kā jūs attēlojat skaitli 1 rakstzīmju kodēšanas standartā ASCII?
Jā, pa vidu?
KLAUSITĀJI: [NAV DZIRDAMS].
DEIVIDS DŽ. MEILENS: Jā.
Tātad varbūt mazliet veidojas iesākums vai kaut kas tamlīdzīgs, bet
jūs varētu attēlot skaitļus ar citiem skaitļiem.
Un tāpēc, ja vēlaties attēlot skaitli, kuru mēs un jūs zinām kā 1,
piemēram, rakstot to uz tastatūras, dators to saglabā kā
decimālskaitli 49.
Ja nospiežat 2 uz tastatūras, dators pats par sevi nesaglabā 2.
Tajā tiek saglabāts decimālskaitlis 50.
Tagad, par laimi, paradokss beidzas.
Tagad mums ir tikai skaitļu attēlojums ar skaitļiem.
Bet patiesībā galu galā — un jūs to iemācīsities, kad nākamnedēļ
sāksim rakstīt kodu tajā citā valodā — C — tas ir tikai atkarīgs no
konteksta, galu galā.
Jūsu Mac datorā, personālajā datorā un tālrunī ir visas šīs bitu
permutācijas, visas šīs 0 un 1 shēmas.
Un vispārīgi runājot, kad atverat īsziņu, ko esat saņēmis no kāda,
tās ir 0 un tie ir 1.
Bet acīmredzot, ja tā ir īsziņa, īsziņu jēga ir sūtīt tekstu, un
tāpēc šie 0 un 1 modeļi pēc noklusējuma parasti tiks interpretēti kā
alfabēta burti.
Tātad jūs neredzēsit 0 un 1.
Jūs neredzēsit decimālskaitļus.
Jūs redzēsit jūsu drauga iecerēto ziņojumu angļu valodā.
Turpretim, ja atverat kaut ko līdzīgu programmai Excel, šī paša
modeļa 0 un 1 patiešām varētu būt 72, 73, 33.
Iespējams, izklājlapā būs redzamas šūnas ar šiem trim skaitļiem.
Jo izklājlapas daudzos gadījumos ir saistītas ar skaitļiem, skaitļu
saspiešanu un matemātiku.
Ja turpretim atverat programmu Photoshop un mēģināt aplūkot to pašu 0
un 1 shēmu, tas nebūs 72, 73, 33.
Tas nebūs 0 un 1.
Tas nebūs sveiks - hi.
Tā būs kaut kāda varavīksnes krāsa.
Izrādās, ka jūs arī izmantosit tos 0 un 1 modeļus, lai attēlotu
krāsas.
Un tikmēr, kamēr jūs un es vienkārši vienojamies, kā jau sen cilvēki
to darījuši, par to, kādi būs šie modeļi, visas mūsu sistēmas,
daudzas no mūsu sistēmām mūsdienās patiešām ir sadarbspējīgas.
Bet es šeit esmu ļoti neobjektīvs, un patiešām A un ASCII ir ļoti
orientēti uz Ameriku.
Ko jūs neredzat šajā diagrammā?
Ja jūs runājat jebkurā citā valodā, nevis angļu valodā, iespējams,
jūs neredzat rakstzīmes, kuras jūs zināt un mīlat un kuras ir
vajadzīgas katru dienu, lai rakstītu vai nosūtītu ziņojumus.
Šeit netiek atbalstīta milzīga rakstzīmju kopa, neatkarīgi no tā, vai
tās ir diakritiskās rakstzīmes, vai daudzi Āzijas alfabēti.
Ir daudz vairāk simbolu, nekā var ietilpt pat šajā ekrānā.
Un tā cilvēki jau agri nokļuva stūrī, katrā ziņā amerikāņi.
Bet uz parastās tastatūras, ASV angļu valodas tastatūras, jā, jums ir
A, B un C, lielie un mazie burti, taču šeit ir arī diakritiskās
rakstzīmes.
Un mūsdienās, neesmu pārliecināts, vai tas ir nepieciešams, taču
mūsdienās jūsu tastatūrā ir citas rakstzīmes, piemēram, šīs.
Un tas ir rotaļīgs iemiesojums tam, kas patiesībā ir šīs problēmas
tehnisks risinājums.
Ja es šobrīd apgalvoju, ka ASCII vēsturiski izmantoja 7 bitus, lai
attēlotu burtus — un noapaļosim to līdz baitam — 8 bitus, lai
attēlotu burtus, ASCII var attēlot līdz pat 255 vai patiesībā
256 rakstzīmes.
Kāpēc 256?
Ja jums visiem ir 0, tas ir 0, un augstākais skaitlis, ko es minēju
pirms brīža, bija 255.
Tātad kopā ir 256 iespējas.
Nav daudz burtu.
Tas ir labi angļu valodai, bet ne daudzām cilvēku valodām.
Kāds varētu būt intuitīvs risinājums, ja vēlaties attēlot
diakritiskās rakstzīmes, Āzijas rakstzīmes, emocijzīmes, pat tādas kā
šīs, kas mūsdienās ir tikai tastatūras taustiņi?
Kāds ir intuitīvs risinājums, ja baita ir par maz?
KLAUSĪTĀJI: Pievienojiet vēl vienu ciparu.
Tātad pievienojiet vēl vienu ciparu.
Tāpat kā mums bija ceturtais brīvprātīgais, kas mums ieteica ceturto
bitu vienkārši risināsim problēmu un izmantosim vēl dažus bitus.
Tātad, iespējams, 1 baita vietā izmantosim 2 vai,kāpēc gan ne,
izmantosim 3 vai 4 baitus.
Lai gan tas kļūst nedaudz dārgi — mēs pārejam no 8 uz 16 bitiem, uz
24 vai 32 bitiem — mūsdienās datori to dara šādi.
Un, par laimi, mūsu datoros un tālruņos ir tik apjomīga atmiņa, ka
mēs noteikti varam atlicināt nedaudz, lai attēlotu šīs lietas.
Un tad ASCII risinājums ir tas, ko mēs sauksim par Unicode.
Tātad Unicode arī ir ciparu atbilstība burtiem, bet daudzās dažādās
valodās.
Korporācijā Unicode Consortium patiešām ir cilvēku kopums no dažādiem
uzņēmumiem — no daudziem dažādiem uzņēmumiem, valstīm un kultūrām,
kuras kā organizācijas misija šajā gadījumā ir digitāli uztvert visas
cilvēku valodu formas.
Un nodrošināt, lai demogrāfiskie dati par cilvēkiem, kuri runā mazāk
zināmās valodās, tomēr tiktu attēloti un saglabāti digitāli,
izmantojot šo 0 un 1 sakarību.
Tomēr izrādās, ka, ja sākat izmantot 32 bitus, veselus 32 bitus, lai
attēlotu tastatūras rakstzīmes, tas ir 4 miljardi iespējamo 0 un 1
permutāciju.
Tas ir daudz vairāk, nekā nepieciešams lielākajai daļai cilvēku
valodu.
Tāpēc tur ir mazliet vietas dažām rotaļīgākām lietām, piemēram,
emocijzīmēm.
Piemēram, pieņemsim, ka esat saņēmis īsziņu ar šo 0 un 1 modeli.
Vai arī, ja mēs pielietojam matemātiku, pieņemsim, ka saņemat īsziņu,
kas, veicot aprēķinu decimālskaitļos, ir 4 036 991 106.
Kāds zina, uz kādu emocijzīmi jūs skatāties?
Būtu dīvaini, ja jūs to zinātu, bet kas tas ir?
Izrādās, ka pagājušajā gadā šī ir vispopulārākā emocijzīme, kas tiek
sūtīta daudzos veidos, seja ar prieka asarām.
Tas ir modelis, kā cilvēku kopums Unicode Consortium nolēma to
attēlot.
Taču pamanīsit, ka daudziem no jums var būt iPhone tālruņi, dažiem no
jums var būt arī Android ierīces, un dažreiz tie patiesībā neizskatās
gluži vienādi.
Tā ir pašreizējā versija sejai ar prieka asarām operētājsistēmā iOS.
Operētājsistēmā Android tas izskatās nedaudz vairāk līdzīgs šim, un
šeit ir sava veida kuriozs.
Lai gan jūs un es skatāmies uz šīm lietām un tās izskatās kā attēli,
tie nav attēli.
Tās ir rakstzīmes, vismaz tā, kā mēs tās tagad esam definējuši
korporācijā Unicode.
Un iOS un Android, un Windows un Facebook un citiem uzņēmumiem un
lietotnēm mūsdienās patiešām ir dažādi fonti, tā teikt.
Tātad tāpat kā fonti ar angļu un citām valodām var dot jums dažādas
rakstzīmes ar serifiem vai ne, emocijzīmes ir pašas par sevi, jā,
zīmējumi, ko kāds ir izveidojis, bet patiesībā tie ir tikai fonts.
Un tāpēc viens un tas pats 0 un 1 modelis var parādīties nedaudz
atšķirīgi vienā un otrā tālrunī.
Ja tālrunī kādreiz esat saņēmis ikonu, kas ir bojāta, un jums ir
nosūtīta emocijzīme, taču tā ir kā kvadrāts vai kaut kas patvaļīgs un
bezjēdzīgs, tas var nozīmēt, ka neesat atjauninājis uz jaunāko iOS
vai Android versiju, kas atjaunina atbalstīto emocijzīmju fontu.
Tāpēc ka mūsdienās Unicode darbinieki gandrīz katru gadu pievieno šai
konkrētajai rakstzīmju kopai arvien vairāk emocijzīmju.
Kādu dienu es centos saprast, kuras emocijzīmes mūsdienās ir
vispopulārākās.
Turpretī pakalpojumā Twitter pagājušajā gadā populārākā emocijzīme
bija skaļi raudoša seja.
Es nezinu, vai tas izsaka vairāk par 2021. gadu vai par Twitter, taču
jūs noteikti redzēsit dažādas tendences attiecībā uz to izmantošanu.
Taču pat paši cilvēki ne vienmēr domāja divus soļus uz priekšu, un
tagad liela daļa emocijzīmju ir noklusējuma dzeltenā krāsā.
Taču ir daudz emocijzīmju, kas nav šie multfilmu varoņi, bet gan
domātas, lai attēlotu cilvēkus dažādās profesijās vai žestus un
tamlīdzīgi.
Un mūsdienās arī, iespējams, esat pamanījis savā tālrunī, Mac datoros
un personālajos datoros, ka ir dažādi ādas toņi, ko varat piešķirt
noteiktām emocijzīmēm.
Ja to atbalsta uzņēmums un Unicode, jūs faktiski varat pieskarties
noteiktai emocijzīmei un turēt to, un pēc tam varat izvēlēties
piemērotu ādas toni, lai attēlotu sevi vai kādu citu.
Un tas maina displeju.
Nu, padomāsim šeit, kā Apple, Google, Microsoft un citi sāka ieviest
atbalstu emocijzīmēm ar dažādiem ādas toņiem?
Kā jūs to varētu izdarīt?
Ja vēlaties attēlot kādu smaidošu emocijzīmi, bet piecos, šajā
gadījumā dažādos ādas toņos, ko jūs varētu izdomāt?
Pieci dažādi modeļi kas strukturāli ir identiski, izņemot ādas toni,
kas izmantots attiecīgajā attēlā.
Bet tas ir nedaudz neefektīvi vienkārši kopēt, ielīmēt, ielīmēt,
ielīmēt, ielīmēt un mainīt krāsu programmā Photoshop, tā teikt.
Tas izmantos vairāk bitu, vairāk informācijas, nekā jums varētu būt
nepieciešams.
Kā citādi, ja jūs tagad sākat domāt mazliet vairāk kā
datorzinātnieks, ja galu galā jums ir tikai 0 un 1, kā citādi jūs
varētu ieviest ādas toņus, kā jūs domājat?
KLAUSĪTĀJI: RGB.
Tātad RGB, mēs pie tā nonāksim pēc brīža.
Tas nozīmē Red, Green, Blue.
Tas ir viens veids.
Tomēr šajā gadījumā es meklēju alternatīvu, lai izmantotu piecus
dažādus 0 un 1 modeļus, lai attēlotu vienas un tās pašas emocijzīmes,
bet atšķirīgus ādas toņus.
Tātad ne gluži RGB.
Tāpēc saglabājiet vienu emocijzīmes kopiju un pēc tam saglabājiet
dažādus krāsu variantus, ko vēlaties piešķirt šai emocijzīmei.
Tātad šis patiesībā ir piemērs — vai vēlaties precizēt?
Mērķauditorija: Jūs varētu izmantot cilpu.
Tātad jūs varat izmantot cilpu, lai faktiski izvadītu šīs
lietas.veiktu izvadi
Vairāk par to pēc brīža.
Ļaujiet man uz mirkli parādīt citu pieejuiet pa šo ceļu.
Tas savā ziņā būtu labāks dizains, ja vēlaties, bet kāpēc?
Mērķauditorija: filtrs?
Tātad, izmantojam filtrufiltrējiet, ja domājam Instagram izpratnē.
Jūs varat mainīt kaut kā krāsu, un tas var būt saistīts arī šeit.
cits fonts [neskaidri dzirdamsdzirdams]
Deivids Dž. MalansDAVID J. Malan: Ak, interesanti.
Tāpēc varbūt tas varētu būt tikai pavisam cits fonts.
Un jums ir pieci dažādi fonti, kas ir gandrīz identiski, izņemot
dažādas apdares ādas toņa interpretācijas šīm pašām emocijzīmēm.
Ļaujiet man sabojāt.
Es domāju, ka, ja mēs izmantojam ejam pa šo konkrēto pieejuceļu,
veids, kā Unicode ļaudis to nolēma darīt pirms dažiem gadiem, kur
pirmais baits vai baiti, ko saņemat īsziņā vai e-pastā, vienkārši
atspoguļo atspoguļo to emocijzīmes struktūru, noklusējuma dzelteno
versiju, no tiem.
Bet, ja tam uzreiz seko noteikts bitu modelis, ko šie cilvēki
standartizē, lai attēlotu katru no šiem dažādajiem apdaresādas toņu
toņiem, tad tālrunis, Mac vai personālais dators mainīs noklusējuma
krāsu, vairumā gadījumu dzelteno, uz jebkuru citu. trāpīgs cilvēka
tonis ir.
Tātad jūs vienkārši izmantojat divreiz vairāk bitu, bet neizmantojat
piecas reizes vairāk bitu.
Tātad, ko es domāju?
Jums pašam nav piecu pilnīgi atšķirīgu modeļu.
Katram no šiem iespējamajiem variantiem ir attēlota tikai pati
emocijzīme strukturāli un pēc tam atkārtoti lietojami modeļi šiem
pieciem apdaresādas toņiem.
Diemžēl tas nebija pietiekami daudzpusīgs, lai izmantotu citas
funkcijas, kas tika izstrādātas, un arī mūsdienās, un tagad
attēlojumam ir dubulta nozīme.
Emocijas bija paredzētas, lai koncentrētos uz noteiktām profesijām,
un arī sākumā tās bija noteiktas profesijas, kas saistītas ar
noteiktiem dzimumiem un otrādi.
Un jūs noteikti nevarējāt būt viena vai cita dzimuma, noteiktā
profesijā vai citā.
Bija šīs kombinācijaskombinatorikas, kas vienkārši nebija iespējamas.
Bet mūsdienās, kā jūs, iespējams, redzējāt, jums var būt iemīlējušies
pāri, kas patiesībā izskatās vairāk kā trīs emocijzīmes, bet tikai
apvienojas vienā.
Un patiešām, ar vienutas ir tikai viens tālruņa taustiņa nospiešanua,
un jūs varat apvienot dažādas emocijzīmes kreisajā un pēc tam labajā
pusē ar emocijzīmi vidū.
Un tā izrādās, kā mūsdienās datori attēlo šos modeļus, ir viens bitu
komplekts rakstzīmei kreisajā pusē, viens bitu komplekts rakstzīmei
labajā pusē, viens bitu komplekts jebkurai emocijzīmei, kuru vēlaties
vidū.
Un tad jūs izveidojat sarežģītākas emocijzīmju kompozīcijas,
vienkārši atkārtoti izmantojot tos pašus modeļus un bitusfragmentus.
Unikoda ļaudīm nav jānāk klajā ar pilnīgi jaunu atveidojumu kādam
ļoti specifiskam iemiesojumam.
Viņi var izveidot vienu personai, vīrietim, sievietei citām
rakstzīmēm, kuras jūs varētu vēlēties parādīt, un atkārtoti izmantot
tos pašus 0 un 1 modeļus.
Un tāpēc šeit jūs redzat cilvēku nepilnības vai tālredzības trūkumu,
lai jau sākumā izveidotu sistēmu, kas bija pilnībā orientēta uz
amerikāņiem, bez rakstzīmēm, emocijzīmēm vai tamlīdzīgiem elementiem,
kas arī ir attīstījušies, arī tas ir attīstījies.
Un tā mūsdienās ir svarīga detaļa skaitļošanā.
Arī tas attīstās, un valodas, kuras jūs gatavojaties apgūt tuvākajās
dienās, arī tās attīstās.
Un tiek pievienotas jaunas funkcijas, un pat programmēšanas valodām
ir versiju numuri.
Iespējams, jūsu tālrunī ir cita lietotnes versija.
Arī programmēšanas valodām ir dažādas versijas.
Vai tad līdz šim ir jautājumi par to, kā informācija tiek attēlota,
izmantojot ASCII vai Unicode vai kaut ko pa vidu?
Deivids Dž. MalansDAVID J. Malan: Ak, labs jautājums.
Atgādinot, kāpēc jūs nevarat vienkārši — labi, ļaujiet man apkopot,
kāpēc jūs nevarētu līdzīgi izmantot dažādus modeļus, lai mainītu
kontekstu tam, ko šie bitu modeļi attēlo, neatkarīgi no tā, vai tas
ir cipars, burts vai grafisks attēls. ?
Patiesībā tas jau notiek, bet nav uzreiz pamanāmsir tas, kas notiek
zem pārsega.
Tas nav standartizēts gluži tādā pašā veidā, taču, sākot ar nākamo
nedēļu, kad mēs pārejam no nulles uz C, jūs uzzināsit par veidiem,
datu veidiem.
Sākotnēji jums, programmētājam, būs pienākums norādīt programmai, vai
šis bitu modelis ir jāinterpretē kā cipars vai burts, vai kā krāsa
vai kaut kas cits.
Tomēr pašlaikmūsdienās, tuvojoties semestra beigām, jūs izmantosit
valodas, piemēram, Python, kur dators to vienkārši izdomā pēc
konteksta, kas padara programmēšanu vēl vienkāršāku un ātrāku.
Citi jautājumi par Unicode, ASCII vai tamlīdzīgi?
Nu, kā būtu ar dažiem citiem informācijas veidiem?
RGB tika pieminētsizsaukts agrāk, sarkans, zaļš, zils.
Kā attēli tiek attēloti datoros?
Faktiski tas parasti ir neliels daudzums sarkanā, zaļā, zilā daudzuma
komplekts, taču ir arī citi attēlojumi.
Ja esat grafiskais dizainers, iespējams, jūs tos zināt, taču RGB
joprojām ir diezgan izplatīta parādība.
Ko tas nozīmē?
Tas nozīmē, ka, lai attēlotu katru punktu tālrunī vai katru punktu
televizorā, klēpjdatorā vai galddatorā, ir skaitlis, kas norāda, cik
sarkanā krāsaā šim punktam ir , skaitlisjāparāda, cipars, kas norāda,
cik daudz zaļā, un skaitlis, kas norāda, attiecīgi cik daudz zilā tam
vajadzētu būt. šovs, attiecīgi sarkanās, zaļāš, zilās krāsa ir
attēlota.
Piemēram, ja kāds punkts jūsu ekrānā īsziņā vai e-pastā lietotu šos
trīs skaitļus, šīs trīs vērtības vai baitus — 72, 73, 33, tas tiktu
interpretēts tā, kā es norādīju “Augsts”. Bet Photoshop vai kādā
grafiskā programmā tas pats raksts tiktu interpretēts tā, ka sauksim
to par vidēja daudzumau sarkanās krāsas, vidēju zaļo un nedaudz zilo
krāsu.
Un kāpēc vidēji un maz?
Izrādās, ka katrs no tiem ir baiti, un mazākā vērtība, kas var būt
baitā, ko mēs teicām, ir 0.
Lielākā vērtība, kas var būt baitam, ir 255, tāpēc es šeit vienkārši
nospļāvos.
Tas ir kā vidējs, vidējs un mazs sarkanā, zaļā, zilā daudzums.ā,
īpaši.
Šīs trīs krāsas, piemēram, gaismas viļņu garumi, ir apvienotas tā,
lai ekrānā būtu šis punkts, sava veida netīriduļķains dzeltens vai
brūns tonis.
Tādā veidā dators saglabātu tieši šo krāsu, un patiesībā mēs esam
redzējuši šo krāsu.
Parasti ekrānā ierakstot Seja ar prieka asarām, tas izskatās šādi,
parasti daudz mazāks.
Bet tuvināsim vai vēl nedaudz pietuvināsim.
Ko jūs sākat redzēt, ja zināt terminu?
Mērķauditorija: PikseļusPikseļi.
Deivids Dž. MalansDAVID J. Malan: Tātad pikseļi, tas kļūst ļoti
pikselēts.
Pikselis ir tikai punkts ekrānā, un, ja jūs to patiešām tuvināt,
varat burtiski redzēt visus punktus, kas veido emocijzīmes, šajā
gadījumā operētājsistēmā iOS, fontā, ko Apple izmanto, lai attēlotu
šo konkrēto modeli. no 0 un 0.
Tātad viens no šiem dzeltenajiem punktiem — un daudzi no tiem šeit ir
saplūst kopā — katrs punkts ekrānā, pēc manām domām, ir 3 baiti.
Cik sarkana, zaļa, zila ir šajā punktāpar šo punktu?
Cik daudz sarkana, zaļa, zila ir šajā punktā?sarkani zaļi zils par šo
punktu?
Un jūs arī pamanīsit, ka tad, kad krāsašeit kļūst brūngana, punkti
patiešām izceļas.
3 vērtības, 3 baiti, jeb 24 biti, ir tikai nedaudz atšķirīgias.
Tāpēc , kas nav uzreiz pamanāms, ir tas kazem pārsega attēli,
uzņemtie fotoattēli vai lejupielādētie gif, iespējams, kļūst tik
lielitādēļ ka, jo jums ir skaitlis, kas apzīmē katru punktu ekrānā.
Nu, ja es apgalvoju, ka tas patiešām ir veids, kā parasti tiek
attēloti attēli, izmantojot bitu modeli, kas ir piešķirts noteiktam
sarkanās, zaļās vai zilās krāsas daudzumam, kā iegūt video?
Kas ir video, ja galu galādienas beigās mums ir tikai 0 un 1?
Varbūt kas ir video?
Iesim šeit, atpakaļ.
Pikseļi laika gaitā patiešām maina vērtības.
un roka, kas te pacēlās, vai tu gribi to apstiprināt, vai
noliegt?gribi apstiprināt vai noliegt, roku, kas te pacēlās?
Dāvids J.MalansDAVID J. Malan: Jā, vai līdzvērtīgi, attēlu secība,
kas laika gaitā mainās uz ekrāna.
Tātad abas šīs ir derīgas interpretācijas, un jokaprieka pēc, ja esat
uzaudzis ar šīm bilžu grāmatām, jūs varētu atcerēties kaut ko līdzīgu
šim.
ja mēs varētu aptumšot gaismas?
Tātad tas ir vecās skolas analogais veids, kā uzņemtīstenot video
tādā ziņā, ka šis mākslinieks apzīmējarakstīja kā simtiem papīra lapu
ar gandrīz identiskiem attēliem, bet kur tinte no zīmuļa vai
pildspalvas nedaudz kustējās.
Un, ja jūs to digitalizējat tā, ka katrs no šiem triepieniem tiek
attēlots ar punktiem, tas tiešām ir tas, ko jūs redzat visu šo attēlu
secību, kas kustaslido pa ekrānu.
Un, ja mēs iedziļināmies reālajā pasaulē, ja esat kādreiz skatījies
filmu, Holivudas filma parasti ir 24 kadri sekundē, kadri sekundē.
Tas tiešām nozīmē, ka jūs redzat 24 attēlus sekundē vai televizorā
vai ziepju operās, bieži vien tie ir 30 kadri sekundē.
Tādējādi viss lietas izskatās nedaudz vienmērīgāk gludākas.
Tātad, ja vēlaties, tā nav īsta kinofilma.
Tās ir attēlu secības, un jūsu smadzenes un prāts interpolē, ka šī ir
vienmērīga kustība, lai gan mēs vienkārši redzam daudz attēlu ļoti
ātrikustas.
Tagad tas kļūst ļoti svarīgiliels, un vēlāk semestrī mēs runāsim par
to, kā jūs varat saspiest informāciju, lai jūs neizmantotu daudz
vairāk bitu, nekā jums patiesībā nepieciešams.
Un ir arī izdomāti algoritmi, ko cilvēki ir izstrādājuši, taču galu
galā video var būt tikai attēlu secība.
Un otrādi, ja vēlaties attēlot mūziku, kas to pavada, vai kaut ko
citu, ja kāds no jums spēlē kādu instrumentu un prot lasīt notis, kā
jūs varētu to digitalizēt?
[klaviermūzika]
Piemēram, kā jūs varētu attēlot mūzikas notis datorā?
Jūs un es tos dzirdam, kad atskaņojam failus, bet kas īsti patiesībā
notiek?notiek zem pārsega?
Vai ir kāds mūziķis, klavierspēlētājs?
Kāds?
Mērķauditorija: Hertz vērtība?
Deivids Dž.MalansDAVID J. Malan: Labi, tātad herca vērtība, tātad
zināma frekvence.
Tātad skaņa ir zināma frekvence, un tā trāpa jūsu bungādiņā.
Un tieši tāpēc tas izklausās zemu vai augstu, vai kaut kur pa vidu.
Tātad, iespējams, mēs varētu piešķirt, tāpat kā šeit ir burti A līdz
G, varbūt mēs varētu piešķirt noteiktas frekvences vērtības, kas būs
tikai skaitļi, ko mēra kaut ko sauc par hercos,kas ir kaut kas
sekundē.
Un varbūt mums varētu būt daži citi skaitļi katrai no šīm notīm, ne
tikai notsi vai frekvencei.
Varbūt mēs varētu attēlot tā skaļumu, piemēram, cik spēcīgi vai klusi
cilvēks varētu to nospiest.
Varbūt kāds trešais cipars, piemēram, ilgums, piemēram, cik ilgigarš
ir pirksts uz tastatūras?
Tātad jūs varat iedomāties kaut ko tādu kā mūziku, kas reālajā
pasaulē ir pilnīgi nepārtraukta, kvantitatīvi kā kaut ko daudz
diskrētu, attēlojot katru noti laika gaitā tikai kā vērtību secību.
Un ir tik daudz dažādu veidu, kā to izdarīt, MIDI, ja esat
dzirdējušiis, mp3, AAC.
Gandrīz visi failu paplašinājumi, ko redzat savā Mac datorā vai
personālajā datorā, ja tie vispār ir redzami, galu galā tikai nozīmē,
ka šajā gadījumā ir cita veida attēlojums, piemēram, skaņa.
Tāpēc ļaujiet man tikai norādīt, ka ir šie un daudzi citi veidi, kā
attēlot ievades un izvades, un, par laimi, cilvēki daudz no tā ir
standartizējuši.
Viņi ne vienmēr ir saderīgipiekrīt, un tāpēc mums ir dažādi failu
formāti Apple programmatūrainumuriem un Microsoft Excel un Google
izklājlapām un tamlīdzīgas muļķīgas nesaderības.
Bet vispārīgi runājot, cilvēki ir standartizējuši to, kā mēs
attēlojam datu ievades un izvades uz problēmām un no tām.
Bet tagad pievērsīsimies šai Melnajai kastei, tā teikt, pa vidu, šai
abstrakcijai.
Tātad abstrakcija tehniski ir termins, ko jūs redzēsit visur
datorzinātnēs un patiesībā problēmu risināšanā, kas attiecas tikai uz
kaut kā vienkāršošanu, lai jūs nekoncentrētos uz zemāka līmeņa
ieviešanas detaļām.
Jūs patiešām koncentrējaties tikai uz augsta līmeņa mērķiem vai pašu
procesu.
Tāpēc jūsu automašīna, ja jums ir tiesības un esat vadījis vai
atradies automašīnā, jūsuprāt, automašīna, iespējams, ir abstrakcija.
Lielākā daļa no mums, ja esat tāds pats kā es, iespējams, īsti nezina
vai neinteresē, kā darbojas dzinējs un visas kustīgās daļas.
Jums tas ir tikai veids, kā nokļūt no punkta A uz punktu B.
Tā ir abstrakcija, taču kāds, cerams, mehāniķis, zina šīs zemākā
līmeņa ieviešanas detaļas.
Ja jums būtu jāsaprot, kā automašīna darbojas katru reizi, kad
vēlaties doties uz skolu vai veikalu, iespējams, tas būs diezgan lēns
process.
Jūs vienkārši vēlaties domāt un darboties šajā augstākā abstrakcijas
līmenī, un mēs to darīsim visu laiku, rakstot kodu un risinot
problēmas.
Kas tad šobrīd atrodas šajā melnajā kastē, šajā abstrakcijā?
Parasti datorzinātnieks to nosauktu par algoritmu, soli pa solim
sniegtas instrukcijas kādas problēmas risināšanai.
Tagad apskatīsim ieviešanas detaļas, tas ir, kā jūs varētu atrisināt
noteiktas problēmas, un ņemsim konservatīas pieejasvecās skolas
piemēru, bet mūsdienīgā formā.
Šī ikona, ja jums ir iPhone, protams, ir paredzēta jūsu
kontaktpersonu programmai.
Un, ja jūsu tālruņu grāmatā ir vesela virkne ģimenes locekļu vai
draugu vai kolēģu, šeit ir redzami daži kontakti, un tie parasti ir
sakārtoti pēc vārda un uzvārda alfabēta secībā.
Un, iespējams, jums un man ir ieradums, ja viņi vēl nav bieži lietoto
izlasēiecienīti, noklikšķināt uz Meklēt un pēc tam izmantot
automātisko meklēšanu pēc pirmā burtapabeigšanu.
Un kas notiek, kad sākat rakstīt automātisko meklēšanu pēc pirmā
burtapabeigšanu?
Ja ierakstīsiet burtu H, jūs, iespējams, redzēsit tikai Hagridu,
Hariju, Hermioni un tā tālāk.
Ja ierakstāt HA, kas parāda tikai Hagridu un Hariju, un tas viss
notiek ļoti ātri.
Tātad, kā tas notiek?
Parasti jūs varētu vienkārši sākt no augšas un skatīties uz leju,
meklējot visus H vai visus H līdz A H, bet lielākām datu kopām tas
kļūs lēns.
Google programmatūrām e visā pasaulē tas ir pārāk lēnikļūs ļoti lēns.
Un pat mūsu tālruņos, kad jums ir simtiem, tūkstošiem kontaktu, galu
galā, pat šāda veida pieeja, šis algoritms soli pa solim var
darboties lēni.
Tātad, kā mēs varētu meklēt kādu personu tādā tālruņu grāmatā kā šī,
piemēram, Džons Hārvards?
Nu, lūk, tas ir konservatīvās pieejasvecās skolas iemiesojums, un,
iespējams, mūsdienās jums, iespējams, nav bijis izdevības pat fiziski
izmantot šo lietu.
Un patiesībā tie ir mazliet balti meli, jo šī ir telefonu grāmatašīs
ir dzeltenās lapas, kas nozīmē, ka šī ir uzņēmumu, nevis cilvēku
grāmata.
Bet tas ir viss, ko varat atrast, un to ir pat grūti atrast.
Bet tas ir tas pats analogā formā, fiziskajā formā.
Tātad, ja es vēlētos meklēt kādu, piemēram, Džonu Hārvardu, kā es to
varētu izdarīt?
Es varētu sākt ar 1. lappusi, un es varētu sākt meklēt 2., 3., 4., 5.
lappusi.
Nedaudz grūti izdarāms fiziski, jo īpaši tāpēc, ka neviens šo tālruņu
katalogu nav izmantojis daudzus gadus.
Bet vai šis algoritms ir pareizs, pāršķirstot lapu pēc lapas, ļoti
neeleganti?
Vai tas ir pareizi?
Vai es atradīšu Džonu Hārvardu, ja viņš ir šeit?
Tātad jā.
Tas ir nedaudz muļķīgi nogurdinoši, jo, ja tajā ir apmēram 1000
lappušu, viņam varētu būtjāpārlūko daži simti lappušu, bet tas ir
pareizi.
Kādā brīdī es viņu atradīšu, un, ja viņš būs lapā, es varēšu
piezvanīt.
Jo, iespējams, vārdi šeit ir sakārtoti alfabēta secībā, un uz malas
nav burti alfabēta secībā krāpšanās lapas.
Tāpēc man jāmeklē Džons Hārvards no kreisās puses uz labo, meklējot
H, ja tas ir sakārtots pēc uzvārda alfabētasecībā.
Nu, kas būtu nedaudz labāks?
Nu, kā būtu ar divām lapām vienlaikus?
Grūti iztikt ar 20 gadus vecu telefonu grāmatu, kur lapas
salipušassaaugušas kopā, bet 2, 4, 6, 8, 10, 12.
Šis algoritms, vai tas ir pareizs?
Mērķauditorija: Nē.
DAVID J. Malan: Labi, tāpēc nē.
Mērķauditorija: jūs izlaižat lapas.
Tāpēc es izlaižu katru otro lapu.
Tātad, ja es to neņemu vērā un es nonāku tādā kā I vai J sadaļā, es
varētu nejauši secināt, nē, es vēl neesmu atradis Džonu Hārvardu,
tikai tāpēc, ka es viņu izlaidu, jo tas bija iespiests starp divām
lapām.
Tagad, manuprāt, es varu to labot, ja es nokļūšu I sadaļā, tad
ļaujiet man pašķirtdubulntot vienu lapu atpakaļ, ja vien viņš būtu
šajā pēdējā lapā.
Tātad tas ir atgūstams, taču tas ir gandrīz divreiz ātrāks, atskaitot
šīs kavēšanāsžagas.
Taču lielākā daļa no mums darītu un tas, ko dara jūsu tālruņi, kaut
arī digitāli, tie atveras aptuveni tālruņu kataloga vidū.
Un viņi paskatāsskatās uz leju un saka: ak, es esmu aptuveni M sadaļā.
Tātad esmu aptuveni pusceļā cauri 1000 lappušu tālruņu grāmatai.
Bet ko es tagad zinu par Džonu Hārvardu?
Kur viņš ir man pa kreisi vai pa labi?
Tātad alfabētiskā secībā viņš, iespējams, atrodas man pa kreisi, un
tāpēc es varu gan metaforiski, gan fiziski pārraut problēmu uz
pusēmsadalīt uz pusēm.
Jums nav jābūt pārsteigtam.
Tādā veidā tas ir patiešām viegli, bet es zinu, ka Džons Hārvards
šeit atrodas pa kreisi.
Bet tagad es varu nevajadzīgi dramatiski izmest vienu ar pusi
lapaspusi un vienu lapu, un ko es tagad zinu?
Esmu pārgājusi no 1000 lapām līdz 500.
Es varu atkārtot aptuveni to pašu algoritmu.
Ejat līdz pusei Pārejiet uz šīs lietas pusi, un tāpēc šoreiz es
atgriezos mazliet par tālu.
Es tagad esmu E sadaļā.
Tātad, ko es zinu?
Vai Džons Hārvards ir no manisman pa kreisi vai pa labi?
No manisMan pa labi, lai es atkal varētu sadalītpārraut problēmu uz
pusēm.
Izmet šo pusi, un tagad es tiešām lidoju.
Es to daru verbāli lēni, bet tas samazinājāspieauga no 1000 lappusēm
uz 500 līdz tagad 250.
Un tagad es varu to izdarīt vēlreiz, 125.
Es to daru vēlreiz, apmēram pēc 67, un turpinu to darīt atkal un
atkal un atkal, līdz man paliek, cerams, tikai viena lapa vai šajā
gadījumā, ironiskā kārtā, reklāma mehāniķimmehāniķa reklāma.
Labi, kāda ir ietekme uz mūsu sniegumu?
Labi, darīsim to abstrakti, ja vēlaties, ja šis pirmais algoritms
būtu vienkārši ātri attēlots diagrammā bez pāra skaitļiem.
Šeit ir mana x ass, problēmas lielums uz x ass.
Tātad, jo lielāka problēma, jo tālākšajā virzienā.
Laiks atrisināt problēmu.
Jo augstāk jūs paceļaties uz y ass, jo vairāk laika patērējat, lai to
atrisinātu.
Kā mēs uzzīmētu darbības laiku, laiku, kas nepieciešams, lai palaistu
pirmo algoritmu?
Nu, tā būs taisna līnija.
Jo, ja nākamgad pievienosit vēl vienu lapu, jo vairāk cilvēku
pārceļas uz Kembridžu, jūs, iespējams, pievienosit vēl vienu lappuses
šķirklipagriezienu, tātad vēl vienu sekundi, vēl vienu laika vienību.
Tātad tā ir taisna līnija.
Un mēs to abstrahēsim kā “n”"n". Ja tālruņu katalogā ir n
lapas, šīs līnijas slīpums būtībā ir n.
Otrais algoritms, kurā es vienlaikus veidoju divas lapas, bija
divreiz ātrāks, taču tā joprojām ir taisna līnija.
Un patiesībā ļaujiet man šeit uzzīmēt dažas punktētas līnijas.
Ja tālruņu grāmata ir tik liela, ar manu pirmo algoritmu tas var
aizņemt tik daudz laika vienību, tik daudz soļu, tik daudz lappušu
pāršķiršanupagriezienu.
Bet ar šo otro algoritmu ievērojiet, ka dzeltenā līnija krustojas
daudz zemāk nekā sarkanākrustojums ir daudz zemāks uz dzeltenās
līnijas nekā uz sarkanās.
Tātad n vairāk par virs 2 nozīmē, ka šeit ir uz pusi mazāk lapu, ja n
ir lappušu skaits.
Patiešām, šis algoritms — otrais — ir divreiz ātrāks, atskaitot mazās
aizkavēšanās žagas, ka man ir jāpāršķirjāatgriež viena lapa.
Bet tas nav nekas liels, ja es joprojām daru lietas divreiz ātrāk.
Bet trešais algoritms izskatās principiāli atšķirīgs.
Tas izskatās šādi.
Logaritmi, ja atceraties no vidusskolas vai agrākiem laikiem - ja nē
jums nav, arī tas ir labi.
Tā vienkārši ir principiāli cita funkcija, cita forma.
Un ievērojiet, ka zaļā līnija iet uz augšu un uz augšu, un uz augšu,
bet pieauguma temps ir daudz lēnāks pieauguma temps, kas nozīmē, ka
ir iespējamas trakas lietas.
Ja divas Masačūsetsas pilsētas, piemēram, Kembridža un Allstona, kas
atrodas pāri upei, nākamgad apvienosies, piemēram, tālruņu kataloga
ziņā, viņu tālruņu katalogs tikko būs divreiz lielāks.
Pirmajā algoritmā man būs jāveic divreiz vairāk darbību.
Otrais algoritms, gandrīz tas man prasīsgandrīz par 50% vairāk soļu,
lai veiktu, divus vienlaikus.
Bet trešais algoritms, ar kuru es beidzu, atkal un atkal dalot saplēš
lietas, sadala un iekaro, ja vēlaties, uz pusēm un uz pusēm un uz
pusēm, cik vēl soļus veiks mans trešais algoritms, ja Kembridža un
Allstonas saplūst tālrunī. divreiz lielākā telefonu grāmatāa grāmata?
Mērķauditorija: Četri soļi.
Deivids Dž.MalansDAVID J. Malan: Vēl tikai viens solis, vai ne?
Nekas sevišķsš.
Kad esat izlēmis, vai Džons Hārvards atrodas pa kreisi vai pa labi,
jūs vienkārši izvairieties no problēmas.
Tātad jūs esat panākuši daudz ātrāku progresu.
Tātad būtībā tas ir tas, ko jūsu dators, tālrunis, iespējams, paveic
diskrētidara zem pārsega, kad meklē Hariju vai Hermioni, Hagridu vai
kādu citu, jo tas ir daudz ātrāk, it īpaši, ja jums ir daudz datu.
Ja jums nav tik daudz kontaktpersonu, iespējams, nav nozīmes tam, vai
meklējat no augšas uz leju vai vairāk, izmantojot šo dalīšanas un
valdīšanas algoritmu.
Bet, ja jūs esat pasaules Google vai analizējat lielas datu kopas,
dati summēsiestas patiešām tiks papildināts diezgan ātri.
Tātad, kur mēs ar nonākam to ejam?
Tālāk mēs iepazīstināsim ar kaut ko, ko sauc par pseidokodu.
Kā es varu tulkot to, ko es tur mutiski darīju, it kā intuitīvi,
faktiskā kodā?
Nu, tas nebūs Scratch.
Tas vēl nebūs C vai Python.
Tā vienkārši būs angļu valodai līdzīga sintakse.
Un šādi daudzi programmētāji sāktu risināt problēmu.
Viņi nesāk rakstīt kodu C vai Python vai tamlīdzīgā valodā.
Viņi izmanto angļu valodu vai citu valodu, lai pierakstītu savu ideju
izklāstu.
Mans pirmais solis patiešām bija tālruņu kataloga paņemšana.
Mans otrais solis bija atvērt tālruņu kataloga vidu.
Mans trešais solis bija nedaudz atšķirīgs — paskatieties uz lapu, jo
kāpēc?
Mans ceturtais solis bija, ja lapā ir atrodama persona, kuru meklēju,
ko tad es daru?
Manā piemērā tas nekad nav noticis, bet es piezvanu personai.
Tātad esmu pabeidzis.
Citādi, ja persona ir agrāk grāmatā alfabēta secībā, kā tas bija
Džons Hārvards manāa H gadījumā, tad man vajadzētu meklēt tālruņu
kataloga kreisās puses vidū.
Un tad man vajadzētu atgriezties pie trešā soļa.
3. darbība ir apskatīt lapu, tādējādi atkārtojot to pašu procesu
atkal un atkal.
Tomēr 9. darbība varētu būt citādāka, ja persona vēlāk ir grāmatā,
tad turpināsim un atveriet grāmatas labās puses vidu un pēc tam
atgriezīsimies 3. rindiņā.
Citādi ir vēl ceturtais scenārijs, kas mums, iespējams, būtu
jāapsver, lai mans meklēšanas process neapstātos vai nesabojātos, vai
man neparādītos peles kursors uz ekrāna, kas nepārtraukti grieztos
neiedotu kādu no šīm griežamajām pludmales bumbiņām ar kļūdu.
Deivids Dž.MalansDAVID J. Malan: Jā, ja nu Džona Hārvarda nav tālruņu
katalogā?
Es gribētu, lai mans algoritms, tālrunis varētu ne tikai atsāknētu
vai sasalst.
Man tas būtu jārisina ar visapverošu pieeju sava veida nozveju.
Citādi, tā teikt, vienkārši beigsim programmu.
Tātad katram iespējamajam četru scenārijam ir skaidri definēta rīcība.
Tagad izsauksim dažus no šiem svarīgākajiem terminiem.
Izrādās, ja es šeit iezīmēju dzeltenā krāsā, tad tam, ko es šeit esmu
darījis, ir kāds modelis.
Tie ir visi mani angļu valodas darbības vārdi.
Un pēc brīža mēs sāksim saukt šos darbības vārdus par
“funkcijām”"funkcijām". Kad programmējat vai rakstāt kodu
un vēlaties, lai programma vai dators kaut ko darītu jūsu vietā, kādu
darbību vai darbības vārdu, mēs šīs darbības vai darbības vārdus
sauksim kā šīs lietas, ko sauc par “funkcijām”"funkcijām",
tāpat kā šeit.
Turpretim es tikko izcēlu savu "ja"”ja”;, “ ja
citādi”"cits,”citādi” ja", "cits, ja" un
"cits". Tas atspoguļos to, ko mēs sāksim saukt par
“nosacījumu”"nosacījumu", sakāmvārdu ceļa sazarošanos, kur
jūs varat iet uz šo vai citu ceļu, darīt to vai citu lietu.
Un jūs izlemsit, kuras no šīm lietām darīt, pamatojoties uz to, ko es
tagad šeit izcēlu, un kuras tiks sauktas par “Būla
izteiksmēm”"Būla izteiksmēm" — Būls, atsaucoties uz
matemātiķikura, uzvārds Būls.
Būla izteiksme ir tikai jautājums ar jā/nē, patiesa/nepatiesa, 1 vai
0 atbilde, ja vēlaties.
Un tas nosaka, vai jūs darāt to vai to, vai šo lietu, vai to.
Šajā gadījumā atkāpe ievilkums ir svarīgas.
Fakts, ka esmu uztaisījis atkāpi ievilcis 5. rindiņaiul, pēc
vienošanās programmēšanas nozīmē, ka man ir jāizpilda 5. rindiņa
tikai tad, ja atbilde uz 4. rindiņu ir jā vai patiesa, un tas pats
attiecas arī uz citām atkāpēm.
Un pēdējā īpašība šeit ir šī.
Patiesībā kāds to piesauca agrāk.
Šīs līnijas, 8. un 11., tagad ir izceltas un ko attēlo?
Kā mēs tos varētu saukt kodā, ja esat to izdarījis — jā, tātad tās ir
cilpas, sava veida cikli, kuru rezultātā es atkal un atkal daru vienu
un to pašu, taču šim algoritmam pseidokodā ir svarīga detaļa.
Lai gan tas man liek atgriezties pie 3. rindiņas, kāpēc šis algoritms
galu galā apstāsies?
Kāpēc es nemitīgi nemitīgi nemeklēju Džonu Hārvardu pēc šo cilpu
būtības, liekot man turpināt atgriezties 3. rindā?
Labi.
Galu galā viņš būs lapā vai, jūsuprāt, viņa nebūs vispār, un mums
vairs nav lapu, tāpēc mēs vienkārši beidzām pametācm darbu.
Un tas ir galvenais, lai dotos uz kreiso pusi vai labo pusi.
Nav svarīgi, vai jūs darāt vienu un to pašu atkal un atkal.
Jūs neiespringsiet tā sauktajā bezgalīgajā clipālokā, kamēr jūs
turpināsit sadalīt problēmu un samazināt to kaut ko mazākā, mazākā,
mazākā.
Galu galā vairs nebūs problēmu, kas jāatrisina.
Tātad, pat ja jūs neuzskatāt sevi par datoru cilvēku, pat ja jūs
nekad neesat rakstījis kodu, tuvākajās dienās jūs atklāsit, ka šīs
idejas, kuras mēs esam izmantojuši no reālās dzīves, būs rokas
stiepiena attālumāir jau tavi pirkstu gali.
Un liela daļa kodēšanas procesa būs tikai daži nelīdzenumi ceļā, jo
jūs nevarat redzēt jauno sintaksi pazīstamā veidā.
Bet jūs atklāsiet, ka idejas patiesībā būs pazīstamākas, nekā jūs
būtu domājušinekā jūs citādi varētu domāt.
Un tāpēc mēs pēc brīža redzēsim — un pēc brīža paņemsim pārtraukumu,
lai atvilktu elpu — ka jūs redzēsit šīs pašas idejas Scratch
kontekstā, kas ir faktiskā programmēšanas valoda, ar kuras palīdzību
mēs vilkšu un nometīšu puzles detaļas, lai kods darbotos.
Mēs redzēsim dažus šo ideju variantus, ko sauc par
“arguments”"argumentiem" un “atgriešanas
vērtības”"atgriešanās vērtībām" un
“mainīgie”"mainīgajiem". Bet galu galā mēs to kaut kā
pārveidosim par šo.
Ikviens vēlas likt likmes uz to, ko šī programma darīs, ja tā tiks
ievadīta jūsu Mac datorā, personālajā datorā vai tālrunī?
Šeit ir tikai masīvs nulles un vieninieku modelis.
DEIVIDS Dž. Malans: Acīmredzot diezgan apbēdinoši tas tiešām sacīs:
“sveika pasaule”"Sveika, pasaule." Un patiesi, visos šajos
0 un 1 ir ne tikai HELLO, bet arī darbības vārdi, darbība, kas drukā
kaut ko uz ekrāna.
Un ir arī citas lietas, lai programma zinātu, kā sākt un kā
apturētapstāties, daudzas lietas, par kurām mums nebūs jāuztraucas,
ko darīja tas, kurš ir izstrādājis datoru vai valodu.
Bet galu galā jūs nekad nerakstīsit 0 un 1, lai gan mūsu senči
kādreiz kaut kādā veidā to darīja.
Mēs izmantosim daudz augstāka līmeņa valodu, piemēram, C valoduā vai,
vēl labāk, pēc brīža, piemēram, Scratch, piemēram, šo.
Un tiešām, tieši tāpēc šodien mēs koncentrējamies un sākam ar
Scratch, šo grafisko programmēšanas valodu, tāpēc mums ir veids, kā
izteikties sevi, izmantojot funkcijas, nosacījumus, cilpas un daudz
ko citu, bet tādā veidā, kurā nav muļķīgu stulbu iekavu un
figūriekavu krokainajām lencēm un visiem šiem vizuālajiem
traucēkļiem, un pēc tam tas tiks pārtulkots šajā zemākā līmeņa
valodā.
Bet pagaidām tas bija daudz.
Tā noteikti bija pats svarīgākais ugunsdzēsības šļūtene.
Dosimies uz priekšu un paņemsim 10 minūšu pārtraukumu.
Jūtieties brīvi celties vai palikt šeit.
Un mēs atsāksim mazliet ar kādu faktisku kodu.
[VIDEO ATSKAŅOŠANA]
[MŪZIKA — grupa THE WEATHER GIRLS dziesma “Līst”LAIKA MEITENES,
"LĪST VĪRIEŠI"] [skan mūzikaATSKAŅO MŪZIKA]
[PĒRKONS dārdDŪM]
- (DZIEDĀOŠANA) Sveiki.
Sveiki.
Mēs esam jūsu laikapstākļu meitenes, un vai mums ir jums jaunumi.
Labāk klausies.
Sagatavojieties, visas vientuļās meitenes.
Un atstājiet tos lietussargus mājās.
Mitrums paaugstinās.
Hmm, pieaug.
Barometra rādītājs pazemināskļūst zems.
Cik zemu, meitene?
Saskaņā ar visiem avotiem — kādi avoti tagad — iela ir tā vieta, kur
iet.
Labāk pasteidzamies.
Jo šovakar pirmo reizi, tikai aptuveni pus10:00-- pusvienpadsmitos
10:00-- pirmo reizi vēsturē no debesīm sāks līt vīriešus-- sāciet līt
vīriešivīrieši!
Vīrieši līst, aleluja!
Vīrieši līst kā lietus, āmen!
Es iešu ārā.
Es ļaušu sev sevi pilnīgi izmirkt!
[Smejas] Labi, tātad...
[BEIDZASBEIGT ATSKAŅOŠANAU]
Tātad šī ir Scratch — grafiskā programmēšanas valoda, ko izstrādājuši
mūsu draugi MIT Media Lab, ko daži no jums, iespējams, izmantoja
pamatskolā vai tamlīdzīgi, lai atskaņotu un rakstītu kodu un
tamlīdzīgi, bet jūs, iespējams, to nedarījāt. noteikti nepadomājātiet
par to, kā daži no šiem primitīviem galu galā darbojās.
Un patiesībā viss, ko esat paveicis — ja iepriekš esat izmantojis
Scratch — un viss, ko redzēsit šodien, attieksies uz visām nākamajām
nedēļām, jo mēs izpētīsim šīs lietas, ko sauc par funkcijām
"funkcijām" un cilpām " cilpas un nosacījumiemi, Būla
izteiksmes un citi.
Ar Scratch, jo tas ir tik grafisks un animēts-atbilstošskongruents,
varat izveidot tādas animācijas kā šī, interaktīvo mākslu un
programmatūru kopumā.
Bet jūs to darīsit, velkot un nometot puzles gabalus, kas saslēdzas
kopā tikai tad, ja tas ir loģiski.
Un šajā pirmajā mācību nedēļā jums nebūs jāsaskaras ar figūriekavām
krokainajām lencēm, iekavām un visu to dīvaino simboliku, ko jūs
varētu atcerēties, kad redzējāt, kad mēs vienkārši gribējām pateikt:
“Sveika pasaule”"Sveika, pasaule." Tagad šo konkrēto
programmu “Raining Men”"Raining Men" uzrakstīja bijušais
CS50 pasniedzējs Endrjū Berijs, kurš tagad ir amerikāņu futbola
komandas Klīvlendas Browns ģenerālmenedžeris.
Un tāpēc šīs ir tikai dažas no programmām, kuras ir izveidojuši daži
jūsu klases priekšgājēji.
Un jūs redzēsiet atlikušajā nodarbības daļā šeit arī pāris citus, kā
arī citus kursa pirmajā uzdevumā, proti, problēmu kopu nulle.
Tātad, kā mēs tur nokļūstam?
Vispirms īsa īss pārskats apskate par to, ko mēs darīsim.
Šī Scratch programmaā, iespējams, ir vienkāršākā programma, kurāo
varat uzrakstīt.
Un pat tad, ja jūs nekad iepriekš neesat redzējis Scratch vai jebkuru
programmēšanas valodu, jūs droši vien nojaušat, ka tas tikai kaut kā
ekrānā saka: “Sveika pasaule”"Sveika, pasaule." Bet tas,
kas jums nav jādara, ir rakstīt ezotēriskas komandas un dīvainu
sintaksi, tās figūrcirtainās iekavas un iekavas, uz kurām es
pastāvīgi atsaucos.
Jūs vienkārši velciet šo dzelteno puzles gabalu.
Jūs velciet šo purpursarkano puzles gabalu.
Ļaujiet viņiem, tā teikt, saslēgties kopā, kā magnetimagnētiski
saslēgties kopā.
Noklikšķiniet uz pogas un izspiediet.
Izmantojot šos pašus celtniecības blokus un vairākus citus, jūs varat
izgatavot tieši tādas lietas, kuras arī Endrjū realizējaatdzīvināja.
Tātad, lūk, ko mēs tagad redzēsimgatavojamies redzēt.
Vietnē Scratch.MIT.edu ir uz mākoņiu vidēem balstīta programmēšanas
vide MIT serveros.
Varat arī lejupielādēt to bezsaistē savā Mac vai personālajā datorā.
Un tas nodrošina šādu saskarni.
Ekrāna kreisajā pusē būs redzama bloku palete.
Šie puzles gabali, vaiAKA bloki, ir dažādās krāsās, kas tos drīzāk
iedala kategorijās.
Tātad šeit, piemēram, zilā krāsā, ir vesela virkne ar kustību
saistītu bloku.
Tāpēc Endrjū izmantoja veselu virkni to, lai dziedātājs un vīrieši
pārvietotos pa ekrānu sinhroni ar fonā skanošo dziesmu.
Tikmēr šīs saskarnes vidū būs koda apgabals.
Un šeit Endrjū un drīzumā jūs vilksit un nometīsit dažus no šiem
puzles gabaliņiem un citām krāsām, kā arī saslēgsit tos kopā, lai
jūsu varonis — kurš drīzumā tiks izgudrots — kaut ko paveiktu ekrānā.
Patiešām, apakšā, šeit, galu galā, jūs redzēsit gariņa sprite
apgabalu, kur gariņš sprite ir tehnisks termins, kas apzīmē varoni
videospēlē vai programmēšanas vidēkā varoni videospēlē vai
programmēšanas vidē, piemēram, šī.
Pēc noklusējuma, vēsturiski, Scratch ir kaķis, talismans, ja
vēlaties, šai programmēšanas videi.
Un tāpēc šeit mēs redzam pēc noklusējuma atlasītu tikai vienu gariņu
spraitu, jo ekrāna augšējā labajā stūrī ir šī gariņa spraita vieta.
Varat arī noklikšķināt un tuvināt, lai padarītu to pilnekrāna režīmā.
Bet šī ir pasaule, kurā Scratch — pēc noklusējuma kaķis — dzīvos.
Bet jūs varat mainīt Scratch kostīmu, lai tas izskatās pēc dziedātāja
vai vīrieša, kas nokrīt no debesīm, vai tamlīdzīgi, vai kaut ko
citu, ko vai nu pats izveidojot mākslu, vai importējot dažas lietas,
kas tai nāk līdz ir pievienotas, vai citur tiešsaistē.
Kas tad ir šī pasaule, kurā Scratch drīzāk dzīvo?
Nu, vispārīgi runājot, mums nebūs pārāk jārūpējas par skaitļiem
cipariem, jo mēs varēsim uzdot jautājumus, piemēram, interaktīvus,
piemēram,Vai Scratch ir kaķis vai the cat vai jebkuršu citsu
personāžsu, pieskaroties ekrāna malai, pieskaroties kaut kam citam?.
citādi?
Taču Scratch pastāv šajā divdimensiju koordinātu sistēmu pasaulē.
Tātad, ja kaķis vai kāds varonis atrodas pa vidu, tas būtu xy
atrašanās vieta 0,0, ja vēlaties.
Tikmēr šeit ir 240 pikseļi jeb punkti pa labi.
Tātad tas būtu 240,0, kur y ir 0, jo tas ir tieši šajā viduslīnijā.
Tātad tas nav ne augšā, ne zemāk.
Šeit pa kreisi, protams, būtu -240 un 0.
Virs kaķa x ir vienāds ar 0, jo tas atrodas tieši uz šīs vertikālās
viduslīnijas, un 180.
Un tad šeit lejā, kā jūs varētu nojaust, būtu 0, negatīvs 180.
Vispārīgi runājot, mums nav jārūpējas par šīm precīzajām pikseļu
koordinātām.
Bet galu galā tas ir noderīgi, ja vēlaties, lai kaķis pārvietotos uz
augšu, uz leju, pa kreisi vai pa labi.
Zināma virziena izjūta atbilstoši x asij un y asij arī var palīdzēt
izteikt savas idejas.
Tātad, kādas varētu būt dažas no šīm idejām?
Nu, darīsim tā.
Es turpināšu un vietnē Scratch.MIT.edu izveidošu tikai tukšu ekrānu,
piemēram, šeit redzamo.
Un tāpēc šī ir tieši tāda šī pati saskarne.
Bet tagad esmu pārlūkprogrammā, pilnekrāna režīmā, lai varētu sākt
rakstīt kādu kodu.
Un liksim tam kaķim kaut ko pateikt ekrānā.
Tagad tas prasa nelielu pieredzipraksi.
Bet godīgi sakot, tikai pārskatot ritinot šīs puzles daļas, jūs varat
ātri saprast, kas ir iespējams, ne tikai vispārīgi kategoriski, bet
arī konkrēti.
Un es aizrautīgi darbošos lēkšu apkārt, jo esmu to darījis, protams,
agrāk.
Bet es vispirms došos uz pasākumiem, dzeltenā krāsā.
Un es vilkšu un nometīšuu šo pirmo bloku, ko izsauca sauc, kad
noklikšķināja Zaļaios karogus.
Un es tur esmu pietuvinājis, lai tas būtu nedaudz salasāmāks.
Un ievērojiet, ka šī Zaļā karoga forma tieši tā atspoguļo šo Zaļo
karogu šeit augšpusē, blakus šai sarkanajai pieturas Stop zīmei.
Zaļais karogs nozīmēs uzsākt aiziet un sarkanā Stop zīme apstāties,
sākt vai apturēt mūsu programmu.
Nākamajā nedēļā jūs uz tastatūras rakstīsit teksta komandu, lai
īstenotu tieši to pašu ideju.
Bet pagaidām tā ir poga.
Tātad, kad noklikšķina uz Zaļāais karogas noklikšķināja, ko es vēlos,
lai Scratch darītu?
Kā būtu, ja Scratch sākotnēji pasaka kaut ko līdzīgu: “"Sveika,
pasaule”", kas patiešām vēsturiski ir pirmā programma, ko
vairums programmētāju varētu uzrakstīt.
Tātad viss, kas saistīts ar to, kā kaķis izskatās, patiesībā ietilpst
r kategorijā būs zem izskatsa, šeit purpursarkanā krāsā.
Tāpēc es vilkšu pāri Saki “"sveiks”". Un jūs ievērosiet
kaut ko interesantu ziņkārīgu un atšķirīgu šajā purpursarkanajā
blokā.
Tajā, protams, purpursarkanā krāsā ir rakstīts “saki”"Say".
Bet tad ir šis baltais ovāls un teksts, kas pēc noklusējuma ir
“"sveiki”", jo MIT tikko nolēma, ka pēc noklusējuma
vietturis būs “"sveiki"". Taču jebkurā laikā, kad redzat šo
balto ovālu, tā ir iespēja sniegt ievadi funkcijā Say.
Un tāpēc es aizņemos iepriekš izmantotu terminoloģiju. no
iepriekšējiem laikiem.
Problēmu risināšana atkal ir saistīta ar ievadi, kas rada rezultātus.
Un pa vidu ir kāds algoritms.
Pēc brīža mēs sāksim diezgan bieži atsaukties uz algoritmiem kā
"”funkcijām"”. Kāpēc?
Jo tā ir kāda algoritma ieviešanaizpilde.
Tāpēc ļaujiet man ignorēt noklusējuma iestatījumu ar “Sveika,
pasaule”. Es tālināšu.
Un tagad, ja es došos uz ekrāna augšējo labo pusi un noklikšķināšu uz
Zaļā karoga, mēs, cerams, redzēsim manu pirmo programmu kodā.
Tagad tā tas nebija milzīgas piepūle lifts, vai ne?
Tas bija tikai puzles gabalu vilkšana un nomešana.
Bet kas tagad ir noticis?
Nu, izrādās, ir notikušas divas lietas.
Kad es, cilvēks, noklikšķināju uz šī Zaļā karoga, es palaidu to, ko
mēs tagad sāksim saukt par "notikumu"es izraisīju to, ko mēs tagad
sāksim saukt par “"notikumu”". Notikums parasti ir kaut kas
grafisks vai interaktīvs, kas vienkārši notiek datorprogrammā.
Jūs un es visu dienu aktivizējam notikumus mūsu tālruņos.
Ikreiz, kad pieskaraties vai velciet, ilgi nospiežat vai saspiežat,
vai kādu no šiem žestiem, kas mūsdienās ir modē tālruņos, jūs
aktivizējat notikumus.
Un Apple, Google un citur cilvēki ir uzrakstījuši kodu, kas nolasa
noklausās šos notikumus un kaut ko dara, kad tas notiek.
Tas ir tas, ko To es tikko izdarīju.
Noklikšķinot uz Zaļā karoga, es gribu, lai kaut kas notiktu, proti,
es gribu, lai šī purpursarkanā funkcija, šis darbības vārds, šī
darbība ar nosaukumu Say, lai kaut ko dara.
Ko es vēlos, lai tā tas darītu?
Es gribu, lai tā tas pateiktu, kas ir šī ievade.
Un es ieviesīšu vēl vienu vārdnīcas terminuvārdu krājuma terminu.
Jā, baltie ovāli šeit ir ļoti vispārīgi ievades veidi.
Bet programmētāja terminoloģijā tos sauc par
“"argumentiem”", ko citādi sauc par
“"parametriem”". Un tas nozīmē tikai funkcijas ievadi, kas
kaut kādā veidā maina tās uzvedību.
Kad es noklikšķinu uz Stop Apturēt, tas ir tikai vēl viens notikums.
Un tā ir iebūvēta tas ir tikai iebūvēts Scratch.
Scratch zina, ka, noklikšķinot uz zaļās Stop apturēšanas zīmes, visam
vajadzētu automātiski apstāties.
Man nav jāraksta kods, lai atbalstītu šo funkciju.
Tātad viss ir labi, “"Sveika, pasaule.&”quot; Bet, ja es turpinu
es turpinu apstāties un uzsāktuzsākt un darīt apstāties un sākt,
uzsākt un un apstādināt un sākt, tas atkal un atkal darīs to pašu.
Un tas tiešām nav tik interesanti, galu gala dienas beigās, varbūt
vienreiz arī reiz iepriecinoši, bet būtu jauki, ja tas būtu nedaudz
interaktīvāks.
Tātad izrādās, ka arī mēs to varam.
Bet tā vietā mums ir vajadzīgs cits garīgaisprāta modelis.
Tātad šajā gadījumā, kad mēs domājam par šo funkciju, Say sakiet,
šajā ievadē “"Sveika, pasaule”", tas faktiski ir diezgan
tīri kartēts ar šo modeli agrāk, kas, manuprāt, ir problēmu
risināšana, vaiir datorzinātne, ja vēlaties.
Pašreizējās problēmas ievade šeit būs baltā krāsā: “"Sveika,
pasaule”." Algoritms ir “Say”"saki" algoritms.
Tagad es nezinu, kā MIT panāca, lai uz ekrāna izdrukātu mazo, jauko
runas burbuli.
Bet viņi uzrakstīja šo zemākā līmeņa ieviešanas informāciju.
Un viņi man un jums iedeva purpursarkanu funkciju, ko sauca Say, kas
to dara jūsu vietā.
Nedz jums nedz man Jums un man nav jāizgudro šis ritenis no jauna.
Say rezultāts ir vēl viens tehnisks termins, ko tagad sauc par
“"blakusefektu”". Blakusefekts Blakusparādība parasti ir
kaut kas vizuāls, kas notiek, piemēram, kā blakusefekts, kad jūs
izsaucat funkciju.
Un tā blakusefekts ir tāds, ka kaķim maģiski parādās runas burbulis,
kura iekšpusē ir “Sveika, pasaule”. Tātad mums ir ievades.
Mums ir izvade.
Mums ir algoritms.
Bet tagad mēs runājam par šīm idejām programmēšanas kontekstā.
Tātad tagad ievade ir “"arguments”". Algoritms ir
“"funkcija”". Un rezultāts šajā gadījumā ir
“"blakusefekts”" — terminsoloģija, kuru jūs dzirdēsiet
arvien vairākbiežāk.
Un tas galu galā ieies apritē iedziļināsies, taču nav jāuztraucas, ja
sākumā jūs nepārzināsiet šo terminoloģijuja terminoloģijas lietošana
neieviesīsies ātri. a nerodas dabiski agri.
Tātad, ko vēl es varu darīt ar šo?
Ļaujiet man atgriezties pie Scratch šeit un padarīt šo, iespējams,
interaktīvāku un faktiski likt kaķim kaut ko pateikt nedaudz
dinamiskāk.
Tātad, tā vietā, lai “"Sveika, pasaule”", kāpēc mēs neliktu
viņam sasveicināties ar mani vai jums vai kādu citusveicināties man
vai jums vai kādam citam?
Ļaujiet man iet zem tā, sakiet... ļaujiet man vispirms atbrīvoties no
šī.
Un jūs ievērosiet šo veiklu glīto triku.
Tiklīdz sākat vilkt šo kvadrātu kluci, ja tas pietuvojas tam, tas
kļūst pelēks, un to var savienotmagnētiski saspiest kopā.
Jums tas nav jādara ļoti precīzi.
Un otrādi, ja es vēlos atbrīvoties no puzles daļas, es varu to
vienkārši vilkt jebkurā vietā kreisajā pusē, atlaist, un tas tiek
izdzēsts.
Vai arī varat noklikšķināt ar peles labo pogu vai nospiest taustiņu
Control, un neliela izvēlne ļaus arī to izdzēst.
Ļaujiet man to izdarīt.
Sadaļā Sensing, par kuru es zinu, jo esmu darbojies ar to jau ka esmu
to darījis iepriekš, ir vairākas lietas, kas saistītas ar Sensing, kā
rezultātā kaķis kaut kādā ziņā var izjust savu pasauli.
Tas var veikt tādas darbības kā, piemēram, uzdot šo jautājumu:
“"Vai es pieskaros peles rādītājam?”" — tāpat kā lietotāja
kursorams.
"”Vai es pieskaros noteiktai krāsai, kuru varat ignorēt, lai tā
kļūtu par visu, ko vēlaties?”" "”Vai attālumam līdz peles
rādītājam ir kāda konkrēta vērtība?”" Bet pagaidām es
koncentrēšos uz šo zilo puzles gabalu, kurā tiek uzdots jautājums,
kas pats par sevi ir šis baltais ovāls, kuru es acīmredzot varu
mainīt, un tad tas gaidīs atbildi.
Bet šis puzles gabals ir nedaudz atšķirīgs.
Tas ir nedaudz pat īpašs.
Tas nāk komplektā ar bezmaksas dāvanu.
Tas ir saistīts ar to, ko mēs tehniski sauksim par "”atdeves
vērtību”". Tāpēc dažas funkcijas ne tikai veic kaut ko ekrānā.
Viņi jums atdod, tā sakot, vērtību, ar kuru jūs varat darīt visu, ko
vēlaties.
Nekas nenotiek uzreiz, ja vien neko nedara ar tā saukto atdeves
atgriešanās vērtību.
Tāpēc ļaujiet man turpināt man iet uz priekšu un un vilkt šo lietu
uz šejieni, pajautāt jiet: "”Kā tevi sauc?”" Un es
izmantošu noklusējuma jautājumu.
Tā šķiet saprātīga vieta, kur sākt.
Es negrasos ignorēt šo noklusējuma iestatījumu.
Un tagad ļaujiet man turpinātiet uz priekšu un attālināt.
Ļaujiet man atgriezties pie Looks.
Ļaujiet man doties uz Say.
Un ļaujiet man vienkārši izveidot angļu teikumu, kuru es vēlos.
Tāpēc ļaujiet man tuvināt šeit un ierakstīt "”sveiki”",
varbūt komatu, atstarpi.
Es varētu ieraksīt izpildīt “"Deividu”", bet tas
acīmredzami nav pareizi, jo es prasu vārdu, un tad es jau iepriekš
iekodēju savu vārdu.
Tas nav tas, ko es gribu.
Es tikai gribu, “"sveiks”", komats.
Un tagad ļaujiet man tālināt un paķert vēl vienu Say bloku.
Ļaujiet man varbūt paņemt Say bloku pateikt šeit.
Labi, es nevēlos teikt: "”Sveiki, sveiki.”" Es nevēlos
vienkārši ierakstīt savu vārdu, jo, atkal, kāda jēga jautāt
lietotājam viņa vārdu?
Bet ievērojiet šo.
Ja es atgriezīšos pie Sensing sensora bloka, šeit noder zils ovāls,
ko sauc par atbildi - Answer.
Tā būs šīs funkcijas tā sauktā "”atdeves vērtība”".
Tāpēc es vienkārši iešu uz priekšu un darīšu to un vilkšu un
nometīšuu.
Pat ja tas nav pareizais izmērs, tā ir pareizā forma.
Tāpēc Scratch būs gudrs par to un aizpildīs pieaugs, lai aizpildītu
šo puzles gabalu jūsu vietā.
Ļaujiet man tagad tālināt.
Un tagad ļaujiet man noklikšķināt uz Zaļā karoga.
Jūs redzēsiet, ka Scratch patiešām mudina mani ar runas burbuli:
"”Kā tevi sauc?”" Ievērojiet mazo teksta lodziņu zem kaķa
jautājuma: kā jūs sauc?
Tāpēc es ierakstīšu DAVID un nospiedīšu nospiediet taustiņu Enter.
Vai arī es varu noklikšķināt uz zilās atzīmes.
Nospiedīšu taustiņu Enter Ievadiet.
Labi, tas ir nedaudz dīvaini.
Es gribēju, lai viņš saka: “"Sveiks”", nevis tikai manu
vārdu.
Tāpēc ļaujiet man palaist nospiest komandu STOP apstāties.
Ļaujiet man sākt to vēlreiz.
Labi, sveiks, kā tevi sauc?
DĀVIDS.
EnterHuh — kaut kā nepieklājīgi.
Kas izraisīja šo kļūduKāpēc ir šī kļūda?
Piemēram, es gribēju teikt: "”Sveiks, Deivid”", nevis tikai
"”Dāvids”". Un tomēr divas reizes tas nav izdevies.
Dāvids Dž. Malans DAVID J. Malan: Jā, dators ļoti ātri apstrādā manus
norādījumus, manas darbības.
Un tā tas patiesībā arī dara.
Vienkārši jūs un es, šajā telpā istabā, esam pārāk lēni, lai
pamanītu, ka tur bija rakstīts - (ĀTRI) "”Sveiks, Deivid”."
Šķiet, ka tas tikko teica: "”Dāvids.”" Nu labi, kā es varu
to labot?
Lūk, šeit jūs sākat bakstīties bāzties un domāt, kā jūs varētu to
atrisināt.
Ļaujiet man atgriezties sadaļā IzskatsLooks.
Varbūt ir kāds gudrāks veids, kā to izdarīt.
Varbūt es varētu... Labi, es varētu to izdarīt šādi.
Kā būtu, tā vietā, lai vienkārši pateiktu "”sveiki”",
acīmredzot ir vēl viens puzles gabals, kurā varu uzstādīt noteikt
laiku, lai varētu nedaudz palēnināt darbību.
Ļaujiet man to visu izmest.
Ļaujiet man vilkt "”sveiki”" 2 sekundes.
Ļaujiet man vilkt vēl vienu Saki "”sveiki”" 2 sekundes.
Ļaujiet man mainīt pirmo uz komatu "”sveiki”", komats.
Un tad ļaujiet man atgriezties pie Sensing.
Ļaujiet man paņemt satvert to pašu atbildi, jo es to izmetu pirms
sekundes, un es to vienkārši mainīšu.
Man pat nav jāizdzēš "”sveiki”". Es varu to vienkārši
pārrakstīt šādi.
Tāpēc tagad es domāju, ka mēs iedarbināsim bremzes un redzēsim lietas
lēnāk.
Ļaujiet man palaist nospiest komandu Stop apstāties.
Ļaujiet man palaist komandu Startsākt.
DĀVID, nospiežu taustiņu Enter ienāc.
Sveiks, Deivid.
Labi, tāpēc tas ir labāk, it kā tas darbotos.
Es domāju, ka jūsu hipotēze bija pareiza, tikai izskatās stulbi, vai
ne?
[PAUSE]
-- Deivid, it kā mēs varam labāk.
Un tāpat, burtiski katra programmatūra jūsu tālrunī, Mac vai
personālajā datorā ir labāka par to.
Tas apvieno vārdus lietotāja saskarnēs, kuras jūs un es pazīstam.
Tāpēc iesim šeit vēl nedaudz piestrādāsimpadarboties makšķerēt.
Ļaujiet man izmest šos.
Ļaujiet man atgriezties pie Looks un iegūt vienkāršāku Say.
Es gribu, lai tas teiktu: "”Sveiki”" komatsa vārds
nosaukums, kur vārds nāk nosaukums cēlies no šīs atbildes atgriešanas
vērtības.
Tātad, kā es varu to izdarīt?
Ļaujiet man pāriet uz sadaļu Operācijas, kurā mēs vēl neesam bijuši.
Šeit ir daudz dažādu lietu.
Dažas no tām ir matemātiski saistītas, saskaitīšana, atņemšana utt.
Varat ģenerēt nejaušus skaitļus, kas varētu būt noderīgi.
Un, ja es turpinu ritināt uz leju, ir šis Join “"ābols”" un
"”banāns”". Bet tas ir tikai viettura teksts.
Varat apvienot vienu teksta daļu ar citu teksta daļu, pēc noklusējuma
"”ābols”" un "”banāns”". Bet nomainīsim uz
"”sveiks”" un manu vārdu.
Tātad arī šis ir nepareizs izmērs, bet pareizā forma.
Tāpēc ļaujiet man tai nofiksēties vietā.
Ļaujiet man tagad turpināt iet uz priekšu un pievienot
"”sveiki”" komatu.
Un tagad es domāju, ka es vienkārši vēlos paņemt šo atbildes vērtību.
Ļaujiet man vilkt to pašu ovālu kā iepriekš, banān, tas ir,
pārrakstīt vārdu banānu s.
Tāpēc tagad es veidoju funkcijas.
Vienas funkcijas Join izvade būs citas funkcijas, Say, ievade.
Tātad, paskatīsimies, kas notiek tagad, kad tie ir salikti viens uz
otra vai, tā sakot, ligzdoti.
Noklikšķinuiet uz Zaļā karoga, DAVID.
Ievadiet "´Sveiks, Deivid." Labi, tas bija diezgan ātri.
Darīsim to vēlreiz.
Stop.
Sākt.
Lūk, DAVID.
Nosiediet taustiņu Enter Ievadiet OK.
Labi, tā nav pati aizraujošākā programma pasaulē.
Bet tagad tas ir pareizāk.
Tas ir labāk izstrādāts tikai tāpēc, ka tas ir tas, ko jūs varētu
sagaidīt no programmatūras, nevis kaut kādas klibas lietotāja
interfeisssaskarne, kas vienkārši ievieto nejaušas aizkaves, lai
varētu darboties. tas darbotos, piemēram, Ttas ir sava veida
risinājums, uzlaušana, ja vēlaties.
Taču ir dažas lieliskas lietas, ko varat darīt, izmantojot Scratch.
Un mēs īsti neiedziļināsimies visu tā jautro un ģimenei draudzīgo
funkciju klāstā.
Bet ir kaut kas labis šajā gadījumās.viens, kas šeit ir foršs.
Ļaujiet man nospiest atvērt pogu Paplašinājumi un atvērt mana ekrāna
apakšējā kreisajā stūrī.
Un šis ir kaut kā foršis.
Ļaujiet man pāriet uz sadaļu Text to SpeechTeksts uz runu.
Un jūs ievērosiet, ka šim ir nepieciešams internets, jo tas atrodas
mākonīir balstīts uz mākoņpakalpojumā mākoņiem.
Bet tas man tikai deva dažus jaunus puzles gabalus jaunā kategorijā
Text to SpeechTeksts uz runu runā.
Un šie zaļie gabali dara tieši to, ko saka.
Ļaujiet man atkal tālināt.
Ļaujiet man saglabāt Join blokupievienošanās bloku.
Un es tikai uz laiku to iemetīšu šeit.
Tas pats neizdzēsīsies, jo es to nepārvilku uz otru pusi.
Bet es atbrīvošos no Say bloka, violetā krāsā.
Šeit es izveidošu Speak Runāšanas bloku zaļā krāsā un ļaušu tam
nofiksēties vietā.
Un tad es to vilkšu un nometīšu kā ievadi Speak blokāuz Runāšanas
ievadi.
Un tagad, varbūt nedaudz jautrākburvīgāk, izmēģināsim šo.
Zaļais karogs, kā tevi sauc?
Nospiediet taustiņu Enter Ievadiet un DATORS: Sveiki, Deivid.
[SMIEKLI]
Tas izskatās pēc robotair nedaudz robotizēts.
Bet vismaz tagad tajā ir sintezēta runatagad tas var lietot sintezētu
runu.
Un man ir man arī ir savi palīgi, piemēram, Siri vai Google Assistant
vai Alexasava veida teksta pārveies par runu tehnoloģijas, piemēram,
Siri vai Google Assistant vai Alexa lieta, kas tagad notiek šeit, kur
tas tagad tiek atpazīts neatkarīgi no tā, kāds teksts tas ir, un tas
tiek atskaņots.
Padarīsim šo par īstu kaķi, kurš nerunā tajā savā dīvainajā cilvēka
balsī.
Ļaujiet man turpināt iet uz priekšu un atbrīvoties no lielākās daļas
šo lietu.
Un liksim kaķim ņaudēt, kā to mēdz darīt kaķis.
Un ļaujiet man darboties ar iet zem Skaņu blokua.
Tagad MIT sniedz dažas skaņas bez maksas, jo pēc noklusējuma dažas
skaņas tas ir paredzētas kaķim.
Un es turpināšu iešu uz priekšu un paķeršu šo, Play Sound Meow, līdz
tas ir izdarīts.
[MJAU]
Jāatzīst, ka tas ir nedaudz giezīgi pīrsings.
Varbūt tur varam nedaudz pazemināt skaļumu.
Bet ievērojiet, ja es vēlos, lai kaķis ņaud otrreiz, es vienkārši
noklikšķināšu vēlreiz.
Labi, tagad tas ir diezgan jauki, vai ne?
Tātad tas ir tikai ņau-- Labi, jā, atbalss, atbalss.
Tāpēc tagad ņaud katru reizi, kad nospiežu uzsitu Zaļo karogu.
-- nospiežot pogu.
Tātad, kā mēs to varētu izdarīt?
Labi, ja es gribu, lai tas ņaud vairākas reizes, kāpēc gan es to
nepaņemu nepatveru atkalcitreiz un atkalcitreiz?
Tāpat vVarat arī ar peles labo pogu noklikšķināt vai nospiest
taustiņu Control noklikšķināt uz puzles gabala un vienkārši dublēt to
no mazās izvēlnes, kas nolaižas.
Tā nu lūk, trīs ņaudieni.
[MAU]
Labi, tas nav īsti laimīgs kaķis.
Tas izklausās it kā būtu varbūt izsalcis.
Tātad, vai mēs varam to palēnināt?
Jā, iespējams
Patiesībā, ja es pamāju apkārt, ļaujiet man nonāktkontroles blokā.
Šķiet, ka ir Wait bloks.
Pagaidiet vienu sekundi pēc noklusējuma.
Un ievērojiet,programma Scratch būs diezgan pretimnākošs.
Ja jūs vienkārši novietosit kursoru vajadzīgajā vietā, tas vārdu
iezīmēs.
Tāpēc es varētu to mainīt uz vienu vai divām, vai vairāk sekundēm.
Pagaidām atstāšu noklusējuma vērtību 1
Un tagad es turpināšu darbu
kaķis izskatās mīļāks un mazāk izsalcis un vienkārši draudzīgāks
Bet tas navveiksmīgākais dizains.
Tas ir pareizi.
Un izmantosim to kā mākslas terminu.
Pareizi nozīmē, ka kods darbojas atbilstoši dotajai komandai.
Es gribu, lai kaķis trīs reizes lēnām ņaud.
Un tas notika.
Tāpēc es noslēgtu derības, ka tas ir pareizi.
Bet tas nav veiksmīgākais dizains.
tagad viss kļūst kļūst subjektīvākas, vai ne?
Piemēram, jūs varētu uzrakstīt savai angļu valodas kursa esejai
precīzākus teikumus! Citādi jūsu darbs ir pilnīgi haotisks.
Piemēram, jūsu izteiktie argumenti nav ne slikti, ne arī labi.
Rakstot kodu mēs varam darīt labāk nekā šis.
Teksta kopēšana un sava teiktā atkārtošana irslikta prakse.
Pieņemsim, ka vēlaties mainīt gaidīšanas laiku no divām uz vienu
sekundi.
Jāatzīst, ka tas nav nozīmīgs darījums.
Labi, es noklikšķinu tur, es mainu to uz divi.
Tagad man ir jāmaina Wait bloka iestatījumi
Bet ja tu ņaud piecas reizes, desmitreizes?
Tagad man ir jāmaina gaidīšanas režīms, piemēram, pieci, desmit
dažādās vietās.
Piemēram, tas ir vienkārši muļķīgi
Tas cilvēkiem nevajadzīgi aizņem laiku, un galu galā jūs pieļausiet
kļūdu, it īpaši, ja jūsu programma kļūst garāka.
Jūs neievērosiet vienu no ievadītajiem datiem.
Jūs saglabāsiet nepareizu skaitli.
Un tā ir tehniskakļūda.
Tātad, pamatojoties tikai uz to, ko jau esat redzējis vai jau esat
programmējis, kādu koda bloku jūs izmantosiet, lai to atrisinātu
Kā mēs to varam labāk izstrādāt?
DAVID J. Malan: Es to dzirdēju šeit.
koda elements, paliek cilpa:
Dariet to vēlreiz — ne neskaitāmi, bet noteiktu skaitu reižu.
,Jā iespējams, ekrānā var redzēt spoileri.
Zem tās pašas Control kategorijaskategorijas ir.Repeat bloks
Un pēc noklusējuma tas piedāvā desmit
Bet mēs varam to mainīt.
Lielāko daļu šīs kopētās/ielīmētās informācijas izmetīšu
Es to uz laiku saglabāšu atsevišķilai atbrīvotu vietu kaut kam citam.
Un es novietošu Repeat bloku šajā vietā, un lai tas tur paliek
Un pagaidām es to mainīšu, lai būtu trīs lai nodrošinātu pastāvīgumu
Un šī ir pareizā forma, kaut arī tā ir pārāk maza, taču Scratch mums
to pielāgos.
Un tagad — tāda pati izvade, bet neapšaubāmi labāk izstrādāta.
Jo ja gribu mainīt ņau skaitu, mainu vienuviet, nekādu Copy/Paste
nekārtību.
Ja es gribu mainīt gaidīšanas laiku, tad vienā vietā.
Man tas nav jāmaina vairākās vietās unbez defektiem.
Tāpēc ļaujiet man nospiest Zaļo karogu.
Labi, tik... jauki.
Tagad būtu bijis jauki, ja MIT būtu mums tikko iedevis.elementu ar
skaņu ņau, kas visu automatizētu.
Ļaujiet man,minēt viņi mums sniedza zema līmeņa ieviešanas
informāciju.
Viņi mums iedeva Play Sound Meow.
Bet man bija jāievieš pienācīgs bloku skaits, bet tomēr tas ir kaķis
un tas ņaud. Es atstātu, kā ir
Man šķiet, ka mums tas bija jāsaņem bez maksas no MIT.
, viņiem nav jābūt vienīgajiem, kas izstrādā blokus, kas tiek
izmantoti.
Jūs varat rakstīt funkcijas, darbības vārdus vai darbības, kas tiek
veiktas.
Tātad, kā mēs to varam izdarīt?
Izveidosim paši savu puzles gabalu ar nosaukumu Meow, kas izmanto šo
kodu, bet izveido to tā, lai to varētu atkārtoti izmantot citur.
Zem blokiem, kas iekrāsoti rozā krāsā, es turpināšu virzīties uz
priekšunoklikšķināšu uz Make a Block
Tagad šeit ir saskarne, ar kuras palīdzību es varu piešķirt blokam
nosaukumu.
MEOW būs šī bloka nosaukums.
Un es virzīšos uz priekšu un ātri noklikšķiniet uz Labi.
Tas tikai dod man ļoti vispārīgu, rozā puzles gabalu, kas sākas ar
vārdu Define, jo scratch prasa man definēt, tas ir, ieviest vai
izveidot šo jauno puzles gabalu.
Nu, ko tas nozīmē Ņau?
Es apgalvošu, ka tas nozīmē veikt šīs divas darbības, atskaņot skaņu
ņau un pēc tam vienkārši pagaidīt 1 sekundi.
Bet šīs idejasnozīmīgākā vērtība ir paskatīties uz šo augšpusē.
Tagad, kad esmu izveidojis bloku, tas pastāv programmā Scratch.
MIT nevajadzēja to izveidot manā vietā.
Es to izstrādāju sev un pat jums, ja mēs beidzot kopīgosim kodu.
Tāpēc es tagad varu ievilkt Ņau šeit.
Un tas, kas patīkami par Meow, ir tas, ka, jā, ir funkcija, taču tā
ir arī abstrakcija.
Piemēram, nekad vairs man vai pat jums nav jāuztraucas vai jārūpējas
par to, ko nozīmē ņaudēt vai īstenot to.
Es varu.to noņemt
Es to neizdzēsu — noņemiet to prom.
No skata, no prāta.
Jo mans kods tagad ir pat labāk izstrādāts, kaut kādā ziņā, jo tas ir
lasāmāks.
Ko tas dara?
Kad tiek noklikšķināts uz Zaļā karoga, atkārtojiet 3 reizes Ņau.
Tas tikai saka, ko tas nozīmē.
Un tāpēc to ir daudz vieglāk lasīt un daudz vieglāk par to domāt, it
īpaši, ja izmantojat Meow arī citos projektos.
Tagad ļaujiet man turpināt un noklikšķināt uz Atskaņot.
Tas pats.
Tātad būtībā tas neatšķiras.
Bet es varu padarīt šo pielāgoto puzles gabalu, šo savu funkciju Ņau,
vēl jaudīgāku.
Ļaujiet man mazliet attīt un pāriet uz manu Meow puzles gabalu.
Un es noklikšķināšu ar Control-klikšķi vai ar peles labo pogu
noklikšķiniet uz savas rozā puzles gabala.
Un es to rediģēšu.
Tāpēc es nožēloju, ka padarīju Ņau tik vienkāršu.
Vai būtu labāk, ja funkcija ņau ņemtu vērā ievadi jeb argumentu, kas
noteiktu, cik reižu jāskan skaņai ņau.
Tad es varu atbrīvoties no šīs cilpas un vienkārši pateikt Ņau, cik
ņau es patiesībā vēlos.
Tāpēc es šeit noklikšķināšu uz citas pogas, ko burtiski sauc par
Pievienot ievadi.
Un šeit tam būs vietturis.
Tāpēc es vienkārši ielikšu tur vietturi.
Es turpinu izmantot “n”; skaitlim, kas datorzinātnieku izpratnē "ej
uz"
Un es pievienošu aprakstošu tekstu, lai tas būtu nedaudz saprotamāks.
Es tikai teikšu Ņau n Times.
Bet ir tikai viens ovāls.
Times būs tikai paskaidrojošs teksts.
Un tagad ievērojiet, kas ir noticis.
Tagad mans puzles gabals izmanto ievadi, jeb argumentu, kas liks šai
funkcijai ņaudēt dažas reizes.
Bet tas nedarbosies tikaibrīnumainā kārtā
Man ir jāievieš šī zemākā līmeņa detaļa.
Tāpēc ļaujiet man darboties attālināti
Man sev jāatgādina, kāda bija šī funkcija.
Tāpēc es vilkšu to augstāk, lai tie. atrastos ekrānā vienlaicīgi.
Es tagad turpināšu darbuun uz laiku pārcelšu šo uz šejieni.
Es to uz laiku atdalīšu šeit.
Jo tas, ko es vēlos darīt, ir ievietot savu cilpu pašā funkcijā,
pārvietot Play un Wait uz cilpu.
Bet es nevēlos hardcode 3.
Ievērojiet, ka n šeit ir savs ovāls. Es varu vilkt n kopiju un
vienkārši ļaut tai doties tur.
Tāpēc tagad man ir jauna Ņau versija, kas izmanto argumentu n, kas
norāda Meow, cik reižu ņaudēt.
Un tagad ļaujiet man atkal nedomāt par šo problēmu jo kuru gan
interesē, kā es to īstenoju?
Kad tas ir ieviests, darbs ir izdarīts
Tagad mana programma savā ziņā ir vēl labāk izstrādāta.
Jo tagad tas tiešām tikaitagad tā tiešām saka to, ko domā
.Cilpas nav
Nav atkārtošanās, nav ieviešanas detaļas.
Kad noklikšķināja zaļais karogs, ņaudiet 3 reizes.
Un tāpēc funkcijas patiešām ļauj ieviest algoritmus, it kā tie būtu
tikai kods, kas kaut ko dara jūsu labā.
Bet tās pašas ir arī abstrakcijas.
Jo, ja funkcija pastāv, tai ir nosaukums.
Un jūs varat par to domāt šajā kontekstā
Un jūs varat to izmantot pēc tā nosaukuma.
Jums nav jārūpējas vai jāatceras, kā pati funkcija tika
izstrādātaneatkarīgi no tā, vai to esat izveidojis jūs vai pat MIT.
Tātad vēlreiz, šeit es noklikšķināšu uz Zaļā karoga.
Tas ir viens un tas pats.
Tātad joprojām pareizi, bet labāk un labāk izstrādāti.
Un tā jebkurā laikā, šeit un ārā, ar Scratch vai drīzumā C un beidzot
ar Python, kad atrodat, ka darāt kaut ko līdzīgu
kopēšanai/ielīmēšanai vai atkal un atkaljāizmanto viens un tas pats
kods, ir iespēja vēlreiz pārskatīt savu darbu.
Ļaujiet man to, tā sakot, pārveidot, tas ir, izņemt kodu, kas
vairākkārt atkārtojas, un ievietot to funkcijā. lai jūs varētu
piešķirt tam aprakstošu nosaukumu un izmantot un atkārtoti izmantot.
Vai jums vēl ir kādi jautājumi par izteikumiem vai šīm cilpām vai
funkcijām, ko mēs izmantojam?
:Deivids Dž. Malans Kā es to panācu, lai tas trīs reizes ņaud?
Tāpēc man sākotnēji bija tikai puzles gabals ar nosaukumu Ņau.
Un es nolēmu to uzlabot.
Tāpēc es turēju nospiestu taustiņu Control un ar peles labo pogu
noklikšķināju uz rozā puzles gabala augšējā kreisajā stūrī.
Un es noklikšķināju uz Rediģēt.
Un tas atgrieza sākotnējo saskarni, kas ļauj man pievienot dažus
argumentus pašam puzles gabalam.
Un es šeit kreisajā pusē noklikšķināju uz Pievienot ievadi.
Un tad es šeit noklikšķināju uz Pievienot etiķeti.
Tas ļauj jums to vēl vairāk pielāgot.
Labi, mēs to esam izdarījuši.
Pievienosim arī kādu no šiem citiem primitīviem, lai kaut ko darītu
pēc izvēles.
Kā tad, ja mēs liktu kaķim ņaudēt tikai tad, ja to samīļo cilvēks,
piemēram, pārvietojot peli, lai tā virzītos virs kaķa, tāpat kā
cilvēks samīļotu kaķi?
Nu, ļaujiet man iet uz priekšu un pagaidām neizmantot skaņu ņau.
Un ļaujiet man to vienkāršot, izmantojot tikai skaņu.
Es iešu uz priekšu un darīšu to.
Es iešu uz priekšu un izmantošu vadības bloku ar uzrakstu If, jo
vēlos īstenot ideju par to, ja kursors pieskaras kaķim, tad.tad
atskaņo skaņu ņau
Vai arī es varētu izmantot savu rozā puzles gabalu.
Bet es to nelietošu un koncentrēšos tikai uz skaņām.
Un es to darīšu.
Ja pieskaras.peles rādītājam (kursoram), tas saista ar realitāti.
Un mēs to redzējām iepriekš — tātad, ja pieskaras peles rādītājs.
Tāpēc ņemiet vērāšo formu šeit, tā irpārāk liela.
Bet tā ir pareizā forma.
Tātad, ja es virzīšu kursoru tieši tā, tas nofiksēsies vietā.
Un šī tagad zilā krāsā ir mana Būla izteiksme, jā/nē jautājums,
patiess, nepatiess.
"Ja" ir nosacījums.
Un ko es gribu darīt?
Nu, ja kaķis pieskaras peles rādītājam, es gribu iet uz priekšu un
atskaņot skaņu ņau, līdz tas ir izdarīts.
Tātad darīsim to.
Es noklikšķinuZaļo karogu, noklikšķiniet.
Tagad nekas vēl nav noticis, jo tas ir,nosacījums, vai ne?
Tam vajadzētu kaut ko darīt tikai tad, ja es pieskaros kaķim.
Ļaujiet man pārvietot kursoru uz kaķa attēlu
Un - gaidiet to.
Hmm - vēl viena kļūda.
Kāpēc kaķis neņaud, lai gan es ļoti skaidri teicu: ja pieskaras peles
rādītājam, (kursoram), tas ņaud.
DEIVIDS Dž. Malans: Jā, tas ir atkal, mans dators ir tik ļoti ātrs,
tāpat kā tavējais.
Noklikšķinu uz Zaļā karoga, tad tiek uzdots jautājums, vai es
pieskaros peles rādītājam?
Nu nē, jo mans kursors atradās tur augšā, nepieskaroties kaķim.
Ir par vēlu.
Kaķis ir ārā no maisa.
Un tāpēc mums tas ir jāatrisina ar citiem līdzekļiem.
Kā mēs varam to novērst?
Kā mēs labojam šāda veida problēmas?
DEIVIDS Dž. Malans: Jā, kāpēc gan mums jāturpina uzdot šo jautājumu,
līdz es beidzot varēšu samīļot kaķi, ja man gribētos
Tāpēc ļaujiet man to uz laiku atdalīt.
Ļaujiet man pievērsties blokam Control
Ļaujiet man iedziļināties — tā vietā, lai atkārtotu noteiktu skaitu
reižu, darīsim to mūžīgi.
Tāpēc dažreiz cilpas, kas darbojas mūžīgi, ir laba lieta.
Pulkstenis jūsu tālrunī.ir ieprogrammēts, lai darbotos vienmēr
Tāpēc dažreiz jūs vēlaties, lai,jūs vēlaties, lai kods mūžīgi
cikliski atkārtotos kā tas ir šajā gadījumā.
Tāpēc ļaujiet man turpināt un novietot to tur.
Ļaujiet man vēlreiz noklikšķināt uz Zaļā karoga.
Vēl nekas nenotiek.
Bet ievērojiet, programma joprojām darbojas.
Labi, varbūt mēs varētu pievienot gaidīšanas režīmu - Waiting
Bet, kaķis nevēlas, lai to glaudašajā gadījumā.
Bet tas tiešām ir nosacīts.
Tātad mums ir programmaScratch kaut ko darīt nosacīti.
Tagad mēs varam padarīt to ļoti foršu, ļoti ātri, ja vēlaties.
Ļaujiet man pārtraukt šo versiju.
Ļaujiet man turpināt un darīt to.
Ļaujiet man turpināt un izdzēstto visu.
Ļaujiet man šeit iedziļināties savā mazajā Extensions spainī.
Un ļaujiet man izmantot video sensoru, jo mūsdienās lielākajai daļai
klēpjdatoru vai tālruņu ir kameras.
Un tur mani atbalsta Sanders.
Un ļaujiet man to izdarīt.
Kad.darbosies opcija Video Motion, es netraucēšu tai darboties
Kad opcija Video Motionir lielāka par kādu vērtību.
Tātad 10 ir noklusējuma vērtība.
Tas ir tikai skaitlis, kas mērakustību skaitu.
Tik mazs rādītājs nozīmē, ka kustības nav
Liels skaitlis nozīmē, ka ir daudz kustības
Tāpēc es izvēlēšos 50, šeit nedaudz patvaļīgi, tātad 50.
Tas nav normāli, ja tiek programmēts neatbilstoši kontekstam.
Bet tagad es to teikšu.
Kad opcijas Video Motion rādītājs ir uzstādits uz 50, turpiniet un
atskaņojiet skaņu ņau (Play Sound Meow) līdzīgi kā šeit
Tātad kaķis joprojām paliek tajā pasaulē
Es apturēšu programmu un palaidīšu to vēlreiz.
Tātad,, Zaļais karogs.
un-- [Nopūta]
Tur mēs ejam.
Labi, tāpēc 50 bija pārāk liels skaitlis.
Man ātrāk jāpaglauda kaķis.
Labi, tādējādi jūs varat padarīt lietas vēl interaktīvākas, vienkārši
saliekot dažādas puzles detaļas.
Un godīgi, šeit ir tik daudz dažādu puzles gabalu.
Daudzām no tām mēs pat nepieskarsimies
Bet viņi parasti dara tikai to, ko sak a.
Un patiešām, kad jūs redzat uz ekrāna vairākas puzles detaļas
patiešām liela daļa programmēšanas, īpaši agrīnā valodas apguves
laikā, ir tikai mēģinājums dažādas lietas un mēģināt un neizdodas.
Un, ja tas nedarbojas gluži pareizi, ir jāmeklē alternatīvs
risinājums, līdzīgi kā pirms brīža to darīju es.
Turpināsim darbu un izmantosim citu piemēru jūsu kolēģa paveiktajam.
Ļaujiet man iet uz priekšu un paķert programmu, kuru es šeit atvēru
iepriekš ar nosaukumu Whack-A-Mole. Vai mēs varētu pieaicināt kādu
drosmīgu brīvprātīgo, kurš ir kurš ir gatavs sasist kurmi ar savu
prātu, tā teikt.
Varbūt... Sarunāts, noskaidrosim, kā tika darīts agrāk.
Vai Tu vēlētos pievienoties?
Sarunāts, pievienojies!
Protams, aplausi mūsu brīvprātīgajam.
.Sarunāts, te mēs esam- pievienojieties.
Mērķauditorija: Sveiki.
DEIVIDS Dž. Malāns: Kā tevi sauc?
Mērķauditorija: Es esmu Džošs.
Deivids Dž. Malans: Lūdzu, sakietto mikrofonā.
Mērķauditorija: Sveiki, es esmu Džošs.
Deivids Dž. Malans: Ļoti patīkami!
Laipni lūdzam, Džoš.
Nāc šurp.
Labi, tātad tā pati ideja. Es paņemšumikrofonu.
Jums būs jāstājas kameras priekšā.
Pēc brīža jums būs.jānostājas tā, lai galva atrastos rāmī, ko
pagājušajā gadā izveidoja jūsu klasesbiedrs.
Un mēs sāksim ar Beginner līmeni
AUDITORIJA: Labi.
Deivids Dž. Malans: Tāpēc pēc brīža nostājaties tā, lai jūsu galva
atrastos rāmī.
AUDITORIJA: Labi.
DAVID J. Malan: Jauki.
12 sekundes.
5 sekundes.
Ņemiet vērā, ka rezultāts jau ir sasniedzis 18.
Diezgan labi.
Labi, aplausi Džošam, ja mēs varētu.
Tāpēc ievērojiet, kā, izmantojot dažus diezgan vienkāršus primitīvus,
lietas kļūst interesantas diezgan ātri.
Un kā tas tika īstenots?
Nu, droši vien bija vismaz četri igariņi.
Tātad jūs varat izmantot ne tikai vienu opciju kaķis
Jūs varat izveidot arvien vairāk,gariņu mainīt to izskatu.
Tātad šajā gadījumā tie patiesībā izskatās pēc kurmja
Iespējams, ka tur ir daži nosacījumi, dažas cilpas 30 sekunžu garumā.
Tas nozīmē, ka tiek pārbaudīts, vai Džoša galvas kustība pārsniedz
noteiktu vērtību šādā vai šādā vai citā veidā,,un tad palieliniet
vērtibu ko sauc par mainīgo.
Tos arī redzēsim.
Tāpat kā algebrā jums var būt x un y un z, kas glabā tādas vērtības
kā skaitļi, tā var būt arī datorprogrammām, mainīgajiem, ko sauc par
x vai y vai z, vai aprakstošāk sauktu par Scorekā šajā gadījumā
augšējā labajā stūrī, vai citu mainīgo, ko saucpar Countdown parasti
viens vārds kodā, bet šajā gadījumā divi vārdi, kas tikai saglabā
kādu vērtību.
Tātad, iespējams, tur notiek kāda matemātika, kuras rezultātā šīs
programmas autors tikai palielina, tas ir, pievieno 1 un 1 katru
reizi, kad,atklājas, ka kurmis ir ticis sasists, šajā gadījumā ar
kustību.
Tā toreiz, kad biju MIT maģistrantūras students, izstrādāju savu
pirmo programmu Scratch. Reģistrējos MIT, apmeklēju MIT Media studiju
kursu - mūžizglītības pirmajā pakāpē. Tā ir tā pati grupa, kas
izveidoja Scratch.
Programma, kuru izstrādāju pirms visiem vairākiem gadiem un kura man
ir joprojām interesanta, sauc par Oscartime. Tagad parādīšu tikai īsu
ieskatu manā darbībā.
Tāpēc šajā gadījumā, sākoties mūzikai, apsveriet, kā šī programma,
kas, protams, ir daudz izsmalcinātāka nekā agrākas “Say hello”
versijas, ko mēs tikko izskatījām, varētu tikt īstenota.
Ļaujiet man turpināt un noklikšķināt uz Zaļā karoga.
[MŪZIKA — OSCAR THE GROUCH, “I LOVE TRASH”]
OSCAR THE GOUCH: (DZIED) Ak, man patīk atkritumi
Deivids Dž. Malans: Labi, tāpēc daži atkritumi pārvietojas,
iespējams, kaut kādā cilpā no augšas.
Ja es pieskaros peles kursoram, tas man seko.
Ja virzu kursoru,opcijas atkritne (miskaste), tā reaģē.
Ja es atlaižu, kaut kādā cilpā iznirst Oskars un izveido mainīgo ar
pašreizējo punktu skaitu.
Un tas notiek atkal.
OSCAR THE GOUCH: (DZIED) Tas ir šausmīgi, caurumi.
Un mežģīnes saplēstas.
Dāvana no mammas dienā, kad piedzimu.
Man tas patīk, jo tie ir krāmi
Ak, es... Deivids Dž. Malans: Sākumā tas ir diezgan viegli, bet...
OSKARS GROUCH: (DZIEDĀT) -...viss netīrs vai satraipīts DEIVIDS Dž.
Malans: Tāpēc man nav jāspēlē kā uz skatuves visu priekšā.
Tātad mans rezultāts jau tagad ir līdz kādiem 6 vai arī apmēram tā.
Bet arī pēc brīža jūs redzēsiet, ka tas saasināsies.
Tāpēc es acīmredzot ņemu vērā kādu laiku.
Tātad tagad -- OSKARS GROUCH: (DZIED) Man ir 13 mēnešus veca avīze.
Deivids Dž. Malans: Tātad pēkšņi parādās arvien vairāk gariņu
Un ievērojiet, ka katru reizi gariņi parādās no citas ekrāna daļas.
Iespējams, ka arī tā ir ilūzija — izvēlieties nejaušu skaitli starp x
un y.
Tātad jūs faktiski varat izvēlēties kādu vērtību diapazonu, lai spēle
pastāvīgi mainītos.
Un tiešām, es iešu uz priekšu un noklikšķināšu uz Stop.tāpēc ka man
kādreiz bija nepieciešamas apmēram astoņas stundas, lai izdarītu šo
darbību.
Un es vairs nevēlos klausīties šo dziesmu, vismaz šajā dzīves posmā
Bet šī dziesma pēc tam tiek sinhronizēta ar daudzām darbībām, kas
notiek.
Un galu galā ir vairāki bloki, no kuriem veido programmu
Bet es neievisu visu programmu Oscartime, kā es to nosaucu, uzreiz
Es savu darbu veicu no pašiem pamatiem.
Un es sapratu, kā es varētu?pakāpeniski īstenot to vīziju, kas man
toreiz bija, lai galu galā izstrādātu šo darbību (spēli).
Kā vispirms tikt galā ar vieglākajiem uzdevumiem?
Pirmais uzdevums, ko izdarīju, bija atrast šo attēlu un virzīt to uz
programmu Scratch. Piemēram, opcija laternas stabs ir uzstādīts.
Tas neko nedod.
Tas nav interaktīvs.
Bet es vismazizveidoju programmas ekrānu.
Ko tad es vēl varētu darīt?
Nu, ļaujiet man to izdarīt.
Ļaujiet man iet uz priekšu un citā redaktorā šeit atklāt programmas
Oscartime agrīnu versiju
Ļaujiet man šeit iedziļināties Oscartime.
.Nepieciešams izmantot pilnekrāna režīmu.
Un šeit jums ir — ļaujiet man uz brīdi paslēpt miskasti — to es
varētu saukt par savas programmas otro versiju, kur šeit, skatuves
augšējā labajā stūrī, man bija laternas stabs,,kuru es pārvietoju ar
kursoru, un to noklikšķinot tas sāka darboties bet tad es pievienoju
īstugariņu
Un tam ir jābūt gariņam ja vēlaties, lai tas darītu lietas
interaktīvi.
.Laternas stabs nav gariņš
Tas ir tikai ekrāna noformējums, detaļas, fons.
Bet tas patiešām ir gariņš, viss pārējais paliekjo tam ir jāreaģē uz
kodu un notikumiem, piemēram, vilkšanu un nomešanu.
Tātad, ko es sākumā varēju darīt
Nu, varbūt pirmā versija izskatās šādi un mana pirmā Oscartime
versija būtu ziņojusi kaut ko šādu
Kā būtu, ļaujiet man kontrolēt programmu tāpat kā iepriekš - vai,
drīzāk, notikumus.
Kad tiek noklikšķināts uz Zaļā karoga, ko es vēlos darīt?
Es vēlētos turpināt darbu un vienmēr darīt kaut ko līdzīgu šim darbam.
Uz visiem laikiem — tāpēc es vēlos, lai vāks atvērtos, ja tam
pieskaros.
Tātad, jakursors pietuvojas vākam, viss pārējais paliek
Un tad, ja es attālinu kursoru, es gribu, lai vāks aizvērtos
Tātad, kā es varu to izdarīt?
Es gribu, la būtu nosacījums - If, bet es vienkārši negribu, lai būtu
tikai viens jautājums, es tiešām gribu divus, citiem vārdiem sakot,
vienu ceļu, kas iet pa labi, un otru ceļu, kas iet pa kreisi.
Un ļaujiet man paķert šo puzles gabalu, kā es to darīju agrāk.
Tāpēc ievērojiet, tas palielinās un aizpilda laukumu﻿.
Kādu jautājumu es vēlētosuzdot?
Sadaļā Sensing es turpināšu darboties. Ja (If) kursors (the Mouse
Pointer) pieskarās (Touching) miskastei, ko es vēlos paveikt
Es vēlētos mainīt atkritnes izskatu.
Šo daļu es paveicu pirms nodarbības.
Nepieciešamības gadījumā izvēlaties opciju Costumes, kur var veikt
grafisko noformējumu.
Un jūs redzēsiet, ka es importēju daudz dažādu tērpu, kas līdzīgi kā
atskaņojot video, efektīgi rada kustības jeb animācijas ilūziju.
Bet patiesībā tas ir tikai punkts, punkts, punkts, punkts, punkts —
dažādi attēli tiek rādīti ekrānā.
Dažus no šiem kostīmiem sauc par Oscar1, Oscar2.
Oscar1 ir slēgts.
Oscar2 ir atvērts.
Tātad vispirms tiksim galā ar tiem.
Tātad, ja es pieskaros peles rādītājam, es varu doties uz — var būt
Looks?
Un mēs to iepriekš neizmantojām, taču ir šāds bloks — Switch Costume
to Something Else - mainīt tērpu uz kaut ko citu.
Es ievilkšu un nometu šo If laukumā.
Un ievērojiet, ka ka koda rinda ir ar nelielu atkāpi .
Es to nomainīšu nevis uz Oscar8, bet Oscar2.
Pretējā gadījumā, ja nepieskaramies peles rādītājam — tas ir otrs
ceļa sazarojuma virziens — turpināsim un mainīsim tērpu atpakaļ uz
to, ko es apzīmējukā Oscar1.
Tāpēc ļaujiet man palaist šo programmu.
Pagaidām, nekas īpaši interesants nenotiek.
Pievērsiet uzmanību, ja es pārvietoju kursoru uz augšu, uz leju, bet
kā tas darbojas?
Tas vienkārši maina tērpu, ko uzklāj uz gariņa.
Tātad šķiet, ka tā ir interaktivitāte,.lai gan īstenībā tiek mainīts
tikai ārējais veidols
Un mēs, cilvēki, vienkārši pieņemam, ka programma darbojas
Nu nē, tā ir tikai tērpamaiņa.
Tātad šeit ir atšķirība.
Augsta līmeņa abstrakcija — tiek atvērta atkritne .
Zemākā līmeņa ieviešanas detaļa — kostīmu maiņa, radot šo ilūziju.
Ja es vēlētos pievilcīgāku ārējo noformējumu, tad izvēlētos dažādus
citus opcijas Costume variantus. Un ja nepieciešams, veidotu vairāk
kadru sekundē.
Tāpēc man jādara vēl viena lieta.
Varbūt, ja es nejauši atstāju miskasti atvērtu, es vēlētos šeit veikt
vienu izmaiņu.
Ļaujiet man pārliecināties, ka pati pirmā lieta, ka pirmais, kas
jāizdara,kad tiek noklikšķināts uz Zaļā karoga, vienmēr ir jāsāk ar
aizvērtu atkritni, jo pretējā gadījumā jūs varat to nejauši atstāt
atvērtu.
Tādējādi es nonāku noklusējuma stāvoklī.
Tagad tas vienmēr ir aizvērts, līdz manuāli virzu kursoru virs tā.
Nu, ko es varētu darīt tālāk?
Nu, ja es vēlos ieviest kaut ko līdzīgu miskastei, tad nepieciešams
vēl viens gariņš.
Un šeit, iepriekš, es jau noklikšķināju uz attēlu.
Ļaujiet man izlikties, ka tas nekad nav noticis.
Ļaujiet man to pārvietot uz šejieni.
Un tagad manā koda apgabalā nekas nav paredzēts šai miskastei.
Bet tas ir otrais gariņš.
Un viss, ko es izdarīju, es noklikšķināju uz mazā kaķa un šoikonas
šeit, izveidojot otru gariņu.
Es to nosaucu par miskasti.
Es tam pievienoju tērpu.
.Es jau iepriekš veidoju ārējo noformējumu.
Bet šeit es tagad izstrādāšu kodu.
Kā es vēlos to izdarīt?
Nu, kā būtu, es noklikšķinātu uz opcijas Zaļais karogs, lai opcija
Atkritne varētu darboties paralēli.
Tātad, ko es vēlos, lai tas darītu?Varbūt, izpildīsim opciju Motion?
Virzamies uz konkrētu koordinātu.
Tagad šeit ir daudz iespēju.
Ir šādi varianti - Turning, Go to a Random Position, Go to x,y,
Glide, ja vajag elegantākā kustība
Ir daudz dažādu veidu, kā īstenot kustību.
Es tikai vēlos, lai tas vispirms nonāktu ļoti konkrētā vietā.
Tāpēc es vispirms došos uz x,y.
Kad sākšu ar x, tad redzēs, kā būs. Bet neapspriedīsim to ar
aparatūras kodu.
Labi, sāksim ar 0 un pēc tam ar 240.
Tātad - vispirms 0, tad 240,, lai opcija atkritne vienmēr parādītos
ekrāna augšdaļas vidū.
Ja jūs atceraties šo koordinātu sistēmu, 0,0 ir vidū.
240 ir tieši virs tā.
Sarunāts, ko es vēlos darīt pēc tam, kad paveikšu darbu?
Kā būtu, ja es šīs darbības kontrolētu, pieļaujot kļūdas.
Tagad, kā likt miskastei pārvietoties?
Mēs vēl neesam redzējuši šo puzles gabalu.
Bet sadaļā Motion pati pirmā opcija tiek saukta Pārvietojiet dažus
soļus - - Move Some Number of Steps.
Pēc noklusējuma tas ir 10.
Bet mēs to darīsim vienkāršāk.
Ļaujiet man turpināt! Ak, atvainojiet!
Kustība - Move - pārvietos to jebkurā virzienā, uz kuru tas ir vērsts.
Es tikai vēlos, lai tas virzītos uz leju.
Tāpēc šeit pat man kļuva neskaidrs, cik daudz dažādu iespēju ir
rīkoties.
Tas ir tas, ko es vēlos darīt.
Ļaujiet man mainīt savu y asi šādi.
Tātad, šeit ir vēl viens puzles gabals ar nosaukumu Change y.
Tātad atkal y ir vertikāle.
Ļaujiet man vienlaikus mainīt y par vienu pikseli uz leju, tātad -1
vienu pikseli vienlaikus.
Tātad tas ir diezgan lēns.
Un es domāju tagad... Es domāju, ka tas arī viss.
Ļaujiet man nospiest Stop.
Ņemiet vērā, ka mana miskaste joprojām būs interaktīva.
Es neesmu mainījis vai dzēsis šo kodu.
Es tikko pievienoju kodu savai miskastei.
Ja es noklikšķinu uz Zaļā karoga, ievērojiet, ņemiet vērā, ka pēc tā
iespējošanas, es varu šo darbību sākt no jaun.
Man tas bija paslēpts pirms nodarbības.
Bet ļaujiet man to iespējot tūlīt — Zaļais karogs, ievērojiet, ka tas
sākas centrā , pie x tas ir vienāds ar 0, pie y tas ir vienāds ar
240, un tas samazinās pa vienam pikselim.
Ja tas šķiet nedaudz garlaicīgi, mēs varam mainīt to uz -10 pikseļiem
vienlaicīgi Darīts.
Tātad jūs varat mainīt programmas ātrumu.
Bet es to atstāšu vienkāršāk kā -1.
Un godīgi sakot, būtu jauki, ja tas ne vienmēr sāktos no augšas.
Pretējā gadījumā šī spēle nebūs īpaši interaktīva.
Es burtiski grasos satvert miskasti no vienas un tās pašas vietas
katru reizi.
Tātad, kāpēc es tā vietā nepārtraucu - Stop -šo.
Ļaujiet man doties uz sadaļu Operatori - Operators - un izvēlēties
nejaušu skaitli.
Ļaujiet man mainīt cieto kodu — manuāli ievadīto — 0, un padarīsim x
kaut kur starp 0, tātad pa vidu un līdz galam uz — kas tas bija — ak,
es nepareizi sapratu savus skaitļus... 240 un mans y būs 180.
Atvainojiet, es sajaucu x un y.
Tāpēc ļaujiet man man to atkārtot .
Un tagad mums ir spēle, kas vairāk līdzinās spēlēm, ko, iespējams,
spēlējāt bērnībā vai joprojām spēlējat, it kā tajā būtu kāda
nejaušība.
Tātad CPU, tā sakot, dara kaut ko interesantāku.
Ļaujiet man to palaist vēlreiz.
Tagad tas ir nedaudz pa kreisi.
Tagad tas ir nedaudz vairāk pa kreisi.
Atkal — tagad tas ir atpakaļ pa labi.
Tātad nejaušība tikai padara spēles interesantākas.
Un tāpēc, spēlējot jebkuru videospēli, ja notiek dažādas lietas,
iespējams, tā ir tikai kāda nejaušība.
Un tas ir kvantificēts kā vienkāršs skaitlis.
Tagad es domāju, ka man nepieciešama tikai izdošanās, ja drīkst.
Ļaujiet man turpināt un pievienot šo.
Kā ar notikumiem - vai drīzāk - jā, Events - notikumi.
Noklikšķinot uz Zaļā karoga, vienā gariņāvaru veikt vairākas darbības.
Viņiem visiem nav jābūt piesaistītiem vienam un tam pašam notikumam.
Ļaujiet man Ļaujiet man vienmēr turpināt un darīt kaut ko citu.
Kā būtu, ja ikreiz, noklikšķinot uz opcijas Atkritne - Touching the
Trash Can- man ir nepieciešams Sensing bloks.
Tātad, kā būtu noklikšķināt ar kursora rādītāju nevis uz miskasti,
bet gan uz pašu programmu Oscar.
Tagad paskatīsimies, kas notiks.
Labi, ejam uz priekšu un noklikšķināsim uz Zaļā karoga.
Tagad es virzos šeit lejā un turpinu.
Labi, es gribu, lai tas nonāktu miskastē.
Kā panākt, lai tas nonāktu miskastē?
Kā mēs varam pieņemt šo augsta līmeņa ideju, ielikt atkritumus
miskastē un izdzēst tos?
Loģiski, ko mēs varētu darīt?
DAVID J. Malan: Labi, tāpēc, kad nevajadzīgā informācija tiek
ievietota miskastē), tā tiek izdzēsta.
Lai es varētu to noslēpt.
Vai godīgi sakot, ja spēle turpināsies, kā agrāk, ļaujot man izmest
arvien vairāk atkritumu. Ļaujiet man turpināt un nejauši izvēlēties
jaunu vietu.
Ļaujiet man kopēt - Copy - šo puzles gabalu šeit un dublēt -
Duplicate.
Un es nevēlos visu, atvainojiet.
Ļaujiet man atbrīvoties no šī.
Ļaujiet man to izdarīt.
Ļaujiet man atgriezties uz kādu nejaušu vietu augšpusē.
Tāpēc tagad ievērojiet, kas notiek.
Ja es noklikšķinu un velku uz tā — lūk, tas notiek — un atlaižu,
izskatās, ka tas nonāk atkritnē, jo tas atkal nofiksējas kādā nejaušā
vietā.
Tagad vienīgais, ko es īsti nedaru, tas ir nesekoju līdzi rezultātam.
Un izrādās, ja es to palaižu pilnekrāna režīmā, pēc noklusējuma to
vairs nevarēs vilkt.
Tātad, gluži kā kāda neparastā problēma, tā sakot, kaut kas, ar ko
varētu nejauši sastapties Ļaujiet man turpināt un lietot bloku
Sensing.. Izrādās, tā man arī nepieciešama atkritnei .
Ir kāds veids, kā Scratch var iestatīt gariņu tā, lai tas būtu
velkams vai nevelkams.
Man ir skaidri jānorosīna, lai tas būtu velkams, lai, tad, kad šī
darbība tiek veikta pilnekrāna režīmā, tas joprojām paliktu velkams,
un kāds, piemēram, es, varētu lietot to atkārtoti.
Nu, kā būtu, ja mēs to papildinātu ar vēl vienu pēdējo variantu?
Kāpēc mēs tagad nesekojam lietotāju rezultātiem?
Tātad, ja lietotājs patiešām ievelk atkritumus miskastē, ļaujiet man
doties šeit sadaļā Mainīgie - Variables, kur jau iepriekš esmu
izveidojis sev mainīgo ar nosaukumu Score.
Es varētu to nosaukt par x vai y, vai z vai ABC, bet tas nav īpaši
aprakstošs.
Programmēšanā jūs parasti piešķirat lietām aprakstošāku nosaukumu
angļu vai kādā citā valodā.
Tāpēc es nosaucu šo vienu Score.
Tātad, kā es vēlos to izdarīt savā Score?
Nu, ļaujiet man turpināt un sākotnēji iestatīt šo spēles rezultātu uz
0 vienā no šiem skriptiem — vienai no šīm programmām šeit.
Un tad, kad kad atkritumi pieskarās programmai Oscar, nevirzīsimies
tikai uz augšu, bet gan mainīsim rezultātu par 1 soli uz augšu.
Tāpēc tagad ņemiet vērā, ja pieskaraties Oskaram - If Touching Oscar,
mainiet punktu skaitu - Change the Score, tas ir, pievienojiet 1
punktu, un pēc tam izvēlieties jaunu nejaušu lokāciju.
Un tagad Zaļais karogs — darīsim to lēnām.
Lūk.
Atveras miskaste.
Es turpināju.
Un tagad ņemiet vērā, manas programmas augšējā kreisajā
stūrīrezultāts tagad ir 2.
Ņemiet vērā, ka rezultāts būs 3, ja es to darīšu vēlreiz.
Un tāpēc mums ir pamatelementi, lai padarītu šo programmu arvien
labāku un labāku.
Tātad, patiešām, jūs parasti pieejat jebkuras problēmas risināšanai
ar kodu, neatkarīgi no tā, vai tā ir Scratch, C, Python vai kāda cita
programmēšanas valoda.
Jūs izmantojat savu iedomāto vīziju, vai kādu citu vīziju, kas jums
bija jau jāizstrādā, un mēģināt to sadalīt daļās. Vispirms tiek
atdalītas vieglākās daļas.
Vispirms novietojiet lampas stabu. Tad var just, ka darbs virzās uz
priekšu.
Tad izvēlaties kaut ko līdzīgu miskastei un lieciet tai kaut ko darīt.
Un tam šeit nav jābūt tādā pašā secībā.
Es to būtu varējis izdarīt ļoti daudzosdažādos veidos.
Bet padomājiet, kas ir tās mazās detaļas, kuras galu galā, tāpat kā
dažas no problēmām, kuras esam šodien atrisinājuši, arī var tikt
apvienotas vienā kopējā risinājumā .
Kad jums ir izveidojies prāta modelis šāda veida un citiem blokiem,
uz brītiņu atgriezīsimies pie problēmas, ko jau izskatījām .
Pirms brīža mēs redzējām, ka, kad es sāku teikt: ”Sveiks, Deivid” un
ligzdot šos puzles gabalus, mums bija pavisam cita paradigma.
Mans ieguldījums otrajā “Sveika, pasaule” versijai tagad bija,
piemēram, “Kā tevi sauc?” manā funkcijā Ask.
Tas man radīja nevis papildus problēmas, bet gan tā saucamo
atgriešanās vērtību, ko pēc noklusējuma sauca par Answer programmā
Scratch.
Un tagad ievērojiet un atcerieties, kad šī pati izvade kļuva par
ievadi manam nākamajam blokam, tas izskatījās apmēram šādi... Say.
Tātad, kā šāda veida bloki un šī ligzdošana, šī bloku sakraušana
iekļaujas tajā pašā prātamodelī?
Tā pati ideja — mana ievade šajā stāsta daļā tagad ir nevis viens
ievads, bet divi — divi argumenti — ”sveiki” un iepriekšējā atbilde.
Šajā gadījumā funkcija ir jaunais bloks ar nosaukumu Pievienoties -
Join.
Tā iznākums ir “Sveiks, Deivid”, kas pats kļuva — ja mēs to kaut kā
atdzīvinām — par ievadi manai galīgajai funkcijai, kas patiešām
joprojām bija Say.
Un tas ir tikai tāpēc, lai pateiktu — nespēlējoties ar vārdiem — ka
gandrīz viss, ko jūs darāt ar šīm puzles daļām, neatkarīgi no tā, vai
tas būtu programmas Oscartime vai kurmju sišanas kontekstā, vai pat
tas būtu kāds vienkāršs uzvedums, piemēram, “Sveika, pasaule”, galu
galā tas tiks izpildīts, iekļaujoties salīdzinoši vienkāršajā
prātamodelī.
Tagad es domāju, ka beigsim darbu, apskatot tikai dažus pēdējos
piemērus.
Arī šīs, ko agrāk izstrādājuši daži citi jūsu kolēģi.
Un šim nolūkam es domāju, ka mēs nevis rakstīsim kodu kopā, bet gan
lasīsim to.
Un tāpēc ļaujiet man šeit rādīt vēl vienu piemēru, kas parādīs dažas
dažādas programmas versijas, ko izveidoja jūsu priekšteči.
Lūdzu dodiet man mazliet laika.
Un mēs redzēsim, kā mēs varētu izveidot kaut ko vēl interaktīvāku.
Un pēc brīža mēs redzēsim kaut ko, ko viņi sauca par Ivy’s Hardest
Game, kas šeit ir vērsta uz šo konkrēto mehāniku.
Tātad, lūk, šīs programmas 0. versija, kuras mērķis bija izstrādāt
spēli, kurā nepieciešams izkļūt no labirinta.
Jums ir jāizkļūst no labirinta, šajā gadījumā no sadaļas Harvard
crest.
Ļaujiet man turpināt un tagad noklikšķiniet uz darbības Play opcijā
Zaļais karogs, lai jūs varētu redzēt, kāds varētu būt šīs programmas
pirmais pamatelements.
Ievērojiet, ka mana roka šeit faktiski atrodas uz tastatūras
bulttaustiņiem.
Un šķiet, ka, pārvietojoties uz augšu, uz leju, pa kreisi vai pa
labi, šī mazā ekrāna virsotne reaģē tieši tādā veidā.
Tagad uz brīdi izvirzīsim hipotēzi.
Lai gan mēs iepriekš neko tādu neesam darījuši, kā šo kodu varētu
ieviest?
Kā panākt, lai gariņš, kas var būt gan kaķis, gan ģērbonis, reaģētu
uz tastatūras taustiņiem. Vai jūs varētu domāt, izmantojot intuīciju?
.Deivids Dž. Malans: Jā, ir jājūt, uz kuru taustiņu jūs uzspiežat.
Ja jūs to nepārtraukti atkārtosiet, tad pastāvīgi dzirdēsiet
taustiņsitienus.
Un tā, piemēram, mūsdienās darbojas katra programmatūra.
Tas pastāvīgi gaida, kad.jūs pieskarsieties savam tālrunim vai kaut
kas tiks uzrakstīts uz ekrāna.
Tāpēc ļaujiet man.turpināt un izpētīt šo programmu.
Un notiek vēl vairāk, bet mēs ātriizpētīsim, kas īstenībā notiek.
Šeit augšā pa kreisi, ievērojiet, mums vienkārši ir Go To x Equals 0
un y Equals 0.
Tas nozīmē, ka Harvard crest ir jānovieto skatuves vidū.
Pēc tam mums ir divas opcijas Forever funkcijas, kuras iepriekš tika
izveidotas kā pielāgotas funkcijas. Izmantojiet tastatūras funkciju
Feel for Walls.
Tātad vienlaikus tiek veiktas divas funkcijas.
Ir jāizmanto tastatūras funkcijas - uz augšu, uz leju, pa kreisi, pa
labi. Jāizmanto arī funkcija Feel for walls, tad, ja pārvietojaspārāk
tālu pa kreisi, un es nevēlos, lai tā turpinātu virzīties garām šai
melnajai sienai.
Un, ja tas pārvietojas pārāk tālu pa labi, es arī nevēlos, lai tas
izpūstu cauri tai sienai.
Tāpēc tas pastāvīgi darīs divas lietas: klausīsies tastatūru un, tā
sakot, sajutīs sienas.
Un kā šīs darbības tiek veiktas?
Ir mazliet par ilgu.
Bet kreisajā pusē ir opcija Listen for Keyboard.
Tātad šis rozā puzles gabals Klausieties tastatūru - Listen for
Keyboard - vispirms pārbauda, vai ir nospiesta taustiņu augšupvērstā
bultiņa, jautājuma zīme, Būla izteiksme nosacījumā, Mainīt y ar 1.
Tas nozīmē, ka pārvietojiet to uz augšu par 1.
Citādi Ja - If - ir izmantota lejupvērstā bultiņa, mainiet y ar -1 un
līdzīgi kreisajai bultiņai, līdzīgi pa labi.
Un, lai gan šajā rozā funkcijā nav cilpas, es to izmantoju.
Tāpēc šo funkciju darbina atkal un atkal .
Kā būtu ar funkciju Feel for walls?
Nu, šeit pa labi — tas ir nedaudz nogriezts, bet šeit tasir: If
Touching Left Wall, Change x by 1 - Ja pieskaras kreisajai sienai,
mainiet x par 1.
Tātad, ja jūs atdursitiespret sienu, ir par vēlu.
Jūs jau it kā iziesit cauri sienai.
Tāpēc es vēlos to pārvietot par vienu pikseli atpakaļ, lai tas vairs
nepieskartos šai sienai.
Tāpat, ja tas pieskaras labai sienai, es vēlos to dublēt par vienu
piksei, lai tas vairs nepieskartos šai sienai.
Līdz ar to tas ir tāpat kā tik nedaudz pārvietoties atpakaļ, lai tas
neizslīdētu cauri šai sienai.
Un kas ir tās sienas?
Nu, ievērojiet šeit, tas ir tikai vienkāršs gariņš ar melnu līniju,
kuru esmu novietojis vertikāli, nevis horizontāli.
Un tas ir tikai tāpēc, lai es varētu uzdot jautājumus šiem diviem
gariņiem.
Tagad tas man dod šādu interaktivitātes veidu.
Ko vēl tagad varu darīt?
Kā pārveidot visu nedaudz interaktīvāku?
Ļaujiet man iet uz priekšu un redzēt mūsu otro versiju 1.
Un ļaujiet man ieteikt, kas šeit notiks.
Kā mēs varētu šīm daudzveidīgajām lietām pievietot kaut ko līdzīgu
Yale?
Kā darbosies Yale, ja, pamatojoties uz šo kodu, tiks izmantots Zaļais
karogs?
Kādas ir jūsu domas?
Šeit ir mana Yale gariņa kods.
Deivids Dž. Malans: Ja, teorētiski man bloķēs ceļu, es izmantošu
vairāk kodu, tas būs pretrunā manām darbībām.
Tad kāpēc?
Tas arī iet uz ekrāna vidu.
Tas ir vērsts 90 grādu virzienā.
Līdzīgi ir arī visa gradācijas sistēma.
.Tas vienmēr izraisa diskusijas.
Ja pieskaras kreisajai sienai, pieversiet uzmanību zaļajam blokam,
vai pieskaras labai sienai, tad vienkārši pagriezieties par 180
grādiem.
Un patiešām, ja jūs to loģiski domājat, tas nozīmē, ka jūs lēkājat uz
šo un uz šo pusi, vienkārši pagriežot sevi par 180 grādiem tikai šim
Yale gariņam.
Tātad, ja es to pietuvinu un noklikšķinu uz Zaļā karoga, es joprojām
varu pārvietoties uz augšu un uz leju.
Yale darbojas nepārtraukti abos virzienos.
Nekas slikts nenotiek, ja mēģinu tam iziet cauri.
Bet mēs to noteikti varētu pievienot visām citām funkcijām.
Faktiski pievienosim vienu pēdējo funkciju, pirms mēs spēlējam šo
konkrēto spēli.
Un ļaujiet man iet uz priekšu un atvērt šo bloku galīgo versiju, kas
pievieno MIT pārējām funkcijām.
Tātad šeit ir MIT.
Kāds vēlas paskaidrot, ko šis kods dara?
Un tas ir tas, ko mēs darām.
Šī pati par sevi ir prasme.
Kāda cita koda lasīšana un tā izpratne ir puse no programmēšanas,
izņemot rakstīšanu.
Deivids Dž. Malans: Jā, tas.precizē Hārvardas logotipa tēlu.
Tātad šis acīmredzot ir šī studenta izgatavotā tērpa nosaukums
Hārvardas logotipa kontūrai.
Un acīmredzot vispirms tas nonāk nejaušā pozīcijā.
Bet tad tas uz visiem laikiem norāda uz Hārvardu.
Tāpēc neatkarīgi no tā, kur es to pārvietoju, uz augšu, uz leju, pa
kreisi vai pa labi, MIT ir nedaudz stratēģiskāka nekā Yale, jo var
mainīt virzienu.
Tātad, ejam uz priekšu un parādīsim to pilnekrāna režīmā.
Un šeit mums ir Zaļais karogs.
Tātad, ja es virzos uz augšu, MIT drīzāk stratēģiski seko man, lai
kur es dotos.
Labi, tik un tā, nekas slikts nenotiek.
Bet tagad tas cīnās, vai ne?
Tas iet uz augšu, uz leju, uz augšu, uz leju.
Tas mēģina man sekot, lai gan es nekustos.
Tāpēc mums ir nepieciešams pēdējais uzlabojums.
Un tāpēc es domāju, ka šim nolūkam mums, iespējams, ir vajadzīgs
pēdējais brīvprātīgais.
Pēc tam ārā visus gaida kūka, kā tas ir pirmās lekcijas CS50
noslēguma tradīcija.
Vai vēlaties būt mūsu brīvprātīgais?
Un tāpēc šī būs faktiskā versija, taču to ir uzrakstījis viens no
jūsu priekšgājējiem, un es šeit parādīšu pilnekrāna režīmu.
Tas saliks kopā visus šos pašus primitīvus un daudz ko citu, bet
pievienojiet rezultātu un dzīvību jēdzienu, ar mērķi pārvietot
Hārvardas crest, lai nepārtraukti vajātu tēlu labajā pusē, kad tavs
gariņš tam pieskaras.
Vai vēlaties iepazīstināt ar sevi?
AUDITORIJA: Sveiki, mani sauc Muhameds.
Deivids Dž. Malans: Labi, brīnišķīgi.
Laipni lūgti sākt!
Mēs ieteiksim dažus uzlabojumus, ja vēlamies atstāt apgaismojumu un,
varbūt, palielināt mūzikas skaņu.
[MŪZIKA — MC HAMMER, "U CAN'T TOUCH THIS"]
MC HAMMER:(dzied) Jūs to nevarat.
Jūs nevarat pieskarties šim.
Deivids Dž. Malans: Ņemiet vērā, ka tiek izmantotas funkcijas augšup,
lejup, pa kreisi, pa labi.
Bet tagad ir daudz vairāk sienu.
Pirmais līmenis ir diezgan vienkāršs.
.Bet tagad Yale sajaucas ar citām funkcijām, un var virzīties abos
virzienos - gan uz priekšu, gan atpakaļ.
Atkal, diezgan viegli.
Tagad ir divi Yale's nedaudz atšķirīgās pozīcijās.
MIT drīz sāks darboties.
Bet vispirms mums ir trīs Yale versijas.
MC HAMMER: (DZIEDOŠANA) (dzied) Kā tāds.
Un tas ir sitiens, jūs nevarat pieskarties.
DAVID J. Malan: Ļoti jauki.
MC HAMMER: (dzied) Es tev teicu, čalīt, tu nedrīksti tam pieskarties.
Jā, tā tas izskatās, kad zini, ka nevari tai pieskarties.
Paskaties manās acīs, cilvēks, tu nevari tam pieskarties.
Jā, ļaujiet man izjaukt jautros dziesmu tekstus.
šim nevar pieskarties.
Tagad jūs zināt, ka vēlaties dejot.
Tāpēc pieceļaties un lidojiet... Deivids Dž. Malans: Jums
jāpasteidzas.
MC HAMMER: (dzied) Uztveriet šo sitienu, tagad.
Uzgaidi.
Izpētiet visu un dariet viņiem zināmu, kas notiek.
Ja ir grūti, atpūtieties!
Ļaujiet viņiem saprast, ka esat pārāk daudz, un viņi nevar
pieskarties.
Jā, es tev teicu.
Ak, zvani.
Skola ir klāt, mazais.
Dod man dziesmu, ritmu.
Lai viņi piepūlās, to es vēlos.
Tagad viņi zina, jūs runājat par Hammer, jūs runājat par šovu, kas
ir.možs un intensīvs.
Dziedātāji svīst, tāpēc padodiet viņiem salveti vai kaseti, lai
mācītos.
Ko tas prasīs... DEIVIDS Dž. Malans: Otrais līdz pēdējam līmenim.
MC HAMMER: (dzied) Legit.
Vai nu smagi strādājiet, vai arī jūs varētu pamest.
Tas ir vārds, jo jūs zināt...Deivids Dž. Malans : Pēdējais līmenis.
MC HAMMER: (DZIED) Jūs nevarat pieskarties šim.
DEIVIDS Dž. Malāns: Sveiki!
[SMEJAS]
Apsveicu.
Labi, tas ir paredzēts CS50.
Laipni lūdzam.
Tagad kūka tiek pasniegta .
Tiksimies nākamreiz.
[PROJEKTORS NOKLIKŠĶINA]