СПІКЕР: Добре, таким чином, ви не повірите, але минулого тижня, в понеділок, в Пірс, я був у підвалі. Я ніколи не йду в 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 мова включив, щоб зробити наш життя простіше. Так, зрештою, я можу написати багато різних речей тут, і це не змінити ситуацію. Тому, що тільки існує в З миру. Вона не існує в одиниці і нулі світ. І наша програма, що здійснює в в одиниці і нулі світ. Так що ваш розум явно не перегорів. Але я думаю, що це круто. Так, Джефф. АУДИТОРІЯ: Так що, якщо замість того, щоб робити 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 ярмарку, і Хакатон, якщо ви там. І якщо у вас є питання, я буду дотримуватися не навколо, поки ні більше. Але я дякую вам, хлопці, за чудовий рік. [Оплески] СПІКЕР: я міг би плакати.