[Powered by Google Translate] NATE HARDISON: Pan fydd gennych rhaglenni lluosog ar agor ar
cyfrifiadur, mae'n ymddangos fel popeth yn
yn rhedeg ar yr un pryd.
Er enghraifft, efallai y byddwch yn gweithio mewn porwr gwe fel
Firefox neu Internet Explorer, gwrando ar gerddoriaeth ar iTunes,
ac ysgrifennu traethawd gyda Word.
Fodd bynnag, dan y cwfl, y rhaglenni mewn gwirionedd
rhedeg un ar y tro.
Mae'n yw'r swydd y system weithredu, Windows, Mac OSX, neu
Linux, i reoli pob un o'r prosesau hyn ar wahân, fel y
rhaglenni yn hysbys, a newid rhwng nhw felly pan fyddwch yn
mynd o edrych ar eich tudalen Facebook i weithio ar eich traethawd
unwaith eto, Word yw'r un sy'n ei rhedeg.
>> Weithiau, fodd bynnag, rydym am i rhaglenni eu hunain i fod yn gallu
i wneud pethau lluosog fel hyn, hefyd.
Os ydych chi fel fi, mae'n debyg bod gennych griw o
tabs gwahanol agor yn eich porwr gwe un ar gyfer e-bost,
un gyda chalendr, ac yn y blaen.
Gallai Rydym yn trin pob tab fel rhaglen ar wahân neu broses,
fel Google Chrome yn ei wneud, ond mae llawer o raglenni yn defnyddio
ysgafnach-bwysau fersiwn o broses a elwir yn edau.
>> Mae edau arall yn unig uned o brosesu, set o
cyfarwyddiadau neu god a all "rhedeg", unquote dyfyniad,
yr un pryd ag edafedd eraill.
Mae hyn yn beth yn ei gwneud yn bosibl i chi bori Facebook
wrth wrando ar mi yn y cefndir neu i gael dau
Fideos YouTube yn chwarae ar yr un pryd.
Felly, y pwnc cyffredinol, a elwir yn concurrency, fel arfer
nid yw'n dod i fyny mor gynnar mewn cyrsiau gwyddoniaeth gyfrifiadurol
oherwydd bod y manylion is-lefel olygu trafod
systemau gweithredu ac yn y blaen.
Fodd bynnag, mae'r iaith raglennu rydym yn eu defnyddio yn y
ddechrau CS50, Scratch, yn darparu rhai offer nifty i
ei gwneud yn haws i ysgrifennu rhaglenni gyda phethau lluosog
mynd ymlaen ar unwaith.
>> Pan fyddwch yn adeiladu rhaglenni Scratch, rydych yn gyson
gweithio gyda edafedd.
Mae pob sgript Scratch, sy'n floc cod sy'n dechrau gyda
un o'r pos "pan" ddarnau, yn cael ei ystyried o
fel edau ar wahân.
Gadewch i ni edrych ar raglen Scratch syml i weld sut mae hyn yn gweithio.
>> Yma, rydym wedi cael, gwrthrych pysgod neu sprite, gyda dau sgriptiau
bod y ddau dechrau pan fyddwn yn clicio ar y botwm faner werdd fechan.
Mae'r sgript yn rheoli cynnig y pysgodyn.
Pan fydd y faner werdd yn cael ei glicio, y pysgodyn yn cael ei gosod
ar ochr chwith y sgrîn, a elwir y llwyfan,
wynebu ar y dde.
Yna, mewn set o gyfarwyddiadau fydd yn rhedeg am byth, hyd nes y byddwn
atal y rhaglen, y pysgod gleidiau ar yr ochr dde,
troi o gwmpas, yn mynd yn ôl i ochr chwith, a
troi o gwmpas eto.
Mae'r sgript 2 yn rheoli proses feddwl y pysgodyn.
Mae'n troi allan bod hwn yn bysgod llwglyd.
Felly, ar ôl aros am 3 eiliad, bydd y pysgod yn meddwl,
"Rydw i'n llwglyd," ar gyfer ail pedwerydd.
Mae hyn yn sgript hefyd yn rhedeg am byth.
Ac wrth i ni weld, o redeg y rhaglen drwy glicio ar y
gwyrdd baner, y ddau sgriptiau yn ymddangos i weithredu
ar yr un pryd.
Mae'r pysgod yn symud ac yn meddwl ar yr un pryd.
>> Gan fod y pysgod gwael yn edrych mor llwglyd, gadewch i ni ychwanegu mewn rhai
pwff cheesy iddo i'w fwyta.
Gobeithio na fyddant yn chwalu yn y dŵr.
Pan fyddwn yn ychwanegu mewn sprite ail byddwn hefyd yn gallu
ychwanegu sgriptiau sy'n cyfateb i'r sprite.
Ac, felly, fe fydd yna set arall o
edafedd fe sy'n rhedeg.
I roi i'r defnyddiwr ein rheolaeth rhaglen drosodd pan fydd y
pysgod llwglyd yn cael bwyd, gadewch i ni ddweud bod pryd bynnag y Gofod
Bar ei daro, pwff caws yn ymddangos ar y llwyfan ar gyfer y
bysgod i'w bwyta.
Cyn i ni gyrraedd y Bar Gofod, byddwn yn awyddus i gadw'r cheesy
pwff cuddio fel na all y pysgod eu gweld.
I wneud hyn, bydd angen ychydig o sgriptiau ar gyfer y
pwff sprite cawslyd.
Bydd y sgript yn gyntaf, y faner werdd, dim ond cuddio'r bwyd.
Yn wahanol i'r sgriptiau eraill rydym wedi ysgrifennu, ni fydd hyn yn un yn cadw
rhedeg am byth.
Bydd yn dechrau ac yn gorffen yn gyflym iawn, dde pan fyddwn yn clicio
y botwm faner werdd.
>> Bydd y sgript nesaf rydym wedi aros ar gyfer y Bar Space i fod yn
pwyso cyn gweithredu.
Gallwn alw aros am fewnbwn y defnyddiwr "aros" neu "gwrando"
ar gyfer digwyddiad.
Ac mae'r cod sy'n executes pan fo achlysur yn cael ei dderbyn neu
glywed ei alw'n cod trin digwyddiad.
Bydd ein triniwr Bar Space digwyddiad yn dangos y pwff caws ar
y sgrin fel y gall y pysgod yn eu bwyta.
Ar y pwynt hwn, mae popeth yn edrych yn dda.
>> Y peth nesaf mae angen ei wneud yw chyfrif i maes sut i gael
y pysgod i sylweddoli bod yna fwyd i'w fwyta.
Gadewch i ni ychwanegu un arall edau i'r pysgod yn gyson
cadarnhau a yw neu nid yw'n cyffwrdd y pwff caws.
Rydym yn gwneud hyn mewn edau ar wahân ers y ffordd y gallwn
yn gyson chwilio am fwyd.
Fel arall, byddem ond yn gallu gwirio o bryd i'w gilydd am fwyd
rhwng gleidio, troi o gwmpas, yn aros, neu feddwl.
>> OK.
Nawr gadewch i ni redeg ein rhaglen Scratch.
Yn ôl y disgwyl, y bwyd yn syth cuddio ac mae'r
pysgod llwglyd yn nofio yn ôl ac ymlaen yn union fel o'r blaen.
Pan fyddwn yn cyrraedd y Bar Space, y pwff cheesy yn dod i'r golwg,
ac mae'r pysgod llwglyd yn dweud Whoo.
Ond arhoswch, mae hynny'n rhyfedd.
Sut dod y pysgodyn "Rwy'n llwglyd" torri ar draws meddwl y
pethau eraill?
Mae hyn oherwydd nad ydym yn sefydlu unrhyw cydlynu
rhwng y tri sgriptiau pysgod.
Mae pob un yn rhedeg yn ei edau ei hun, anymwybodol o'r hyn y
eraill yn ei wneud.
Gadewch i ni atgyweiria hon cyn i ni symud ymlaen.
>> Cydlynu rhwng edafedd yn dasg anodd ers i ni
nad oes gennych reolaeth dros penodol pan fydd pob llinyn yn rhedeg neu
nid yw'n rhedeg.
I anfon neges o un edau i'r llall, bydd angen
i ddefnyddio amrywiol y gallwn osod, neu ysgrifennu, mewn un edau
a darllen yn y llall.
Gadewch i ni greu foodFound amrywiol o'r enw y gallwn osod i
yn wir pan fydd y pysgod yn rhedeg i mewn i'r pwff caws.
Wel, wrth gwrs, rydym am wneud yn siŵr ein bod yn ei osod i
ffug i ddechrau.
Yna, mewn edau meddwl y pysgodyn, byddwn yn gwirio i weld os
y pysgod wedi dod o hyd bwyd cyn dangos y "Rwy'n llwglyd"
meddwl swigen.
>> Nawr, rhedeg y rhaglen eto, rydym yn gweld bod y pysgod
nid yw'n mynd i ymyrryd â meddyliau o newyn pan fydd y
pwff cawslyd allan.
Y broblem derfynol sydd gennym yw nad yw'r pwff caws yn mynd
i ffwrdd ar ôl y pysgodyn, dyfynnu unquote, "bwyta" iddynt.
O'r sgriptiau pysgod, does dim ffordd hawdd i guddio y cheesy
pwff, felly mae angen i chi anfon neges at y pwff cheesy
sprite i guddio ei hun.
Gallem wneud hyn gyda newidyn arall bod y pwff caws
sprite fynediad i, yn ogystal â'r sprite pysgod.
>> Fodd bynnag, mae ffordd glanach i wneud hyn yn yr achos hwn,
ers yn hytrach nag anfon neges i sgript sy'n
rhywle yn y canol o weithredu, gallwn anfon y
neges i sgript sydd wedi aros i ddechrau.
Rydym yn gwneud hyn drwy gael y pysgod ddarlledu digwyddiad, un gallwn eich
ffoniwch bwyta.
Yna, byddwn yn creu sgript ar gyfer y pwff caws a fydd yn
aros ar gyfer y digwyddiad.
Mae hyn yn debyg i'r digwyddiad Gofod Bar, ac eithrio bod hyn yn
amser, nid yw'r defnyddiwr yw'r un yn uniongyrchol sbarduno y digwyddiad.
Nawr pob mae'n rhaid i ni ei wneud yw gosod ein cefn amrywiol foodFound
i ffug, a gallwn yn awr roi'r pysgod llwglyd cymaint
dogn o byffiau cawslyd fel y mae ei eisiau.
>> Felly ddim yn rhy ddrwg, dde?
Yn C, ysgrifennu aml-threaded raglenni yn fwy cymhleth,
ond y pethau sylfaenol yn yr un fath.
Anyway, Rwy'n gobeithio y byddwch yn cael amser gwych adeiladu ychydig o hwyl
rhaglenni cydamserol mewn Scratch.
Fy enw i yw Nate Hardison.
Mae hyn yn CS50.