СПИКЕР: Хорошо, таким образом, вы не поверите, но на прошлой неделе, в понедельник, в Пирс, я был в подвале. Я никогда не иду в 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 ярмарке, и Хакатон, если вы там. И если у вас есть вопросы, я буду придерживаться не вокруг, пока нет более. Но я благодарю вас, ребята, за замечательный год. [Аплодисменты] СПИКЕР: я мог бы плакать.