[Powered by Google Translate] NATE Хардисон: Калі ў вас ёсць некалькі праграм адкрыць на
кампутар, здаецца, што ўсё ў
працуе ў той жа час.
Напрыклад, вы маглі б працаваць у вэб-браўзэры, як
Firefox або Internet Explorer, праслухоўвання музыкі на ITunes,
і напісанне эсэ з Word.
Тым не менш, пад капотам, на самай справе праграм
запускаць па адным за раз.
Гэта праца аперацыйнай сістэмы, Windows, Mac OSX, або
Linux, для кіравання кожнай з гэтых асобных працэсаў, а
Праграмы, як вядома, і перамыкацца паміж імі, так што, калі вы
перайсці ад праверкі Facebook старонкі працаваць на вашым эсэ
зноў, Word з'яўляецца той, які працуе.
>> Часам, праўда, мы хочам самі праграмы, каб мець магчымасць
зрабіць некалькі рэчаў, як гэта, таксама.
Калі вы падобныя на мяне, вы, верагодна, ёсць куча
розных адкрытых укладак ў вэб-браўзэры, па адным для электроннай пошты,
адзін з календаром, і гэтак далей.
Мы маглі б разглядаць кожную ўкладку як асобны працэс або праграму,
як Google Chrome робіць, але шматлікія праграмы выкарыстоўваюць
палегчаную версію працэсу, які завецца струменем.
>> Нітка гэта проста яшчэ адзін блок апрацоўкі, набор
інструкцый або кода, які можа "запусціць", канец цытаты цытаты,
адначасова з іншымі патокамі.
Гэта тое, што дазваляе вам праглядаць Facebook
Падчас праслухоўвання мяне ў фонавым рэжыме або мець два
YouTube відэа гуляе ў той жа час.
Такім чынам, гэта агульная тэма, вядомая як паралелізм, як правіла,
не прыходзіць так рана ў курсах інфарматыкі
таму што больш нізкім узроўні дэталі патрабуюць абмеркавання
аперацыйных сістэм і таму падобнае.
Тым не менш, мова праграмавання, мы выкарыстоўваем у
пачатак CS50, Scratch, дае некаторыя класныя інструменты
палягчаюць напісанне праграм з некалькімі рэчамі
адбываецца адразу.
>> Калі вы будуеце драпін праграм, вы ўвесь час
праца з патокамі.
Кожны драпін сцэнар, які з'яўляецца блок кода, які пачынаецца з
адзін з "калі" часткі галаваломкі, можна разглядаць
як асобны паток.
Давайце паглядзім на простую праграму нуля, каб паглядзець, як гэта працуе.
>> Тут, у нас ёсць рыбу аб'екта, або спрайт, з двума сцэнарамі
што абодва пачатку, калі мы націсніце на маленькую зялёную кнопку сцяг.
Першы сцэнар кантралюе рух рыбы.
Калі зялёны сцяг націску, рыба атрымлівае змешчаны
на левай баку экрана, званай стадыі,
сутыкаецца з правага боку.
Тады, у набор інструкцый, які будзе працаваць вечна, пакуль мы не
спыніць праграму, рыба слізгае на правай баку,
абгортваецца, вяртаецца да левай баку, і
абгортваецца зноў.
Другі сцэнар кантралюе разумовы працэс рыбы.
Аказваецца, што гэта галодная рыба.
Такім чынам, пасля чакання на працягу 3 секунд, рыба будзе думаць,
"Я галодны", на чацвёртай секундзе.
Гэты сцэнар таксама працуе вечна.
І як мы бачым, ад запуску праграмы, націснуўшы
зялёны сьцяг, як сцэнары з'яўляюцца для выканання
адначасова.
Рыба рухаецца і думае, што ў той жа час.
>> Паколькі бедныя рыба выглядае так галодны, давайце дадамо ў некаторых
сырны клубы для таго, каб паесці.
Спадзяюся, яны не будуць распадацца ў вадзе.
Калі мы дадамо ў другой спрайт, мы будзем таксама мець магчымасць
Дадаць у сцэнарах, якія адпавядаюць, што спрайт.
І, такім чынам, там будзе іншы набор
патокаў, якія будзе працаваць.
Каб даць карыстачу нашай праграмы кантролю над калі
галоднага рыба атрымлівае ежу, скажам, што кожны раз, калі касмічны
Бар ўдар, сырны клубы з'яўляюцца на сцэне
рыба ёсць.
Перш чым мы патрапілі ў Прабел, мы хочам захаваць кепскай
зацяжак схаваныя, так што рыба не можа бачыць іх.
Каб зрабіць гэта, нам трэба пару сцэнарыяў для
сырны клубы спрайт.
Першы сцэнар, зялёны сьцяг, будзе проста схаваць ежы.
У адрозненне ад іншых сцэнарыяў мы ўжо пісалі, на гэты раз не будзе трымаць
працуе вечна.
Яна будзе пачынацца і заканчвацца вельмі хутка, права, калі мы націскаем
Зялёная кнопка сцяг.
>> Наступны сцэнар у нас будзе чакаць прабел, каб быць
націснутая перад выкананнем.
Мы можам назваць чаканні ўводу карыстальніка "чакання" або "слухае"
для падзеі.
І код, які выконваецца пры атрыманні падзеі або
чуў называецца код апрацоўкі падзей.
Нашы Space Bar апрацоўшчык падзеі пакажуць сырны зацяжак на
экран, так што рыба можа з'есці іх.
На дадзены момант, усё выглядае добра.
>> Наступнае, што нам трэба зрабіць, гэта высветліць, як атрымаць
Рыба разумець, што ёсць ежа.
Давайце дадамо іншы струмень для рыбы, якая ўвесь час
правярае, ці з'яўляецца ён ці не кранальна сырны зацяжак.
Мы робім гэта ў асобным патоку, так як такім чынам мы можам
пастаянна правяраць на харчаванне.
У адваротным выпадку, мы б толькі мець магчымасць перыядычна правяраць ежу
паміж слізгаценне, паварочваючыся, чаканне, або думаць.
>> OK.
Зараз давайце запусцім нашу праграму да драпін.
Як і чакалася, ежа адразу ж хаваецца і
галоднага рыба плавае туды і назад як і раней.
Калі мы трапілі ў Прабел, сырны клубы прыходзяць у поле зроку,
і галодных рыб кажа Whoo.
Але пачакайце, гэта дзіўна.
Як атрымалася, што рыба "Я галодны" перарывае думкі
іншыя рэчы?
Гэта таму, што мы не ўстанаўлівае якіх-небудзь каардынацыі
паміж трыма сцэнарамі рыбы.
Кожны працуе ў сваім уласным патоку, не звяртаючы ўвагі на тое, што
робяць іншыя.
Давайце выправім гэта, перш чым рухацца далей.
>> Каардынацыя паміж патокамі з'яўляецца няпростай задачай, так як мы
не маюць відавочнага кантролю над калі кожны паток працуе ці
не працуе.
Каб адправіць паведамленне з аднаго струменя ў іншы, мы павінны будзем
выкарыстоўваць зменную, што мы можам ўсталяваць, ні пісаць, у адным струмені
і прачытаць у іншы.
Давайце створым зменную foodFound, што мы можам усталяваць для
дакладна, калі рыба ўпадае ў сырны зацяжак.
Ну, вядома, мы хочам пераканацца, што мы ўсталяваць яго на
ілжывым першапачаткова.
Тады, у мысленні паток рыбы, мы будзем правяраць, каб пераканацца,
Рыба знайшла ежу перад паказам "Я галодны"
думаў бурбалка.
>> Цяпер, запусціўшы праграму зноў, мы бачым, што рыба
не атрымаць перапыніў думкі ад голаду, калі
сырны клубы знаходзяцца па-за.
Апошняя праблема ў нас у тым, што сырны клубы не хаджу
ж пасля рыбы, працытаваць канец цытаты, "з'ядае" іх.
З рыбы скрыпты, не існуе просты спосаб схаваць дрэнь
зацяжак, так што нам трэба адправіць паведамленне на кепскай клубы
спрайт схаваць сябе.
Мы маглі б зрабіць гэта з іншай зменнай, што сырны клубы
спрайт мае доступ, а таксама рыба спрайт.
>> Аднак, ёсць больш чыстага спосабу зрабіць гэта ў дадзеным выпадку,
так як замест адпраўкі паведамлення на скрыпт, які
дзесьці ў сярэдзіне выканання, мы можам адправіць
Паведамленне для сцэнара, які чакае, каб пачаць.
Мы робім гэта, маючы рыбы трансляваць падзея, якое мы будзем
тэлефануйце елі.
Затым, мы створым скрыпт для сырны клубы, якія будуць
чакаць гэтай падзеі.
Гэта падобна на падзеі Bar прасторы, акрамя таго, што гэта
час, карыстальнік не той, непасрэдна запуск падзеі.
Зараз усе мы павінны зрабіць, гэта ўсталяваць наш foodFound назад пераменная
ХЛУСНЯ, і цяпер мы можам даць галоднаму рыбу, як шмат
порцый сырны зацяжак, як ён хоча.
>> Так што не так ужо дрэнна, праўда?
У C, напісанне шматструменных праграм з'яўляецца больш складаным,
але асновы тыя ж.
Ва ўсякім выпадку, я спадзяюся, што вы добра праведзяце час будаўніцтва павесяліцца
паралельных праграм у Scratch.
Мяне клічуць Нейт Хардисон.
Гэта CS50.