>> СПІКЕР: Добра, такім чынам, вы не паверыце, але на мінулым тыдні, у панядзелак, у Пірс, я
быў у склепе.
Я ніколі не іду ў Pierce.
І я ніколі не вяртацца зноў, таму што Я пакінуў свае рэчы ў спакоі,
як, пяць хвілін і хтосьці скраў мой кампутар і мае
тэлефон з майго заплечніка.
А гэта значыць, я атрымаў яго назад, і затым менш праз тыдзень
гэта зноў скралі.
>> А потым ён атрымаў уключаны -
Find My iPhone працягвае быць бескарысным.
Так што я і надалей заахвочваць Вы не выкарыстоўваць яго.
Аказалася на адзін раз, і гэта было ў Масачусецкім тэхналагічным інстытуце, як 15 хвілін праз, і чалавек
назваў гэта тэлефонны нумар, які паказаў ў маім AT & T часопіса выклікаў.
>> Так што я пайшоў у Інтэрнэце, называецца, што тэлефон лік, і гэта пайшло прама ў гэты
аўтаадказчык на іспанскай мове.
І я не чуў пра яго з тых часоў.
Так што я павінен быў атрымаць новы Кампутар і тэлефон.
Я ведаю.
Так.
Але калі вы, хлопцы, жадаеце скінуцца, каб мой кампутар фонд пасля гэтага, вось чаму
Я запрасіў вас сюды.
Жартую.
Але гэта было сапраўды сумна і траўматычны.
>> Але гэта ўсё таму зараз, і менавіта таму р-набор 8 так доўга, таму што
У мяне не было кампутара.
І нехта скраў яго.
І я па электроннай пошце, з просьбай, калі яны ацаніў бы ваша п-набор 8.
Але яны сказалі няма.
І я падумала: я магу ёсць мой кампутар назад?
І яны накшталт, няма.
Жартую.
>> ОК.
Гэта наш апошні раздзел, і ў мяне ёсць пару - у нас ёсць толькі тры
рэчы на ​​парадку дня.
Мы збіраемся пагаварыць трохі аб Q кіраўніцтва.
Тады мы збіраемся правесці 15 хвілін на прахалодным дэма.
Тады мы збіраемся ўсе кажуць да пабачэння адзін з адным.
Вы сапраўды не патрэбны вашы кампутары або ручку або папера для нататак, або
сачыць разам.
Так што я мяркую, калі ў вас ёсць кампутар уверх, то вы знаходзіцеся на Facebook.
Проста кажу.
Калі вы не запоўніўшы Пытанне кіраўніцтва, якое ў першую чаргу.
>> Пытанне кіраўніцтва адкрыты.
У вас быў ліст пра гэта.
Пасля таго як усе Q матэрыял уяўляецца ў Канец года, я атрымліваю ўсё
Q каментары ў балаў ад усіх хто хоча даць мне зваротную сувязь.
І таму, калі вы ідзяце ў Q -
Я не ведаю, калі вы можаце зрабіць гэта, Джэф, таму што ты і пашырэнне студэнт.
Але калі вы ідзяце ў Q, калі ў вас значыць не зрабілі гэта раней, вы выбіраеце ваш
настаўнік, які з'яўляецца Дэвід Малан.
Вы павінны зрабіць яго.
>> І тады вы можаце выбраць TFS.
І вы можаце выбраць, як многія ТФ, як вы хочаце.
Але ёсць 60 з нас.
Вы не павінны выбраць ўсіх.
Вы можаце проста забраць мяне, ці проста выбраць пара іншых людзей, калі вы хочаце, каб
даць ім зваротную сувязь, а таксама.
І тады вы атрымаеце балы на ўсё гэта розных восяў, а затым вы можаце пакінуць
іх уздзеяння.
>> А потым, як праз месяц, Я атрымаю ўсё, што зваротная сувязь.
І гэтак жа, як зваротнай сувязі вы былі даючы мне на працягу семестра, я
чытаць усё гэта.
І гэта сапраўды карысна, і гэта дапамагае мне вырасці як настаўнік і як
індывідуальны.
Так што, калі ласка, не пашкадуйце часу, каб зрабіць гэта.
Мы толькі збіраемся быць тут для, як, 30 хвілін.
Так што калі вы хочаце, у канцы гэтага, у заняць пяць хвілін, і проста запоўніць
Пытанне, таму што гэта не зойме больш часу, чым гэта.
Гэта было б вельмі добра, і вы таксама атрымаць свае ацэнкі назад хутчэй, калі
Вы запаўняеце Q.
>> Так што большасць з вас зрабілі гэта раней -
ці не, каля паловы з вас зрабілі гэта раней.
Але калі вы пачатковец, вось што гэта такое.
Гэта будзе тое ж самае для ўсіх класаў.
Зрабіце гэта.
Гэта зойме пяць хвілін.
А акрамя таго, калі вы робіце гэта крыху цяжка, гэта не самае горшае
у свеце, таму што я, вядома, паставіцца да гэтага сур'ёзна.
>> Так што, калі вы выходзіце мне смайлік, Я цаню гэта.
Але я б таксама ўдзячныя, калі Вы пакінуў мяне больш смайлік.
Але гэта залежыць ад вас.
Я не магу сказаць вам - ці як вялікі смайлік асобе, з вялікай літары Д. Гэта было б
быць яшчэ лепш.
>> Добра, гэта ўсё, што я для Q. Калі вы ёсць якія-небудзь пытанні, вы можаце задаць
мяне, але вельмі мае патрэбу ў тлумачэннях.
Проста, калі ласка, запоўніце яе.
Я б вельмі ўдзячны, і гэта вельмі шмат значыць для мяне.
>> ОК, гэта тое, што мы збіраемся выдаткаваць 15 хвілін перажывае.
Я збіраюся паказаць вам код.
Я думаю, гэта сапраўды выдатна, і гэта прымусіла мяне больш
ўзбуджаецца ў галіне кампутарных навук.
Так што я спадзяюся, што гэта будзе рабіць ж для ўсіх вас.
>> Мы збіраемся адчыніць - і ўсё гэта Код я пашлю да вас пазней.
Але мы толькі збіраемся адчыніць -
Я ў маім тэрмінале -
мы збіраемся адкрыць гэтую праграму называецца [? MySum. ?]
>> Ці ўсё могуць чытаць гэта, або я павінен зрабіць яго больш?
Хто-небудзь можа сказаць мне, што гэты код будзе рабіць, калі я запускаю яго, або тое, што гэта
Праграма будзе рабіць, калі я яго запусціць?
>> [? Аві,?] Што вы думаеце ён збіраецца рабіць?
Аздабленне жавальнай.
Вы не павінны гаварыць з ваш рот адкрытым.
>> АЎДЫТОРЫЯ: Ці значыць гэта ўзяць кучу аргументы, знайсці суму іх вяртаюцца
сума, а затым раздрукаваць яго?
Ці ён прымае ў двух аргументаў, і Затым ён робіць [неразборліва].
А потым ён друкуе ўсё, што вынікі.
>> СПІКЕР: Зачыніць, вельмі блізка.
Хто-небудзь хоча дадаць у [? што Аві?] сказаў?
Вы павінны даць гэтую праграму любыя аргументы каманднага радка?
>> АЎДЫТОРЫЯ: Не.
>> СПІКЕР: Не.
Што адбудзецца, калі вы не даць яму любыя аргументы каманднага радка?
Я проста пішу кропка слэш MySum.
>> АЎДЫТОРЫЯ: 1 плюс 2 роўна 3.
>> СПІКЕР: 1 плюс 2 роўна 3.
І гэта будзе друкаваць гэта.
Вось менавіта.
Вы ўбачыце, што друк е Радок у ніжняй.
Гэта будзе раздрукаваць A, B, і то сума а і Коммерсанта.
І я думаю, вы мяркуеце, што сума працуе правільна.
Добра здагадку.
>> Добра, а што адбудзецца, калі я даць яму тое, што аргумент?
[? Ману? ?]
>> АЎДЫТОРЫЯ: Гэта будзе дадаць любыя Першы аргумент з'яўляецца б.
Або да 2, прабачце.
>> СПІКЕР: справа, да 2.
Хто-небудзь ведае, што strtol робіць?
Гэта ў асноўным atoi.
Atoi на самай справе мудрагелістае версія -
або больш просты варыянт strtol.
Але гэта на самай справе выкарыстоўвае strtol.
І я выявіў, што, таму што я хацеў нешта накшталт atoi, а затым, калі я
зрабіў atoi, я чытаў тут.
І я знайшоў "такія паводзіны такі ж, як "strtol.
Так што гэта ў асноўным atoi для ва ўсіх адносінах.
І вы бачыце, я нават выкарыстоўваць страціўшым 10.
>> Гэта на самай справе дазваляе ўзяць радок, і ператварыць яго ў шэрагу, і абярыце
якой базавы вы хочаце зрабіць яго цалі
Так што гэта падстава 10 прама тут.
Я мог бы зрабіць падстава два для дзесятковай, падстава 16 для шаснаццатковай.
Гэта вельмі выдатна.
Але Карацей кажучы, гэта займае два колькасці і складае іх.
>> Так што давайце запусціць яго.
І вы таксама заўважыце, што некаторыя рэчы -
таму ў мяне Makefile прама тут, і Калі вы адкрыеце, што да, некаторыя рэчы
Вы заўважыце, розныя.
У прыватнасці, гэты аргумент прама тут, вы, верагодна,
не бачыў, што раней.
Як правіла, мы збіраем рэчы з працяжнік нуль, нуль.
Даш нуль, нуль, значыць, не робяць любая аптымізацыя, кампілятар.
Не спрабуйце зрабіць што-небудзь мяркуе, або нічога зрабіць хутчэй бегаць, ці атрымаць
пазбавіцца ад зменных, якія неабходныя.
Ня аптымізаваць гэты код на ўсіх,
>> Я прашу трэцяга ўзроўню аптымізацыя.
Вось я і пытаюся кампілятар рабіць шмат аптымізацый.
Вы можаце змяніць гэта ў Makefile, калі ў вас ёсць гэты код, калі вы хочаце
каб убачыць розныя рэчы.
Якія мы пакажам у секунду.
Такім чынам, мы запусціць свой суму 1 плюс 2 плюс 3.
Хтосьці даў мне два аргументу.
>> АЎДЫТОРЫЯ: 4 і 5.
>> СПІКЕР: 4 і 5.
Дзякуй.
Выдатна, гэта працуе.
Якія іншыя важкія аргументы паспрабаваць, каб пераканацца, што гэта працуе?
Любы?
>> АЎДЫТОРЫЯ: 0.
>> СПІКЕР: 0 і?
>> АЎДЫТОРЫЯ: Адмоўны 3.
>> СПІКЕР: Ён працуе.
Але гэта былі добрыя выбары.
Такім чынам, давайце вернемся сюды.
Гэта mysum.c.
Вы заўважыце, ёсць таксама сёе-тое называецца sumfunction.c.
І гэта кажа, о, ёсць што-то вызначаны ў sumfunction.c.
Я не ўключыць гэты файл тут таму што я не трэба.
Але я звязаць яго, калі я кампіляцыі, якія вы заўважылі.
>> Давайце пракруткі ўверх.
Мы бачылі, калі мы склалі mysum, права там, мы звязаны ў двайковым ад
sumfunction.o.
І мне не трэба файл загалоўка таму што, вядома, ёсць
Аб'яву функцыі.
Гэтак рэзкае ўключаюць звычайна проста ставіць ў аб'яве функцыі.
Тут я проста пакласці яго прама у кодзе.
І таму мне трэба зрабіць, гэта спасылка у бінарны файл, які я раблю.
>> Любыя здагадкі на тое, што у sumfunction.c?
Які код я напісаў у sumfunction.c?
>> АЎДЫТОРЫЯ: [неразборліва].
>> СПІКЕР: Любыя здагадкі?
Да?
>> Залы: Я думаю, вызначае некаторыя [неразборліва].
>> СПІКЕР: Так.
Так што я на запіс дзесятковага суму унутр.
Я пішу гэтую лінію, а затым у мяне адкрыты фігурная дужка, зачыненыя фігурную дужку.
Што вы думаеце я пішу ў тых фігурныя дужкі, ўнутры гэтай функцыі?
Да?
>> АЎДЫТОРЫЯ: Вярнуцца роўна.
>> Працэсар: Гэта сапраўды добрае здагадку.
Хто думае [? Ману?] Правоў?
У ім гаворыцца, вяртаюць плюс б.
Добра, не ўсё.
[? Akshar,?]
вы таксама?
Вы ўпэўненыя?
ОК.
Што?
>> АЎДЫТОРЫЯ: Вы выразна гэта не так.
>> СПІКЕР: Не, я гэтага не зрабіў.
Так, жартую.
Вы маеце рацыю.
Гэта менавіта тое, што ён кажа.
Гэта вяртае плюс б.
Гэта робіць шмат сэнсу.
>> Добра, давайце вернемся тут.
Мы бачым, як загаловак -
вось які вяртаецца тып.
Памятаеце, што мы бачылі ў той дзень адзін, тып якое вяртаецца значэння функцыі, але ідзе
перад імем функцыі дзесятковага.
Вось, я напісаў Int.
Што вы думаеце, што адбудзецца, калі ў гэтым Функцыя, я не пішу Int, але
Я пішу без знака?
Розніца, вядома, у тым, што без знака ўяўляе толькі станоўчыя
цэлыя лікі, і унутр можа быць станоўчым або адмоўным.
>> Так я змяніў вяртанне тып гэтай функцыі.
Гэты код не супадае з гэта вяртанне увядзіце тут.
Што вы думаеце, што адбудзецца пры кампіляцыі?
Вы павінны крычаць на мяне.
Няма крыкі.
>> А калі я запускаю праграму?
Давайце зробім да 0 Negative 3 ці адмоўны 1.
Ён па-ранейшаму працуе, хоць я кажу ён вяртае цэлы лік без знака.
Відавочна, што гэта не вяртанне Цэлы лік без знака.
Гэта вяртае цэлы лік са знакам.
Гэта вяртанне негатыўнае 1.
ОК, гэта дзіўна.
>> Што, калі я іду ў тут і рабіць, што?
Так што я змяніў ўсё ад унутр каб без знака.
Гэта можа заняць толькі цэлыя лікі без знака.
Але мы да гэтага часу думаю, што гэта працаваць?
>> АЎДЫТОРЫЯ: Так.
>> СПІКЕР: Будзе.
Гэта вар'яцтва.
І мы пераходзім у дакладна размеркаваны цэлы лік, мы можам перадаць два падпісалі
цэлы лік, ён усё яшчэ працуе.
>> OK, любыя ідэі, чаму ён усё яшчэ працуе, або тое, што адбываецца?
Так, Джэф.
>> АЎДЫТОРЫЯ: Гэта мае нейкае дачыненне да з аптымізацыяй, што вы
вылучаныя.
>> СПІКЕР: Не.
Мы маглі б змяніць аптымізацыю, гэта будзе працаваць.
Я магу зрабіць гэта для вас, але -
>> АЎДЫТОРЫЯ: Я вазьму на слова.
>> СПІКЕР: Так.
Калі адкрыць файл зборкі прама тут, Я змяніў аптымізацыі.
Такім чынам, вы можаце зрабіць рывок нуль, нуль.
Гэта ўсё роўна будзе працаваць.
Іншыя думкі?
>> Вы, хлопцы, усе павінны працаваць, таму навошта вы чакаеце яго на працу?
Няма?
Маўчанне.
ОК.
Мне прыйдзецца чакаць сем секунд, таму што я задаў пытанне.
>> Так выдатна, што пра З, і ў Вас ёсць верагодна, адчуваў перш - вам
не маглі б мець, гэта можа ў першы раз.
Але як вы ўсё ведаеце, калі я пішу нешта ў C, гэта не ратуе, як
гэта на кампутары.
Гэта захоўваецца ў выглядзе нулёў і адзінак.
Гэта ідзе ад C кода асэмблера.
>> Хто-небудзь бачыў асэмблера і раней, мантаж машын код?
Мы разгледзім у секунду.
Гэта ідзе ад C кода асэмблера.
І вы, хлопцы, ведаеце этапы кампіляцыі.
Вы павінны былі запомніць, што для віктарыны адной, а затым запісаць яго на віктарыне нулявы.
Большасць людзей атрымалі гэта няправільна.
Я думаю, што вы, хлопцы, прыбіў яго.
>> Але, вы, хлопцы, самыя лепшыя раздзел для віктарыны, дарэчы.
Які дзіўны.
Гэта вам не пашкодзіць.
Не турбуйся.
Але гэта сапраўды выдатна.
Добрая праца.
>> І так будзе працягвацца да асэмблеры, і Затым яна пераходзіць да нулёў і адзінак.
І тыя, і нулі захоўваюцца на кампутар, і вось, што захоўваецца ў
a.out, ці ў дадзеным выпадку, выкананы файл.
І кампутар працуе адзінкі і нулі.
Ці не так?
Мы даведаліся гэта раней.
>> Так выдатна, што ёсць, гэта без знака Ідэя, ідэя тыпаў цэлых лікаў без знака,
і гэтак далей, і гэтак далей, гэта тут, у мове Сі.
Тыя, існуе.
Але тыпы не існуюць у адзінкі і нулі.
Тыпы нават не рэальна існуюць у ўзровень мовы асэмблера.
Дык вось тое, што існуе ў З свет, але не існуе ў кампутары
Свет або працэсар свет.
Вось некаторыя абстракцыя, што C мова уключыў, каб зрабіць наш
жыццё прасцей.
>> Так, у рэшце рэшт, я магу напісаць шмат розных рэчаў тут, і гэта
не змянiць сiтуацыю.
Таму, што толькі існуе у З свеце.
Яна не існуе ў адзінкі і нулі свет.
І наша праграма, якi ажыццяўляе ў у адзінкі і нулі свет.
Так што ваш розум відавочна не перегорел.
Але я думаю, што гэта крута.
Так, Джэф.
>> АЎДЫТОРЫЯ: Дык што, калі замест таго, каб рабіць Int, вы робіце знак.
І вы былі -
>> СПІКЕР: Давайце зробім гэта праз секунду.
>> АЎДЫТОРЫЯ: Таму што тады вы атрымаеце без знака адбываецца ад негатыўнага 128 да
127 або ад 0 да 255.
>> СПІКЕР: Так сімвал праблематычна.
Хто-небудзь ведае, чаму сімвал будзе праблематычна, і гэта фактычна
змяніць становішча рэчаў у тыя і обнуляет свет?
>> АЎДЫТОРЫЯ: З-за памеру знак.
>> СПІКЕР: Памер паўкокс 1.
Такім чынам, без знака, таксама 4 байта.
Так сімвал будзе шруба рэчы.
Але тое, што складае 4 байта, што па праезду звязана з паўкокс?
Ці, па крайняй які дадае адзін дадатковы -
Вы можаце змясціць больш на адзін знак пасля гольца.
>> АЎДЫТОРЫЯ: Чар зорка.
>> СПІКЕР: Чар зорка мае 4 байта.
Так што давайце рабіць нешта што гэта сімвал зоркі.
>> Так што гэта, верагодна, працаваць, але мы збіраюся зрабіць нешта яшчэ
больш вар'ятам, чым гэта.
На мой погляд, больш вар'ятам.
>> Я цяпер напісаў функцыю, якая вяртае паказальнік, і ён прымае
паказальнік і значэнне без знака - мы будзем змяніць гэта таму ў цэлае так што мы не
робіць занадта шмат змен адразу.
І гэта мае масіў называецца, індэксы ў масіве і вяртае
адрас.
Мы бачылі гэтыя аператары раней.
Гэта, як вы думаеце гэта будзе рабіць, у сваю чаргу, калі я яго запускаю?
Што вы думаеце, што гэта збіраецца рабіць?
Любыя здагадкі?
>> АЎДЫТОРЫЯ: Segfault.
>> СПІКЕР: Што?
Segfault?
Гэта добрае здагадку.
Том кажа тое ж самае.
Любыя іншыя здагадкі?
>> Хто думае, што гэта збіраецца зрабіць тое ж самае?
Хто думае, што гэта збіраецца да выпадзення?
Ён робіць тое ж самае.
Выбачайце.
>> Але, вядома, мы ўкладваем у 1 і 2.
І тыя і дзейнічае, ці не так?
Давайце паглядзім, мы можам перайсці да Другое месца масіва.
Але што, калі мы зрабілі б адмоўны лік?
Вось, напэўна, лепш здагадка за нешта вяртае памылку сегментацыі.
Ён па-ранейшаму працуе.
>> ОК, гэта цяпер з розуму.
Гэта аднолькава дапушчальным значэннем функцыі сумы.
Гэта робіць сапраўды такі ж рэчы як зваротны а і Коммерсанта.
Хто-небудзь можа растлумачыць, чаму гэта добрая Падводзячы функцыю, або чаму гэта працуе?
Што тут адбываецца?
Чаму гэта зрабіць сапраўды такі жа паняцці, як наш стары функцыі сумы?
[? Akshar,?]
што адбываецца?
>> АЎДЫТОРЫЯ: Таму што, калі ў вас ёсць вось зварот да
вочка памяці -
і калі вы робіце Ампэрсанд, ён ідзе на гэты адрас памяці.
І калі вы ідзяце у б, ты накшталт рухаюцца кроках ад гэтага адрасу памяці,
вы вярнуліся, што.
Так ты на самай справе, па сутнасці, Даданне і б [неразборліва].
Дзе стандартныя аперацыі на гэтым наўзамен?
Маўляў, куды дужкі падаць?
Ці з'яўляецца вяртанне адрас на да або пасля [неразборліва]?
>> СПІКЕР: Гэта будзе ў якасці індэкса ў бы -
або індэкс ў -, а затым вяртае адрас.
Такім чынам, сапраўды, усе разумеюць, што [? Akshar?]
сказаў, і патлумачыў, чаму гэта працуе?
Я не зрабіў, першы раз, калі хто-то патлумачыў гэта мне.
Хто-небудзь Хацелі б карціну гэта растлумачыць?
Мы збіраемся намаляваць карціну, з ніякіх маркераў, што не выдатна.
Знойдзена некаторыя.
>> Таму ў нас ёсць масіў Вось шэраг скрынак.
Першы індэкс 0, індэкс 1, 2, 3, 4, кропка, кропка, кропка.
Тыповы масіў.
І ў дадатак да індэксы, усе яны маюць адрасы памяці.
Так што давайце даць гэтым адрасе ў памяці 13, 14, 15, 16, 17, і гэтак далей.
Усё тут да гэтага часу.
>> Такім чынам, гэта адрас.
Імя масіва, паказальнік там захоўваецца.
Гэта паказальнік, гэта вобласць памяці, на пачатак масіва.
Так што, калі б гэта было масіў, б значэнне 13.
І, вядома, мы можам даць любое значэнне мы хочам.
Чар зоркі, мы можам даць любой адрас памяці мы хочам.
Мы можам даць яму 0, мы можам даць яму адмоўны 1 - адмоўная 1 не існуе,
так што, напэўна праблематычна, але вы бачылі, што ён па-ранейшаму працаваў.
Такім чынам, мы можам даць любую колькасць мы хочам, любы адрас памяці мы хочам.
>> Тады, унутр б кажа, у парадку, пераходзіце гэты лік з крокаў у масіў.
Так што, калі б роўная 2, і роўная 13, мы па адрасе памяці 13.
І мы ідзем два кроку ў, і таму мы тут.
І Ампэрсанд азначае вяртанне адрас гэтага месцы.
І адрас, вядома, 15.
Такім чынам, мы атрымліваем 13 плюс 2, або плюс б, што на 15.
>> Пытанне ў тым, хоць -
Мне вельмі шкада.
Ці значыць гэта, растлумачыць рэчы чаму гэта працуе?
>> Зала: А чаму яна будзе працаваць збіраецца -
так што вы можаце мець масіў і перайсці да адмоўных індэксам?
>> СПІКЕР: Дакладна.
Так мы і зрабілі адмоўныя лікі, так вось -
Ці мае гэта сэнс, хоць, па-першае, [? Аві,?]
для вас?
>> АЎДЫТОРЫЯ: Так я проста [Неразборліва], але -
>> СПІКЕР: Так, гэта вернецца 15.
Калі было 13 гадоў, і б быў 2, гэта вернецца 15.
>> АЎДЫТОРЫЯ: Так нулявая індэксацыя ня стаць праблемай, ці не так?
Таму што вы рухаецеся ад 0.
>> СПІКЕР: Дакладна.
Дык вы рухаецеся - так што калі б быў 0, вы б не рухацца ў любым месцы.
І вы толькі што вярнуліся адрас -
калі б быў 0, што па сутнасці вяртання, што адрас.
Пераходзячы ў сЬаг зоркі а і вяртанне адрас толькі вяртання,
па сутнасці.
>> Добра, пытанне ў тым, чаму адмоўныя лікі працуе?
І гэта сапраўды выдатна, што пра гэта, таму што гэта павінна сегментацыі.
І было б сегментацыі, калі мы зрабіў нешта накшталт гэтага.
Скажам, унутр.
Так гэты код выглядае ідэнтычна і павінны паводзіць сябе аднолькава.
Па сутнасці, х з'яўляецца зменнай смецця, і так што гэта павінна вядуць сябе аднолькава.
>> Давайце зробім гэта -
упс -
у зоркі.
Добра, мы ўжо пачалі атрымліваць памылкі тут, таму што гэта ўжо будзе злавацца
на мяне, таму што ён ужо ведае, што будзе.
У прыватнасці, другі.
Адрас складзеныя памяці звязаны з лакальнай зменнай.
>> Па сутнасці, я не збіраюся скампіляваць гэта, а затым я збіраюся адмяніць рабіць
тое, што мы толькі што зрабілі.
Але паколькі мы ніколі не фактычна доступу, што пастаўлена на памяць
размяшчэнне, ён не збіраецца да выпадзення.
Мы ніколі не самай справе глядзіць на тое, што у другім полі або тое, што ў любым акне
гэтага масіва.
Мы толькі кажу, вось адрас з рэчы, якую мы шукаем і
вярнуцца гэты адрас.
Мы ніколі не на самай справе адбываецца ў Масіў глядзець на гэтым месцы.
І таму, што мы ніколі не дакранайцеся да памяці, мы не патрапіць у бяду.
Мы не атрымаць сегментацыі.
>> Калі б мы паспрабавалі, зноў жа, чапай гэта памяці, сэнсарны, што было ў А ці В -
або кранштэйн б, і мяркуючы, 0 і -
калі 0, нават, гэта было б даволі дрэнна, таму што мы не можам пайсці
ўніз ўсе шляхі туды.
Калі А і У былі і 0, і мы паспрабавалі дакрануцца, што там было, то мы б
трапіць у бяду.
Але калі мы не чапайце тое, што там, мы проста вяртаем адрас, гэта
на самай справе не збіраецца да выпадзення таму гэта дазваляе выконваць гэтыя аперацыі.
Гэта толькі злуецца на вас, і атрымлівае супер злуецца, калі вы спрабуеце закрануць
фактычная памяць і вярнуць тое, што гэта у гэтым месцы памяці.
>> Ці мае гэта сэнс?
Гэта проста з розуму частка С. Такім чынам, мы маем больш з іх адзін.
>> Хто думае, што гэта крута?
Усё больш людзей.
Гэта добра.
ОК, гэта наш апошні.
І я хацеў бы, каб ты мне ці ці вы не думаю, што гэта будзе
зрабіць сапраўды такі ж рэчы.
>> Я гэта запісана недзе.
Я не запамінаючы іх.
>> Давайце паглядзім, 8, бы 4, 4, 2, 4, 0, 8, 0, 3, 4, 4, 2, 4, 0, 4.
Так што гэта масіў, у цяперашні час, не з'яўляецца функцыяй.
І гэта масіў, таму што ў нас ёсць квадрат кранштэйны, ня фігурныя дужкі.
І гэта масіў, які тып?
Любы, хм?
>> АЎДЫТОРЫЯ: Іх шаснаццаткавыя колькасці?
>> СПІКЕР: Але тое, што тып С?
Усе яны маюць шаснаццаткавыя лікі.
Што тып С?
Яна кажа вам.
>> АЎДЫТОРЫЯ: Гэта непадпісаныя сімвалы.
>> СПІКЕР: справа, без знака сімвалы.
І дзве шаснаццаткавыя колькасці адзін байт.
Так што гэта 1, 2, 3, 4, 5, 6, 7, 8, 9 байт.
Гэта масіў з 9 байт.
>> ОК, вы, верагодна, ужо ведаеце, Адказ на гэтае пытанне.
Але, як вы думаеце будзе адбудзецца, калі я запускаю гэта?
Я кажу, зноў жа, у mysum.c, Я чакаю функцыю
, Якая прымае два цэлых колькасці.
І я замест заявіўшы, што сума ўяўляе сабой масіў знакаў.
Што адбудзецца, калі Я бягу. / Mysum і зрабіць?
>> Ну, па-першае, большасць з вас, верагодна, згодныя, што марка - о не, жартую.
Што я зрабіў не так?
Ой-ой.
Гэта павінна быць фігурныя дужкі.
Вось як вы ініцыялізаваць масіў.
Маё дрэннае.
>> Такім чынам, мы ўжо бачылі да гэтага тыпаў з'яўляюцца абстракцыя C-ўзроўню, а ня
абстракцыя ўзровень камп'ютэрнай.
Так што большасць з вас, верагодна чакаў, што гэта зрабіць, або пры ўмове, што ён будзе рабіць.
Але што, калі я запускаю. / Mysum?
Што адбудзецца?
Любыя здагадкі?
>> АЎДЫТОРЫЯ: Гэта збіраецца раздрукаваць ні слова.
>> СПІКЕР: Гэта збіраецца раздрукаваць ні слова.
Якое слова?
>> АЎДЫТОРЫЯ: [неразборліва].
>> СПІКЕР: Любыя іншыя здагадкі?
ОК, раздрукаваць фразу.
Вы можаце мець любую фразу.
Гэта будзе ваша бок.
Любы, хто мае іншае меркаванне?
Ганна, што ваша здагадка?
>> АЎДЫТОРЫЯ: Гэта будзе раздрукаваць -
дзве літары, або [неразборліва] адна літара.
>> СПІКЕР: Адно ліст.
>> АЎДЫТОРЫЯ: Ці магу я разлічваць, як многія [неразборліва]?
>> СПІКЕР: Дзевяць.
Ну, я збіраюся запусціць яго.
Ён робіць тое ж дакладную рэч.
Ён дадае разам два ліку.
Ну, давайце прайсці два аргументу.
Гэта не зойме аргументы.
Так што я не ведаю, дзе яна магла б магчыма, атрымаць гэтыя аргументы.
Але давайце пяройдзем на 100 і 0.
І гэта дадае 100 і 0.
Гэта вар'яцтва.
Думаю, што так.
>> Адмоўны 4, што таксама працуе.
Вы можаце зрабіць усё, што заўгодна.
Гэта ў роўнай ступені дзейнічае функцыя сума.
Гэта функцыя сума.
Але, не, ты хочаш сказаць, што гэта масіў байтаў.
Дык што ж тут адбываецца?
>> Так, зноў жа, давайце вернемся да гэтай ідэі што мы сказалі ў самым пачатку.
Вы ідзяце ад кода C-ўзроўню, да зборкі мову, каб нулёў і адзінак.
Гэта шаснаццатковае.
Але гэта на самай справе проста шмат нулёў і адзінак.
Гэта 72 адзінкі і нулі, ці не так?
72 адзінкі і нулі.
9 байт.
Кожны байт складаецца з 8 бітаў.
Кожны біт ўяўляе сабой адзін або нуль.
Так 72 з іх або нулі.
Я толькі што напісаў іх, як гэта - а ня пісаць яго, як шмат
адзінкі і нулі.
>> Але гэта будзе ісці ад C-ўзроўню мова, да зборкі
мова, да кода.
І гэта будзе раздрукаваць у кодзе, дзесьці, гэтыя 72 адзінкі і нулі
што я напісаў тут.
Так недзе ў тым, што -
давайце тут -
дзесьці ў mysum, праграма, ёсць гэтыя 72 адзінкі і нулі, што я
напісана і сказана гэта напісаць.
>> Зараз любы здагадкі за тое, што тыя, 72 адзінкі і нулі на ўвазе?
>> АЎДЫТОРЫЯ: Напэўна, тое ж паняцці, як вяртаць плюс б.
>> СПІКЕР: Напэўна, тое ж паняцці, як вяртаць плюс б.
Давайце праверым гэта.
Давайце зразумець, як я гэта зрабіў.
>> Так што, калі вы ідзяце сюды, я вам скажу Для выканання гэтай каманды, objdump-S
sumfunction.o.
Пойдзем запусціць яго. objdump -
аб'ект, самазвалы.
У асноўным гэта можа даць мне усё, што я хачу бачыць.
Гэта можа даць мне мове асэмблера.
Ён можа даць мне адзінкі і нулі.
Яна мае масу сьцягоў.
Гэта той, які мы збіраемся выкарыстоўваць у цяперашні час.
Dot -
як вы бачыце на слайдах -
працяжнік капітал S кажа, перасыпаць, Зыходны код -
гэтая лінія гэта ад C - са зборкай Код і з нулёў і адзінак.
І мы збіраемся запусціць гэта на sumfunction.o.
Таму што гэта будзе лягчэй ўбачыць.
Зноў - хм?
>> АЎДЫТОРЫЯ: Вы выразна гэта не так.
>> СПІКЕР: Але я сапраўды збіраюся каб ачысціць яго ні на секунду.
Я спачатку збіраецца адкрыць проста sumfuntion.o.
>> АЎДЫТОРЫЯ: Вы выразна гэта так у першы раз.
>> СПІКЕР: Класічны.
Сума -
што гэта цяжка слова, усё ж.
Вы былі б здзіўлены.
ОК, так што гэта sumfunction.o.
Я не мог нават сказаць вам.
Там вельмі шмат нулёў, ясна шмат Нулі, і ёсць некаторыя іншыя
рэчы, якія не нулі.
Але ў асноўным нулі.
Падобна на тое, ёсць некаторыя з іх.
Такім чынам, ясна, што гэта цяжка чытаць.
Гэта двайковы мову.
>> Давайце зараз адкрыць яго -
што?
Што я раблю не так?
Хіба я літарах правільна?
Добра, гэта нязручна.
Мне трэба адну секунду, каб высветліць тое, што я раблю няправільна.
Гэта адна памылка.
Гэта дзіўна.
О, вось чаму.
>> Я збіраюся вярнуцца да нашага першапачатковага адзін, таму мы можам паглядзець на
аб'ектны код гэтага.
Таму што на самой справе не збіраецца быць што заўгодна, калі мы проста паставіць
адзінкі і нулі цалі
Там мы ідзем.
ОК, так што кожны можа ўбачыць гэта.
Гэтая функцыя, як я ўжо сказаў, патушыць лініі C -
радкоў зыходнага кода -
з некаторымі інструкцыямі па зборцы.
>> Вось наш зыходны код лінія.
Вось адзін, вось яшчэ.
Вось інструкцыя па мантажы.
Вось як яны выглядаюць.
Інструкцыя па мантажы -
Вы можаце даведацца больш з іх, калі вы бераце іншыя класы CS, але яны
як правіла, гэта інструкцыя.
А потым крыніцай і прызначэння.
>> А потым тут з'яўляецца двайковы код што адпавядае гэтай зборкі
інструкцыя.
Так як вы можаце бачыць, гэтая функцыя сума, у рэшце рэшт, гэта тры
інструкцыя па мантажы.
Толькі тры.
Адзін мов -
гэта м-о-V пазначае Move.
Дадаць стэнды для Add.
І г-е-т стаіць за вяртанне.
Такім чынам, адна мов, адзін дадаць, адзін вяртанне.
І гэта, тут, з'яўляюцца нулі і тыя, якія адпавядаюць гэтым кодам.
>> Так гэтыя нулі і адзінкі, калі вы ведаю тых, вы можаце проста пакласці
тыя, прама цалі
А потым ён будзе рабіць сапраўды такі ж рэч.
Таму што, у рэшце рэшт, усё , Неабходна выканаць гэта доўгая серыя
нулёў і адзінак.
І вось што ваш код на самай справе.
>> І прычына -
давайце паглядзім на адну рэч.
Ці ёсць у мяне Makefile, адкрытым?
Так што, калі мы вярнуліся ў працяжнік нуль, нуль тут -
шкада, загалоўная літара О, капітал аб роўна нулю, ня роўная нуля, роўная нулю.
І мы сапраўды рабілі, гэта было б яшчэ працуюць гэтак жа.
Але цяпер вы заўважыце, што ёсць нашмат больш інструкцыі па зборцы.
Гэта таму, што, зноў жа, я спытаў кампілятар не рабіць якой-небудзь аптымізацыі.
>> Так што я яшчэ мог узяць усе гэтыя нулёў і адзінак, і кінуць іх у,
і што будзе працаваць.
Я проста зрабіў тое аптымізацыя, таму што гэта крыху лягчэй, то,
напісаць гэты масіў.
Але гэта будзе працаваць так жа добра.
>> Добра, мы збіраемся зрабіць адну заключную рэч, таму што я думаю, гэта самая халодная частку.
Нягледзячы на ​​тое, усё гэта выразна ўжо падарваны і гаворкі.
Нашы розумы падарваны.
[Неразборліва]
>> Такім чынам, гэта з іншага класа CS, які супер прыгожыя,
што я ўзяў -
CS61.
Я настойліва рэкамендую вам прыняць яго.
Але халаднаватае частка аб гэтым факце, што рэчы проста нулёў і адзінак,
у тым, што ўсе нулёў і адзінак.
>> Такім чынам, вы можаце ўзяць файл з пашырэннем правільныя нулёў і адзінак, якія вы хочаце
дзесьці ў ім, і выкарыстоўваць гэтую секцыю нулі і адзінкі ў залежнасці сума.
>> Што я маю на ўвазе пад гэтым?
Я маю на ўвазе вы можаце ўзяць файл малюнка, мае правільную серыю нулёў і
тыя, якія друкуюць нешта да выявы.
І адна праграма можа інтэрпрэтаваць гэта малюнак, але вы можаце інтэрпрэтаваць яго, калі
Вы хочаце, як функцыя сумы.
>> Так што, калі мы хацелі, каб адкрыць, для Напрыклад, гэты вобраз.
Пойдзем, Hello Kitty.
Выдатны невялікі малюнка.
У тут ёсць тое, што радок з нулёў і адзінак.
Гэтыя 72 нулёў і адзінак існуюць у гэтай фатаграфіі.
>> Так што я магу зрабіць, то, гэта напісаць -
Я павінен памятаць, дзе яны знаходзяцца.
Я знайду, што ў секунду.
Але мы робім -
дазвольце мне даведацца, дзе яны знаходзяцца.
Адзін сек.
Давайце зробім -
>> АЎДЫТОРЫЯ: [неразборліва].
>> СПІКЕР: Дзякуй.
Так што, калі мы выконваем гэтую праграму, якая замест чытае ў файле, то ён ідзе
гэтым паказчыку ў файле.
А потым, зноў жа, гэтак жа, як mysum, бярэ два ліку.
Мы можам дадаць нумары сапраўды гэтак жа, як мы рабілі раней, што ідзе ў
паказаць вам, як той факт, што, у канцы у дзень, усе гэтыя рэчы
нулёў і адзінак.
І гэта проста, як вы выбіраеце інтэрпрэтаваць іх.
>> І калі вы на самой справе выглядаюць на гэтай фатаграфіі -
давайце павелічэння няшмат.
Ці ўсе могуць гэта ўбачыць?
Вы заўважыце, прама тут, ёсць некаторыя дзіўныя пляма.
Пойдзем - гэта зыходны малюнак.
Вы заўважыце, тут няма ніякага пляма.
Гэта значыць код функцыі сумы, з'яўляецца тое, што мала пляма прама там.
>> А на самай справе, зноў жа, калі вы даведаецеся больш пра гэта, вы зразумееце, што гэта
Hello Kitty, які мае нават больш пляма, мае код, які можа ўзяць на сябе
кампутар, калі ён не абаронены адпаведна.
Такім чынам, вы можаце запусціць гэты.
Я не збіраюся запусціць яго прама цяпер.
Але вы можаце запусціць гэты Добры дзень Кітым малюнак, і ён можа
атрымаць кантроль над кампутарам.
>> Так што ўсё для дэма.
Хто-небудзь ёсць якія-небудзь пытанні, каментары, праблемы?
Я думаю, што гэты матэрыял з'яўляецца захапляльным.
Гэта натхніла мяне, каб даведацца больш.
Я настойліва рэкамендую, калі вы зацікаўлены ва ўсіх на CS, пагаварыць са мной.
Нават пры тым, што я грамадскія навукі Канцэнтратар, я CS, сярэдняе, так
Я да гэтага часу ведаю няшмат.
Але я, вядома, ведаю, што класы, якія неабходна зрабіць.
Я думаю, што гэта ўсё сапраўды цікава, і я заклікаю вас, вядома ж,
даведацца больш, калі вы зацікаўленыя.
>> Добра, у мяне ёсць адна заключная рэч.
Выбачайце.
Ёсць пытанні?
Я не спыніўся, каб пачакаць, калі хто-небудзь якія-небудзь пытанні па гэтай нагоды.
>> Хто-небудзь будзе CS Канцэнтратар?
Або думаць пра гэта?
Раз, два, тры, чатыры.
Адзін - толькі адзін.
Ганна з'яўляецца адзіным рука вось падняў аўтарытэтна.
ОК, гэта крута.
Асам, што вы збіраецеся рабіць?
>> АЎДЫТОРЫЯ: [неразборліва].
>> СПІКЕР: Канстанцін?
>> АЎДЫТОРЫЯ: Фізіка.
>> СПІКЕР: Вау, гэта было хутка.
У вас быў няўдалы вопыт у CS50?
[Неразборліва], што вы збіраецеся рабіць?
>> Залы: Я паняцця не маю,.
>> СПІКЕР: Курт?
>> АЎДЫТОРЫЯ: эканом або CS.
>> СПІКЕР: эканом або CS.
Том?
>> АЎДЫТОРЫЯ: Я раблю Stat.
>> СПІКЕР: Стат?
ОК.
Хто ты?
>> АЎДЫТОРЫЯ: Я?
>> СПІКЕР: Так.
>> АЎДЫТОРЫЯ: Стат.
>> СПІКЕР: Стат.
О, там вы ідзяце.
Тым, пагаварыць з Олдэн.
Эмілі, пра што вы?
>> АЎДЫТОРЫЯ: біямедыцынскія -
>> СПІКЕР: Вы ў гэтым раздзеле?
>> АЎДЫТОРЫЯ: Не.
>> СПІКЕР: Добра, гэта Эмілі.
Яна мой сябар.
Відавочна не так добра пра іншае, , Таму што яна дае мне нялёгка.
Вы можа быць прыемней для мяне перад з усіх, мой вучань -
>> АЎДЫТОРЫЯ: Я раблю сваё Q кіраўніцтва.
>> СПІКЕР: У самай справе?
Ой-ой.
ОК, вы дзіўна.
Я так цябе люблю.
Аб хлопчык.
>> Ва ўсякім выпадку, я, учора ўвечары, як і ўсе -
Я ўпэўнены, што ўсе, здаецца, сапраўды падкрэсліў прама цяпер.
Я не ведаю, з'яўляюцца першакурснік - з'яўляюцца вы, хлопцы, у стане стрэсу?
Я адчуваю падкрэсліў.
Гэта было падобна, вы ідзяце дадому на Дзень падзякі.
Ты як, я збіраюся рабіць усе гэтыя рэчы.
>> АЎДЫТОРЫЯ: Гэта так адрозніваецца.
>> СПІКЕР: Так, і вы вернецеся.
Джэф, вы не адчуваеце сябе такім чынам?
>> АЎДЫТОРЫЯ: Я проста падумаў, Я б зрабіў няшмат.
>> СПІКЕР: ОК, выдатна.
Так што я вярнуся, і ў мяне няма зрабіў нічога.
І ўсё гэта супер напружаны.
І я разумею, па-сапраўднаму, то, аб тым, ці варта мяне, тых я
збіраюся скончыць усе, што маю, каб.
Але ўчора ўвечары, я не падкрэсліў, Я быў проста трохі сумна.
Так што я напісаў у сваім дзённіку аб што мне было сумна а.
І мне было сумна пра гэта раздзеле у гэтым класе падыходзіць да канца.
>> Так што я як раз збіраўся чытаць для вас, хлопцы невялікі ўрывак з майго часопіса,
з мінулай ночы.
Ці магу я атрымаць некаторыя сурвэткі, некаторыя тканіны ад Тома?
Не, я буду плакаць.
Я не плачу.
Не тое, каб вы не можаце плакаць, Я проста не плач.
Я нават не ведаю, калі мая сляза залозы працаваў - слёзныя пратокі.
Я не плакала на працягу доўгага часу.
>> АЎДЫТОРЫЯ: [неразборліва].
>> СПІКЕР: Добра, дзякуй.
Добра, ёсць трохі прадмову -
ёсць некаторыя іншыя часткі майго часопіса ўваход, таму што я спрабую часопісе кожны
ноч, перш чым я дабраўся да ложка.
Я настойліва рэкамендую журналявання.
Гэта дапаможа вам апрацаваць рэчы, а таксама быць вельмі цэнім ваш дзень.
І гэта робіць яго нашмат прасцей шукаць назад на свой дзень і зразумець, што
было шмат добрага Тое, што адбылося.
Нават калі вы адчуваеце сябе сапраўды падкрэсліў ноччу або вельмі засмучаны, або
вельмі сумна або стаміўся.
>> О, мой бог.
Я нават не ведаю, калі гэта напісана, што добра, таму што я не карэктаваць яго.
Але мы будзем чытаць.
Я звычайна не чытаю мой часопіс, гэта відавочна.
>> "Заўтра я буду вучыць майго фінал CS50 частку года.
Гэта вар'яцтва, як ляціць хутка час.
Тым не менш, я здзіўлены, наколькі адрозніваецца мой вопыт выкладання ў гэтым годзе было
чым калі я быў на другім курсе.
Для пачатку, я вызначана ведаць матэрыял лепш.
Але не кажаце свой першы кагорту студэнтаў, што.
Больш важна, аднак, я зразумеў, што радасць, якая прыходзіць ад разумення
уверх перад пакоі тое, што пачынаецца як чужыя, але заканчвае тым, як, у
меры, Facebook сябры, не першы год выпадковасцю.
Хутчэй, гэта ад веды, што, у некаторых малых чынам, вы дапамагаеце
таленавіты, ўдумлівы, цудоўны, і гарачыя людзі даведацца крыху больш
аб кампутарнай навукі.
>> Вы зруху, што лямпачку проста трохі ў гняздзе, так што ён у стане
ззяць ярчэй, чым вас, або яны, мог сабе ўявіць ў пачатку семестра.
Вы дапамагаеце ператварыць гэтыя хмурыцца патэнцыял росту ўніз і задаваць пытанні, якія
аказваць падтрымку, але ўсё ж дазваляюць студэнты ўстаць самастойна.
>> Гэта, вядома, не будзе перабольшаннем сказаць, што гэты раздзел з'яўляецца маім любімым
частку тыдня.
Ці нават, што я не вырашаюся сказаць, што гэта усё, у 5:30 вечара кожны тыдзень, ведаючы
што гэта будзе занадта доўга пакуль мы не сустрэнемся зноў.
>> Тым не менш, я неверагодна ўдзячны кожны, хто даў мне гэта
магчымасць аддаць іншым.
Для Давіда, за яго цярпенне і давер.
Для кіно і вытворчасці экіпажа, для прымушае мяне выглядаць некалькі рэспектабельна.
І, самае галоўнае, каб мае студэнты, без якіх мяне не было б ніякіх падстаў для
праводзяць 10 гадзін, высвятляючы, лепшы спосаб прыцягнуць паказальнікі, ці выкласці
Табліца дэльфінаў, праз JavaScript.
Як заўсёды, гэта было дабраславеньнем ".
>> Так з гэтым, дзякуй вам, хлопцы.
Я буду бачыць вас усіх на CS50 кірмашы, і Хакатон, калі вы там.
І калі ў вас ёсць пытанні, я буду прытрымлівацца не вакол, пакуль няма больш.
Але я дзякую вам, хлопцы, за выдатны год.
>> [Апладысменты]
>> СПІКЕР: я мог бы плакаць.