Głośnik: OK, więc, nie będzie w to uwierzyć, ale w zeszłym tygodniu, w poniedziałek, w Pierce, ja był w piwnicy. Nigdy nie idź do Pierce'a. I nigdy nie będę z powrotem, ponieważ Zostawiłem swoje rzeczy sam za, jak, pięć minut i ktoś ukradł mój komputer i mój telefon z mojego plecaka. Co oznacza, że ​​mam go z powrotem, i to mniej niż tydzień później że skradziono ponownie. A następnie został włączony - Znajdź mój iPhone nadal być bezużyteczny. Więc nadal zachęcać nie go używać. Okazało się tylko raz, i to w MIT jak 15 minut później, a osoba nazwał to numer telefonu, który pokazał w moim AT & T dziennika połączeń. Poszedłem więc w Internecie, zwany że telefon numer i poszedł prosto do tego sekretarka w języku hiszpańskim. A ja nie słyszałem o nim od. Więc musiałem dostać nowy komputer i telefon. Wiem. Tak. Ale jeśli chcecie chip do mojego Komputer po to fundusz, dlatego Poprosiłem cię tutaj. Tylko żartowałem. Ale to było bardzo smutne i traumatyczne. Ale to wszystko z powrotem teraz, i dlatego p-set 8 tak długo, ponieważ Nie ma komputera. I ktoś go ukradł. I wysłałem maila z pytaniem, czy są by klasa Twojego p-set 8. Ale powiedzieli, że nie. A ja na to mogę mieć mój komputer z powrotem? A oni na to, nie. Tylko żartowałem. OK. To jest nasza ostatnia część, a ja mam Kilka - mamy tylko trzy rzeczy na porządku dziennym. Zamierzamy porozmawiać trochę o przewodniku Q. Następnie jedziemy do spędzenia 15 minut na chłodnym demo. Wtedy będziemy wszyscy mówią widzenia do siebie. Tak naprawdę nie potrzebują komputerów lub długopis i papier do notatek, lub podążać. Zakładam więc, jeśli masz komputer się, to jesteś na Facebooku. Tylko mówię. Chyba, że ​​wypełnienie Q Podręcznik, który jest pierwszy. Q Podręcznik jest otwarty. Masz już e-mail o tym. Gdy wszystkie rzeczy Q jest przedstawiony na Koniec roku, mam wszystkie Komentarze Q w punktacji z wszystkich kto zdecyduje się dać mi informacje zwrotne. I tak, gdy idziesz w Q - Nie wiem, czy można to zrobić, Jeff, bo jesteś studentem i rozszerzenie. Ale kiedy idziesz w Q, jeśli nie mają zrobił to wcześniej, wybierz swój Nauczyciel, który jest David Malan. Musisz zrobić go. A potem można odebrać TFS. I można odebrać jak najwięcej TF, jak chcesz. Ale są 60 z nas. Nie musisz odebrać wszystkich. Możesz po prostu po mnie, albo po prostu wybrać Kilka innych osób, jeśli chcesz, aby dać im informacji zwrotnych, jak również. A następnie dostać się na wszystkie te wyniki różne osie, a następnie można pozostawić im informacje zwrotne. A potem, jak miesiąc później, Wezmę te wszystkie opinie. I tak jak w razie byłeś dając mi przez cały semestr, I Przeczytałem wszystko. I to jest bardzo pomocne i pomaga mi rozwijać jako nauczyciel i jako indywidualnie. Tak więc, proszę, trochę czasu, aby to zrobić. Jesteśmy tylko będzie tutaj za, jak, 30 minut. Tak więc, jeśli potrzeba, na końcu tej, trwać pięć minut, i po prostu wypełnić Q, ponieważ nie bierze więcej czasu niż to. To byłoby wspaniałe, a także powrotem szybciej uzyskać stopnie, jeśli można wypełnić Q. Tak więc większość z was zrobili, że przed - lub nie, około połowa z was tego zrobić wcześniej. Ale jeśli jesteś studentem pierwszego roku, to co to jest. To będzie taki sam dla wszystkich warstw. Zrobić. Trwa pięć minut. Ale również, jeśli nie to trochę poważnie, to nie jest najgorsza rzecz, w świecie, bo na pewno go poważnie. Więc jeśli mi opuścić buźkę, Będę wdzięczny. Ale chciałbym również wdzięczni, jeśli zostawił mnie bardziej niż buźkę. Ale to zależy od ciebie. Nie mogę ci powiedzieć - lub jak duży buźkę twarz, z kapitału D. Że być jeszcze lepiej. OK, to jest wszystko, co mam do Q. Jeśli masz jakieś pytania, możesz poprosić mnie, ale dość oczywiste. Tylko, proszę, wypełnić go. Chciałbym naprawdę doceniam to, a to oznacza wiele dla mnie. OK, to jest to, co mamy zamiar spędzić 15 minut przechodzi. Mam zamiar pokazać wam trochę kodu. Myślę, że to jest naprawdę fajne, i to ma mnie więcej podekscytowany w informatyce. Więc mam nadzieję, że będzie to robić samo dla was wszystkich. Mamy zamiar otworzyć - i to wszystko Kod wyślę do Ciebie później. Ale my po prostu się otworzyć - Jestem w moim terminalu - zamierzamy otworzyć ten program nazywa [? MySum. ?] Czy każdy może przeczytać, że, lub należy je powiększyć? Czy ktoś może mi powiedzieć, co to kod zrobić, gdy go uruchomić, lub co to Program zrobi, gdy go uruchomić? [? Avi,?] Co myślisz to zrobi? Wykończenie żucia. Nie należy rozmawiać z usta otwarte. PUBLICZNOŚCI: Czy to potrwać kilka argumenty, znaleźć sumę nich wracać suma, a następnie wydrukować go? Lub zajmuje się dwoma argumentami, i to robi [niesłyszalne]. A następnie drukuje się co Wyniki są. Głośnik: Blisko, bardzo blisko. Czy ktoś chce dodać do [? co Avi?] powiedział? Czy trzeba dać ten program wszelkie argumenty wiersza polecenia? PUBLICZNOŚCI: Nie. Głośniki: Nie Co się stanie, jeśli nie dać wszelkie argumenty wiersza polecenia? Po prostu napisz dot slash MySum. PUBLICZNOŚCI: 1 plus 2 równa 3. Głośnik: 1 plus 2 równa 3. I będzie to wydrukować to. To się dokładnie zgadza. Zobaczysz, że drukowania f linia na dole. Będzie to wydrukować, B i Następnie suma a i b. I myślę, że można zakładać, że Suma działa poprawnie. Dobre założenie. OK, a co się stanie, jeśli dać to, co argumentem? [? Manu? ?] PUBLICZNOŚCI: To co będziemy dodawać Pierwszy argument jest b. Lub 2, przepraszam. Głośnik: Tak, do 2. Czy ktoś wie, co strtol robi? Jest to w zasadzie atoi. Atoi jest rzeczywiście fantazyjne wersja - lub prostsza wersja strtol. Ale faktycznie korzysta strtol. I okazało się, że się bo chciałem coś jak atoi, a następnie, kiedy nie atoi, czytałem tutaj. I znalazłem "to zachowanie jest taka sama jak "strtol. Więc jest to w zasadzie atoi na wszystkich zamiarów i celów. I widzisz, że nawet użyć nieważne i 10. To rzeczywiście pozwala w ciąg, i przekształcić go w szeregu, i wybierz co baza chcesz to zrobić w. Więc to jest baza 10 tutaj. Mogłem zrobić podstawa dwa dla dziesiętny, podstawa 16 na system szesnastkowy. To całkiem fajne. Ale krótko mówiąc, to ma dwa numery i dodaje je razem. Więc uruchom go. I będzie można również zauważyć, że Są pewne rzeczy - więc mam makefile tutaj, i Jeśli otworzysz się, że pewne rzeczy można zauważyć, są różne. W szczególności, argument tu, to prawdopodobnie nie widziałem, że przed. Ogólnie rzecz biorąc, możemy skompilować rzeczy z kreską zero, zerowej. Dash zera, zero, oznacza nie rób wszelkie optymalizacje, kompilator. Nie próbuj zrobić coś wyjątkowego, lub zrobić coś uruchomić szybciej, lub uzyskać uwolnić od zmiennych, które są konieczne. Nie zoptymalizować ten kod wcale Pytam, na trzecim poziomie optymalizacja. Więc pytam kompilator zrobić Wiele optymalizacji. Możesz to zmienić w makefile, gdy masz tego kodu, jeśli chcesz zobaczyć różne rzeczy. Które pokażemy w drugim. Więc uruchomić moją sumę 1 plus 2 plus 3. Ktoś dał mi dwa argumenty. PUBLICZNOŚCI: 4 i 5. Głośnik: 4 i 5. Dziękuję. Świetne, to działa. Jakie są inne dobre argumenty spróbować, aby upewnić się, że działa? Ktoś? PUBLICZNOŚCI: 0. Głośnik: 0, a? PUBLICZNOŚCI: Negatywne 3. Głośnik: To działa. Ale to były dobre wybory. OK, więc wróćmy tutaj. To mysum.c. Zauważysz tam także coś nazywa sumfunction.c. I to mówi, oh, jest coś zdefiniowane w sumfunction.c. Nie zawierają ten plik tutaj bo nie trzeba. Ale połączyć go kiedy mogę skompilować, które zauważyliście. Załóżmy, przewiń w górę. Widzieliśmy, gdy skompilowany mysum, prawo tam, powiązane w binarny z sumfunction.o. I nie potrzebujesz pliku nagłówka ponieważ, oczywiście, nie ma deklaracja funkcji. Tak ostre obejmują normalnie tylko puts w deklaracji funkcji. Tutaj właśnie umieścić go prosto w kodzie. I tak musisz zrobić, to związek w pliku binarnego, który robię. Wszelkie domysły dotyczące tego, co jest w sumfunction.c? Jaki kod Pisałem w sumfunction.c? PUBLICZNOŚCI: [niesłyszalne]. Głośnik: Wszelkie domysły? Tak? WIDOWNI: Myślę, definiuje niektóre [niesłyszalne]. Głośnik: Tak. Więc piszę int suma int. Piszę ten wiersz, a następnie mam otwarte nawias klamrowy, zamknięty nawias klamrowy. Co sądzisz piszę wewnątrz tych nawiasy klamrowe, wewnątrz tej funkcji? Tak? PUBLICZNOŚCI: Powrót równa. Procesor: To jest naprawdę dobre przypuszczenie. Kto myśli, [? Manu?] Ma rację? Mówi zwrócić plusa b.. OK, nie każdy. [? Akshar,?] ty też? Na pewno? OK. Co? PUBLICZNOŚCI: Zostałeś wpisany to źle. Głośniki: Nie, ja nie. Tak, żartuję. Masz rację. To jest dokładnie to, co mówi. To powrót do plusa b.. To sprawia, że ​​wiele sensu. OK, wróćmy tutaj. Widzimy, jak nagłówek - to typ zwracany. Pamiętaj, widzieliśmy, że jednego dnia, rodzaj funkcji wrócić, ale idzie przed nazwą funkcji int. Tutaj pisałem int. Co się stanie, jeśli w tym funkcja, nie piszę int, ale Piszę bez znaku? Różnica oczywiście jest, że bez znaku reprezentuje tylko pozytywne liczby całkowite, i int może być dodatnia lub ujemna. Więc zmieniłem powrót typ tej funkcji. Ten kod nie zgadza wpisz tutaj ten powrót. Co sądzisz się stanie kiedy mogę skompilować? Należy krzyczeć na mnie. Nie wrzaski. A co, gdy uruchamiam program? Zróbmy przed 0 Negative 3 albo ujemne 1. Nadal działa, mimo że mówię to powrót liczbę całkowitą bez znaku. Najwyraźniej nie jest to powrót liczba całkowita bez znaku. To powrót podpisane całkowitą. To powrót negatywny 1. OK, to jest dziwne. A co, jeśli pójdę w tu zrobić? Więc zmieniłem wszystko z int do unsigned. To może trwać tylko liczby całkowite. Ale mamy jeszcze, że będzie to działać? PUBLICZNOŚCI: Tak. Głośnik: Będzie. To jest szalone. I mijamy się wyraźnie przypisać całkowitą, możemy przekazać dwa podpisana całkowitą, to nadal działa. OK, żadnych pomysłów, dlaczego wciąż działa, lub to, co się dzieje? Tak, Jeff. PUBLICZNOŚCI: To ma coś wspólnego z optymalizacji, które podświetlony. Głośniki: Nie Możemy zmienić optymalizacji, to nadal działa. Mogę to zrobić dla Ciebie, ale - PUBLICZNOŚCI: wezmę na słowo. Głośnik: Tak. Jeśli otworzysz plik makefile tutaj, Zmieniłem optymalizacji. Więc można zrobić kreskę zera, zera. Będzie nadal działać. Inne pomysły? Wy wszyscy spodziewać do pracy, tak dlaczego można oczekiwać, że do pracy? Nie? Cisza. OK. Muszę czekać siedem sekund, bo zadałem pytanie. Tak fajna rzecz o C, a ty prawdopodobnie doświadczyłeś - Ciebie może nie, może to za pierwszym razem. Ale jak wiecie, kiedy piszę coś w C, nie zapisać jak Ten komputer. Jest zapisane jako zer i jedynek. To idzie z kodu C do kodu montażowej. Czy ktoś widział kod montaż przed, Kod montaż maszyn? Przyjrzymy się w drugim. To idzie z kodu C do kodu montażowej. I wiecie etapy kompilacji. Trzeba było zapamiętać, że do quizu jeden, a następnie zapisz go na quizie zera. Większość ludzi to źle. Myślę, że wam się udało. Ale, jesteście najlepsze sekcja dla quizów, tak przy okazji. Co jest niesamowite. To nie zaszkodzi. Nie należy się martwić. Ale to jest naprawdę fajne. Dobra robota. Więc idzie do asemblera, i następnie idzie do zer i jedynek. I jedynki i zera są zapisywane na komputer, i to, co zapisane w a.out, lub w tym przypadku, plik wykonywalny. I komputer działa jedynki i zera. Prawda? Nauczyliśmy się tego wcześniej. Tak fajne jest to niepodpisane pomysł, idea rodzajów ints niepodpisany, i tak dalej, i tak dalej, to jest się tu w języku C. Te istnieją. Ale typy nie istnieją jedynki i zera. Rodzaje naprawdę nie istnieją jeszcze poziomu asemblera. Tak, to jest coś, co istnieje w C świat, ale nie istnieje w komputerze świecie lub procesor świecie. To pewne, że C abstrakcja język włączyła, aby nasi Mieszka łatwiejsze. Tak więc na koniec dnia, można napisać wiele różnych rzeczy tutaj, i to nie robi różnicy. Dlatego, że istnieje tylko świecie C. Nie istnieją zer i jedynek świecie. A nasz program jest wykonywany w jedynki i zera świecie. Więc twój umysł nie jest jeszcze jasno dmuchane. Ale myślę, że to jest cool. Tak, Jeff. PUBLICZNOŚCI: Tak, jeśli zamiast robi int, zrobisz char. A ty - Głośnik: Zróbmy to w sek. PUBLICZNOŚCI: Bo wtedy można dostać niepodpisany będzie od 128 do ujemnego 127 lub 0 do 255. Głośnik: Tak char jest problematyczne. Czy ktoś wie dlaczego char będzie problematyczne, i to faktycznie zmiany sytuacji w tych i zeruje świat? PUBLICZNOŚCI: Ze względu na wielkość char. Głośnik: Rozmiar char jest 1. Więc bez znaku jest także 4 bajty. Tak char by przykręcić rzeczy. Ale to, co jest, że jest 4 bajty podobne do char? Lub na który dodaje jeden dodatkowy - można umieścić jeden znak po char. PUBLICZNOŚCI: Char gwiazdki. Głośnik: Char gwiazda ma 4 bajty. Więc zróbmy coś to gwiazda char. Więc to pewnie działa, ale jesteśmy zamiar zrobić coś jeszcze bardziej szalony niż to. Moim zdaniem, bardziej szalony. I już teraz napisane funkcję zwracającą wskaźnik, a to trwa wskaźnik i wartość bez znaku - będziemy zmienić z powrotem na int, więc nie jesteśmy podejmowania zbyt wielu zmian na raz. I ma tablicy nazywanej, indeksy do tablicy i zwraca adres. Widzieliśmy te podmioty przed. To, co myślisz to będzie zrobić w zamian, gdy uruchomię go? Co myślisz, że będzie to zrobić? Wszelkie domysły? PUBLICZNOŚCI: segfault. Głośnik: Co? Wysypać? To dobre przypuszczenie. Tom mówi to samo. Wszelkie inne przypuszczenia? Kto myśli, że będzie zrobić to samo? Kto myśli, że to się wysypać? To nie to samo. Przepraszam. Ale, oczywiście, możemy umieścić w 1 i 2. I te są zarówno ważne, prawda? Zobaczmy, możemy przejść do Drugie miejsce z tablicy. Ale co, jeśli zrobiliśmy b liczba ujemna? To jest chyba lepsze przypuszczenie czegoś segfaulting. Nadal działa. OK, to jest szalone. Jest to równie ważnej funkcji SUMA. To nie samo dokładne jako A i B powrotnego. Czy ktoś może wyjaśnić, dlaczego jest to dobre funkcję podsumowania, ani dlaczego to działa? Co się tu dzieje? Dlaczego to robi dokładnie to samo coś jak nasz stary funkcji suma? [? Akshar,?] co się dzieje? PUBLICZNOŚCI: Bo kiedy masz to jest adres do Pamięć lokalizacja - i kiedy to zrobić znaku handlowego, to idzie do adresu pamięci. A gdy idziesz do B, jesteś rodzajem ruchu kroków od adresu pamięci, Wracasz, że. Więc jesteś w rzeczywistości, w rzeczywistości, Dodawanie i b [niesłyszalne]. Gdzie są standardowe operacje tego zwrotu? Jak, gdzie nawiasy spaść? Czy powrót na adres przed lub po [niesłyszalne]? Głośnik: To będzie indeks do b - lub indeks do - a następnie powrót adres. OK, więc nie wszyscy rozumieją co [? Akshar?] powiedział i wyjaśnił, dlaczego to działa? Ja nie, po raz pierwszy kogoś wyjaśnił mi to. Czy ktoś lubi zdjęcia to wyjaśnić? Mamy zamiar narysować obrazek, z markery, to świetnie. Znaleziono kilka. Więc mamy tablicę, która jest Szereg pola. Pierwszy z nich to indeks 0, indeks 1, 2, 3, 4, kropka, kropka, kropka. Typowa tablica. I oprócz tego, że wskaźniki, wszyscy mają adresy pamięci. Warto więc dać ten adres pamięci 13, 14, 15, 16, 17, i tak dalej. Wszyscy tutaj tak daleko. Tak więc jest adres. Nazwa tablicy, wskaźnik jest tam zapisywane. To wskazówka, że ​​to miejsce w pamięci, do początku tablicy. Tak, jakby to była tablica, będzie wartość 13. I, oczywiście, możemy dać dowolna wartość chcemy. Char gwiazda, możemy dać dowolny adres pamięci chcemy. Możemy dać mu 0, możemy nadać mu ujemne 1 - ujemna 1 nie istnieje, tak, to jest to chyba problemem, ale obejrzałeś, że nadal pracował. Więc możemy podać dowolną liczbę chcemy, każdy adres pamięci chcemy. Następnie, int b mówi, OK, przejdź pod ten numer z wchodzi do matrycy. Tak więc, gdy B jest równe 2, a równa się 13, jesteśmy na adres pamięci 13. I idziemy dwa kroki, i tak, że tu jesteśmy. I oznacza powrót Ampersand adres tego miejsca. I adres jest, oczywiście, 15. Więc mamy 13 plus 2, lub oraz b, które jest 15. Pytanie jest, choć - Przykro mi. Czy to wyjaśnienie rzeczy dlaczego to działa? PUBLICZNOŚCI: Dlaczego to działa dzieje - więc można mieć tablicę i przejdź do ujemnego wskaźnika? Głośnik: Prawo. Więc zrobiliśmy liczb ujemnych, tak to jest - Czy to ma sens, choć, Pierwszy, [? Avi,?] dla Ciebie? PUBLICZNOŚCI: Tak, jestem po prostu [Niesłyszalne], ale - Głośnik: Tak, to będzie powrót 15. Jeśli było 13, a b to 2, to zwróci 15. PUBLICZNOŚCI: Więc nie indeksowanie od zera się problem, prawda? Ponieważ jesteś w ruchu od 0. Głośnik: Prawo. Więc jesteś w ruchu - więc jeśli b było 0, nie ruszać się nigdzie. A ty właśnie wrócił adres - jeśli b było 0, to zasadniczo powrót ten adres. Przekazując char star i powrocie adres jest tylko powrót, zasadniczo. OK, pytanie jest dlaczego liczby ujemne działa? I to jest naprawdę fajne rzeczy na temat to, ponieważ powinno się wysypać. I to wysypać jeśli zrobił coś takiego. Powiedzmy, int. Tak to wygląda identycznie i kod powinien zachowywać się identycznie. Zasadniczo, x oznacza zmienną śmieci, i tak to powinno zachowywać się identycznie. Zróbmy to - Ups - w gwiazdy. OK, mamy tu już się błędy, bo to już będzie zły na mnie, ponieważ już wie, co się zbliża. W szczególności, drugi. Adres ułożone pamięci związane ze zmiennej lokalnej. Zasadniczo, nie zamierzam skompilować ta, a potem mam zamiar cofnąć zrobić co właśnie zrobiliśmy. Ale dlatego, że nigdy nie jesteś w rzeczywistości dostępu do tego, co znajduje się w pamięci lokalizacja, to nie będzie się wysypać. Nigdy nie jesteś rzeczywiście patrząc na to, co w drugim polu lub co jest w każdym oknie tej tablicy. Jesteśmy tylko mówiąc, tu jest adres z rzeczy szukamy i powrót ten adres. Że nigdy nie będzie w rzeczywistości Tablica szukać w tym miejscu. A ponieważ nigdy nie dotykać pamięci, nie wpaść w kłopoty. Nie uzyskać segfault. Jeśli będziemy starali się, ponownie, dotknij, że pamięci, dotknąć tego, co było na a lub b - lub uchwyt b, i przy założeniu, było 0 i - jeśli było 0, a nawet, że będzie dość zły, bo nie możemy go w dół całą drogę. Jeśli A i B zarówno 0, i staraliśmy się dotknąć tego, co było, to byłoby kłopoty. Ale jeśli nie dotykać, co tam jest, po prostu powrócić adres, to jest naprawdę nie dzieje się wysypać z powodu Pozwala wykonać te czynności. To tylko jest zły na siebie, i dostaje Super zły, podczas próby i dotknij Rzeczywista pamięć i wrócić co w tym miejscu pamięci. Czy to ma sens? To jest po prostu szalona część C tak, mamy jeden z nich. Kto myśli, że to jest fajne? Więcej osób. To dobrze. OK, to jest nasz ostatni. I chciałbym, aby mi powiedzieć, czy czy nie uważasz, że to się dzieje zrobić to samo dokładne. Mam to zapisane gdzieś. Nie mam ich na pamięć. Zobaczmy, 8, b 4, 4, 2, 4, 0, 8, 0, 3, 4, 4, 2, 4, 0 4. Więc to jest tablica, teraz, nie funkcji. I to jest tablica ponieważ mamy plac wsporniki, nie nawiasy klamrowe. I to jest tablica z jakiego typu? Każdy, hmm? PUBLICZNOŚCI: Ich liczba w systemie szesnastkowym? Głośnik: Ale co jest typu C? Oni wszyscy mają liczb szesnastkowych. Co jest typu C? Dowiesz się. PUBLICZNOŚCI: To niepodpisane znaki. GŁOŚNIK: Racja, niepodpisane znaki. I dwie liczby szesnastkowe to jeden bajt. Są to tylko 1, 2, 3, 4, 5, 6, 7, 8, 9 bajtów. Jest to tablica z 9 bajtów. OK, prawdopodobnie już wiesz, Odpowiedź na to pytanie. Ale, co myślisz będzie zdarzyć, gdy uruchomię to? Mówię, ponownie, w mysum.c, Czekam na funkcję że bierze się dwie liczby całkowite. A ja zamiast powiedzieć tej sumy jest tablicą znaków. Co się stanie, gdy Uruchomić. / Mysum i zrobić? Cóż, po pierwsze, większość z was będzie prawdopodobnie zgadzają się, że marka - O nie, tylko żartowałem. Co robię nie tak? Uh oh. To powinno być nawiasy klamrowe. To, w jaki sposób zainicjować tablicę. Moje złe. Więc już wcześniej, że typy widział to abstrakcja C-poziom, nie abstrakcja poziomu komputera. Tak więc większość z was pewnie spodziewał się, że Marka lub zakładając, że to uczyni. Ale co, gdy uruchomię. / Mysum? Co się stanie? Wszelkie domysły? PUBLICZNOŚCI: To będzie wydrukować słowo. Głośnik: To będzie wydrukować słowo. Jakie słowo? PUBLICZNOŚCI: [niesłyszalne]. Głośnik: Wszelkie inne przypuszczenia? OK, wydrukować frazę. Może masz jakieś zdanie. To będzie po twojej stronie. Każdy, kto ma inne przypuszczenia? Anna, jakie jest twoje przypuszczenie? PUBLICZNOŚCI: To będzie wydrukować - dwie litery, lub [niesłyszalne] jedna litera. Głośnik: Jeden list. PUBLICZNOŚCI: Czy mogę liczyć, jak wiele [niesłyszalne]? Głośnik: Dziewięć. Cóż, mam zamiar go uruchomić. To nie samo dokładne. Dodaje dwie liczby. Cóż, przekazać dwa argumenty. Nie przyjmują argumenty. Więc nie wiem, gdzie może może dostać się do tych argumentów. Ale niech przechodzą na 100 i 0. I dodaje, 100 i 0. To szaleństwo. Myślę, że tak. Negatywne 4, który działa też. Możesz robić wszystko co chcesz. To jest równie ważna funkcja suma. Jest to funkcja suma. Ale nie, mówisz, że to tablica bajtów. Więc co tu się dzieje? Tak więc, ponownie, wróćmy do tego pomysłu powiedział, że na samym początku. Przejść z poziomu kodu C, do montażu język, z zer i jedynek. To szesnastkowym. Ale to jest tak naprawdę dużo zer i jedynek. To jest 72 zer i jedynek, prawda? 72 zer i jedynek. 9 bajtów. Każdy bajt ma 8 bitów. Każdy bit jest jeden lub zero. Tak, 72 z nich lub zera. Właśnie napisał je tak - niż pisanie go jako dużo zer i jedynek. Ale to będzie od poziomu C język, do montażu język, w kodzie. I będzie to wydrukować w kodzie, Gdzieś te 72 zer i jedynek że napisałem tutaj. Gdzieś że - chodźmy tutaj - gdzieś mysum, program jest są te 72 zer i jedynek, że mam napisał i powiedział to napisać. Teraz każdy na co te domysły 72 zer i jedynek na myśli? PUBLICZNOŚCI: Prawdopodobnie sam coś jak powrót do plusa b.. Głośnik: Prawdopodobnie sam coś jak powrót do plusa b.. Sprawdźmy to. Załóżmy, dowiedzieć się, jak to zrobiłem. Więc jeśli wrócisz tu, mówię ci uruchomienie tej komendy, objdump-S sumfunction.o. Chodźmy go uruchomić. objdump - obj, zrzucić. Zasadniczo może dać mnie co chcę zobaczyć. To może dać mi asemblera. To może dać mi jedynki i zera. Ma mnóstwo flag. To jest jeden jedziemy używać do teraz. Kropka - jak widać na slajdach - Kapitał kreska S mówi, przeplatać, Kod źródłowy - linia ta jest z C - z zespołem Kod oraz z zer i jedynek. I mamy zamiar uruchomić to na sumfunction.o. Bo to będzie lepiej widoczne. Ponownie - hmm? PUBLICZNOŚCI: Zostałeś wpisany to źle. Głośnik: Ale ja naprawdę dzieje , aby usunąć go na chwilę. Jestem pierwszy otworzy tylko sumfuntion.o. PUBLICZNOŚCI: Ty to orkisz źle za pierwszym razem. Głośnik: klasyczna. Sum - to jest trudne słowo, choć. Zdziwiłbyś się. OK, więc to jest sumfunction.o. Nie mogłem nawet powiedzieć. Jest wiele zer, wyraźnie dużo od zera, a nie jakiś inny rzeczy, które nie zera. Ale głównie zera. Wygląda na to, że jest kilka z nich. Tak wyraźnie, to jest trudne do odczytania. To język binarny. Niech teraz go otworzyć - co? Co robię źle? Ja pisze go poprawnie? OK, to jest niewygodne. Potrzebuję jedną sekundę, aby dowiedzieć się, co robię źle. To jest jeden błąd. To dziwne. Och, to dlaczego. Mam zamiar wrócić do naszych początkowych jeden, więc możemy patrzeć Kod obiektu tego. Ponieważ nie będzie naprawdę być cokolwiek, kiedy tylko umieścić zer i jedynek w. Nie idziemy. OK, więc każdy może zobaczyć. Funkcja ta, jak już powiedziałem, zgasić linii C - - linie kodu źródłowego z niektórych instrukcji montażu. Oto nasza linia kodu źródłowego. Oto jeden, oto kolejny. Tutaj jest instrukcja montażu. To, jak wyglądają. - Instrukcja montażu można dowiedzieć się więcej z nich, jeśli wziąć inne klasy CS, ale są generalnie instrukcja. A potem źródła i przeznaczenia. A następnie tutaj jest kod binarny który odpowiada tym zespole instrukcja. Więc jak widać, funkcja ta suma, Na koniec dnia, to trzy instrukcja montażu. Tylko trzy. Jednym mov - m-o-v oznacza ruch. Dodaj stoisk na dodawanie. I r-e-t oznacza Return. Więc jeden mov, jeden dodatek, jeden powrót. A to, tutaj, to zera i Te, które odpowiadają tym kodem. Tak więc ci, zer i jedynek, gdy wiedzą ci, możesz po prostu umieścić ci prosto w. A następnie będzie to robić samo dokładne. Ponieważ pod koniec dnia, wszystkie jesteś wykonanie jest długa seria zer i jedynek. I to jest to, co naprawdę jest Twój kod. A powód - spójrzmy na jednej rzeczy. Czy mam makefile otwarte? Jeśli więc wróciliśmy do kreska zero, zero, tu - Przepraszamy, kapitał o kapitał o zero, nie zero, zero. A my nie zrobić, że będzie wciąż działają tak samo. Ale teraz można zauważyć, że istnieją wiele więcej instrukcji montażu. To dlatego, że znowu poprosiłem kompilator nie robić żadnych optymalizacji. Więc może jeszcze podjąć wszystkie te zer i jedynek, i wrzucą ich w, i że działa. Właśnie zrobiłem optymalizacje, ponieważ to jest trochę łatwiej, a następnie, napisać tę tablicę. Ale będzie to działać tak samo dobrze. OK, mamy zamiar zrobić jedną, ostatnią rzeczą, bo myślę, że to najfajniejsza część. Mimo, że każdy jest wyraźnie już dmuchane i oniemiała. Nasze umysły nie są przepalone. [Niesłyszalne] A więc, są to z innej klasy CS co jest bardzo interesujące, że brałem - CS61. Gorąco zachęcam do jej podjęcia. Ale fajne strony o tym fakt, że rzeczy to tylko zera i jedynki, są takie, że wszystko jest zer i jedynek. Więc można wziąć plik zawierający poprawne zer i jedynek, które chcesz gdzieś w nim, i użyć tego odcinka zer i jedynek w funkcji Suma. Co mam na myśli? To znaczy można zrobić plik obrazu, który ma prawidłowy cykl zer i te, które drukują coś się do obrazu. I jeden program może interpretować to obrazu, ale można go zinterpretować, jeśli chcesz, jako funkcję suma. Więc jeśli chcemy otworzyć, dla Na przykład, ten obraz. Chodźmy, Hello Kitty. Wspaniały mały obraz. Tutaj jest, że ciąg zer i jedynek. Te 72 zer i jedynek istnieje w tym obrazie. Więc co można zrobić, to, to napisz - Muszę pamiętać, gdzie są. Znajdę, że w sekundę. Ale my - pozwól mi dowiedzieć się, gdzie one są. Jeden sek. Zróbmy - PUBLICZNOŚCI: [niesłyszalne]. Głośnik: Dzięki. Jeśli więc wykonać ten program, który zamiast czyta w pliku, to idzie do tego wskaźnika w pliku. A potem znowu, tak jak mysum, wykonuje dwa numery. Możemy dodać numery dokładnie tak samo jak robiliśmy wcześniej, który idzie do pokazać, jak fakt, że na koniec dnia, wszystkie te rzeczy są zer i jedynek. I to jest, jak wybrać do ich interpretacji. A jeśli rzeczywiście szukać na tym zdjęciu - niech powiększyć trochę. Czy każdy może go zobaczyć? Można zauważyć tu, tam niektóre dziwne rozmazywanie. Chodźmy - jest oryginalny obraz. Zauważysz, tutaj nie ma smug. To jest kod do funkcji SUMA, jest to, że trochę rozmazywanie tam. I rzeczywiście, jeszcze raz, jeśli nauczysz się więcej o tym, zdasz sobie sprawę, że ten Hello Kitty, który ma jeszcze większe rozmazywanie, ma kod, który może przejąć komputer, jeśli nie jest chroniony odpowiednio. Więc rzeczywiście można uruchomić tego. Nie idę, aby go uruchomić teraz. Ale można uruchomić tego Witaj Kitty obraz, a może przejąć kontrolę nad komputerem. Więc to wszystko na pokaz. Czy ktoś ma jakieś pytania, komentarze, obawy? Myślę, że ten materiał jest fascynująca. To zainspirowało mnie, aby dowiedzieć się więcej. Gorąco polecam, jeśli jesteś zainteresowany w ogóle na CS, mów do mnie. Mimo, że jestem wiedza o społeczeństwie Koncentrator, jestem CS, wtórne, tak I nadal nie wiemy trochę. Ale na pewno wie, co Zajęcia należy podjąć. Myślę, że to wszystko jest bardzo interesujące, i zachęcam was, oczywiście, do dowiedzieć się więcej, jeśli jesteś zainteresowany. OK, mam jedną, ostatnią rzecz. Przepraszam. Masz pytanie? I nie zatrzymać się i czekać, czy ktoś miał jakieś pytania odnośnie tego. Czy ktoś będzie CS Koncentrator? Lub o tym myśleć? Raz, dwa, trzy, cztery. Jeden - tylko jeden. Anny jest tylko ręka, która jest podniósł autorytatywnie. OK, to jest fajne. Assam, co zamierzasz zrobić? PUBLICZNOŚCI: [niesłyszalne]. Głośnik: Constantine? PUBLICZNOŚCI: Fizyka. Głośnik: Wow, to było szybkie. Miałeś złe doświadczenia w CS50? [Niesłyszalne], co zamierzasz zrobić? PUBLICZNOŚCI: Nie mam pojęcia. Głośnik: Curt? PUBLICZNOŚCI: Econ lub CS. Głośnik: Econ lub CS. Tom? PUBLICZNOŚCI: robię Stat. Głośnik: Stat? OK. Co u ciebie? PUBLICZNOŚCI: Ja? Głośnik: Tak. PUBLICZNOŚCI: Stat. Głośnik: Stat. Och, proszę. Tom, porozmawiaj Alden. Emily, co ty? PUBLICZNOŚCI: Biomedyczna - Głośnik: Czy jesteś w tym rozdziale? PUBLICZNOŚCI: Nie. Głośnik: OK, to jest Emily. Ona jest moim przyjacielem. Najwyraźniej nie, że dobry z przyjacielem, bo ona daje mi ciężko. Możesz być milszy dla mnie z przodu wszystkich, mój uczeń - PUBLICZNOŚCI: Robię swoje Q przewodnik. Głośnik: Naprawdę? Uh oh. OK, jesteś niesamowity. Kocham cię tak bardzo. O rany. W każdym razie, ja, wczoraj, jak wszystko - Jestem pewien, że każdy wydaje się naprawdę Podkreślił teraz. Nie wiem, jest studentem pierwszego roku - są wy uczucie podkreślił? Czuję podkreślił. To było jak, idziesz do domu na Święto Dziękczynienia. Jesteś jak, mam zamiar robić te wszystkie rzeczy. PUBLICZNOŚCI: To jest tak różne. Głośnik: Tak, i wrócisz. Jeff, nie czujesz się w ten sposób? PUBLICZNOŚCI: Myślałem Zrobiłbym trochę. Głośnik: OK, świetnie. Więc wracam, i nie mają zrobił nic. I to wszystko bardzo stresujące. I obawiam się, szczerze zaniepokojony, o to, czy jestem zamierza zakończyć wszystko, co mam do. Ale ostatniej nocy, nie byłem zestresowany, Byłem trochę smutny. Tak jak napisałem w moim dzienniku o co byłem smutny. I byłem smutny o tej sekcji w tej klasie zbliża się do końca. Więc ja po prostu się czytać dla was mały fragment z mojego dziennika, z ostatniej nocy. Czy mogę dostać jakieś serwetki, niektóre tkanki z Tomem? Nie będę płakać. I nie płacz. Nie, że nie można płakać, Ja tylko nie płacz. Ja nawet nie wiem, czy moja łza gruczoły pracował - łzowych. Nie płakała w długim czasie. PUBLICZNOŚCI: [niesłyszalne]. Głośnik: OK, dzięki. OK, jest trochę przedmowa - istnieje kilka innych części mojego dziennika wpis, bo staram się każdego czasopisma noc zanim dostałem się do łóżka. Gorąco polecam w dzienniku. To pomaga przetwarzać rzeczy, a także być bardzo wdzięczni dnia. I to sprawia, że ​​o wiele łatwiej szukać powrót na dzień i uświadomić sobie, że było wiele dobrego rzeczy, które się stało. Nawet jeśli czujesz się naprawdę podkreślił w nocy lub bardzo zdenerwowany, lub naprawdę smutne i zmęczone. Och, mój Boże. Ja nawet nie wiem, czy to jest napisane, że dobrze, bo nie sprawdzane go. Ale będziemy go czytać. I zazwyczaj nie czytają moje czasopismo, oczywiście. "Jutro nauczę moja ostateczna Sekcja CS50 roku. To szalone, jak szybko leci czas. Jednak ja uderzył, jak różne moje doświadczenie w tym roku było nauczanie niż kiedy byłem na drugim roku. Na początek, na pewno znać materiał lepiej. Ale nie mów mojej pierwszej kohorty studentów, że. Co ważniejsze jednak, zdałem sobie sprawę, że radość, która pochodzi od sytuacji w przedniej części pomieszczenia co zaczyna jako obcych, ale kończy się jak na najmniej, Facebook przyjaciele, nie pierwszego roku fuks. Przeciwnie, jest to od wiedząc, że w jakiś mały sposób, pomagasz utalentowana, miło, wspaniały, i namiętne ludzie uczą się nieco więcej o informatyce. Przesunięcie że jesteś po prostu żarówki bit w gnieździe tak, że jest w stanie świecić jaśniej niż ty, albo oni, mógł sobie wyobrazić w semestrze początku. Pomagasz włączyć te marszczy brwi do góry nogami w dół i zadając pytania, które wsparcie, ale nadal pozwalają studentów stanąć na własnych. To nie jest na pewno przesadą powiedzieć, że to jest mój ulubiony odcinek część tygodnia. A nawet, że waham się powiedzieć, że jest wszystko, co 17:30 każdego tygodnia, wiedząc, że to będzie zbyt długo Do następnego spotkania. Mimo, że jestem bardzo wdzięczny każdy, kto mi to podano możliwość dzielenie się z innymi. Do Dawida, za cierpliwość i zaufanie. Do ekipy filmowej i produkcji, dla co mnie spojrzeć nieco szacunku. I, co najważniejsze, do moich studentów, bez których bym nie mają powodów do spędzić 10 godzin na zastanawianie się najlepiej sposobem na wskaźniki, lub rozłożyć Stół z delfinami, za pośrednictwem JavaScript. Jak zawsze, to było błogosławieństwo. " Więc z tym, dziękuję wam. Do zobaczenia wszystkim na targach CS50 i hackathon, jeśli jesteś tam. A jeśli masz pytania, będę trzymać wokół dopóki nie ma więcej. Ale dziękuję wam za wspaniały rok. [Aplauz] Głośnik: mogę płakać.