[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.