DAVID MALAN: Witamy z powrotem, wszyscy. Tak jak wczoraj, będziesz pamiętać, że skupiliśmy się na tych tematów tutaj. Więc mieliśmy cztery nadrzędne topics-- prywatności, bezpieczeństwa i społeczeństwa; technologie internetowe; Chmura obliczeniowa; i ostatecznie, tworzenie stron internetowych. Czy ktoś ma przepustowość lub czas oglądać Mały John Oliver ostatniej nocy? To rzeczywiście dość zabawne, jeśli nie trochę przerażające. Wszelkie pytania na niczym zrobiliśmy wczoraj? Ewentualne wyjaśnienia? Wszelkie pytania, które chcesz zrobić pewność, że dotyka on dzisiaj w jakiejś formie? Tak czyste łupków. Więc co jest na porządku dziennym dzisiaj? Więc pomyślałem, że zaczniemy dziś spojrzeniem na to, co zwykle znany jako obliczeniowej thinking-- w ryzyko upraszczając, myślenie jak komputer, może myśli jak inżynier, i próbuje zacząć uporządkować myśli lub daje lepsze poczucie co jest zaangażowany w rzeczywistości dowodził komputer coś zrobić Tytułem programowania. I będziemy trzymać go w dość Wysoki poziom, prawie angielskim, ale starają się wykorzystać znajome Przykłady sformalizowanie jak byś go o rozwiązywaniu problemów. I będziemy ponownie trochę CS tematy, jak abstrakcji, które pojawiły się kilka razy wczoraj algorytmy, a następnie reprezentacji. I to gdzie zaczniemy już za chwilę. Potem spójrz na programowaniu. Będziemy spojrzeć na niektóre podstawowe konstrukcje z którymi mogą się zapoznać a może nawet znaleźć dość intuicyjne. Przyjrzymy, w rzeczywistości, przy programowaniu próbki Środowisko to jest bardzo łatwo dostępne, bardzo zabawny i rzeczywiście ukierunkowane dla dzieci do 12 roku życia wzwyż. Spędzimy tam kilka minut a następnie wziąć sprawy do niższego poziomu i rzeczywiście mówić o niektórych Algorytmy i struktury danych, by tak rzec, że programiści zazwyczaj korzystają rozwiązywać problemy o wiele więcej skuteczniej niż to polubisz być w stanie obejść się bez nich w ogóle. Następnie po obiedzie, będziemy spojrzeć w stosy technologii, która jest po prostu fantazyjny sposób na powiedzenie zbiory technologii które można wykorzystać do rozwiązać jakiś problem. A my mówimy o alfabecie zupa z języków, które istnieją today-- Java i Python i C ++ i PHP Ruby i wszelkiego rodzaju inne rzeczy. Weźmiemy zerknąć na wzorcach projektowych. Programiści z czasem przyjęły metodologii które wydają się im pomóc rozwiązywać problemy łatwiej. Kiedy zaczniesz widzieć siebie piśmie ten sam rodzaj kodu po raz kolejny, osób sformalizowanie tych powtórzeń Nazwy i przypisywać im a następnie wykorzystać je i promować je ostatecznie. I porozmawiamy trochę o strategii mobilnych jakby co to znaczy faktycznie zrobić aplikację mobilną lub mobilną stronę internetową. Czy robisz to dla Androida? Czy robisz to dla iOS? Czy robisz to dla obu tych? A jakie są kompromisy? I wreszcie, weźmiemy do programowania WWW spojrzenie, które to wspólne określenie Naprawdę opisywaniu każdej chwili piszesz oprogramowanie, które jest przeznaczona do pracy w sieci, czy na telefonach lub komputerów stacjonarnych lub laptopów. Weźmiemy krótkie spojrzenie na bazy danych i projektowanie nim, choćby dlatego, że prawie każdy ciekawa aplikacja web-based te dni ma jakieś bazy danych. W przeciwnym razie, że będzie po prostu być statyczny. A baza danych pozwala na dokonywanie Zmiany w czasie, czy sam lub od użytkowników. I będziemy rozważyć, w jaki sposób pójdzie o projektowaniu że baza danych i rodzaj żargonu które mogą pochodzić z inżyniera Dyskusja na tablicy podczas gdy w rzeczywistości realizacji aplikacja po raz pierwszy. Porozmawiamy o krótko API, użyteczne usługi które można użyć, aby stanąć na barki innych, czy firm lub osoby i rozwiązać swoje własne problemy szybciej. A potem być może będziemy babrać nieco z JavaScript, język programowania, który jest używany Zarówno w przeglądarkach w dzisiejszych czasach, ale także w serwerach. I być może, będziemy ponownie, czas na to pozwala, niektóre z hands-on web materiał my wczoraj i integrować dwa razem zanim odroczyć. Więc z that-- co ahead-- jest nie brakuje niczego, co chciałby, aby upewnić się wstawiać i dotknąć w pewnym momencie. Jeśli to do głowy, dostosowania go niebawem. Ale dlaczego nie zaczniemy z spojrzeć na obliczeniowej myślenia. I pozwól mi zaproponować, obliczeniowa myślenie jest, ponownie, rodzaj opisu wysokiego poziomu co informatyk może zrobić. I rzeczywiście, zacznijmy z trzech składników, które Może wchodzić obliczeniowej myślenia. To tylko jeden ze sposobów opisywania go. Moglibyśmy oczywiście zdefiniować to na wiele sposobów. Ale pozwól mi zaproponować, przez wzgląd na dziś że światowych problemów, wszystkich problemów na świecie, kiedy zbliżył przez informatyk mógł uznać za co będziesz połączeń wejść, które trzeba znudzisz się, co będziemy nazywać Algorytmy, które następnie dają wyjść. Innymi słowy, całe Świat rozwiązywania problemów Żądam można destylować pod Te trzy składniki. Więc co mam na myśli wejść? Wejścia jest tylko to, co masz przekazane w celu rozwiązania. Na przykład, oto stary problem w szkole. Jeśli mam książkę telefoniczną tu i Chcę wyglądać mniej więcej do niego, to jest mój wkład. Mam 1000 lub tak Strony w książce telefonicznej. To jest wejście do mojego problemu. I chcę, aby znaleźć coś jak Mike Smith, więc znajomego którego nazwa i numer jest mam nadzieję, że w tej książce adresowej. To przed dniami komórce telefony, więc nie mogę po prostu znajdź go. Więc muszę zrobić to stare Szkoła i faktycznie wyszukiwania te wejścia do jakiegoś odpowiedź. I ta odpowiedź jest po prostu będzie na miano wyjście. Więc wejście jest książka telefoniczna. Algorytm jest cokolwiek zestaw Kroki używam znaleźć Mike Smith. A wyjście jest, mam nadzieję, numer telefonu Mike'a Smitha. I to wtedy byłoby po prostu przedstawiciel większości żadnego problemu się ze jesteś praworęczny wejścia i chcą produkować wyjść. Więc zanim weźmiemy pod uwagę proces dzięki którym możemy rozwiązać ten problem, Mike Smith i znalezienie coś w tym stylu, rozważmy pierwszy i z last-- wejścia i wyjścia. Fizycznie, oczywiście, wejście tutaj jest cała masa papieru sklejone w postaci książki telefonicznej. Ale komputery, laptopy z course-- i stacjonarnych, a nawet telefony Są one days-- tych urządzenia elektryczne. I na koniec dnia, co jest jedyne wejście do komputera? Dobrze, że to coś w rodzaju Ten kabel o mocy. I podłączyć go do ściany, a Mam przepływ elektronów, która pozwala mi uruchomić maszynę. A może te elektrony są tworzone poprzez mego baterii. A na koniec dnia, to jest jedyną rzeczą, wchodząc w moim laptopie. I tak bardzo interesujące rzeczy jest ostatecznie wychodzi, czy za pomocą drukarki lub ekranu lub audially lub podobne. Więc jeśli wszystko, co mamy w naszych podstawową wprowadzane do komputera jest prąd, więc po prostu Elektrony wchodzili i lub na zewnątrz, i tak jak możemy użyć tego wejścia faktycznie reprezentują informacje? Innymi słowy, w jaki sposób uzyskać z prostej przepływ elektryczności do reprezentowania rzeczywista numery lub litery rzeczywiste lub rzeczywiste obrazy na ekranie lub rzeczywiste filmy lub wiadomości e-mail lub dowolną liczbę z nich wyższego szczebla, koncepcje jeśli będzie, że na Koniec dnia jakoś muszą być przechowywane w tym Elektroniczne urządzenie mechaniczne używając tylko tych prostych ingredients-- elektrony wchodzą i wychodzą? Tak więc wydaje się, że w najprostszej formie jedyny rodzaj stanów Mam w moim świecie, więc do speak-- warunki w moim world-- jest albo Mam elektrony przepływające, prąd płynących, lub zrobić not-- tak dalej, off. I niech sformalizować i wyłączane, jako informatyk może, tylko z 1 i 0. Miejmy tylko opisują niektóre arbitralne ale spójny numer do niego. 1 oznacza, na 0 oznacza się. Albo można też uznać to za Środki na prawdziwych i fałszywych środków. Można również zrobić czarny białe lub czerwone i niebieskie. Trzeba tylko dwa deskryptory. A informatycy będzie zazwyczaj wystarczy użyć 0 do 1. Więc jeśli tak jest, moim jedynym alfabetu jest składający się z 0 i 1-ki, jak mógłbym dostać się do wyrównania liczby 2 w komputerze, nie mówiąc już numer 3 lub litera alfabetu lub zdjęcie lub film? W jaki sposób sortowania bootstrap się od tej podstawowej zasady od 0 i 1, a właściwie reprezentują coś bardziej interesującego? Cóż, postawmy na to pytanie zawieszone na chwilę i rozważyć coś mam nadzieję, że znajomy, nawet jeśli tak naprawdę nie myślał o że w szczegóły na 10, 20, 30, 40, 50 więcej lat. Co to jest? Jak byś się wymawia to? Nie jest to podchwytliwe pytanie. Wiele, ale co to jest? 1, 2, 3, lub 123. I podobało mi się, jak mówiłeś, 1, 2, 3, ponieważ jest to jeden ze sposobów oglądania go. 1, 2, 3, to sekwencją z trzech symboli. To zdjęcia, które mamy Teraz mają słowa dla. A jeśli rodzaj je wszystkie przeczytać razem, typowa ludzka w języku angielskim powiedzieliby 123. I to jest coś w rodzaju wyższym poziomie koncepcji, czuje się jak rozsądnie dużej ilości. Ale jak się tam dostać? Cóż, to może być trochę czasu od już myślałem o tym w ten sposób, ale w moim dzień, Nauczyłem się tego rodzaju jak kolumnie 1, tym 10 na Kolumna i kolumna 100. Tak jak mówi Lakisa, to 1, 2, 3, ale jest to również 123. Ale w jaki sposób dostać się z Była do tego ostatniego? Dobrze, byś typowo turystyczna kolumna 100, mam 1. Więc to tak, jakby powiedzieć 1 100 razy. A następnie w kolumnie 10 za, mam 2. Więc to tak, jakby powiedzieć 10 razy 2. W pozycji 1 w kolumnie, mam 3. Więc to tak, jakby powiedzieć 1 razy 3. A jeśli dodać te rzeczy Podsumowując, to oczywiście 100 plus 10 plus 3. I och, to dlaczego mam tego wyższe pojęcie poziom 123. To tylko podstawowe matematyki, przy czym te Symbole mają masę do nich, jeśli ciebie Będzie placeholder lub wartości kolumny. A kiedy pomnożyć wszystko się, że ten numer. Tak jak wielu z was wie, jak mówić binary-- 0 i 1's-- jak komputer? OK, doskonały, nikt, albo żaden z was myśli, że to zrobisz. Ale chciałbym twierdzą ci właściwie już o tym wiedzą. Musimy po prostu rodzajem dostrojenia Nasz model mentalny trochę. Jednak proces ten jest dokładnie takie samo. Pozwól mi zostawić ten jeden się tam i zamiast ciągnąć to w dół na chwilę. W świecie komputerów, mamy tylko 0 i 1 roku. A więc co to jest nie zmieni się, co? Cóż, w moim ludzkim świecie, system dziesiętny, 10 grudnia znaczenie, Mam ile cyfr do mojej dyspozycji? 10, prawda? Od 0 do 9, oczywiście. I dlatego mamy miejsce i miejsce 100 w 10-tych. Gdzie jest to, że pochodzi z? No, to jest 10 do potęgi 0. Jest to 10 do potęgi 1, 10 do potęgi 2, i tak dalej. Po prostu zachować pomnożenie kolumn przez 10, zaczynając od zaledwie 1 w pierwszej z prawej jak tutaj. Tak więc w świecie komputery, jeśli masz tylko mają znaczenie binary-- bi 2-- lub 0 i 1 na, po prostu Naprawdę trzeba zmienić podstawą tej matematyki. Tak więc, innymi słowy, obecnie musimy po prostu W 1 mają za kolumnę i the-- gdzie jest ten going-- kolumnę przez 2'S, kolumna 4, a może i poza nią. Dlaczego? Cóż, to jest 2 do 0-tej potęgi. Jest to 2 +1. To jest 2 do 2 i tak dalej. Więc podczas gdy tutaj mamy 1, 10'S, 100, 1000, 10000 na użytkownika, 100000, w odległości 1 milionów, i tak dalej, tutaj mamy 1, 2, 4, 8, 16, 32, 64. Po prostu zachować pomnożenie przez 2, zamiast trzymać pomnożenie przez 10. Więc teraz, jeśli celem w ręka jest do reprezentowania Liczby przy użyciu tylko 0 i 1-ki, rozważmy, jak się tam dostać. To, oczywiście, jest wzór 0 0 0, ale jaki numer koncepcyjnie ma ona reprezentować? Dobrze, 4 razy 0 plus 2 razy 0 Plus 1 razy 0, dodajmy te razem. 4 razy 0 jest oczywiście 0, plus 2 Czasy 0 jest, oczywiście, plus 1 0 0 Jest, oczywiście, 0. Tak ah, to reprezentuje Numer my ludzie znamy jako 0. Cóż, teraz, niech to bardzo szybko do przodu. Jeśli mam zamiast tego nie reprezentują 0 0 0, ale zróbmy 1 0 1 że może być jak Lakisa, wcześniej, po prostu wymawiać 1 0 1. Ale teraz, w jaki sposób zabrać go do wyższej wyrównać liczbę my, ludzie mogą wiedzieć? Więc co to za numer? To 5, liczba znamy jako 5. No, to dlaczego? Cóż, możemy naprawdę rodzaj przejść przez to metodycznie 4 razy 1, 2 x 0, 1 1 razy. Dodaj te razem, więc to 4 plus 0 oraz 1. I to jest rzeczywiście 5. Tak robi się trochę uciążliwe teraz robi arytmetycznych ponownie. Jednak proces ten jest dokładnie takie samo. Jedyną rzeczą, która ma zmieniło się w naszym świecie jest to, że nasz kolumn 1, 2, 4, 8, 16, i tak dalej, zamiast 1, 10, 100, 1000. A to tylko dlatego, że nasz alfabet ma skurczyła się od 0 do 9, aby po prostu 0 do 1. Tak mały quiz, tutaj, w jaki sposób Państwo reprezentują liczbę 7 w binarnym? 0? Dobrze, 0, to znaczy 0 0 0? Powiedz to jeszcze raz, Karina. Idealny. Dlaczego? To skutecznie 4 plus 2 plus 1. Tak dobrze. Jak reprezentujemy trochę another-- jak o numer 2? Blisko, ale do tyłu. Więc co to jest? Czy 4 plus 1, więc to 5 raz. Więc what's-- Przepraszam, Karina? 0 1 0. 0 1 0 byłoby 2, ponieważ ponownie, nawet jeżeli rodzaj nie wyskoczy na ciebie, tylko do matematyki. 4 razy 0, 0, 2 razy 1 2 razy 1 0 0. Więc jest to liczba znamy jako 2. Jak o liczbie 8? Hm? Dobry. Więc my niby potrzebujemy kolejnego zastępczy. Musimy 1 0 0 0. I to prawda naszego pokroju starego systemu szkolnego przecinku. W jaki sposób reprezentują liczbę 1000? Cóż, wydaje się być rodzaju w trudnym miejscu, jeśli poprosi o reprezentacji numer 1000, bo nawet jeśli dasz się jak 9 to 9 z nich, 0 z nich, która jest największą liczbę ty masz, nie dość dostać się do 1,000. Więc jeśli 1,000, wystarczy inna pozycji, dzięki czemu można zrobić 1 0 0 0, ergo numer 1000. Więc teraz, niech map tego rodzaju koncepcyjne dyskusja z powrotem do sprzętu, gdzie znowu, wejście było tylko Ten mały przewód zasilający, prąd najbliższych i wypływających. A więc na tym, by być odwzorowywane stąd tam, dobrze, czego naprawdę potrzebujemy? Cóż, można pomyśleć, że jest wewnątrz komputer, cała masa żarówek Jeśli będziesz. Oni naprawdę nazywa tranzystorów. A tranzystory są tylko przełączniki które mogą być albo włączone lub wyłączone. Więc można myśleć o Tranzystor to na jest umożliwienie przepływu energii elektrycznej oraz tranzystor to zatrzymywanie się jako prąd płynącej. I zamiast podjąć tutaj świateł, dlaczego nie zrobić tego rodzaju nowego stylu szkolnym. Więc może to być 1, latarka będąc na, ledwie jednak. I to może być 0, a teraz jest wyłączone. Tak więc za pomocą tego urządzenia fizycznego, ja może teraz prezentują system binarny. Muszę tylko dwa stany. To nie ma znaczenia, co kolor jest lub co to jest. Liczy się, że mam jedno państwo na i inny stan wyłączony. Więc za pomocą mojego telefonu tutaj, jak mogę reprezentują liczbę znamy jako 0? Lub umieścić równoważnie, co Numer jestem reprezentujących teraz? 0, ponieważ urządzenie jest wyłączone. A jeśli mogę to zrobić? A teraz, jak mogę reprezentują liczbę 2? Mogę pożyczyć telefon tutaj, jak robiliśmy wczoraj? Zobaczmy więc, więc jeśli chcę do reprezentowania numer 2, to jest numer 2? Nie. Jaki numer jestem przypadkowo reprezentujący tutaj? Jest to rzeczywiście numer 3. Więc który z nich chcę wyłączyć? Czarny telefon or-- dobrze, jeśli they're-- czarny telefon komórkowy albo biały? Biały telefon. Więc jeśli mogę to wyłączyć, a my Linia go tutaj, mamy 1 na miejscu i na 2 0 w 1 miejsce. A więc jestem teraz oznaczającą liczbę 2. A to oczywiście będzie numer 3, ponieważ teraz oba te światła są włączone. A ja tu zatrzymać, ale to ma się rozumieć, jeśli chcę do reprezentowania Numer 4 lub 8 lub wyższej, Będę potrzebował więcej telefonów. Ale to wszystko, co się dzieje. Więc jeśli kiedykolwiek słyszał, że Wnętrze A-- dziękuję pan: komputer Jest miliony tranzystorów, to zaledwie miliony maleńkich przełączników. I nie są one lekkie żarówki, które włączają się i wyłączają, ale oni albo pozwolić elektryczność płynąć gdzieś zatrzymać. I tak tam swoje dwa states-- włączyć lub wyłączyć, włączyć lub wyłączyć. Więc my teraz wydają mają tę zdolność do reprezentowania tej koncepcji, że Chcielibyśmy w konkretnym sprzętem. Ale wszystko, co mamy teraz, jest możliwość do reprezentowania liczb Wydawałoby się. Więc jak go o reprezentowanie litery alfabetu, które czuje się jak następnego rodzaju obiektu, który chciałby, aby dodać do nowoczesnego komputera skoro masz numery? I rzeczywiście, jeśli myślisz o Historycznie rzecz biorąc, IT, komputery Wprowadzono naprawdę służyć kalkulatory numerycznie. Ale oczywiście, to dzień, robią znacznie więcej. Nawet wtedy, gdy uruchomi się, ty zazwyczaj zobaczyć jedno lub kilka słów. Więc jak można reprezentować słowa, Jeśli wszystko co masz, to znowu, energii elektrycznej na koniec dzień, lub równoważnie 0 i 1-ki? Tak. Tak, to znaczy, my niby zrobił to wczoraj w jakiejś formie, gdzie w pewnym momencie, Chyba arbitralnie Mówi się, że jeśli chcemy reprezentować Litera A może po prostu zadzwonić, że: 1. To właśnie w związku z kryptografii gdzie po prostu potrzebny jakiś kod, jakiś mapowania. Może więc będą reprezentowane jako 1 i B są przedstawione jako A 2, i Z będą reprezentowane jako 26, na przykład. I wtedy jedynym zastrzeżeniem jest to, że jeśli jestem będzie kodować litery w moje e-maile albo w moich wiadomości tekstowych jak numery, wszyscy zgodzić się na stosowanie sam zestaw konwencji. I rzeczywiście, świat zrobił dokładnie to. System jest na świecie nazywany ASCII, American Standard Kod dla Wymiany Informacji, który jest po prostu decyzja kilka lat temu, że ludzie się, że zdecydował, że będzie się równać, a nie 1, 2 i 26, a więc jest to forth-- Trochę different-- ale 65, 66, 67. A ja podciągnąć Wykres na chwilę. Ale to jest arbitralne. Ale to nie ma znaczenia że jest arbitralne. Świat ma po prostu być spójne. Teraz ostatnio jest coś hodowcy nazywa Unicode, ponieważ rodzaju na świecie zrealizowanych po wynalezieniu komputerów że chodzi o coś więcej niż dobrze 256 Symbole w świecie które mogą chcemy reprezentować, zwłaszcza gdy wprowadzi Języki azjatyckie i inne symbole które potrzebują większej wyrazistości niż ty zmieści się w najwcześniejszej wersji Kod ten, którego nazwano ASCII. Więc rzeczywiście pozwala Unicode można użyć więcej 0 i 2. W szczególności zachować wysłuchaniu bajtów słowo w społeczeństwie, a nawet po prostu wczoraj. I bajt, co znowu? Co znajduje się bajt? To tylko 8 bitów. Więc co to naprawdę oznacza? Dobrze, to znaczy, wcześniej, gdy byliśmy mówisz binarny i używałem arbitralnie trzy bity kiedy byliśmy mówisz binary-- dnia 1 za miejsce, miejsce na 2'S, a 4 na place-- dobrze, bajt po prostu oznacza, że ​​mówisz nie w jednostkach, ale trzy cztery, pięć, sześć, siedem osiem, co daje nam miejsce 8, w 16'S, 32'S, 64, a 128 na. Innymi słowy, nie wszystkie nieco że przydatna jednostka miary, bo to po prostu jak jeden maleńki informacja, włączyć lub wyłączyć. Tak kilka lat temu, świat po prostu postanowił To nieco wygodniej mówić Warunki bajtów, osiem rzeczy naraz. I tak więc urodził pojęcie bajt. I tak mamy tu osiem bitów. I okazuje się, też, bo podobna Powody, świat postanowił roku temu, że do reprezentowania nas ASCII masz zamiar użyć jednostek z 8 bitów. Więc nawet jeśli nie trzeba, że ​​wiele, jesteś Zawsze będziemy używać 8 bitów reprezentuje literę alfabetu. I to jest wygodne, bo wtedy, gdy ciebie pojawia się komunikat, który ma 0 0 0 1 1 1 1 0, a następnie przez kolejne 1 1 1 0 1 0 0 1, więc jeśli otrzyma 16 Bity, świat może po prostu Zakładamy, że pierwsze 8 to jedna litera a drugi 8 to kolejna litera. Nie ma znaczenia, ile ich jest. To po prostu liczy, że wszyscy jesteśmy zgodne gdy jesteśmy interpretacji tych bitów. I ten właśnie sposób losowy. Oznacza to, że coś, ale ja nie naprawdę myślisz o tym, co to znaczy. Więc jest to małe białe kłamstwo. Początkowo ASCII faktycznie wykorzystane tylko 7 bitów. A ósmy bit jest nazywany rozszerzonym ASCII. Ale chodzi o to, w ostatecznym rozrachunku, to samo. Świat ogólnie standaryzowany na 8 bitów. Więc byłoby to wydaje się być trochę ograniczenie, bo mogę tylko reprezentują kapitału A, Kapitał B do Z. kapitałowym Ale w rzeczywistości nie jest, jeśli pójdę to-- istnieje grono zasobów on-line, na przykład asciitable.com ten będzie trochę przytłaczająca. Ale będę podkreślić co jest tutaj ważne. To właśnie dzieje się być: i będę walk-- zobaczmy, jeśli pójdę tutaj. Tutaj jest dziesiętną Kolumna, numer 65. A na literę prawej kolumnie charakter, Chr, jest literą A. I można zignorować, na razie, wszystko w środku. To szesnastkowym, ósemkowy, oraz kod HTML. W tym miejscu jest po prostu stara się rzucić wiele informacji na ciebie na raz. Ale wszyscy dbamy o to dziesiętne Kolumna i kolumna znaków. Więc od tej logiki, jaka jest liczba, że ​​świat zdecydowała reprezentuje małe znak? Tak, 97. I tak mylić ewentualnie lekko jaki numer ma świat postanowił stanowiłoby numer 1? Racja, bo we-- 49, wydaje się, tutaj, w lewym dolnym rogu. Teraz, co mam na myśli? Tak więc okazuje się, że w systemach komputerowych jest ogólnie Podstawowa różnica pomiędzy liczby i charakteru. Wiele jest rzeczą dowiedziałem się, gdy rośnie byliśmy bardzo młodzi w szkole. To rzeczy, które liczą się. Ale postać jest tylko kształt, glif, że tak powiem, na ekranie. Teraz my, ludzie, rodzaj patrz coś, co wygląda następująco. I mówimy, och, to liczba 2. Ale nie, to tylko symbol, który wygląda jak to, co znamy jako numer 2. A więc jest to zasadnicza różnica między faktycznymi cyfr i znaków. Jest liczbą. Ale ogólnie, w Kontekst komputera jeśli zamiast zobaczyć coś takiego quoted-- i nie zawsze trzeba zobaczyć cytowany, ale ze względu na discussion-- if widać cytaty wokół numeru, teraz jest to znak. Więc ten numer 2 pod spodem okap wewnątrz komputera byłby reprezentowany wzorem bitów, które reprezentują liczby 50, zgodnie ze schematem w Internecie. Jednakże, jeśli w komputerze po prostu widzi to, to byłaby oznaczona z Wzór bit 0 0 0 0 0 0 1 0. Zważywszy, że postać ta będzie faktycznie być reprezentowane as-- i teraz, Muszę trochę pomyśleć harder-- więc ta postać byłaby reprezentowana 0 0 1-- co muszę tutaj? 0 0 1 1 0 0 1 0. W jaki sposób mogę to zrobić? Dobrze jest to numer 50, jeśli ciebie pomnożyć go za pomocą tych kolumn, jest to numer 2, a więc dlatego nie jest to dychotomia. I to jest właśnie Teaser teraz funkcje które istnieją w języku programowania że będziemy dotykać na krótko później dzisiaj. W językach programowania, masz ogólnie ale nie zawsze, rzeczy zadzwoń różne typy danych. Innymi słowy, programmer-- gdy on lub ona jest pisanie, programista dostaje zdecydować, w jakim Format do przechowywania swoich danych. możesz przechowywać dane jak numery surowce, takie jak numer 2. Można też zapisać je jako ciągi, lub sekwencje znaków że można na ogół wyrazić cytaty w języku programowania. Można mieć rzeczy called-- Będę oversimplify i nazwać je prawdziwe numbers-- więc liczb nie są liczbami całkowitymi, takie jak numer 2, ale numery podoba 4,56. Więc może również liczbami rzeczywistymi mają miejsc po przecinku, tak to już zupełnie inna fundamentalna element danych w komputerze. A potem można nawet mieć inne typy danych martwych. Więc to tylko zapowiedź naprawdę od najprostszych decyzji projektowych że programista może aby pod maską. Więc jakieś pytania tylko jeszcze? Więc spróbujmy zrobić to trochę bardziej realne. Ten sprzęt nie jest tyle już w użyciu. Ale przede wszystkim w tym pomieszczeniu prawdopodobnie dorastałem i nadal korzysta z dysków twardych w pewnym sensie. Mimo, że większość Nasze laptopy nie mają urządzenia, które działają w ten sposób, zamiast laptopów dziś na ogół mają dysków SSD bez ruchomych części. I że są bardziej kosztowne niestety, ale trochę szybciej i A-- dobrze, często o wiele szybciej, co jest jednym z powodów. A także, że nie ma generować jak najwięcej ciepła. może być mniejszy, więc generalnie netto pozytywne. Ale to pozwala nam zmapować trochę bardziej konkretnie co mówimy u 0 i Poziom 1 jest teraz do urządzenia fizycznego. Jest jedna rzecz dla mnie, aby porozmawiać około 0 i 1 pod względem mój telefon lub abstrakcyjnie w kategoriach zwrotnic i wyłączać. Ale co z dysków twardych? W swoich laptopów, jeśli masz starszą jednym lub w komputerze stacjonarnym, czy na pewno w serwerach dzisiaj, gdzie trzeba dyski twarde, które mają terabajt przestrzeni, 4 terabajtów przestrzeni, a co to znaczy? Dysk twardy z 1 terabajt środków kosmicznych jest 1 bilion bajtów wewnątrz niego jakoś, lub równoważnie 8 bilionów bitów wewnątrz. 1 terabajt byłoby 8 Tb lub 1 biliona bitów, które Oznacza jeśli masz ciężki jazdy, trzeba jakoś lub inne bilion 0 na i 1 w jej wnętrzu. A jeśli po prostu spojrzeć na dowolne zdjęcie z dysku twardego reprezentatywne, to co z trudem Napęd może zazwyczaj wygląda w środku. To też jest coś w rodzaju stary gramofon player ale ogólnie z wiele rekordów wewnętrzne, do wielokrotnego speak-- talerze, jak są one nazywane, Dyski okrągłe metalowe, oraz potem trochę głowica odczytująca, podobnie starego gramofonu. I że głowica odczytująca porusza się do tyłu i naprzód i jakoś odczytuje bity. A co na tych talerzach, a nawet Chociaż ludzie nie mogą ich zobaczyć, albo w rzeczywistości lub w tym obrazie, tam maleńkie cząstki magnetyczne. A nawet jeśli już dawno zapomniał jak działa prąd, cząstka magnetyczna która jest pobierana z reguły ma północną koniec i południe end-- tak, północ i południe. I tak po prostu świat postanowił jakiś czas temu że jeśli protokół zasadniczo magnetyczne jest wyrównana jak ten, z północy na południe, nazwijmy, że: 1. Jeśli to zamiast na południe-północ, niech po prostu zadzwonić, że 0. A więc jeśli masz co Państwa dyspozycji bilion malutkie magnetyczna particles-- i mam nadzieję, pomysłowość sprzętu w Aby odwrócić te okolice jak widać fit-- jeśli chcesz reprezentują całą masę 0 jest, no Wystarczy 8 cząstki magnetyczne wszystko dostosowane w taki sposób. A jeśli chcesz do reprezentowania Osiem 1-ki, po prostu Potrzebują 8 cząstek magnetycznych wyrównane z powrotem z powrotem do tyłu w taki sposób. Co mam na myśli przez Cząstki magnetyczne? Szczerze mówiąc, wszystkie te lata później, rzecz, która wciąż przychodzi mi do głowy jest ten facet, jeśli ciebie Dorastałem z tej rzeczy. Jest to na little-- tych unfamiliar-- mała zabawka z dzieciństwa, że Nagi człowiek ma to tutaj która posiada wszystkie te malutkie czarne cząstki magnetyczne, które pochodzą z nim. I za pomocą tego czerwony kij, która jest po prostu jak magnes, można rodzaj dać mu wąsy lub brwi i włosy czy coś na niego. Tak więc w rzeczywistości, jeśli powiększyć w, na przykład, w tym Jest to rodzaj grze Można grać z Wooly Willy. A to tylko, że te są znacznie większe cząstki magnetyczne niż są w rzeczywistości na dysku twardym, i znacznie mniej cząstek magnetycznych. Ale niech rzeczywiście zobaczyć Następnie, jeśli masz maleńkie cząstki magnetyczne w dysk twardy, jak można rzeczywiście użyć do reprezentowania tych danych. [ODTWARZANIE] -The Dysk twardy jest, gdy komputer przechowuje większość swoich stałych danych. Aby to zrobić, dane podróżuje wraz z RAM z sygnałami oprogramowania, które powiedzieć dysk twardy, jak przechowywać te dane. Twarde układy napędowe przetłumaczyć te sygnały do ​​wahań napięcia. Te z kolei kontrolować dysku twardego przesuwając parts-- jedne z nielicznych poruszających Części lewej nowoczesnego komputera. Niektóre z sygnałów sterowania silnika która obraca talerzy metalowych powlekanych. Twoje dane są w rzeczywistości przechowywane na tych talerzach. Inne sygnały przenosić głowice odczytu / zapisu do odczytu lub zapisu danych na talerzach. Maszyna ta jest tak precyzyjna że ludzki włos nie mógł nawet przejść między głowami i przędzenie talerze. Jednak to wszystko działa na wspaniałych prędkościach. [KONIEC ODTWARZANIA] I widać u Koniec ogona wideo istnieje na ogół wiele talerze. I tak, że czytanie głowy nie tylko czytanie szczyt. To tak jakby trzy lub cztery lub więcej głowic odczytu które poruszają się w ten sposób, jednoczesnego odczytu danych. Więc nie jest dużo Złożoność i rodzaj terminów który jest zaangażowany w twardym. A co się kręci naprawdę cholernie szybko, więc nie ma dużo złożoności. Ale bądźmy przybliżyć nieco głębiej i zobaczyć, gdzie są te cząstki magnetyczne iw jaki sposób stajemy się na nich. [ODTWARZANIE] -Niech spojrzenie na to, co jest Właśnie widziałem w zwolnionym tempie. Po krótki impuls prądu jest wysyłana do głowicy odczytu / zapisu że trzepie na małej elektromagnetyczne na ułamek sekundy. Magnes tworzy Pole, które zmienia biegunowość maleńka, maleńka Część cząstek metalowych które pokrywają powierzchnię każdego użytkownika Platter. Seria wzór tych maleńkich naładowane obszary na dysku reprezentuje pojedynczy bit danych w binarny system liczbowy używany przez komputery. Teraz, jeżeli obecny jest jeden wysłany drogę głowicy odczytu / zapisu, Obszar o polaryzacji w jednym kierunku. Jeśli obecny jest wysyłane w przeciwnym kierunku, polaryzacja zostaje odwrócona. Jak uzyskać dane z dysku twardego? Wystarczy odwrócić proces. Więc to cząstki na Dysk, który uzyskać prąd w głowicy odczytu / zapisu ruchu. Ułożyła miliony namagnesowane te segmenty, i masz plik. Teraz kawałki jednego pliku może być rozrzucone po całym talerzy można dojechać za, trochę jak bałagan papierów na biurku. Więc specjalny dodatkowy plik utrzymuje tor, gdzie wszystko jest. Czy nie chciałbyś mieć coś w tym stylu? [KONIEC ODTWARZANIA] Więc czym wspomniał tam, być może, że wątek z wczoraj z usunięciem. Po usunięciu Plik, wczoraj mówiliśmy że komputer faktycznie robi co, kiedy coś przeciągania do kosza lub kosza? To po prostu zapomina. Ale 0 i 1-ki, Cząstki magnetyczne które wyglądają jak czerwone i niebieskie rzeczy tutaj, albo tutaj, moja ręka wciąż tam są na dysku twardym. I tak istnieje software-- Norton Utilities i Yesteryear i inne bardziej nowoczesne software-- że właśnie skanuje cały dysk twardy szuka na te wszystkie 0 i 1, ponieważ jest Okazuje się, że większość plików rodzaje-- dokumenty Word, Excel, obrazów, wideo files-- wszystkie mają pewne wzory, które są powszechne wśród nich. Każdy plik wideo może być innego wideo ale pierwsze kilka Bity są zwykle takie same. Lub ostatnie kilka bitów są zwykle takie same. I tak z dużym prawdopodobieństwem, można szukać tych wzorców. A nawet jeśli plik został zapomniany, można powiedzieć z dużym prawdopodobieństwem, ale to wygląda jak dokument Word, lets go odzyskać i nie-zapomnij, Jeśli będziesz. I tak to w jaki sposób można odzyskać Dane, które jest albo przypadkowo usunięte lub usunięta lub celowo skreśla się dla dowolnych celów. Natomiast bezpieczne usuwanie co robi w związku z tym jak obraz? Dokładnie, czyni z nich wszystkich losowo. Więc to rodzaj przesuwa niektóre je w dół, niektóre z nich nawet, niektóre z nich pozostawia bez zmian, a ogólnie sprawia szumy z niego, lub po prostu może sprawia, że ​​wszystkie them 0-tych lub wszystkie z nich 1-ki. I to też można na ogół szorować swoje dane dalej. Więc wróćmy teraz do kwestii obliczeniowej myślenia, zgodnie z którym mamy wejść formule. I daje algorytmy Ci wyjść ostatecznie. Skupiamy się teraz na wejściach i wyjścia, bo teraz, Twierdzenie, że mamy sposób reprezentujący wejść i wyjść. Jesteśmy po prostu zamiar użyć binarny. I bez względu na to, co chcą reprezentować dziś czy jest to numer lub litera lub ich tysiące w książce telefonicznej lub obrazy lub filmy, na koniec w ciągu dnia, to wszystko jest 0 i 1 roku. I twierdzą, że chociaż Jest to bardzo proste, świat z zaledwie 0-tych i 1-ki, możemy budować się w górę. I widzieliśmy jeden przykład że z listami do tej pory. Więc skupmy się teraz na ten temat Składnik środkowa, algorytm. I wróćmy do tego Przykładem Mike Smith. Tak więc w tej książce telefonicznej, która wprawdzie nie używamy już tak dużo, pojawia się problem, który należy rozwiązać. Chcemy znaleźć kogoś takiego jak Mike Smith. I co mogę zrobić, aby znaleźć Mike? Cóż, może po prostu otworzyć tę Książka rozpoczyna się na pierwszej stronie, i uświadomić sobie, och, jestem w punkcie a. Mike nie ma. Muszę sekcję S Smith. Więc po prostu zachować obracając jedną stronę na raz. Pozwól mi udawać, że to wszystko białych stronach, a nie żółte strony, dlatego, że nie zamierzamy znaleźć Mike na żółtych stronach i tak. Ale jestem w białych stron. A teraz jestem w punkcie B. I nadal nie znalazłem go. Więc trzymam obracając jedną stronę na raz. Jest to algorytm. Jest to zestaw instrukcji dla rozwiązania jakiegoś problemu. Innymi słowy, patrzeć Strona, jeśli Mike nie jest na nim, obrócić stronę i powtórzenia znowu i znowu i znowu, idealnie patrząc w dół, jak to robisz. Więc to jest algorytm, Proces ten, prawda? Przepraszam. Nie, słyszę jakieś NOS. OK, ale is-- tak, Z pewnością jest to uciążliwe. Podobnie jak, będziemy tu cały dzień, gdybym utrzymać szukasz Mike z tą prędkością. Ale pozwól, że twierdzą, że to poprawne. To głupie, ale jest to poprawne. Na koniec dnia, pod warunkiem, że może podjąć, znajdę Mike jeśli on jest w środku i mam zwracać uwagę. I w końcu dotrzeć do jego strony. I jeśli się zbyt daleko, jeśli I dostać się do sekcji T, wtedy mogę nieco zoptymalizować i po prostu powiedzieć, hm, wszystko zrobione. I nawet nie trzeba tracić Czas idzie do Z jest. Ale jest to bardzo Podejście liniowy, jeśli ciebie Będzie to bardzo rodzaju lewej do prawej Podejście, linia prosta. I jego poprawne, ale powoli. Więc pamiętam z podstawówki, sortowanie z optymalizacją z pierwszego równiarka, gdzie nauczył się nie liczy przez dzieci, ale przez twos-- więc 2, 4, 6. To, dużo trudniej zrobić, ale teoretycznie jest to faster-- 8, 10, 12, 14, i tak dalej. Jak o tym algorytmie? Czy jest bardziej efektywny? Czy to szybciej? PUBLICZNOŚCI: To wydajne. DAVID MALAN: Tak, tak, to jest to def-- dosłownie dwa razy szybciej, przy założeniu, że Nie zrozumcie potknął się palcami. To dwa razy szybciej, ponieważ Ja obracam przez dwa stron na raz, a nie jeden, ale to potencjalnie poprawne, bo po co? PUBLICZNOŚCI: Ty pomijanie niektórych. DAVID MALAN: Tak, co się dzieje, gdy Mike być sandwiched-- może kiedy jestem później w książce telefonicznej, Mike bywa przekładkowo między tymi dwiema stronami a ja po prostu ślepo przejść nad nim. Więc potrzebujemy trochę naprawić tam. Raz uderzyłem sekcję t, Nie można po prostu śmiało powiedzieć, nie znaleźliśmy Mike Smith. Pewnie musiał zawrócić. A w rzeczywistości, gdy sięgam kogoś o nazwie S-N, zamiast S-M dla Smitha natychmiast, mogę podwoić z powrotem, ponieważ może on było na poprzedniej stronie. Ale nie musiał zawrócić daleko. Teoretycznie, jeśli mogę to zrobić po prawej Czas, po prostu wrócić jednej stronie. Więc to dodając tylko jeden dodatkowy krok. Więc ja już dwa razy szybciej, ale kosztowało mnie jedną dodatkową stronę. Ale to jest jak wygrana netto. Ale to nie jest, jak większość ludzi w Ten pokój będzie rozwiązać ten problem. Co by typowa osoba, może Kilka lat temu zrobić, aby znaleźć Mike Smith? Tak, nie znaleźliśmy Mike. Co ja robię? Więc trochę bliżej, ale ja know-- co jest prawdą o książce telefonicznej? PUBLICZNOŚCI: To sekwencyjna. DAVID MALAN: To sekwencyjna. To alfabetycznej. A więc jeśli jestem w punkcie M, Mikrofon jest wyraźnie na prawo Mogę dosłownie oderwać Problem w half-- to zwykle łatwiejsze niż that-- rozdarcie problem na pół i wyrzucić, tak że teraz mam problem, który jest już 1000 pages-- to było trudne, bo myślę, że faktycznie zerwał książka telefoniczna nie time-- 1000 stron, ale 500. Tak więc problem jest dosłownie w połowie tak duże. I to całkiem przekonujące, ponieważ z moich poprzednich algorytmów, wersja 1 i 2, byłem tylko co problem jedna strona, dwie strony mniejsze mniejsze na czas. Zważywszy, że teraz, ja zrobiłem to 500 stron mniejsze naraz. OK, więc teraz Karim proponuje że pójdę do prawej połowie. Więc mam zamiar iść z grubsza do połowy, lub dać. A gdybym zrobił to matematycznie, Mogłem iść w prawo na środku. Teraz zdaję sobie sprawę, oh, Jestem w punkcie T. I rzeczywiście poszło za daleko. Ale mogę znowu rozerwać Problem w połowie, należy go wyrzucić. A moi bajtów nie jest tak duża. To tylko, co, 256 lub 250 stron stron, lub dać w tej chwili. Ale to wciąż o wiele bardziej niż jedną stronę lub dwie strony. A więc teraz, idę mniej więcej pośrodku. Och, nie poszedł dość daleko tyle teraz. Więc powtarzam, powtarzać, powtarzać, Powtarzam, dopóki jestem z nadzieją pozostaje tylko jedna strona. Tak, że zaprasza na pytanie, gdybym Zaczęło się około 1000 stron, ile kroków zajęło mi z wersji 1 mojego algorytmu? Dobrze, jeśli Mike jest w S sekcji, w najgorszym przypadku, to dość blisko Koniec alfabetu. Więc jeśli książka telefoniczna ma 1000 stron, Znajdę Mike ciągu 1000 stron, daj albo bierz. Może to jest jak 800 lub tak, ale to całkiem blisko 1,000. Natomiast w drugim Algorytm, ile Strona okazuje maksymalnie mogę wymagają, aby znaleźć Mike Smith? Jest 1000 stron, ale jestem robi je po dwa stopnie naraz. Dobra, więc max jak 500ish, ponieważ gdybym przejść przez całą książkę telefoniczną, w którym momencie mogę przestać. Ale mogę zgolić przez kilka zatrzymując się tylko na odcinku T. Ale to w najgorszym przypadku 500 stron. Więc ile razy mogę podzielić ponownie 1,00o-stronicowa książka telefoniczna na pół i znowu i again-- od 1000 do 500 do 250 do 125? Jak długo przed I hit jedną stronę? Tak, to jest około 10. W zależności od zaokrągleń i takie, to około 10 stron sumie trzeba włączać lub książki telefoniczne muszą być rozdarty. Więc to jest dość silny. Zaczęliśmy z problemem tysięcy stron we wszystkich tych trzech kondygnacji. Jednak w pierwszym algorytmem, to zabrał mnie, w najgorszym przypadku, strona 1000 Okazuje się znaleźć Mike. Drugi algorytm 500 stron, aby znaleźć Mike. Trzeci algorytm, 10 stron, aby znaleźć Mike. I to jest jeszcze bardziej potężny, kiedy myślisz o rodzaju przeciwnego scenariusza. Załóżmy, że w firmie telekomunikacyjnej następnego rok może dwa miasta łączy ze sobą, a książka telefoniczna nagle Ta grubość, a nie to, że 2000 stron, więc zamiast 1000. Cóż, mój pierwszy algorytm szuka Mike Smith w 2000-stronicowej książce telefonicznej, gorsza sprawa, to zajmie ilu strona zamienia w przyszłym roku? Książka telefoniczna jest 2000 stron, SO- dobrze, a nie jeden. Jeśli książka telefoniczna jest dwukrotnie grubsza w pierwszy algorytm najpierw algorytmu, 2000, prawda? W najgorszym przypadku, Mike jest naprawdę blisko końca książce więc jest to 2.000 stron zakrętów. Drugi algorytm będzie przez Dwójki, podobnie jak 1000 stron. Ale co w mojej trzeciej oraz najnowszy algorytm? Jeśli firma telefonu podwaja liczba stron od 1000 do 2000, Ile jeszcze razy muszę oderwać ta książka w połowie znaleźć Mike? PUBLICZNOŚCI: Tylko jeden. DAVID MALAN: Jeszcze jeden, bo z jednej strony łza, Mogę podzielić dosłownie i podbić, jeśli chcesz, Problem, że w ciągu pół podejmowania ogromny zgryz z niego. A więc jest przykładem Efektywność i zapewne algorytm z których każdy z nas jakby intuicyjnie znajome. Ale to tylko prawidłowe w moich innych algorytmów z tym tweak dla drugi algorytm, ale jest o wiele bardziej efektywne. A w rzeczywistości to, co komputer naukowiec, albo z kolei programista, typowo robić podczas pisania Kod jest spróbować dowiedzieć się, Wszystko w porządku, nie chcę mojego Program po prostu za prawidłowe, Ja też ma to być skuteczne i rozwiązywać także problemy. Wyobraźmy sobie w realnym świecie, Google, podobnie jak indeksy wyszukiwań jak miliardy stron, jeśli wyobrazić stosowany pierwszego algorytmu znaleźć koty Wśród miliard pages-- patrząc na pierwsza strona w swojej bazie danych, drugi, trzeci, po prostu patrząc dla kota, patrząc na kota. To jest cholernie spowolnić wydaje. Mogli zamiast użyć czegoś nazywa wyszukiwania binarnego, które ma coincidence-- bi czyli dwa, możemy utrzymać podzielenie coś w 2, w half-- mogliby wykorzystać przeszukiwanie binarne a może jeszcze szybciej znaleźć koty, czy cokolwiek to jest szukasz. I szczerze mówiąc, nie ma nawet bardziej wyszukane algorytmy to znacznie więcej niż tylko dzieląc na pół rzeczy aby szybko znaleźć informacje. I porozmawiamy trochę o tych, po obiedzie dzisiaj. Więc pozwól mi po prostu spróbować do reprezentowania. Nie musimy iść do matematyka lub jakiekolwiek rzeczywiste liczby. Możemy mówić o tym w sposób abstrakcyjny. Ale niech mi tylko zaproponować, jeśli ciebie były o dyskusji teraz z inżynierami proponując tego algorytmu a ty próbujesz zrobić obliczona decyzja być może dlatego, inżynier mówi do ciebie, Wiesz co, mogę zaimplementować przeszukiwanie liniowe w jak dwie minuty. To takie proste. Binary wyszukiwania nie jest wyszukany, ale to zajmie mi jakieś 10 minut, tak 5 razy dłużej. Jest kompromis tutaj, nawet w kategoriach decydowania, jakie oprogramowanie do pisania. Czy piszesz prostszy algorytm, który właśnie bierze ci dwie minuty? Czy może poświęcić więcej czasu, 10 minut, pisanie hodowcy algorytm? Jak zdecydować, tego rodzaju pytania? Albo można zrobić to trochę bardziej realne. Powiem mojego szefa to zajmie mi albo jeden tydzień lub 10 tygodni do wdrożenia Oprogramowanie to sposób, w jaki zdecydować, które Algorytm zielonym światłem? Karim? PUBLICZNOŚCI: Publiczność, jak sądzę. DAVID MALAN: Publiczność. Co masz na myśli przez publiczność? PUBLICZNOŚCI: Jeśli to się dzieje do stosowania przez użytkowników którzy [INAUDIBLE] przez użytkowników [INAUDIBLE]. Ale jeśli to jest coś, że jesteś po prostu robi dla siebie ułatwić wątpliwości [INAUDIBLE] szybciej. DAVID MALAN: Tak, jest to szybki i brudne jest to dobry sposób, żeby to opisać. W rzeczywistości, jeśli jesteś Opisując wiele czasu grad w szkole, przy czym często razy, Pisałem zły kod świadomie SO- przynajmniej tak właśnie zracjonalizować it-- świadomie tak, bo choć byłem pisania kodu to było stosunkowo wolno wykonywać, Udało mi się napisać sam kod dość szybko, zaledwie kilka minut wydatków lub godzin a nie dni. I okazało się, że czasami potrzebne do snu. Więc nawet jeśli mój kod wymagane 8 godzin do pracy, dobrze, że jest w porządku, Pójdę spać podczas działania. Tak więc w momencie, myślałem, że to bardzo mądry, chociaż pozornie pracował w moim doktoratem bardzo powoli. Ale to jest odwrotne że gdybym pisanie oprogramowania dla innych ludzi, którzy liczy więcej niż ja, dobrze, o nich czekać 8 godzin odzyskać swoje wyniki wyszukiwania nie jest wcale tak atrakcyjne. I tak spędzać więcej czasu do przodu, aby napisać oprogramowanie to jest bardziej efektywne, bardziej jak nasz trzeci algorytmu, Prawdopodobnie korzyści użytkownikom w miarę upływu czasu. Więc tak naprawdę zależy na Czas jaki sposób koszty te sumują się. Jeśli masz zamiar pisać Oprogramowanie go użyć raz, Prawdopodobnie równie dobrze może zrobić szybkie i brudne, jak mówią. Po prostu wyrzucić go ze sobą. Jest to kod, który zawstydza ty, że jest tak źle, ale dostaje zadanie poprawnie, chociaż to nie jest wydajne. Z drugiej strony, można poświęcić więcej czasu na coś, dostać to po prostu prawo. A następnie amortyzowane w czasie, że z góry koszt czasu to chyba warto, jeśli trzymać optymalizacja dla wspólnej sprawy. I rzeczywiście, to jest tematem programowanie, informatyka lub więcej Generalnie staramy się optymalizować nie dla niezwykłej przypadku ale wspólne case-- jakie operacja wydarzy się znowu i znowu? Jeśli masz zamiar mieć miliardy użytkowników szukają na swojej stronie internetowej, powinieneś wydać dodatkowe tydzień up przodu pisanie lepszego oprogramowania, tak aby wszyscy użytkownicy korzystają. Teraz spróbujmy uchwycić to na trochę obrazowo, ale nie tak dużo liczebnie. Więc tutaj jest po prostu stary schemat szkoły. I pozwól mi powiedzieć, że to jest czas. I nie ma znaczenia, what-- faktycznie, nie, nie czas. Postawmy że na drugiej osi. Powiedzmy, że jest to czas, a jest to rozmiar problemu. I informatykiem Może ogólnie nazwać to po prostu brak. n jest jak nasz iść do zmiennej, gdzie n jest liczbą, n liczba, i jest to liczba dowolnych wejść masz. Tak więc w tym przypadku, n jest liczba stron. Więc może to być w 1000 sprawa po prostu powiedział. Więc czas może być dowolna jednostka miary. Być może, że to drugie. Być może, to jest dzień. Być może, jak to jest stronie zakrętów. Nie ma znaczenia. Cokolwiek chcesz liczyć się, że będzie kosztować czas lub równoważnie. Więc z tym pierwszym Algorytm, jeśli ja, na przykład, miał 1000-stronicową książkę telefoniczną, Zamierzam wyciągnąć tam kropkę, bo jeśli to 1000 stron, zajęło z grubsza 1000 strona okazuje, lub dać. I wtedy, gdy miałem 2000-stronicowa książka telefoniczna, i mam zamiar narysować sekundę dot tutaj, bo na 2000 stron, jak to jest 2.000 sekund lub strona włącza lub cokolwiek. A więc kiedy powiedziałem wcześniej, jest to rodzaj relacji liniowej, to było celowe, ponieważ chciałem później on-- tuż now-- narysować linię. To niby prosty relacja online. Nachylenie wynosi 1/1, jeśli będzie. W tym samym czasie, drugi algorytm Powiedział, że jeśli masz 1000 stron a ty, korzystając z drugiego algorytmu, gdzie liczy się od 2'S, zamieniając dwie strony na raz, mam narysować kropka poniżej lub powyżej mojego pierwotnego kropki? PUBLICZNOŚCI: poniżej. DAVID MALAN: Poniżej, ponieważ jak widzieliśmy, zajmuje mniej czasu, pół tyle czasu. Więc kropka powinna być o połowę tak wysokie, jak innych. A sama umowa tutaj ta kropka prawdopodobnie powinien być mniej więcej tam. I tak mój drugi algorytm, podobnie, ma zależność liniową w czasie. I możemy wyciągnąć go jako takiego. Więc teraz, trzeci i ostatni Algorytm jest trochę trudniej wyciągnąć. Ale intuicyjnie, jeśli mam 1000 Strony z moim trzecim algorytmu, Należy tylko wziąć mnie jak 10 stopni. A jeśli mam 2000 stron z moim trzecim algorytmu, powinno zająć mi nie 10 kroki, ale 11, tylko jeden. Więc my ledwo zamiar zobaczyć. I okazuje się, jeśli Powiększać się na tym, że jestem będziemy przesadzać do skutku, Kształt tej linii, a ostatecznie Nie jest to proste line-- ponieważ w rzeczywistości, jeśli byli to będzie wyglądać bardziej jak wiele innych, to faktycznie zakrzywiona linia że jeśli powiększyć, będzie wyglądać bardziej jak ten. It-- dobrze, OK, zignoruj ​​tę część. To był mój długopis dzieje kąta. To jest zakrzywiona linia, która jest zawsze wzrasta, zawsze, zawsze, zawsze wzrasta, ale tylko ledwo. I tak z biegiem czasu, masz związek, który jest bardziej jak ten. To wygląda prawie prosto. Ale to zawsze tak powoli rośnie. Ale dla prawie wszystkich punktach Twój oś X, oś pozioma, jest niższa niż tych innych liniach. Więc może to być relacja n, przy czym jeśli n stron przejście n sekund. Może to być związek n / 2. Masz stron n, to trwa Ci n / 2 sekundy, w połowie tak wiele. I jest logarytmiczna związek, który Jeśli pamiętacie, logarytm przy podstawie 2 z n zrzuty Ten rodzaj wzrostu, że tak powiem. Jest to więc rodzaj święta Graalem wśród trzech z nich tutaj, bo to jest po prostu tak dużo więcej skuteczny, ale prawdopodobnie bardziej złożona do wykonania. Jakieś pytania? Więc pozwól mi to zrobić, niech mi otworzyć okno tekstowe tak więc możemy spróbować sformalizować coś tutaj. Więc pozwól mi iść do przodu i teraz realizacji tego algorytmu za znalezienie Mike Smith w kodzie, jeśli chcesz, kod pseudokod. Nie będę używać Java lub C ++. Ja tylko zamiar użyć sortowania Angielsko-jak składnia, którą będzie na ogół wywoływać kod pseudokod. Tutaj mam puste okno. A ja mówię, krok 1 z bardzo Pierwszy algorytm jest odebrać książkę telefoniczną. Krok 2 jest otwarta książka pierwszej stronie. Krok 3 będzie patrzeć Strona Mike Smith. Jeśli na stronie, zadzwoń Mike. else stronę zakrętu i przejdź do kroku 3. Gotowe, powiedzmy. A więc nie dość doskonałe, które zobaczymy za chwilę. Ale rozważmy, co Koncepcje mam tu wprowadzić. Więc kroki 1 i 2 oraz 3 są bardzo czasowniki. Są wypowiedzi, dziaĹ,aĹ to zrobić. I tak w programowaniu języka, my by ogół zadzwoń do nich oświadczeń lub funkcje lub procedury, Nazywamy je dowolną ilość rzeczy. Ale oni tylko dziaĹ,aĹ to zrobić. Krok 4 różni się zasadniczo, bo to rodzaj zadając pytanie. To mówiąc, jesteśmy rodzajem co w rozwidleniu dróg. Jeśli Mike znajduje się na stronie, zadzwoń go, więc w lewo, jeśli będzie. A jeśli nie, wróć do niektórych Inny page-- albo raczej, przepraszam, wróć do innego kroku, który wywołuje jakieś zapętlenie konstruktu. I robimy to znowu i znowu i znowu. I rzeczywiście, wiesz co? Tak. else if na koniec przystanku książki. Więc musimy rodzaj trzeci Warunek, bo Nie można przechowywać obracając reklamę strony nauseum, bo w końcu będę hit koniec książki. A to błąd w programie może być Nie przewidując taki scenariusz. I wtedy zdałem sobie sprawę, oh, czekaj Chwileczkę, muszę trzeci scenariusz. Jeśli jestem na stronach, ja Należy naprawdę tylko zatrzymać. Inaczej, jest niezdefiniowane. Co się wydarzy, jeśli trzymam mówiąc obrócić stronę i wróć, To jest, gdy komputery zamrożenia lub awarii, po trafieniu niektóre nieprzewidzianych sytuacji tak. Teraz, co Mike Smitha trzecia algorithm-- odebrać książkę telefoniczną, otwarta książka first-- się Nie, nie tym razem pierwsza strona, do middle-- oh, dobrze, że dalszy jako drugi algorytm. Niech po prostu przejść do trzeciego. PUBLICZNOŚCI: Oh, przepraszam. DAVID MALAN: To dobrze. Niech po prostu przejść do third-- otwartym na środku, a teraz szukają Mike Smith. jeśli na stronie, zadzwoń Mike. A potem, co chcemy tu powiedzieć? indziej, co? Możemy to wyrazić na wiele sposobów. Nie ma dobrej odpowiedzi. OK, jeśli nie ponownie, ale musimy być: OK, chcemy podzielić na dwie części, ale chcemy, aby przejść w lewo lub w prawo? W jaki sposób możemy wyrazić to pojęcie? Cóż, w przypadku Mike'a, tak, to jest sprawiedliwe. Ale OK, więc to rzeczywiście dobry punkt. W porządku. Będziemy iść dalej z tym logiki. Więc-- PUBLICZNOŚCI: Mniej niż połowa. DAVID MALAN: Tak. Więc indziej jeśli strona jest, powiemy, mniej od Smith, na lewo od Smith then-- zobaczmy, jest to będzie komplikować? else if strona jest przed Smith, łzą w połowie, wyrzucić czego połowa? PUBLICZNOŚCI: Myślałem to było [INAUDIBLE]. DAVID MALAN: Słyszę obie odpowiedzi. PUBLICZNOŚCI: z lewej. DAVID MALAN: OK, rzucać Odległość lewej połowie, a Lakisa powiedziałem wcześniej, w lewo pół, potem rodzaj chce po prostu pójść to-- pójdę w prawo. Lub równoważnie, i zrobiłem trochę trochę bałaganu rozpoczęcia tutaj I skutecznie chcą przejdź do kroku 2 ponownie gdzie otwarte na middle-- lub open-- Tak, powiedzmy, na środku strony. I to rozwiązuje go. To nie jest książka. To tylko pół książki, więc otwieranie stron w środku. else-- były prawie na miejscu. Krok 6, else if Strona przychodzi po Smitha rozerwać na pół, wyrzucić prawą połowę, następnie przejdź do kroku 2. jeszcze rzucić, jeśli czwarty scenariusz mamy żadnych stron w lewo, aby włączyć. Więc możemy to posprzątać. I trzeba to posprzątać. Jest to kod bardzo pseudokod, jeśli ciebie woli, opis bardzo wysoki poziom. Ale to ma zazwyczaj uchwycić ideę. I znowu, w tym scenariuszu mają pojęcie warunku, oddział, widelec w drodze, dzięki czemu decision-- jeśli to, idź tą drogą, else if przejść tę drogę, else if przejść tamtędy. I to jest bardzo częste techniki programowania zdecydować, w jakim kierunku iść, że tak powiem. I mamy też jakieś z pętli strukturę, w której robimy coś znowu i znowu. Teraz, jak się okazuje, o wiele jak w tym przykładzie, jest bardzo precyzyjna jest ważne. Ale widziałem też coś że wzywasz abstrakcję. Co to znaczy odebrać książkę telefoniczną? Jesteśmy po prostu rodzaj biorąc za pewnik w tym pokoju że ma pewne znaczenie semantyczne. Każdy z nas po prostu rodzaj wiem, oh, dobrze, odebrać książkę telefoniczną. Co to tak naprawdę oznacza? Dobrze, że naprawdę oznacza przedłużenie Ręka, pochylić się nad przedłużyć palce, pinch książkę między palcami, wstać, wyciągnąć rękę do siebie. I możemy być naprawdę pedantyczny o tym, Naprawdę jest bardzo precyzyjna co do tego, co robię. Ale wszystkie te etapy są zbiorczo co to znaczy odebrać książkę telefoniczną. I tak wcześniej, kiedy powiedziałem, każdy z tych dwóch pierwszych sprawozdań można traktować jako kontynuować lub funkcją, tak naprawdę to oznacza to, co wzywasz abstrakcję. To tak wysokim poziomie koncepcyjnym Opis problemu, który rzeczywiście wiąże się sporo kroki. A więc to też jest powtarzających temat programowania, przy czym mógłbym napisać program przy użyciu składni jak this-- pick_up_phone_book (). A potem składniowo, jestem zamiar okraść z większości języków programowania. Teraz krok 1 wygląda jeszcze raczej funkcję, jako programista byłoby to nazwać. Wygląda na to, że ktoś kod dał nazwę i biorąc pod uwagę mi używać somehow-- w innych Słowa, co linia mam podświetlone oznacza funkcję, która może I nawet nie realizować siebie. Ktoś starszy, mądrzejszy niż ja już zorientowali się, jak określenie pojęcia zabierania książkę telefoniczną. A jak to jest z pięciu krokach po prostu wyrecytował, przy mojej głowie. Ale on już wdrożone Ten dał te kilka kroków nazwę, pick_up_phone_book. A nawiasach tylko to, co większość programistów zrobić na końcu wypowiedzi jak ta. Teraz może stanąć na jego lub jej ramiona i już nigdy, myśleć o tym, co to znaczy odebrać książkę telefoniczną. Mogę tylko powiedzieć, podnieś książkę telefoniczną. I to właśnie wszyscy z nas ludzie nie tutaj. Kiedy byliśmy prawdopodobnie 1 roku życia, 2 lat, ktoś musiał nas nauczyć, co to Oznaczało odebrać książkę telefoniczną. I od tamtej pory, mamy wydobywane z dala od tych bardzo nieciekawe Kroki mechaniczne. A my po prostu mieć intuicyjne rozumienie co to znaczy odebrać książkę telefoniczną. I teraz można ekstrapolować bardziej skomplikowany things-- wybudowanie budynku. Jak, dla niektórych osób, że rzeczywiście ma sens. Aby wykonawców, architektów, że ma pewne znaczenie. A oni wiedzą, co robić, jeśli Powiedziałem, idź skonstruować budynek. Jednak większość z nas w pokoju nie mógł radzić sobie z tym poziomie abstrakcji. Musisz powiedzieć nam jak go dostać łopata i przejdź się beton i paznokci kawałki drewna razem i co tam jeszcze jest zaangażowany w budowę budynku. A to dlatego, że nie mamy jeszcze zaprogramowane, aby zrozumieć co to znaczy budować budynek. Nie mamy tę abstrakcję. Nie mamy tę funkcjonalność. A więc to, co zobaczysz w językami programowania, na ogół zwłaszcza bardziej nowoczesne języki, jak Java, PHP, Ruby i Python, Są one znacznie bardziej dojrzały niż starsze językach jak C i C ++, a jednak inne. I tak się z więcej funkcjonalność wbudowany. Więcej kod został napisany przez ludzi w przeszłości że możemy zadzwonić lub wezwania lub użyć, jak jestem sugerując co z tym podkreślono linię tutaj. A więc nawet jeśli nie mówimy o językach programowania per se, Kod prostu pseudokod, wszystkie z idee są nadal w tej dyskusji. I okazuje się, precyzja jest bardzo ważne, ponieważ jest abstrakcją. I spróbujmy komunikowania się, że w następujący sposób. Przypadkowo mogło zepsute to poprzez miganie slajd na ekranie przedwcześnie. Ale pozwól mi zapytać o dzielnego ochotnika jeśli nie przeszkadza wymyślanie. Byłbyś w przedniej części aparat fotograficzny, jeśli jesteś OK z tym. Czy ktoś chciałby przyjść i dać Instrukcje tu swoimi kolegami? Wystarczy przyjść tu i stanąć tutaj i powiedzieć kilka słów. Victoria uśmiecha się najbardziej i unikanie oczy najbardziej. Czy byłbyś skłonny przyjechać na górę? OK. A jeśli wszyscy na swoje miejsca może wykupić kawałek makulatury, Jeśli będziesz. Podszyciem papieru jest w porządku. Przychodzić w ten sposób. A niektóre z papieru Ci mieli wczoraj byle pusty arkusz z papieru, jeśli można. A jeśli nie masz w ogóle, po prostu zwrócić się do sąsiada, jeśli można. Tak więc do chwili obecnej, na W tym przykładzie, Victoria będzie odgrywać rolę programista, inżynier, który potrzebuje program, który wszystko, co komputery, coś zrobić. I zobaczymy co założeń Ci podjąć decyzję. Zobaczymy jak precyzyjne ona zdecyduje się być. A jeśli idzie demonstracja pedagogicznie dobrze, wiele błędów będzie, że będziemy następnie użyj że jako okazję do dyskusji. Ale wyzwaniem dla zalecana być, aby uniknąć tych błędów, być dobrym programistą. I tak oto wyzwanie na strony, jeśli którą lubił chodzić tutaj, jest przed Victoria na ekranie here-- i miejmy nadzieję, że żaden z was o tym pamiętać, kiedy powleczone na ekranie. I nie zawrócić w ogóle, ponieważ W tym pokoju znajduje się kolejny ekran że mogę wyłączyć. Więc nie zawrócić. W przedniej części Wiktorii jest to, że ten sam krzyk. Jej zadaniem jest teraz powiedzieć wam wszystkim na kartce papieru, co rysować. I widzimy, w oparciu o werbalne instrukcje sam, kod komputerowy, jeśli chcesz, jak dokładne rysunki are-- implementacje są twoje. Ma sens? PUBLICZNOŚCI: Tak. DAVID MALAN: OK, wykonać. PUBLICZNOŚCI: Narysuj kwadrat. [ŚMIECH] DAVID MALAN: I nie Pytania mogą być zadawane. Może robić tylko to, co ci każą. Aha, i jeśli masz dzisiejsze slajdy otworzy się w karcie, nie patrzeć na karcie. OK? PUBLICZNOŚCI: OK, narysować okrąg. Slope-- mogę powiedzieć stoku? DAVID MALAN: do ciebie. PUBLICZNOŚCI: zboczu. A trójkąt. DAVID MALAN: W porządku. I tu na chwilę. I zamierzam przyjść wokół za chwilę. I nie ma potrzeby, aby umieścić swoje nazwiska na niej. Pozwól mi przyjść dookoła i zebrać swoje rysunki, jeśli nie przeszkadza rozrywając je. Oto co wróciliśmy. Będę jej projekcji na ekranie. Widzę, kwadrat, koło, stok i trójkąt. Więc to była jedna odpowiedź istnieje. I let's-- okrzyki. Dziękuję Ci. Oto kolejny asortyment, i jeden za nim. Więc wszystkie one wydają się uchwycić ducha. Dziękuję Ci. Jest jeszcze jeden, a tu jeszcze jeden. Interpretacja nachylenie jest trochę inaczej, trochę krzywego. A najbliżej, albo ze względu na cudowne specyfiki z którymi masz opisane, czy może rodzaj widziałem to wcześniej, to rzeczywiście Co Victoria faktycznie opisywania. Ale teraz, ci z was, którzy nie mieli go dość dobrze, niech oferują pewne obiekcje tutaj. Więc Victoria Pierwszy powiedział narysować kwadrat. A teraz, możemy założyć, ze względu na obecnie że każdy wie jak narysować kwadrat. Ale to nie jest całkowicie jasne, prawda? Jak inaczej można mieć rysowane kwadrat, lub gdy może być kilka niejasności tu na komputerze? PUBLICZNOŚCI: Lokalizacja i wielkość. DAVID MALAN: Lokalizacja, prawda? Wszyscy z was miał papier jakiegoś kształtu, ogólnie prostokąty, ale nieznacznie różne rozmiary. Ale na pewno mogło być sporządzone, jeśli chcesz, ogromny plac, może mały kwadrat. Może ono obracać. Nie sądzę, że widzieliśmy. Ale może to być bardziej diament jak, ale nadal, mimo wszystko, Matematycznie kwadrat. Więc to było zapewne niejednoznaczne. Potem powiedziała, narysować okrąg. Niektórzy z was nie wyciągnąć go obok to, co nie jest nierozsądne, ponieważ ludzie mają tendencję do myślenia lub przeczytać od prawej do lewej w większości języków, więc nie zły przypuszczenie. Ale to może mieć koło było wewnątrz kwadratu, można było wokół kwadratowe, mógłby być w innym miejscu w arkuszu tak prawdopodobnie niejednoznaczne. Nachylenie mogło być może biorąc najwięcej swobody werbalnie z tego, co to znaczy. A niektórzy z was interpretować że jako falowane linii lub prostą lub podobne. A potem trójkąt, też może mieć zorientowano na wiele sposobów. Tak w skrócie, nawet z czymś, Ci spojrzenie i jesteś jak, wow, tak proste, dziecko może wyciągnąć to nie dobrze Naprawdę, chyba, że ​​jesteś super, super przekonujące i powiedzieć komputerowi dokładnie, co ma robić. Więc jeśli można, jeśli masz kolejny arkusz papieru, niech spróbować jeszcze raz. A ja zamierzam dać jeden Victoria Innym przykładem na ekranie tutaj. I znowu, nie zawrócić i nie patrzeć na slajdach. I dam po chwili zastanowić się, jak to opisać. Nie pozwól im zobaczyć strach w twoich oczach. [ŚMIECH] I znowu, tym razem dźwigni niektóre z tych bram i postarać się niemal wszyscy przynajmniej prawidłowa odpowiedź. PUBLICZNOŚCI: OK, weź kawałek papieru, spójrz W środku tego kawałka papieru. W środku tego kawałka z papieru, narysować sześcian. [ŚMIECH] DAVID MALAN: Czego się nauczyliśmy? Byliśmy tak blisko. OK, jeśli można powtórzyć dla każdego. PUBLICZNOŚCI: W środku malowniczego kawałek papieru, narysuj obiekt, który wygląda jak kostka. DAVID MALAN: OK, to wszystko można dostać się do pracy. Pozwól mi być analityczna i nie tyle krytyczne ale aby roszczenia że Victoria na pewno Wydaje się, że myślenie w bardzo abstrakcje wysokim poziomie, co nie jest nieuzasadnione. Bo inaczej, to wszyscy być dość dysfunkcyjnych, gdybyśmy mieli się kiedykolwiek tak precyzyjne ze wszystkim, co robimy w świecie. Ale mówiąc przejść do middle-- I Myśleliśmy, że na takiej dobrej drodze tam, jak jechać do samego środku strony, a następnie narysować sześcian. Więc ona myślenia w abstrakcji, bo wciąż oglądania co jest na ekranie, podobnie zresztą jak sześcian. Ale jest tak wiele możliwości interpretacji tam. I rzeczywiście, nie ma tak wielu innych sposobów można wyrazić To, co ja proponuję w jednej chwili. Więc tutaj mamy jedną inkarnację z picture-- whoops-- jednego wcielenie obrazu, a więc Trochę trójwymiarowość do niego, co jest miłe. Oto jeszcze jeden, w którym masz sam, choć jest to rodzaj otwartej sześcianu. Niektórzy ludzie trwało to trochę bardziej płaska, dwuwymiarowa. I to jest w porządku. Tak więc, w rzeczywistości Środek papieru. To jeden myślę będziesz jak, bo jeśli mamy iść tutaj, to jest to, co opisywał. Więc teraz, pozwól mi zaproponować jak inaczej możemy opisać tę sytuację. Powrót w dzień, jeden z najbardziej bardziej powszechne sposoby nauki programowania było napisanie kodu, pisze linie instrukcji, że kontrolowane trochę Żółw na ekranie. Logo i inne warianty tego była nazwa języka. A żółw żył w świecie. Więc załóżmy tej prostokątnej Przestrzeń jest jego świat. I byłoby zacząć od assuming-- I tak naprawdę nie wiem jak narysować żółwia, więc zróbmy to w ten sposób. I wtedy on ma powłokę a następnie być może niektóre stopy. Więc może masz ten mały znaków na ekranie. A celem tego język programowania było zmusić żółwia iść w górę, w dół, w lewo, w prawo i przyłożył pióro lub podnieść jego pióra w górę, aby mógł właściwie narysować na ekranie w tym bardzo płaską prostokątną świecie. Więc gdzie Myślałem, że może jechać, i gdzie należy rozważyć nurkowanie w dół, aby psychicznie przy opisywaniu Instrukcje bardziej ogólnie, Chciałbym twierdzą, jest umieszczania Pióro dół w middle-- a my się pozbyć żółwia, bo naprawdę nie mogę zachować rysunek go bardzo dobrze. A teraz, jak inaczej mógłby Mówię narysować sześcian? Cóż, można powiedzieć coś takiego losowania Linia ukośna na północny wschód, na przykład, lub pod kątem 45 ° do góry. I że może zdobyć mnie tutaj. I jestem dość daleko od sześcianu. Ale teraz, mogę coś powiedzieć jak obrócić o 90 stopni w lewo i narysować linię równej długości zachód. I mogłem kontynuować w podobnych kierunkach. I to nie będzie łatwe. I szczerze mówiąc, prawdopodobnie byśmy zostały tu przez pięć minut. Ale może byłoby nam się zdobyć coś, że na koniec dnia kończy się kostka, ale zanurkował wewnątrz tej abstrakcji to zrobić na tak niskim poziom, który tak naprawdę nie można zobaczyć, co robisz, aż cała Chodzi o to faktycznie istnieje na stronie. A więc jest to ogólna zasada, znowu z programming-- tego pomysłu abstrakcji. Jest tak cudownie potężne, bo znowu, Powiedziała tylko, narysować sześcian, którego wszystkie nam dość dużo by grok bardzo szybko. Chcemy po prostu zrozumieć, OK, narysować sześcian. Możemy nie wiedzieć, orientację, więc możemy być trochę bardziej precyzyjny, ale możemy generalnie obraz czy wiesz co to jest kostka. I to jest przydatne, bo jeśli za każdym razem usiadł jako programista w klawiatura do pisania kodu, jeśli trzeba było myśleć w takich niski poziom, żaden z nas nigdy się nic zrobić. I z pewnością nikt z nas nie cieszyć się proces pisania kodu. To byłoby jak pisanie w 0 i 1 roku, którego szczerze nie było tak dawno temu ludzie pisali kod w 0 i 1 roku. A my bardzo szybko wpadł Te wyższe languages-- poziom C ++ i Java i inne. Więc spróbujmy jeszcze raz po prostu odwróć tabele, tak że każdy z nas mają szansę na przemyślenie raczej w ten sam sposób. Czy możemy dostać jeszcze jeden wolontariusz to Czas do wystąpienia do zarządu i rysować, Nie odmawiać? Dobra. Ben, chodź na górę. I, Ben, w tym przypadku, po twarz planszę, nie patrzeć w lewo, nie wyglądają dobrze. Tylko rób, co się koledzy tutaj powiedzieć. I dla wszystkich innych w Pokój, teraz są programista. On jest komputer. A obraz wybrałem tutaj z góry to jest jeden tutaj. Oni just-- Myślą zabawny żart wszystko. Więc ma ktoś chciał ochotnika pierwszej instrukcji lub oświadczenie, że powinno Pióro dowodzenia Bena? I zrobimy to wspólnie, może jedna instrukcja od każdej osoby. Przepraszam? PUBLICZNOŚCI: narysować okrąg. DAVID MALAN: narysować okrąg Jest to pierwsza rzecz, jaką słyszałem. PUBLICZNOŚCI: do góry. DAVID MALAN: do góry. OK, możemy pozwolić usunąć, cofnąć. A teraz ktoś inny. Dan, można byłoby wygodne oferuje następny rozkaz? PUBLICZNOŚCI: Jasne, rysować centrum dna okręgu z small-- trochę mała przestrzeń tym, narysować linię prostą aż do trzech czwarte drogi na dół planszy niewielki kąt w lewo. DAVID MALAN: Dobrze. PUBLICZNOŚCI: lekkim kątem. DAVID MALAN: Cofnij, Control-Z. OK. Andrew, chcesz zaoferować do następnej instrukcji? PUBLICZNOŚCI: Jasne. Z dołu tej linii dalsze niewielkie angle-- whoops-- może o jedną trzecią długości [INAUDIBLE] niewielki kąt w dół i jak trzecia długości [INAUDIBLE]. Więc tak, od tego momentu, narysować linię trzeci długości poprzedniego Linia bardziej na lewo. DAVID MALAN: To OK? Prosta, to jest OK? OK, Olivier, chcesz oferuje się następnego? PUBLICZNOŚCI: [INAUDIBLE] z Dno kręgu [INAUDIBLE]. Zwrócić na prawej z [INAUDIBLE] centymetrów. [ŚMIECH] DAVID MALAN: Myślę, że masz zamiar trzeba przekonwertować to cale tutaj. PUBLICZNOŚCI: Stop. [ŚMIECH] DAVID MALAN: OK. [? Ara,?] Chcesz oferuje się następnego? PUBLICZNOŚCI: Narysuj [INAUDIBLE] górny [INAUDIBLE] samo. [INAUDIBLE] koło, zwrócić się do [INAUDIBLE] i wyciągnąć [INAUDIBLE]. DAVID MALAN: OK, nie więcej cofnąć. Zróbmy jedną lub dwie kolejne instrukcje. Chris, chcesz zaoferować jeden? PUBLICZNOŚCI: Na dole okręgu [INAUDIBLE] narysować równej linii slopping w dół, w lewo [INAUDIBLE]. DAVID MALAN: OK. Andrzej? Mamy did-- Karim? PUBLICZNOŚCI: Zaczynając od prawej linii, Koniec lewej linii, na dole, masz zamiar iść rację tę samą długość, że linia jesteś na, rysunek do prawo [INAUDIBLE]. [INAUDIBLE] stopni, więc [INAUDIBLE] stopni na prawo. DAVID MALAN: W porządku. Zatrzymajmy. Nie odwracaj się jeszcze. Zatrzymajmy i niech spróbuj jeszcze jedną próbę zanim objawi Ben co on rysuje. Można przetasować Bena prawy-- a właściwie, No, po prostu dać kolejna płyta, nawet lepiej. Więc jak ktoś miałby teraz do podjęcia bardziej podejścia że Victoria wzięła wcześniej, gdzie mówimy w wyższym poziomie abstrakcji i tylko w zdaniu lub dwa opisać Ben co zwrócić bez dostania się chwastów, by tak rzec, w tym niższy poziom? Wiktoria. [ŚMIECH] PUBLICZNOŚCI: Narysuj figurę człowieka spaceru. A jego ręce i nogi musi być po prawej stronie. DAVID MALAN: OK, to wszystko można dostać. W porządku. Dlaczego nie możemy ujawnić Ben, co zrobił. Więc brawa. To była najtrudniejsza chyba. Więc nawet jeśli mówimy w kategoriach dość głupie o tym, rysunek zdjęcia, mam nadzieję, można naprawdę docenić stopień ekspresja, które mogą być konieczne aby powiedzieć komputer, co robić. I w istocie fakt, że Ben był w stanie wyciągnąć to tak szybko jest swego rodzaju testament, aby za pomocą język, może wyższy poziom Wersja języka angielskiego, który pozwala mu po prostu używać słów, ani słyszeć słowa od Wiktorii, które pozwalają mu te abstractions-- prostu wyciągnąć figura chodzenie do prawy-- tego rodzaju ma pewne znaczenie semantyczne do niego, który nie jest prawie tak oczywiste, gdy jesteś po prostu mówiąc, połóż pióro, rysować do prawej, sporządza się w lewo. A więc to też jest bardzo powszechne w programowaniu. Byłoby to mówi się, że jak język bardzo niski poziom, programowanie w 0 i 1, jeśli chcesz. I to byłoby na wyższym poziomie język programowania w języku Java, czy coś takiego. Kawałkiem uproszczeniem, ale to rodzaj jakby emocjonalne czując, że czujesz, gdy zastosuje się jeden rodzaj rzeczy lub innego. Trochę frustracji tutaj koniecznością za taką precyzją, ale szans być trochę luźniejsze z interpretacja tutaj. Ale oczywiście, błędy mogą powstać w wyniku. Jeśli chcesz się home-- mamy Nie zrobi tego jeden w class-- ale jeśli chcesz wprowadzają na zdobycie gola, Myślałem, że będziemy nurkować do tego. Więc jeśli chcesz grać w tę gra z drugą połówką lub dzieci lub tym podobne, to może cieszyć, że dobrze. Więc chodźmy do przodu i spojrzeć na jeden ostatni rzeczą tutaj obliczeniowej myślenia. A to prowadzi nas do Jana Oliver, a nie do zacisku Może widzieliście ostatniej nocy, ale nieco ostatnim numerze. Kilka miesięcy temu, Volkswagen zajęło sporo kuloodpornych z jakiego powodu, jeśli wiesz? Co oni mieć kłopoty za? Tak, więc oni emissions-- starali się pokonać emisji Testy zasadniczo mające swoją samochody zanieczyszczają środowisko mniej kiedy ich samochody były testowane oraz zanieczyszczają środowisko bardziej kiedy samochody nie były testowane. I co jest coraz bardziej interesująca w świecie, a może masz implikowana od dyskusji na temat tego, co jest like-- it-- CarPlay, oprogramowanie Apple dla samochodów oraz fakt, że wiele z nas coraz częściej mają ekrany dotykowe w naszych samochodach jest przerażająca kwota oprogramowania u osób tych samochody dzisiaj, które szczerze otwiera całą puszkę Pandory, gdy chodzi o bezpieczeństwo i ryzyko fizycznego. Ale dzisiaj, niech skupić się na tylko to, co jest zaangażowany w pisanie oprogramowania które mogłyby gamed systemu. Dla definicji związku Problemem dla tych nieznanych, rzućmy okiem na John Oliver. A dla tych, którzy znają problem, spójrzmy na to w soczewce zabawy poprzez John Oliver, jak również. Więc pozwól mi hit grę na tym, że myślę, wprowadzenie trzech minut. Cholera. [ODTWARZANIE] -Samochody-- DAVID MALAN: Oczywiście, YouTube, it's-- - --The najmądrzejszy znaków The Fast and Furious filmy. W tym tygodniu, niemiecki producent samochodów Volkswagen znalazła się w środku skandalu Proporcje potencjalnie przestępcze. -Volkswagen Jest usztywnienie miliardy grzywny, ewentualne oskarżenia dla swoich menedżerów, jak Firma przeprasza dla olinowania 11 milionów samochodów do pomóc mu pokonać testy emisji. -Certain Diesel wzory zostały zaprojektowane z wyrafinowanym oprogramowaniem Używane informacje, w tym położeniu kierownicy i pojazdem prędkość, aby określić samochód był w trakcie badania emisji. Zgodnie z tym okoliczność, silnik zmniejszyłoby emisję toksycznych. Ale samochód był uzbrojone obwodnicy że gdy był napędzany. Emisje wzrosła od 10 do 40 Czasy powyżej dopuszczalnych poziomów EPA. -Wow, 10 do 40 razy większa niż EPA pozwala. To jest najgorsza rzecz Volkswagen nigdy nie robił, Jest coś można powiedzieć, czy że nigdy nie słyszał o II wojnie światowej. Ale może to najpewniejsza oznaka, jak Volkswagen wielkim problemem jest, jest to, że ludzie w bardzo top nie ustąpił. Prezes zrezygnował w środę po starają się zrobić damage control, mówiąc był nieskończenie przykro, które brzmiało wspaniale, dopóki nie okazało się, miał tylko 10% przykro ale miał sfałszowane usta sztucznie zawyżać jego sorriness. A tymczasem Volkswagen USA Szef miał przeprosiny z jego własnej. -Niech Sprawę jasno na ten temat, nasza firma była nieuczciwa. I w moich niemieckich słowy, zostały całkowicie spieprzył. -Tak, Ale całkowicie wkręcony up nie są dzieła niemieckich. A język niemiecki ma wiele pięknych fraz opisać sytuacje jak ta, takie jak [niem], co oznacza, że ​​z grubsza smutek, który przychodzi od kłamstw związanych z biznesem, lub [GERMAN], co przekłada jak zawstydzanie jedynek ojca udziałem chmury benzyny. Jest to piękny język. To po prostu pływa poza językiem. A tak przy okazji, podczas gdy człowieka Przeprosiny może brzmieć szczerze, warto zauważyć, że mówi się oficjalna strona Wprowadzenie do 2016 roku Volkswagen Passat, co oznacza, że ​​na krótko Po mówiąc przykro, to powiedział. Dziękuję bardzo za przybycie. Ciesz się wieczorem. W następnej kolejności jest Lenny Kravitz. [MUZYKA] -ok, OK, kończąc swoje Przeprosiny z góry obok Lenny Kravitz nie scream trzeźwy skruchy. To krzyczy, poprosiliśmy Bon Jovi, a on nie powiedział. Marka Volkswagen ma został poważnie uszkodzony. I szczerze mówiąc, ich nowa reklama Kampania nie jest dokładnie pomaga. - [GERMAN], chcielibyśmy w Volkswagenie podoba przeprosić za oszukują cię naszych pojazdów. [KONIEC ODTWARZANIA] DAVID MALAN: Więc to było okrężna droga of-- sorry-- był to okrężna droga wprowadzenie fundamentalnego problemu w oprogramowaniu, które jest to, że trzeba wykryć pewne warunki. A więc pytanie pod ręką tutaj to, w jaki sposób samochód potencjalnie wprowadzone w oprogramowaniu tych programistów, wykryć, że to faktycznie testowany? Więc być bardzo jasne, co robią było w środowiskach, w których programiści zorientowali samochód był ewidentnie testowane, że w jakiś sposób samochód emituje mniej zanieczyszczeń, mniej emisji, tak mniej toksyczne opary i taki. Ale kiedy jest normalnie jazdy na drodze, byłoby to po prostu emitują tyle Zanieczyszczenie ponieważ chciała. Więc jak możemy napisać pseudokod dla tego algorytmu? Jak moglibyśmy napisać Pseudokod dla oprogramowania zainstalowanego w samochodzie? Chodzi mi o to, w skrócie, sprowadza do czegoś takiego. w przypadku testowanego emitują mniej. else emituje więcej. Ale to trochę zbyt wysoki poziom, prawda? Spróbujmy zanurkować, co to abstrakcja testowanego środka. Innymi słowy, nawet jeśli nic nie wiem o samochodach, jakiego rodzaju pytania można zadać w celu określenia, czy jesteś w fazie testów, jeśli masz samochód? Jakie cechy mogą być przedstawić jeśli samochód jest testowany? PUBLICZNOŚCI: Testowanie sprzętu. DAVID MALAN: Sprzęt badawczy. Więc jeśli sprzęt kontrolujący w pobliżu, a następnie emitują mniej. Więc można sobie wyobrazić realizację które z pewnego rodzaju kamery lub wykrywania, co jest wokół ciebie. I niech mi zaproponuje, że po prostu czuje się zbyt skomplikowane faktycznie mają dodatkowe sprzętowe dla tego celu. PUBLICZNOŚCI: Jeśli jesteś w park, jeżeli osłona jest otwarta. DAVID MALAN: W parku lub Okap otwarty, więc to jest dobre. PUBLICZNOŚCI: i prowadzenie samochodu. DAVID MALAN: Więc to trochę więcej concrete-- i prowadzenie samochodu. Więc byłoby to koniunkcja Kilka różne warunki, jeśli będzie. Więc jeśli samochód jest w parku, a nawet choć jest to bardzo mechaniczne rzeczą Zazwyczaj mogłem wyobrazić pisanie oprogramowania, przede wszystkim dlatego, że nie ma Często światło tam w tych dniach, Mogę sobie wyobrazić istnienia oprogramowanie, które może zapytać przesuwak lub co nie, jesteś w parku, są Ty w napędzie, jesteś w odwrotnej kolejności. I mogę wrócić Odpowiadamy, że jest albo tak lub nie do tych rodzajów pytań. I tak mógłbym prawdopodobnie również odpowiedzieć takie pytanie, to okap otwarte. Może istnieje jakiś rodzaj czujnika że albo daje mi 1 lub 0, prawda czy fałsz, osłona jest otwarta. A następnie uruchomić samochód, może wykryć że w jakiś sposób za pośrednictwem jakiego mechanizmu? Podobnie jak samochód jest uruchomiony, I może wykryć, że to on, Mogę jakoś wykryć że samochód jest w ruchu? WIDOWNI: RPM. DAVID MALAN: Tak, więc nie że zawsze, że igła informuje, ile obrotów na minute koła występują. A więc mogłem patrzeć na to. A jeśli to nie jest 0, chyba że oznacza, że ​​samochód jest w ruchu. Ale musimy być Trochę tam uważać, because-- niech uprościć this-- jeśli po prostu powiedział, że jeśli jazdy samochodem, Nie chcemy, aby po prostu emitują mniej chcemy, jeśli samochód jest uruchomiony i jest w fazie testów. Tak więc istnieje kilka innych składników, które ludzie wysunęli hipotezę, oprogramowanie robi, z powodu nieobecności rzeczywistego kodu źródłowego, można tylko rodzaj wywnioskować z Fizyczne skutki samochodu co do tego, co Może być dzieje pod spodem kaptur w oprogramowaniu. Więc jeśli samochód działa i może, powiedzmy, tylne koła nie porusza, może to być oznaką jakiegoś testu? Co ja sugerując tutaj? Tak, być może, to na jednego z tych rzeczy, rolkowych, gdzie podobne koła obracają z przodu lub z tyłu, w zależności od tego, czy jest to przednie koło lub napęd na tylne koła, więc połowa kół są ruchome, ale dwa inne nie, co Jest to dziwne, sytuacja w świecie rzeczywistym. Jeśli jedziesz na Droga, która nie powinna się zdarzyć. Ale jeśli jesteś w magazynie w pewnego rodzaju układ rolek, które mogą rzeczywiście stało. Myślę, że ludzie zaproponowali również, że może, jeśli samochód jest uruchomiony i układ kierowniczy koło nie porusza się, że też może być sygnałem, ponieważ jest to uzasadnione dla jak od razu na drodze. Ale nawet wtedy, człowiek jest prawdopodobnie przesuwając go trochę czy na pewno w ciągu kilku sekund. Albo trakcie minuty, kursy są nie jest będzie kojarzy się dokładnie takie samo stanowisko. Tak więc, innymi słowy, że może odejmowanie, jesteś w fazie testów, a rozbić tę funkcjonalność do tych składowych składników. I to jest naprawdę to, co Volkswagen inżynierowie jakoś tak. Pisali oprogramowania świadomie wykryć, czy samochód jest w fazie testów, Dlatego emitują mniej indziej wydzielać w zwykły sposób. I tu problem, też, jest to, że oprogramowanie nie jest coś można naprawdę zobaczyć, chyba trzeba tak zwany kod źródłowy. Nie ma więc dwa różne typy code-- co najmniej dwa różne rodzaje Kod na świecie. Jest coś, co nazywa się źródłem Kod, którego nie jest w przeciwieństwie byliśmy pisanie kodu źródłowego. To jest kod źródłowy napisany w język zwany pseudokod, który jest po prostu coś angielsko-podobnego. Nie ma formalnej definicji tego. Ale C i Java, C ++, te są wszystkie języki formalne, że gdy piszesz w nich, co masz Jest to plik tekstowy zawierający kod źródłowy. Ale jest też coś świat zwany kod maszynowy. A kodu maszynowego, niestety, Jest tylko 0 i 1 roku. Więc co to kod maszynowy Maszyny do zrozumienia, oczywiście. Kod źródłowy jest to, co ludzie rozumieją. I na ogół, ale nie Zawsze istnieje program że programista używa tego bierze źródło Kod i zamienia ją w kodzie maszynowym. I że program jest ogólnie nazywany kompilatorem. Więc Twój wkład jest kod źródłowy, Twój wynik jest kod maszynowy, a kompilator jest kawałek oprogramowanie, które robi ten proces. Więc to naprawdę ładnie odwzorowuje nasze algorytmy, wejścia, wyjścia. Ale to jest bardzo specyficzne wcielenia z tym, co znaczy, że nawet jeśli jesteś właścicielem jednego z Volkswagen samochody, które jest winny tego, to nie jest tak, jak można po prostu otworzyć kaptur lub otworzyć instrukcję obsługi lub szukać w kodzie, ponieważ w momencie osiągnie swój samochód w podjazd, to już było zamienione na 0 i 1 roku. I to jest bardzo trudne, wręcz niemożliwe, ale bardzo trudno zebrać dużo niczego od po prostu patrząc na bazowego 0 i 1-tych. Więc można zrozumieć to, ostatecznie, jeśli Ci zrozumieć, w jaki sposób urządzenie operates-- Intel inside-- jeśli rozumiesz architektura Intel, ale jest to bardzo czasochłonne. I nawet tam, to polubisz nie być w stanie zobaczyć wszystko że kod może faktycznie zrobić. Wszelkie pytania dotyczące tego czy ta rodzaj procesu bardziej ogólnie? I rzeczywiście, możemy powiązać tę dyskusję do wczorajszej dyskusji Apple. To również dlatego, że FBI nie można po prostu iść i patrzeć w telefonie podejrzanego i znaleźć linii kodu, na instancji, które umożliwiają hasło lub umożliwiają temu opóźnienie 80 ms. Ponieważ w chwili jego Facet na iPhone, to już było zamienione na 0 i 1 roku. Dobrze, zatrzymajmy się tutaj na naszą spojrzeć na obliczeniowej myślenia. Dlaczego nie zrobić sobie przerwę 15 minut. A kiedy wrócimy, będziemy przyjrzeć programowania Sam i rozpocząć mapowanie niektórych tych pojęć wysokiego szczebla do faktycznego, jeśli figlarny, język programowania.