David Malan: Welkom terug, almal.
So gister, sal jy onthou dat Ons het gefokus op hierdie onderwerpe hier.
So het ons vier oorkoepelende topics-- privaatheid, sekuriteit, en die samelewing;
internet tegnologie; wolk rekenaar; en uiteindelik, web ontwikkeling.
>> Het iemand het die bandwydte of die tyd
om 'n bietjie John kyk Oliver gisteraand?
Dit is eintlik redelik amusant, indien nie 'n bietjie skrikwekkend.
Enige vrae oor enigiets Ons het gister?
Enige verduideliking?
Enige vrae wat jy wil maak seker ons raak vandag in een of ander vorm?
So skoon lei.
>> So, wat is op die agenda vir vandag?
So het ek gedink ons ​​wil begin vandag met 'n blik op wat oor die algemeen
bekend as computational thinking-- by die risiko van oorvereenvoudig, dink
soos 'n rekenaar, miskien dink soos 'n ingenieur,
en probeer om te begin om organiseer jou gedagtes
of om jou 'n beter begrip van gee wat betrokke is by eintlik bevelvoerder
'n rekenaar om iets te doen deur middel van programmering.
En ons sal dit hou 'n mooi hoë vlak, pretty much Engels,
maar probeer om te gebruik van bekende voorbeelde te formaliseer hoe
jy te werk sal gaan oplos van probleme.
>> En ons sal verskeie CS heroorweeg onderwerpe, soos onttrekking,
wat 'n paar vorendag gekom keer gister,
algoritmes, en dan verteenwoordiging.
En dit is waar ons moet begin vandag in net 'n oomblik.
Dan sal ons 'n blik op ontwikkeling te neem.
Ons sal 'n blik op sommige neem fundamentele konstrukte
waarmee jy dalk vertroud wees en dalk selfs vind nogal intuïtief.
>> Ons sal kyk, in werklikheid, teen 'n monster programmering
omgewing wat baie toeganklik, baie speels en inderdaad gerig
vir ouderdomme 12 en ouer.
Ons sal 'n paar minute daar spandeer en dan neem dinge na 'n laer vlak
en eintlik praat oor 'n paar van die algoritmes en datastrukture,
om so te praat, wat programmeerders tipies gebruik
om probleme op te los baie meer doeltreffend as wat jy dalk
in staat wees om heeltemal te doen sonder hulle.
Dan na middagete, sal ons 'n blik op tegnologie stapels, wat net
'n fancy manier om te sê versamelings van tegnologie
wat jy kan gebruik om los 'n probleem.
En ons sal praat oor die alfabet sop van tale wat bestaan ​​today--
Java en Python en C ++ en PHP en Ruby en allerhande ander dinge.
>> Ons sal 'n blik kortliks te neem by ontwerp patrone.
Programmeerders, met verloop van tyd, het aangeneem metodologieë
wat geneig is om hulle te help probleme op te los meer geredelik.
Wanneer jy begin om jouself te sien skryf dieselfde soort kode weer en weer,
mense formaliseer diegene herhalings en toeskryf name aan hulle
en gebruik dit dan en bevorder hulle uiteindelik.
En ons sal 'n bietjie gesels oor mobiele strategieë,
soos wat beteken dit om werklik 'n mobiele program of 'n mobiele webwerf.
Het jy dit doen vir Android?
Het jy dit vir IOS?
Het jy dit vir beide van diegene?
En wat is die trade-offs?
En dan uiteindelik, sal ons neem 'n blik web ontwikkeling, wat
is 'n kollektiewe term regtig beskryf enige tyd
jy skryf sagteware wat bedoel om uit te voer op die web,
of op selfone of desktops en skootrekenaars.
Ons sal 'n kort blik op te neem databasisse en die ontwerp
daarin, al is dit net omdat byna elke interessante web-gebaseerde program
deesdae het 'n soort van databasis.
Andersins, dit sal net statiese inhoud.
En 'n databasis kan jy maak veranderinge met verloop van tyd, of jouself
of van die gebruikers.
En ons sal kyk hoe jy werk sal gaan om die ontwerp
dat databasis en die soort jargon wat kan kom in 'n ingenieur se
bespreking op 'n wit bord wanneer eintlik implementering
'n app vir die eerste keer.
>> Ons sal kortliks praat oor APIs, nuttige dienste
wat jy kan gebruik op die om op te staan skouers van ander, of maatskappye
of individue, en los jou eie probleme vinniger.
En dan sal ons dalk ploeteraars 'n bietjie met JavaScript,
'n programmeertaal wat gebruik word beide in blaaiers deesdae, maar ook
in bedieners.
En miskien, sal ons weer, die tyd dit toelaat,
sommige van die praktiese web dinge wat ons het gister en die twee te integreer
saam voordat ons verdaag.
>> So met that-- wat ahead-- is daar enigiets ontbreek wat jou
wil om seker te maak ons ​​voeg en raak op een of ander stadium.
As dit Springs ter harte neem, bring dit tot kort voor lank.
Maar hoekom doen ons nie begin met 'n kyk na Rekenaardenke.
>> En laat ek stel voor dat Rekenaardenke is, weer,
soort van die hoë vlak beskrywing van wat 'n rekenaar wetenskaplike kan doen.
En inderdaad, kom ons begin met drie bestanddele wat
mag gaan in computational denke.
Dit is net een manier om dit te beskryf.
Ons kan beslis definieer dit in 'n aantal maniere.
>> Maar laat my stel, ter wille van vandag,
wat die wêreld se probleme, al die wêreld se probleme,
wanneer hulle genader word deur 'n rekenaarwetenskaplike kon
gesien word as wat ons sal oproep insette, wat
moet gevoer word in wat ons sal noem algoritmes, wat dan lewer uitgange.
Met ander woorde, die hele wêreld van probleemoplossingsvaardighede Ek eis
kan gedistilleerde in hierdie drie bestanddele.
So, wat bedoel ek met insette?
Insette is net wat jy oorhandig om op te los.
>> Byvoorbeeld, hier is 'n ou skool probleem.
As ek 'n telefoon boek hier en Ek wil iets kyk na dit,
dit is my insette.
Ek het 1000 of so bladsye in 'n telefoon boek.
Dit is die insette om my probleem.
En ek wil iets vind soos Mike Smith, sodat 'n vriend
wie se naam en nommer hopelik in hierdie adresboek.
>> Dit is voor die dae van sel selfone, so ek kan nie net soek vir dit.
So ek het dit ou te doen skool en eintlik soek
hierdie insette vir 'n paar antwoorde.
En die antwoord is net gaan die uitset genoem te word nie.
So het die insette is die telefoon boek.
Die algoritme is alles stel stappe wat ek gebruik om Mike Smith vind.
En die uitset is, hopelik, Mike Smith se telefoonnommer.
En dit dan net sou wees verteenwoordiger van die meeste enige probleem
om met jou oorhandig insette en wil uitsette te produseer.
>> Dus, voordat ons kyk na die proses waardeur ons kan die probleem op te los,
vind Mike Smith en iets soos dit,
Kom ons kyk na die eerste en die last-- insette en uitsette.
Fisies, natuurlik, die insette hier is 'n hele klomp van die papier vasgeplak saam
in die vorm van 'n telefoon boek.
Maar rekenaars, van course-- skootrekenaars en desktops en selfs selfone
hierdie days-- dit is elektroniese toestelle.
>> En aan die einde van die dag, wat die enigste insette tot 'n rekenaar?
Wel, dit is iets soos hierdie netsnoer hier.
Ek prop dit in die muur, en Ek kry 'n vloei van elektrone,
wat dit moontlik maak vir my om die masjien loop.
Of miskien diegene elektrone geskep deur middel van my battery.
Maar aan die einde van die dag, dis die enigste ding wat gaan in my laptop.
En so baie interessante dinge is uiteindelik
uit te kom, of deur middel van die drukker
of die skerm of audially of dies meer.
>> So as alles wat ons het as ons fundamentele insette tot 'n rekenaar
is elektrisiteit, sodat net elektrone gaan in en of uit,
en so hoe kan ons gebruik wat insette om werklik inligting voor te stel?
Met ander woorde, hoe kry ons van 'n eenvoudige vloei van elektrisiteit
om verteenwoordig werklike getalle of werklike briewe
of werklike beelde op die skerm of werklike films of e-posse
of enige nommer van hierdie hoër vlak konsepte,
as jy wil, wat aan die einde van die dag op 'n manier
moet gestoor word in hierdie elektroniese meganiese toestel
die gebruik van slegs die eenvoudige ingredients-- elektrone kom in en uit?
>> So dit blyk dat, in die eenvoudigste vorm,
die enigste soort state Ek het in my wêreld, sodat
aan voorwaardes speak-- in my world-- is óf
Ek het elektrone vloei, elektrisiteit vloei, of ek doen not-- so aan, af.
En laat ons formaliseer op en af, as 'n rekenaarwetenskaplike krag
met net 1 en 0.
Kom ons beskryf sommige arbitrêre maar konsekwent nommer nie.
1 beteken op, 0 beteken nie.
Of jy kan ook beskou dit as ware middel op en valse middel.
Jy kan ook swart doen en wit of rooi en blou.
Jy hoef net twee beskrywings.
En 'n rekenaar wetenskaplikes sou oor die algemeen net gebruik 0 en 1.
>> So as dit die geval is, my enigste alfabet is wat bestaan ​​uit 0 en 1 se hoe
kon ek moontlik te kry om die syfer selfs 2 in 'n rekenaar, wat nog te sê die nommer 3
of 'n letter van die alfabet of 'n beeld of 'n fliek?
Hoe weet ons soort opstart onsself uit hierdie basiese beginsel
van 0 en 1 en eintlik iets meer interessant verteenwoordig?
>> Wel, laat ons sit daardie vraag op te hou vir 'n oomblik
en oorweeg iets hopelik bekend,
selfs as jy nie regtig gedink het oor dit in enige detail vir 10, 20, 30, 40, 50
meer jare.
Dit is wat?
Hoe sou jy dit uit?
Nie 'n truuk vraag.
'N Aantal nie, maar wat is dit?
1, 2, 3, of 123.
En ek hou van hoe jy gesê 1, 2, 3, want dit is een manier om van die lees van dit.
1, 2, 3, dit is 'n reeks van drie simbole.
Dit is foto's wat ons nou woorde vir.
En as jy soort van lees hulle almal saam, 'n tipiese menslike in Engels
sou sê 123.
En dit is soort van 'n hoër vlak konsep,
voel soos 'n redelik groot aantal.
>> Maar hoe het ons daar kom?
Wel, dit kan 'n rukkie sedert wees jy het daaroor gedink soos hierdie,
Maar terug in my dag, ek soort van hierdie geleer
soos kolom die 1'e, die 10's kolom, en kolom die 100 se.
So as Lakisa sê, dit is 1, 2, 3, maar dit is ook 123.
Maar hoe kry ons uit die eersgenoemde na laasgenoemde?
>> Wel, jy sal tipies doen kolom die 100 se, ek het 'n 1.
So dit is soos om te sê 100 keer 1.
En dan in kolom 10's, ek het 2.
So dit is soos om te sê 10 keer 2.
In kolom die 1'e, ek het 3.
So dit is soos om te sê 1 keer 3.
>> En as ek voeg hierdie dinge saam, hierdie, natuurlik,
is 100 plus die 10 plus 3.
En o, dit is hoekom ek hierdie kry hoër vlak idee van 123.
Dis net basiese wiskunde, waardeur hierdie simbole gewigte aan hulle, as jy
sal, place holder of kolom waardes.
En as Ek vermenigvuldig alles uit, ek kry hierdie nommer.
>> So hoeveel van julle weet hoe om te praat binary-- 0 en 1's-- soos 'n rekenaar?
OK, perfekte, niemand, of niemand van julle dink jy doen.
Ek sou julle kon eis eintlik weet dit reeds.
Ons moet net soort van tweak ons geestelike model 'n bietjie.
Maar die proses is presies dieselfde.
>> Laat my hierdie een daar laat en plaas trek dit neer vir 'n oomblik.
In die wêreld van rekenaars, Ons het net 0 en 1 se.
En so het die ding wat gaan verander is wat?
Wel, in my menslike wêreld, die desimale stelsel, Desember betekenis 10,
Ek het hoeveel syfers tot my beskikking?
10, of hoe?
0 tot 9, natuurlik.
>> En dit is hoekom ons het die 10 se plek en die 100 se plek.
Waar is dit vandaan?
Wel, dit is 10 tot die mag van 0.
Dit is 10 tot die mag van 1, 10 om die krag van 2, en so meer.
Jy hou net jou kolomme te vermenigvuldig met 10 begin af met net 1
in die regterkantste een hier.
>> So in die wêreld van rekenaars, as jy net
het binary-- bi betekenis 2-- of 0 en 1 se, het ons net
regtig nodig het om te verander die basis van daardie wiskunde.
So met ander woorde, nou sal ons net het kolom die 1 en the--
waar is hierdie going-- kolom die 2 se kolom die 4's, en miskien buite.
Hoekom is dit?
Wel, dit is 2 die 0-ste krag.
Dit is 2 die 1.
Dit is 2 tot die 2, en so aan.
>> So terwyl hier, ons het 1, 10's, 100 se 1000 se 10,000 se 100,000 se 1
miljoene, en dies meer, hier Ons het 1, 2, 4, 8, 16, 32, 64.
Jy hou net vermenigvuldig met 2, in plaas van hou te vermenigvuldig met 10.
So nou, as die doel op hand is om te verteenwoordig
getalle met behulp van slegs 0 en 1 se Kom ons kyk hoe ons daar kom.
>> Dit, natuurlik, is die patroon 0 0 0, maar hoeveel konseptueel
verteenwoordig dit?
Wel, 4 keer 0 plus 2 keer 0 plus 1 keer 0, laat ons saam te voeg diegene.
4 keer 0 is, natuurlik, 0, plus 2 tye 0 is, natuurlik, 0 plus 1 keer 0
is, natuurlik, 0.
So ah, dit verteenwoordig die aantal ons mense ken as 0.
>> Wel, nou, laat ons baie vinnig vinnig vorentoe.
As ek in plaas nie verteenwoordig 0 0 0, maar laat ons doen 1 0 1,
wat dalk hoe Lakisa, vroeër, sou net te spreek dit 1 0 1.
Maar nou, hoe kan ons neem dit na die hoër vlak die getal wat ons mense kan weet?
So, wat is hierdie getal?
Dit is 5, die aantal wat ons weet as 5.
>> Wel, hoekom is dit?
Wel, kan ons regtig soort loop deur dit metodies
4 keer 1, 2 keer 0, 1 keer 1.
Voeg die saamgekom, sodat dit is 4 plus 0 plus 1.
En dit is inderdaad 5.
So dit is 'n bietjie vervelig nou doen die rekenkundige weer en weer.
Maar die proses is presies dieselfde.
>> Die enigste ding wat verander in ons wêreld
is dat ons kolomme is 1, 2, 4, 8, 16, ensovoorts, in plaas van 1, 10, 100,
1000.
En dit is net omdat ons alfabet het gekrimp van 0 tot 9 tot net 0-1.
>> So as 'n bietjie quiz hier, hoe sou jy die nommer 7 in binêre verteenwoordig?
0?
Wel, 0, beteken dat jy 0 0 0?
Sê dit weer, Karina.
Perfek.
Hoekom is dit?
Dit is effektief 4 plus 2 plus 1.
So goed.
>> Hoe kan ons verteenwoordig 'n bietjie another-- hoe oor nommer 2?
Close, maar agteruit.
So, wat is dit?
4 plus 1, so dit is 5 weer.
>> So what's-- Ek is jammer, Karina?
0 1 0.
0 1 0 sal wees 2, want weer, selfs As dit soort van spring nie uit na jou,
net doen die wiskunde.
4 keer 0, 0, 2 keer 1 is 2, 1 keer 0 0.
So dit is die getal wat ons weet as 2.
>> Hoe gaan dit met die nommer 8?
Hm?
Goeie.
So ons soort van 'n ander plekhouer nodig.
Ons moet 1 0 0 0.
En dit is waar van ons soort van die ou skool desimale stelsel.
Hoe kan jy die nommer 1000 te verteenwoordig?
>> Wel, jy sal blyk te wees soort in 'n moeilike plek,
As jy vra om verteenwoordig die getal 1000,
want selfs as jy jouself gee soos 9 van hierdie, 9 van hierdie, 0 van hierdie,
wat is die grootste getal wat jy het, het jy nie heeltemal kry tot 1000.
So as jy 1000, jy hoef net 'n ander posisie, sodat jy kan doen 1 0 0 0,
ergo die getal 1000.
>> So nou, laat ons karteer hierdie soort konseptuele bespreking terug na hardeware,
waar eens die insette was net hierdie klein elektriese kabel, elektrisiteit
kom in en vloei uit.
En so is dit vir wat moet gekarteer uit hier om daar, wel, wat doen ons regtig nodig het?
Wel, kan jy dink dat hulle binne 'n rekenaar, 'n hele klomp van die gloeilampe,
as jy wil.
Hulle is regtig transistors genoem.
En transistors is net skakel wat kan óf op of af.
So jy kan dink aan 'n transistor wat op
toelaat elektrisiteit te laat vloei en 'n transistor wat af as stop
elektrisiteit vloei.
En eerder as om te neem oor die ligte hier,
Hoekom kan ek nie doen nie sulke van nuwe skool styl.
So dit dalk 'n 1, 'n flitslig wat op, net skaars al.
En dit kan wees 'n 0, en nou is dit af.
>> So die gebruik van hierdie fisiese toestel, ek kan nou verteenwoordig die binêre stelsel.
Ek hoef net twee lande.
Dit maak nie saak wat kleur dit is of wat dit is.
Al wat saak maak, is dat ek 'n staat op en 'n ander staat af.
So met my selfoon hier, hoe kan ek verteenwoordig die aantal ons weet as 0?
Of anders gestel het, wat getal is ek wat nou?
0, omdat die toestel af is.
>> En as ek dit doen?
En nou, hoe kan ek verteenwoordig die aantal 2?
Kan ek leen jou selfoon hier, soos ons gister gedoen het?
So laat ons sien, so as ek wil verteenwoordig die nommer 2, is dit die nommer 2?
Geen.
Watter getal is ek per ongeluk verteenwoordig hier?
Dit is eintlik die nommer 3.
>> So watter een wil ek afskakel?
Die swart telefoon or-- Wel, as they're-- Swart telefoon of die wit selfoon?
Die wit telefoon.
So as ek draai dit af en ons lyn dit hier het ons 'n 1
in die 2 se plek en 'n 0 in die 1 se plek.
En so ek is nou verteenwoordig die aantal 2.
En dit, natuurlik, sou die getal wees 3, want nou albei hierdie ligte
is op.
>> En ek sal hier stop, maar dit spreek vanself
As ek wil die verteenwoordig nommer 4 of 8 of hoër,
Ek gaan meer fone nodig.
Maar dit is alles wat aangaan.
So as jy ooit gehoor het dat binnekant van a-- dankie you-- rekenaar
is miljoene transistors, dis net miljoene klein bietjie skakelaars.
En hulle is nie lig bolle wat op en af ​​te skakel,
maar hulle het nie toelaat dat elektrisiteit iewers vloei of stop dit.
En dus is daar jou twee states-- op of af, aan of af.
>> So sal ons nou lyk om hierdie vermoë te hê
om hierdie konsep verteenwoordig wat Ons wil graag in werklike hardeware.
Maar al wat ons nou het, is die vermoë om om getalle dit wil voorkom verteenwoordig.
So hoe ons te werk gaan verteenwoordig letters van die alfabet, wat
voel soos die volgende soort funksie wat jy wil toe te voeg tot 'n moderne rekenaar
Sodra jy het 'n nommer?
>> En inderdaad, as jy dink oor dit, histories, rekenaars
was regtig ingestel om te dien as numeries sakrekenaars voorsien.
Maar natuurlik, hierdie dae, hulle doen baie meer.
Selfs toe hulle boot, jy sien tipies een of meer woorde.
So hoe kan jy verteenwoordig woorde, As alles wat jy het, is, weer,
elektrisiteit aan die einde van die dag, of anders gestel 0 en 1 se?
>> Ja.
Ja, ek bedoel, ons soort het hierdie gister in een of ander vorm,
waar op 'n sekere punt, Ek dink ek arbitrêr
het gesê dat, as ons wil hê dat die verteenwoordig letter A, kon ons net noem dat 'n 1.
Dit was in die konteks van kriptografie, waar ons net nodig 'n soort van kode,
'n soort van kartering.
>> So miskien A sal verteenwoordig as 'n 1, en B sal verteenwoordig word as 'n 2,
en Z word verteenwoordig as 'n 26, byvoorbeeld.
En dan is die enigste nadeel is dat as ek gaan briewe enkodeer in my e-pos
of in my sms-boodskappe as getalle, julle almal
moet saamstem met die gebruik Dieselfde stel konvensies.
En inderdaad, die wêreld het presies dit gedoen.
>> Daar is 'n stelsel in die wêreld genoem ASCII, American Standard
-Kode vir Inligting-wisselaar, wat is eenvoudig 'n besluit 'n paar jaar
gelede dat die mens gemaak wat besluit dat 'n gaan gelyk, nie
1, 2, en 26, en so forth-- dit is 'n bietjie different-- maar 65, 66, 67.
En Ek sal optrek 'n grafiek in net 'n oomblik.
Maar dit is arbitrêr.
Maar dit maak nie saak dat dit arbitrêr.
Die wêreld moet net konsekwent wees.
>> Nou, meer onlangs, daar is iets liefhebber
genoem Unicode, want soort ter wêreld van besef, nadat uitvind rekenaars,
dat daar meer as goed 256 simbole in die wêreld
dat ons dalk wil verteenwoordig, veral as jy voer
Asiatiese tale en ander symbologies dat meer uitdrukking as wat jy nodig het
kan inpas in die vroegste weergawe van hierdie kode, wat ASCII genoem.
So Unicode kan eintlik jy meer 0 en 2 gebruik.
In die besonder, hou jy hoor die woord grepe in die samelewing en selfs net
gister.
En 'n greep is wat nou weer?
>> Wat is 'n byte?
Dis net 8 stukkies.
So, wat beteken dit werklik?
Wel, dit beteken, vroeër, toe ons praat oor binêre en ek is met behulp van
arbitrêr drie stukkies toe ons praat oor binary-- die 1 se plek,
die 2 se plek, en die 4 se place-- goed, 'n greep beteken net dat jy praat
nie in eenhede van drie, maar vier, vyf, ses, sewe agt,
wat gee ons 8 se plek, 16's, 32's, 64's en 128's.
>> Met ander woorde, 'n bietjie is nie al wat nuttig 'n eenheid van meet,
want dit is net soos 'n klein bietjie stukkie inligting, aan of af.
So 'n paar jaar gelede, die wêreld net besluit
dis 'n bietjie meer gerieflik om te praat in Ingevolge grepe, agt dinge op 'n slag.
En so dus gebore die idee van 'n greep.
En so het ons agt stukkies hier.
>> En dit blyk ook vir soortgelyke redes, die wêreld besluit jaar
gelede dat 'n ASCII brief verteenwoordig, jy gaan eenhede gebruik van 8 stukkies.
So selfs as jy dit nie doen nie nodig dat baie, jy
altyd gaan 8 stukkies gebruik om verteenwoordig 'n letter van die alfabet.
En dit is gerieflik, want dan as jy
'n boodskap ontvang dat 'n 0 0 0 1 1 het 1 1 0 gevolg deur 'n ander 1 1 1 0 1 0
0 1, so as jy ontvang 16 stukkies, die wêreld kan net
aanvaar dat die eerste 8 is een letter en die tweede 8 is nog 'n brief.
>> Maak nie saak hoeveel daar is.
Dit is belangrik dat net ons is almal in ooreenstemming
wanneer ons die interpretasie van hierdie stukkies.
En dit was net random.
Dit beteken iets, maar ek het nie regtig dink oor wat dit beteken.
>> Dit is dus 'n klein wit leuentjie.
Oorspronklik, ASCII eintlik slegs 7 stukkies.
En op die agtste bietjie is genoem uitgebreide ASCII.
Maar die punt is, uiteindelik, dieselfde.
Die wêreld in die algemeen gestandaardiseerde op 8 stukkies.
>> So dit lyk 'n bietjie wees beperk, want ek kan net
verteenwoordig kapitaal A, kapitaal B deur kapitaal Z.
Maar inderdaad nie, as ek gaan aan- daar is 'n klomp van die hulpbronne
aanlyn, byvoorbeeld, asciitable.com, hierdie
gaan 'n bietjie wees oorweldigend op die eerste.
Maar ek sal uitwys Wat is hier belangrik.
>> Dit gebeur net om be-- en ek sal walk-- Kom ons kyk, as ek hier gaan.
Hier is, in die desimale kolom, die nommer 65.
En op die brief regterkantste kolom karakter, Chr, is die letter A
En jy kan ignoreer nie, want nou, alles in die middel.
Dit is heksadesimaal, oktale, en 'n HTML-kode.
Om hierdie webwerf is net probeer om te gooi 'n baie inligting oor jou op een slag.
Maar al wat ons omgee is die desimale kolom en die kolom karakter.
>> So deur die logika, wat die getal wat die wêreld
het besluit verteenwoordig 'n klein 'n?
Ja, 97.
En net om te verwar potensieel effens,
watter getal het die wêreld besluit sou die nommer 1 verteenwoordig?
Reg, want we-- 49, blyk dit hier, in die onderste linker.
>> Nou, wat moet ek daarmee?
So dit blyk dat in rekenaarstelsels,
Daar is oor die algemeen 'n fundamentele verskil
tussen 'n nommer en 'n karakter.
'N Aantal is die ding wat ons geleer grootword wanneer
ons super jong in graad skool.
Dit is dinge wat jy reken met.
Maar 'n karakter is net 'n vorm, 'n Than, so te sê, op die skerm.
>> Nou, die mens wat ons soort van sien iets wat lyk soos volg.
En ons sê: Ag, dit is die nommer 2.
Maar nee, dit is net 'n simbool wat lyk soos wat ons weet as die nommer 2.
En dus is daar hierdie fundamentele onderskeid
tussen werklike getalle en karakters.
Dit is 'n aantal.
Maar oor die algemeen, in die konteks van 'n rekenaar,
As jy in plaas sien iets quoted--
en jy nie altyd maar moet sien dit aangehaal,
maar ter wille van discussion-- as sien jy aanhalingstekens rondom die getal,
Dit is nou 'n karakter.
So hierdie nommer 2 onder die kap binnekant van 'n rekenaar
sou word verteenwoordig met 'n patroon bisse wat die getal verteenwoordig
50 volgens die grafiek aanlyn.
>> Maar, as 'n rekenaar net sien dit, hierdie
sou word verteenwoordig met die patroon van bietjie 0 0 0 0 0 0 1 0.
AANGESIEN hierdie karakter sou eintlik as-- en nou verteenwoordig word,
Ek het 'n bietjie harder-- so dit dink karakter sou word verteenwoordig met 0
0 1-- wat moet ek hier?
0 0 1 1 0 0 1 0.
Hoe het ek dit doen?
Wel, dit is die getal 50, as jy vermenigvuldig dit uit die gebruik van hierdie kolomme,
dit is die nommer 2, en so dit is waarom daar is hierdie digotomie.
>> En dit is net 'n teaser nou vir funksies
wat bestaan ​​in programmeertale dat ons sal raak op kortliks later vandag.
In programmeertale, jy het oor die algemeen,
maar nie altyd nie, dinge noem verskillende tipes data.
Met ander woorde, 'n programmer-- wanneer hy of sy skryf,
'n programmeerder kry om te besluit in watter formaat om sy of haar data te stoor.
Jy kan óf te stoor as rou getalle, soos die nommer 2.
Of jy kan dit stoor as snare, of rye van karakters
dat jy oor die algemeen sou uitspreek met aanhalings in jou programmeringstaal.
>> Jy kan dinge het called-- Ek sal eenvoudig vir en noem dit
werklike numbers-- so getalle wat is nie heelgetalle soos die nommer 2,
maar getalle graag 4.56.
So kan ook reële getalle het desimale punte,
so dit is 'n ander fundamentele stuk data in 'n rekenaar.
En dan kan jy selfs ' ander tipes data steeds.
So dit is net 'n teaser regtig van die eenvoudigste van ontwerp besluite
wat 'n programmeerder mag maak onder die enjinkap.
>> So nog net vrae?
So kom ons probeer om te maak dit 'n bietjie meer real.
Dit hardeware is nie soveel meer in gebruik nie.
Maar die meeste mense in hierdie kamer waarskynlik grootgeword met en gebruik steeds hardeskywe
een of ander manier.
>> Hoewel die meeste van ons skootrekenaars nie meer
het toestelle wat werk soos hierdie, plaas skootrekenaars vandag algemeen
het vaste toestand dryf met geen bewegende dele.
En dit is geneig om duurder wees, Ongelukkig nie, maar 'n bietjie vinniger
en a-- goed, dikwels, baie vinniger, Dit is een van die redes.
En ook dit maak nie genereer soveel hitte.
Dit kan kleiner wees, so dit is oor die algemeen 'n netto positiewe.
>> Maar dit stel ons in staat om te karteer 'n bietjie meer konkreet wat
ons praat oor die 0 en 1 se vlak nou 'n fisiese toestel.
Dit is een ding vir my om te praat ongeveer 0 en 1 in terme
van my selfoon of abstrak in terme skakelaars om op en af.
Maar wat van hardeskywe?
In jou skootrekenaars, as jy 'n ouer een of in jou rekenaar,
of beslis in bedieners vandag, waar jy
hardeskywe wat 'n terabyte van ruimte,
4 terabyte van ruimte, goed wat beteken dit?
>> 'N hardeskyf met 1 terabyte van ruimte middel
daar is 1000000000000 grepe binnekant van dit een of ander manier,
Of anders gestel 8000000000000 stukkies binnekant.
1 terabyte sou wees 8 terabis of 1000000000000 stukkies, wat
beteken as jy 'n harde ry, jy het een of ander manier
of ander 'n triljoen 0 se en 1 se binnekant van dit.
En as ons net 'n blik op 'n arbitrêre foto van 'n hardeskyf
verteenwoordiger, dit is wat 'n harde ry kan tipies lyk binnekant.
>> Dit is ook 'n soort van soos 'n ou grammofoon speler
maar oor die algemeen met verskeie rekords in, sodat
om speak-- verskeie borde, soos hulle genoem word,
metaal omsendbrief skywe, en dan 'n bietjie lees kop,
baie soos 'n ou platespeler.
En dit lees kop beweeg heen en voort en een of ander manier lees die stukkies.
En wat is hierdie borde, selfs al ons mense hulle nie kan sien nie,
óf in werklikheid of in hierdie foto, daar is klein bietjie magnetiese deeltjies.
En selfs as jy het 'n lang vergeet hoe elektrisiteit werk,
'n magnetiese deeltjies dit is oor die algemeen aangekla
'n Noord-end en 'n Suid- end-- so noord en suid.
En so het die wêreld net besluit 'n geruime tyd gelede
dat, indien 'n magnetiese protokol wese is in lyn soos hierdie, noord-suid,
kom ons noem dit 'n 1.
As dit plaas Suid-noord, laat ons net noem dat 'n 0.
En so as jy op jou beskikking 'n triljoen
klein bietjie magnetiese particles-- en hopelik,
die hardeware vindingrykheid in Om rond te draai diegene
as jy sien fit-- as jy wil verteenwoordig 'n hele klomp van 0 se jy
hoef net 8 magnetiese deeltjies al in lyn hou hiervan.
En as jy wil verteenwoordig agt 1'e, jy net
moet 8 magnetiese deeltjies in lyn rug aan rug aan rug hou hiervan.
>> Wat bedoel ek met die magnetiese deeltjies?
Om eerlik te wees, al die jare later, die Al wat nog kom myns insiens
is hierdie man, as jy grootgeword met hierdie ding.
Dit is 'n little-- vir diegene unfamiliar-- n
bietjie kinderjare speelgoed wat het hierdie haarloos man hier
wat al hierdie klein bietjie swart magnetiese deeltjies wat kom met dit.
En die gebruik van daardie rooi stok, wat net 'n magneet,
jy kan soort gee hom 'n snor of wenkbroue of hare of enigiets op hom.
So in werklikheid, as ons zoom in, byvoorbeeld, die
is die soort spel wat jy kan speel met vaag Willy.
>> En dit is net om te sê, hierdie is veel groter magnetiese deeltjies
as is eintlik op 'n hardeskyf, en veel minder magnetiese deeltjies.
Maar laat ons eintlik sien dan as jy het
klein magnetiese deeltjies in 'n hardeskyf, hoe kan jy eintlik
gebruik die om data voor te stel.
>> [Video speel]
>> -Die Hardeskyf is waar jou rekenaar winkels meeste van sy permanente data.
Om dit te doen, die data reis van geheue saam
met sagteware seine dat die vertel hardeskyf hoe om die data te stoor.
Die hardeskyf kringe vertaal diegene seine in spanning skommelinge.
Hierdie op sy beurt, beheer oor die hardeskyf se beweeg parts-- sommige van die min bewegende
dele links in die moderne rekenaar.
>> Sommige van die seine te beheer 'n motor, wat draai-metaal bedek borde.
Jou data is eintlik gestoor word op hierdie borde.
Ander seine beweeg die lees / skryf koppe om te lees of data op die borde skryf.
Dit masjinerie is so akkuraat dat 'n menslike haar kon nie eens
slaag tussen die koppe en spin borde.
Tog, dit alles werk op geweldige spoed.
[Einde TERUGSPEEL]
En jy kan sien op die stertkant van die video,
Daar is oor die algemeen verskeie borde.
En sodat lees kop is nie net die lees van die top.
Dit is soort van soos drie of vier of meer lees koppe
die gewemel soos hierdie, lees data gelyktydig.
>> Daar is dus 'n baie kompleksiteit en soort van tydsberekening
wat betrokke is in 'n hardeskyf.
En die ding draai regtig darn vinnig, so daar is 'n baie kompleksiteit.
Maar laat ons in 'n bietjie dieper zoom en sien waar is hierdie magnetiese deeltjies
en hoe gaan ons kry op hulle.
>> [Video speel]
>> kyk -Laat se na wat ons net sien in slow motion.
Wanneer 'n kort pols van elektrisiteit gestuur om die lees / skryf kop,
dit flips op 'n klein elektromagnetiese vir 'n fraksie van 'n sekonde.
Die magneet skep ' gebied, wat verander
die polariteit van 'n klein, klein gedeelte van die metaal deeltjies
wat laag oppervlak elke skottel se.
'N patroon reeks van hierdie klein aangekla gebiede op die skyf
verteenwoordig 'n enkele stukkie van data in die binêre getallestelsel wat gebruik word deur rekenaars.
>> Nou, as die huidige gestuur een pad deur die lees / skryf kop,
die gebied is gepolariseer in een rigting.
As die huidige gestuur in die teenoorgestelde rigting,
die polarisasie is omgekeer.
Hoe kry jy data van die hardeskyf?
Net om te keer die proses.
Dit is dus die deeltjies op die skyf wat die huidige kry
in die lees / skryf kop beweeg.
Saam miljoene hierdie gemagnetiseerde segmente,
en jy het 'n lêer het.
>> Nou, kan die stukke van 'n enkele lêer regoor borde n ry se
soort van soos die gemors papiere op jou lessenaar.
So 'n spesiale ekstra lêer hou spoor van waar alles is.
Het jy nie hê dat julle gehad iets soos dit?
>> [Einde TERUGSPEEL]
>> So word verwys na daar, miskien, is die onderwerp van gister van skrap.
Wanneer jy verwyder 'n lêer, gister gesê ons
dat 'n rekenaar eintlik nie wat, as jy iets sleep
om die asblik of asblik bin?
Dit vergeet dit net.
Maar die 0'e en 1'e die magnetiese deeltjies
wat lyk soos rooi en blou dinge hier, of my arm hier,
is daar steeds op die hardeskyf.
>> En so bestaan ​​daar software-- Norton Utilities en Yesteryear
en ander meer moderne software-- dat net
sal 'n hele hardeskyf scan soek by al die 0 en 1, omdat dit
blyk dat die meeste lêer formate- Word-dokumente, Excel-lêers, beelde,
video files-- almal sekere patrone wat algemeen onder hulle is.
Elke video lêer mag wees van 'n ander video,
maar die eerste paar stukkies is gewoonlik dieselfde.
Of die laaste paar stukkies is gewoonlik dieselfde.
>> En so met 'n hoë waarskynlikheid, jy kan kyk vir diegene patrone.
En selfs as die lêer is vergete, jy kan sê met 'n hoë waarskynlikheid,
maar dit lyk soos 'n Word-dokument, Kom ons herwin dit en un-vergeet nie,
as jy wil.
En so dit is hoe jy kan herstel data wat óf per ongeluk was
verwyder of verwyder of doelbewus verwyder om watter doeleindes.
>> In teenstelling hiermee, veilige skrap doen wat in die konteks van 'n foto soos hierdie?
Presies, maak hulle almal ewekansige.
Daarom is dit soort van beweeg van hulle af, sommige van hulle het,
laat sommige van hulle onveranderd, en oor die algemeen maak ewekansige geluid daaruit,
of net miskien maak al hulle 0 of almal van hulle 1 se.
En dit te kan oor die algemeen skrop jou data weg.
>> So laat ons nou terugkeer na die kwessie van Rekenaardenke, waardeur
Ons het die formule insette.
En algoritmes gee jy uitgange uiteindelik.
Ons fokus nou op insette en uitsette, want nou het ek
eis het ons 'n manier om verteenwoordig en uitgange.
Ons is net gaan om binêre gebruik.
>> En maak nie saak wat ons wil vandag verteenwoordig,
of dit nou 'n nommer of 'n brief of duisende daarvan in 'n telefoon boek
of beelde of films, aan die einde van die dag, dis al 0 en 1 se.
En ek sê dat, alhoewel hierdie is 'n super eenvoudige wêreld met net 0 se
en 1'e, kan ons onsself opbou.
En ons het 'n voorbeeld van gesien wat met letters tot dusver.
>> So laat ons nou fokus op hierdie middel bestanddeel, 'n algoritme.
En laat ons terugkeer tot die voorbeeld van Mike Smith.
So in hierdie telefoon boek, wat weliswaar, ons nie soveel meer gebruik,
daar is 'n probleem wat opgelos moet word.
Ons wil iemand soos Mike Smith vind.
>> En wat kan ek doen om Mike vind?
Wel, ek kon net oop te stel hierdie boek, begin by die eerste bladsy,
en besef, o, ek is in die A-afdeling.
Mike is daar nog nie.
Ek moet die S afdeling vir Smith.
So hou net draai een bladsy op 'n slag.
Laat my voorgee dat dit alles wit bladsye en nie geel bladsye,
want ons gaan nie om uit te vind Mike in die geel bladsye in elk geval.
Maar ek is in die wit bladsye.
En nou, ek is in die afdeling B.
Ek het nog vir hom nie gevind nie.
So ek hou draai een bladsy op 'n slag.
>> Dit is 'n algoritme.
Dit is 'n stel instruksies vir die oplossing van 'n probleem.
Met ander woorde, kyk na bladsy, as Mike is nie daarop,
draai bladsy, en herhaal weer en weer en weer,
ideaal afkyk as jy dit doen.
So is hierdie algoritme, hierdie proses, korrek?
>> Jammer.
Nee, ek hoor 'n paar nommers.
OK, maar dit is-- ja, dit is beslis vervelig.
Soos ons sal hier die hele dag as ek wees hou op soek na Mike teen hierdie spoed.
Maar laat ek beweer dit is korrek.
Dit is dom, maar dit is korrek.
>> Aan die einde van die dag, solank dit dalk neem, ek sal Mike vind as hy daar
en ek aandag.
En ek uiteindelik sy bladsy te bereik.
En as ek te ver, as Ek kry die T artikel,
dan kan ek effens te optimaliseer en net sê, hm, al gedoen.
Ek hoef nie eens te mors tyd gaan die Z se.
Maar dit is 'n baie lineêre benadering, as jy
sal 'n baie soort van links na regs benadering, 'n reguit lyn.
En sy korrekte maar stadig.
>> So ek onthou van graad skool, sorteer van 'n optimalisering van 'n eerste padskraper,
waar ek geleer hoe om nie te tel deur mense nie, maar deur twos-- so 2, 4, 6.
Dit is 'n, veel moeiliker om doen nie, maar in teorie, dis
faster-- 8, 10, 12, 14, en so meer.
Hoe gaan dit algoritme?
Is dit meer doeltreffend?
Is dit vinniger?
>> GEHOOR: Dis doeltreffende.
>> David Malan: Ja, so dit is def-- dis letterlik twee keer so vinnig, in die veronderstelling ek
doen nie raak geskakel met my vingers.
Dit is twee keer so vinnig, want Ek draai deur twee
bladsye in 'n keer in plaas van een, maar dit is potensieel in korrekte, want hoekom?
>> Gehoor: Jy draai 'n paar.
David Malan: Right, wat as Mike gebeur om miskien word sandwiched-- toe ek later is
in die telefoon boek, Mike gebeur te wees landgebonde tussen hierdie twee bladsye,
en ek het net blindelings slaan daaroor.
So ons moet 'n bietjie los daar.
Sodra ek druk die T artikel, ek kan nie net met vertroue sê,
Ons het dit nie vind Mike Smith.
Ek het waarskynlik om terug te verdubbel.
Of in werklikheid, as ek kom iemand vernoem S-N, in plaas van S-M vir Smith,
onmiddellik, kon ek verdubbel terug, want miskien het hy
was op die vorige bladsy.
>> Maar ek hoef nie te ver terug verdubbel.
In teorie, as ek dit doen op die regte tyd, ek een bladsy terug te gaan net.
So dit is die toevoeging van net een ekstra stap.
So ek het twee keer so vinnig gegaan, maar dit kos my 'n ekstra bladsy.
Maar dit voel soos 'n netto oorwinning.
>> Maar dit is nie hoe die meeste mense in hierdie kamer sal hierdie probleem op te los.
Wat sou 'n tipiese persoon, miskien 'n n paar jaar gelede te doen, om Mike Smith vind?
Ja, hulle het niks gevind Mike.
Wat doen ek?
So kry 'n bietjie nader, maar ek doen know-- wat waar is oor 'n telefoon boek?
GEHOOR: Dis opeenvolgende.
David Malan: Dis opeenvolgende.
Dis alfabetiese.
En so as ek in die M artikel, Mike is duidelik na regs,
Ek kan letterlik skeur die probleem in half--
dit is gewoonlik makliker as that-- traan die probleem in die helfte en gooi dit weg,
sodat nou, ek het 'n probleem wat nie meer as 1000 pages-- wat hard was,
want ek dink ek eintlik geskeur die telefoon boek hierdie time-- nie
1000 bladsye, maar 500.
>> So die probleem is letterlik helfte so groot.
En dis nogal dwingende, omdat met my vorige algoritmes, weergawe
1 en 2, is ek net die maak van die probleem een bladsy kleiner, twee bladsye kleiner
op 'n slag.
AANGESIEN tog, ek het dit 500 bladsye kleiner alles op een slag.
>> OK, so nou, Karim stel dat ek regs gaan die helfte.
So ek gaan min of meer gaan om die middel, gee of neem.
En as ek dit gedoen het wiskundig, Ek kon gaan reg om die middel.
En nou, besef ek: Ag, Ek is in die T-afdeling.
Ek het eintlik het te ver gaan.
>> Maar ek kan, weer, skeur die probleem in die helfte, gooi dit weg.
En my grepe nie so groot.
Dis net, wat, 256 bladsye of 250 bladsye, gee of neem op die oomblik.
Maar dit is nog steeds baie meer as een bladsy of twee bladsye.
>> En so nou gaan ek min of meer na die middel.
O, ek het nie regtig ver genoeg gaan nou.
So ek herhaal, herhaal, herhaal, herhaal, totdat ek hopelik
gelaat met net een bladsy.
>> Sodat nooi die vraag, as ek begin met ongeveer 1000 bladsye,
hoeveel stappe het dit my met weergawe 1 van my algoritme?
Wel, as Mike is in die S artikel, in die ergste geval,
dit is redelik naby aan die einde van die alfabet.
So as die telefoon boek het 1000 bladsye, Ek sal Mike vind binne 1,000 bladsye,
gee of neem.
Miskien is dit soos 800 of so, maar dit is redelik naby aan 1000.
>> AANGESIEN dit met die tweede algoritme, hoeveel
bladsy draai maksimaal sou ek vereis dat Mike Smith vind?
Daar is 1000 bladsye, maar ek is doen hulle twee op 'n slag.
Reg, so Max soos 500ish, omdat As ek gaan deur die hele telefoon boek,
op watter punt kan ek ophou.
Maar ek kan afskeer 'n paar deur net stop by die T-afdeling.
Maar dit is in die ergste geval 500 bladsye.
>> So hoeveel keer kan ek verdeel 'n 1,00o-bladsy telefoon boek weer in die helfte
en weer en again-- uit 1000 tot 500 tot 250-125?
Hoe lank voor ek getref een bladsy?
Ja, dit is ongeveer 10.
Afhangende van afronding en sulke, dis ongeveer 10 bladsye totale behoefte aan verander
of telefoon boeke moet geskeur.
>> So dit is redelik sterk.
Ons het begin met 'n 1000-bladsy probleem in al drie van hierdie stories.
Maar in die eerste algoritme, dit het my ergste geval, 1000 bladsy
draai na Mike vind.
Tweede algoritme, 500 bladsye aan Mike vind.
Derde algoritme, 10 bladsye aan Mike vind.
En dit is selfs meer kragtige wanneer jy dink
oor n soort van 'n teenoorgestelde scenario.
Veronderstel dat die telefoon maatskappy volgende jaar saamsmelt miskien twee dorpe bymekaar,
en die telefoon boek is skielik hierdie dik, in plaas van dit wat,
so 2000 bladsye in plaas van 1,000.
Wel, my eerste algoritme op soek na Mike Smith in 'n 2000-bladsy telefoon boek,
erger geval, dit gaan oor te neem hoeveel bladsy draai volgende jaar?
>> Telefoon boek is 2000 bladsye, so-- goed, nie een meer.
As die telefoon boek is twee keer so dik in die eerste algoritme, eerste algoritme,
2000, of hoe?
In die ergste geval, Mike is regtig naby aan die einde van die boek,
so dit is bladsy beurte 2000.
Tweede algoritme gaan deur twees, soos 1000 bladsye.
>> Maar wat dink jy in my derde en mees onlangse algoritme?
As die telefoon maatskappy verdubbel die aantal bladsye van 1000 tot 2000,
Hoeveel keer moet ek skeur daardie boek in die helfte om Mike vind?
>> Publiek: Net een.
>> David Malan: Net nog 'n, want met bladsy traan een,
Ek kan letterlik verdeel en oorwin, as jy wil,
dat die probleem in die helfte neem 'n massiewe hap uit dit.
En dus is dit 'n voorbeeld van doeltreffendheid en waarskynlik 'n algoritme
waarmee ons almal soort intuïtief bekend.
Maar dit is net so korrek soos my ander algoritmes
met daardie Tweak vir die tweede algoritme,
maar dit is soveel meer doeltreffend te maak.
>> En in werklikheid, wat 'n rekenaar wetenskaplike, of op sy beurt 'n programmeerder,
sou tipies doen wanneer skryf kode is probeer om uit te vind,
Goed, ek wil nie hê my program net reg wees,
Ek wil dit ook aan doeltreffende wees en probleme op te los well.
Stel jou in die werklike wêreld van vandag, soos Google indekse, soek
soos miljarde bladsye, dink as hulle gebruik die eerste algoritme om katte te vind
onder 'n miljard pages-- kyk na die eerste bladsy in hul databasis,
die tweede, die derde, net op soek vir 'n kat, op soek na 'n kat.
Dit is pretty darn stadig dit wil voorkom.
Hulle kon plaas gebruik iets genoem binêre soek, wat
geen coincidence-- bi beteken twee, ons hou verdeel iets in 2, in half--
hulle kon binêre soek gebruik en miskien vind katte nog vinniger,
of wat dit ookal is wat jy op soek is na.
>> En eerlik, daar is selfs liefhebber algoritmes
wat veel meer as net doen verdeel dinge in die helfte
ten einde inligting vinnig te vind.
En ons sal 'n bietjie gesels oor dié ná middagete vandag.
So laat ek net probeer om hierdie verteenwoordig.
Ons hoef nie in te gaan enige wiskunde of werklike getalle.
Ons kan in die abstrakte praat hieroor.
>> Maar laat ek net voor, as jy is 'n gesprek nou
met die ingenieurs stel hierdie algoritme
en jy probeer om te maak 'n berekende besluit,
want miskien die ingenieur sê vir julle, julle
weet wat, ek het 'n kan implementeer lineêre soek in soos twee minute.
Dit is so maklik.
Binêre soek is nie so fancy nie, maar dit gaan om my te vang soos 10 minute,
so 5 keer so lank.
>> Daar is 'n handel hier, selfs in terme om te besluit watter sagteware te skryf.
Het jy die eenvoudiger algoritme te skryf, wat net twee minute sal neem jy?
Of dink jy spandeer meer tyd, 10 minute, skryf die liefhebber algoritme?
Hoe besluit jy daardie soort van die vraag?
Of jy kan dit 'n bietjie meer werklik te maak.
Ek vertel my baas dit gaan neem my óf 'n week of 10 weke
om die implementering sagteware op hierdie manier, hoe
jy besluit watter algoritme om groen lig?
Karim?
>> Gehoor: Die publiek, dink ek.
>> David Malan: Die gehoor.
Wat is jou bedoeling met die gehoor?
>> Publiek: As dit gaan om gebruik te word deur die gebruikers
wat [onhoorbaar] deur gebruikers [onhoorbaar].
Maar as dit is iets wat jy net doen vir jouself
om 'n probleem te fasiliteer, [Onhoorbaar] vinniger.
David Malan: Ja, dit is 'n vinnige en vuil is 'n goeie manier om dit te beskryf.
In werklikheid, as jy beskryf baie van my tyd
in grad skool, waardeur dikwels, Ek het slegte kode doelbewus so--
ten minste, dit is hoe ek gerasionaliseer it-- doelbewus so,
want selfs al het ek is-kode skryf dit was relatief stadig uit te voer,
Ek was in staat om die kode self skryf redelik vinnig, besteding 'n paar minute
of uur nie dae.
En dit blyk, ek soms nodig om te slaap.
So selfs as my kode vereis 8 uur te hardloop, wel dit is goed,
Ek sal net gaan slaap terwyl dit loop.
>> So op die oomblik, het ek gedink dit was baie slim, selfs al het ek glo
deurgewerk my PhD baie stadig.
Maar die omgekeerde van wat dat, as ek skryf sagteware
vir ander mense wat saak meer as ek, wel,
met hulle wag 8 uur om terug te kry hul resultate
is nie alles wat aantreklik.
En so spandeer meer tyd voorlangs te sagteware te skryf
dit is meer doeltreffend, meer soos ons derde algoritme,
waarskynlik tot voordeel van die gebruikers met verloop van tyd.
So dit hang regtig oor tyd hoe daardie koste optel.
As jy gaan om te skryf sagteware om dit te gebruik wanneer,
waarskynlik kan net so goed doen vinnige en vuil, soos hulle sê.
gooi dit net saam.
Dis kode wat verleentheid jy, dit is so sleg,
maar dit kry die werk korrek gedoen, selfs al is dit nie doeltreffend.
Aan die ander kant, jy spandeer meer tyd oor iets, kry dit net reg.
En dan afgeskryf oor tyd, wat vooraf koste van tyd
is waarskynlik die moeite werd, as jy hou optimalisering vir die algemene geval.
>> En inderdaad, dit is 'n tema in ontwikkeling, of rekenaarwetenskap meer
oor die algemeen, probeer om te optimaliseer nie vir die ongewoon geval
maar die algemene case-- wat operasie gaan weer en weer gebeur nie?
As jy gaan om miljarde te hê van gebruikers wat soek op jou webwerf,
moet jy waarskynlik spandeer die ekstra weke voorlangs skryf beter sagteware,
sodat al jou gebruikers te bevoordeel.
Nou, laat ons probeer om dit 'n vang bietjie picturaal, maar nie soseer
numeries.
>> So hier is net 'n ou skool grafiek.
En laat my sê dat dit tyd.
En dit maak nie saak what-- eintlik nie, selfs nie die tyd.
Kom ons sit dit op die ander as.
Kom ons sê dat dit die tyd, en dit is die grootte van die probleem.
>> En 'n rekenaarwetenskaplike kan oor die algemeen noem
dit net n. N is soos ons go-to veranderlike, waar
N is 'n nommer, N nommer, en dit is die aantal watter insette wat jy het.
So in hierdie geval, N is die aantal bladsye.
Daarom is dit dalk 1000 in die geval het ons net vertel.
>> So tyd kan 'n eenheid van meet wees.
Miskien is dit die tweede.
Miskien is dit dae.
Miskien is dit soos bladsy draaie.
Maak nie saak nie.
Wat jy ook al wil in tel, wat sal tyd wees of kos in dieselfde.
>> So met daardie heel eerste algoritme, as ek byvoorbeeld
'n 1000-bladsy telefoon boek, Ek gaan 'n punt daar trek,
want as dit is 1000 bladsye, dit het ongeveer 1000 bladsy draai, gee of neem.
En dan as ek het 'n 2000-bladsy telefoon boek,
en ek gaan 'n tweede stel dot hier, want vir 2000 bladsye,
dit is soos 2000 sekondes of page draai of wat ook al.
En so toe ek vroeër gesê het, dit is soort van 'n lineêre verwantskap,
dit was doelbewuste, want ek wou later is-- reg now-- 'n streep te trek.
Dit is soort van 'n reguit lyn verhouding.
Die helling is 1/1, as jy wil.
>> Intussen het die tweede algoritme gesê, as jy het 1000 bladsye
en jy is met behulp van die tweede algoritme, waar ek deur 2 se getel, draai
twee bladsye op 'n slag, moet ek trek 'n kol onder of bo my oorspronklike dot?
>> Publiek: hieronder.
>> David Malan: Hier, want soos ons gesien het, dit neem minder tyd, die helfte soveel tyd.
So het die dot moet die helfte wees so hoog as die ander.
En dieselfde deal hier, hierdie dot moet min of meer daar waarskynlik.
En so is my tweede algoritme, insgelyks, 'n lineêre verwantskap met die tyd.
En ons kan dit teken as sodanig.
>> So nou, die derde en finale algoritme is 'n bietjie moeiliker om te trek.
Maar intuïtief, as Ek het 1000 bladsye met my derde algoritme,
Dit moet eers my soos 10 stappe.
En as Ek het 2000 bladsye het met my derde algoritme,
Dit moet my vat nie 10 stappe, maar 11, net nog 'n.
So ons net-net gaan om dit te sien.
>> En dit blyk dat indien Ek zoem in op hierdie, ek is
gaan oordryf ter wille van effek, die vorm van die lyn, uiteindelik,
is nie 'n reguit line-- want, wel as 't ware
Dit sou meer soos die kyk others-- dit is eintlik 'n geboë lyn
dat, as ons in zoom, gaan veel meer so lyk.
It-- goed, OK, ignoreer hierdie deel.
Dit was my pen gaan van hoek.
Dit is 'n geboë lyn wat altyd toeneem, altyd, altyd, altyd
toeneem, maar net skaars.
>> En so met verloop van tyd, het jy 'n verhouding wat meer soos hierdie.
Dit lyk amper reguit.
Maar dis nog so stadig aan die toeneem.
Maar vir byna al die punte saam jou x-as, horisontale as,
dis laer as die ander lyne.
>> So dit kan 'n verhouding wees N, waar as jy 'n bladsy,
neem jou N sekondes.
Dit kan 'n verhouding N / 2 wees.
Jy het N bladsye, dit neem jy N / 2 sekondes, die helfte soveel.
En dit is 'n logaritmiese verhouding, wat
As jy onthou, teken basis 2 van N vang hierdie soort van groei, om so te praat.
So is dit die soort van heilige graal onder die drie van hierdie
hier, want dit is net soveel meer doeltreffende, maar waarskynlik meer kompleks
om te implementeer.
Enige vrae?
>> Wel laat ek dit doen, laat my oop te stel 'n teks venster
net so kan ons probeer om formaliseer hier iets.
Laat my nou gaan voort en uitvoering van hierdie algoritme
vir die vind van Mike Smith in kode, as jy wil, pseudokode kode.
Ek is nie van plan om Java of C ++ gebruik.
Ek gaan net om soort van gebruik Engels-agtige sintaksis, wat ons
sou oor die algemeen noem pseudokode kode.
Hier het ek 'n leeg venster.
En ek sê stap 1 van die baie eerste algoritme is haal telefoon boek.
Stap 2 is oop boek na die eerste bladsy.
Stap 3 sal wees kyk na bladsy vir Mike Smith.
As op bladsy, bel Mike.
anders beurt bladsy en gaan na stap 3.
Gedoen, kom ons sê.
>> En dus is dit nie heeltemal perfek nie, wat ons sal sien in 'n oomblik.
Maar laat ons kyk wat konsepte Ek het hier bekend gestel.
So stap 1 en 2 en 3 is pretty much werkwoorde.
Hulle is state, actions-- doen.
En so in 'n programmeertaal taal, sou ons in die algemeen
noem hulle state of funksies of prosedures,
noem dit 'n aantal van die dinge.
Maar hulle actions-- net dit te doen.
>> Stap 4 is fundamenteel verskil, want dit is soort van 'n vraag.
Dit sê ons soort van 'n vurk in die pad.
As Mike is op die bladsy, bel hom so draai links, as jy wil.
En indien nie, gaan terug na 'n paar ander page-- of liewer, jammer,
gaan terug na 'n ander stap, wat veroorsaak 'n soort van herhaling konstruk.
En ons doen dit weer en weer en weer.
>> En eintlik, jy weet wat?
Ja.
anders as aan die einde van boek stop.
So ons moet soort van 'n derde toestand, omdat jy
kan nie bly draai die bladsy advertensie nauseum, want uiteindelik, sal ek
druk op die einde van die boek.
En 'n fout in 'n program kan wees nie verwag dat scenario.
En dan het ek net besef, O, wag 'n minuut, ek moet 'n derde scenario.
As ek uit bladsye, ek moet regtig net ophou.
Andersins, dit is ongedefinieerd.
Wat gaan gebeur as ek hou sê draai die bladsy en gaan terug,
dit is wanneer rekenaars vries of ongeluk, wanneer jy getref
sommige onverwagte situasie soos dit.
>> Nou, wat van Mike derde algorithm-- Smith se
haal die telefoon boek, oopboek om first-- om
nee, nie eerste bladsy van hierdie tyd, om middle-- O, wel, wat sou
wees die tweede algoritme.
Kom ons slaan na die derde.
>> Publiek: Ag, ek is jammer.
>> David Malan: Dit is goed.
Kom ons slaan na die third-- oop om middel- en nou kyk vir Mike Smith.
As op bladsy, bel Mike.
En dan wat wil ons hier sê?
anders wat?
Ons kan dit uitspreek in 'n aantal maniere.
Daar is geen regte antwoord.
OK, as dit nie weer nie, maar ons moet be-- OK, wil ons verdeel in twee,
maar wil ons links om te gaan of gaan reg?
Hoe kan ons druk dat die idee?
Wel, in die geval Mike se, ja, dit is regverdig.
Maar OK, so dit is eintlik 'n goeie punt.
Dis goed.
Ons sal aanhou gaan met hierdie logika.
So--
>> Publiek: Minder as die helfte.
David Malan: Ja.
So anders as bladsy is, sal ons sê, minder as Smith, aan die linkerkant van Smith,
then-- laat ons sien, is hierdie gaan bemoeilik?
anders as bladsy kom voor Smith, traan in die helfte, weggooi wat die helfte?
>> Publiek: Ek het gedink dit was [onhoorbaar].
>> David Malan: ek hoor beide antwoorde.
>> Publiek: linkerkant.
David Malan: OK, gooi weg gelaat helfte, as Lakisa
het vroeër gesê, die verlaat helfte, dan het ek soort
wil net gaan aan- ek regs gaan.
Of anders gestel, en ek het 'n bietjie bietjie van 'n gemors van die begin hier,
Ek wil effektief te gaan weer stap 2,
waar oop vir die middle-- of open-- ja, laat ons net sê, bladsye middel.
En dit is vasgestel nie.
Dit is nie meer 'n boek.
Dis net die helfte van 'n boek, so oop bladsye middel.
>> else-- was amper daar.
Stap 6, anders as bladsy kom nadat Smith, skeur in die helfte, weggooi reg helfte,
dan gaan jy na stap 2.
anders hou, 'n vierde scenario as Ons het geen bladsye links te draai.
So kan ons hierdie skoon te maak.
En ons moet hierdie skoon te maak.
Dit is baie pseudokode kode, as jy wil, 'n baie hoë vlak beskrywing.
Maar dit beteken oor die algemeen op te vang die idee.
>> En, weer, in hierdie scenario, ons het die idee van 'n toestand,
'n tak, 'n vurk in die pad, maak 'n decision-- as dit, gaan op hierdie manier,
anders as, gaan op hierdie manier, anders as, daarheen gaan nie.
En dit is 'n baie algemene ontwikkeling tegniek
om te besluit watter rigting om te gaan, om so te praat.
En ons het ook 'n soort van herhaling struktuur, waar
ons iets doen weer en weer.
>> Nou, dit blyk dat baie soos in hierdie voorbeeld,
synde super akkurate belangrik.
Maar ons het ook iets gesien dat ons hou die roeping onttrekking.
Wat beteken dit om af te haal telefoon boek?
Ons is net soort van die neem van as vanselfsprekend aanvaar in hierdie kamer
dat het 'n paar semantiese betekenis.
Almal van ons het net soort van weet, o, Wel, die telefoon optel boek.
Wat beteken dit werklik?
Wel, dit werklik beteken brei hand, leun oor, uit te brei vingers,
knyp boek tussen vingers, opstaan, trek hand na jou toe.
En ons kan regtig nie pedanties oor hierdie,
regtig dat super akkurate oor wat ek doen.
Maar al daardie stappe gesamentlik wat dit beteken om af te haal 'n telefoon boek.
>> En so het vroeër, toe ek gesê het: elke van hierdie eerste twee state
kan wees gedink as 'n voortgaan of 'n funksie,
regtig dit verteenwoordig wat ons hou 'n beroep 'n abstraksie.
Dit is soos 'n hoë vlak konseptuele beskrywing van 'n probleem wat
eintlik behels 'n hele paar stappe.
En so gaan dit ook 'n herhalende onderwerp in programmering,
waardeur ek dalk 'n program te skryf gebruik van sintaksis soos this--
pick_up_phone_book ().
En dan sintakties, ek is gaan om iets te steel
van die meeste programmeertale.
>> Nou, stap 1 lyk selfs meer soos 'n funksie,
as 'n programmeerder sou dit noem.
Dit lyk soos 'kode wat iemand het 'n naam gegee en gegee
om my te somehow-- gebruik in ander woorde, wat die lyn Ek het uitgelig
verteenwoordig funksies wat dalk Ek het nie eens te implementeer myself.
Iemand ouer, wyser as my reeds uitgepluis
hoe jy die idee uit te druk van die optel van 'n telefoon boek.
En dit is soos die vyf stappe wat ek net afgerammel, uit die bokant van my kop.
>> Maar hy of sy reeds in werking gestel hierdie, het die verskeie stappe
'n naam, pick_up_phone_book.
En die hakies is net wat die meeste programmeerders
doen aan die einde van stellings soos hierdie.
Ek kan nou op staan ​​sy of haar skouers en nooit weer,
dink oor wat dit beteken af te haal 'n telefoon boek.
Ek kan net sê, haal die telefoon boek.
En dit is presies wat almal van ons mense het hier.
>> Toe ons waarskynlik 1 jaar oud, 2 jaar oud,
Iemand het om ons te leer wat dit bedoel om af te haal 'n telefoon boek.
En sedertdien, Ons het weg onttrek
van dié baie oninteressant meganiese stappe.
En ons het net 'n intuïtiewe begrip
van wat dit beteken om haal 'n telefoon boek.
>> En jy kan nou ekstrapoleer meer ingewikkeld things--
bou 'n gebou.
Soos om 'n paar mense, wat eintlik beteken.
Om kontrakteurs, argitekte, wat het 'n paar betekenis.
En hulle sal weet wat om te doen indien Ek het gesê, gaan bou 'n gebou.
>> Maar die meeste van ons in die kamer kon nie hanteer dat die vlak van abstraksie.
Jy moet vertel ons graag gaan kry skop en gaan kry die beton
en spyker die stukke hout saam en alles anders
is betrokke by die bou van 'n gebou.
En dit is omdat ons nie nog geprogrammeer om te verstaan
wat dit beteken om 'n gebou op te rig.
Ons het nie daardie onttrekking.
Ons het nie daardie funksie.
>> En so wat jy sal sien in programmeertale, in die algemeen,
veral meer moderne tale, soos Java, PHP, Ruby, en Python,
hulle is baie meer volwasse as ouer tale,
soos C en C ++ en nog ander.
En so kom hulle met meer funksie gebou in.
Meer kode is geskryf deur mense in die verlede
dat ons nou kan bel of dagvaar of te gebruik, as ek sinspeel
op met uitgelig hierdie lyn hier.
En so selfs al is ons nie praat oor programmeertale per se nie,
net pseudokode kode, al die idees is nog in daardie bespreking.
En dit blyk presisie is super belangrik, net soos abstraksie.
En laat ons probeer om kommunikeer dat soos volg.
>> Ek het per ongeluk kan deursny dit deur flikker 'n skyfie op die skerm
voortydig.
Maar laat ek vra vir 'n dapper vrywilligers, As jy nie omgee nie opkom.
Jy wil wees in die voorkant van die kamera, as jy is ok met dit.
Sou iemand graag kom en gee instruksies om jou kollegas hier?
Net moet hier oor kom en staan ​​hier oor en sê sommige woorde.
>> Victoria glimlag die meeste en die voorkoms van my oë die mees.
Sou jy bereid wees om op te kom nie?
OK.
En as al die ander mense op jou sitplekke kon neem 'n stukkie afvalpapier,
as jy wil.
Gevoer papier is fyn.
Kom om op hierdie manier.
Of 'n paar van die papier wat jy gister gegee,
net 'n leë vel papier, as jy kon.
En as jy het nie, net vra jou naaste as jy kon.
>> So op hierdie oomblik, vir hierdie voorbeeld, Victoria
gaan die rol van speel 'n programmeerder, 'n ingenieur, wat
moet jy die program alles, as die rekenaars, om iets te doen.
En ons sal sien wat aannames jy besluit om te maak.
Ons sal sien hoe akkuraat sy verkies om te wees.
En as hierdie demonstrasie gaan pedagogies goed, baie foute
gemaak sal word, dat ons dan sal gebruik wat as 'n geleentheid vir bespreking.
Maar die uitdaging vir jou moet wees om die foute te vermy,
'n goeie programmeerder.
En so het die uitdaging op hande, indien jy graag hier oor te loop,
is in die voorkant van Victoria op die skerm here-- en hopelik, niemand van julle
onthou wanneer ek flits op die skerm.
En moenie omdraai glad nie, want Daar is nog 'n skerm in hierdie kamer
dat ek af kan draai.
So moenie omdraai.
>> In die voorkant van Victoria is dat dieselfde gil.
En haar werk is nou vir jou vertel al op jou stuk papier wat om te teken.
En ons sal sien, wat gebaseer is op verbale instruksies alleen,
rekenaarkode, as jy wil, hoe akkuraat jou tekeninge
are-- jou implementering is.
Maak sin?
>> Gehoor: Ja.
David Malan: OK, uit te voer.
>> Publiek: Trek 'n vierkant.
>> [Gelag]
>> David Malan: En nee vrae kan gevra word.
Kan dit net doen wat jy vertel.
O ja, en as jy skyfies vandag open met 'n blad, moenie kyk na jou blad.
OK?
>> Publiek: OK, trek 'n sirkel.
A slope-- kan ek sê helling?
David Malan: aan jou.
Publiek: A helling.
En 'n driehoek.
>> David Malan: Alle reg.
En hier bly vir net 'n oomblik.
En ek gaan kom rond in net 'n oomblik.
En nie nodig om jou naam daarop sit.
Laat my rondom kom en haal jou tekeninge,
As jy nie omgee nie skeur hulle uit.
>> Hier is wat ons terug gekry.
Ek sal dit projekteer op die skerm.
Ek sien 'n vierkant, 'n sirkel, 'n helling, en 'n driehoek.
So dit was 'n antwoord daar.
En let's-- Oeps.
Dankie.
Hier is nog 'n verskeidenheid, en een agter dit.
>> Sodat hulle almal lyk die gees te vang.
Dankie.
Daar is 'n ander, en hier is 'n ander een.
Die helling interpretasie is 'n bietjie anders, bietjie krom.
En die naaste, hetsy as gevolg van die wonderlike spesifisiteit waarmee jy
beskryf, of miskien het jy soort sien voordat dit inderdaad
wat Victoria was eintlik beskryf.
>> Maar nou, dié van julle wat nie kry dit heeltemal reg,
Kom ons bied 'n paar besware hier.
So Victoria eerste gesê Teken 'n vierkant.
En nou, kan ons aanneem ter wille van vandag
dat almal weet hoe om 'n vierkant te teken.
Maar dit is nie heeltemal duidelik nie, reg?
Hoe anders kan jy getrek 'n vierkant, of waar
dalk 'n paar van die dubbelsinnighede hier vir die rekenaar?
Publiek: ligging en grootte.
David Malan: ligging, reg?
Almal van julle het 'n papier van 'n paar vorm, algemeen reghoeke, maar effens
verskillende groottes.
Maar jy beslis kon getrek, As jy wil, 'n groot vierkant, miskien
'n klein vierkant.
Miskien is dit roteer.
Ek dink nie ons het gesien dat.
Maar dit kan meer diamant gewees soos maar nog steeds, nietemin,
Wiskundig 'n vierkant.
So dit was waarskynlik dubbelsinnig.
>> En sy antwoord: 'n sirkel.
Sommige van julle het dit langs trek dit, wat nie onredelik,
omdat die mens geneig om te dink of lees regs na links in die meeste tale, sodat nie
'n slegte raaiskoot.
Maar dit sirkel kan hê was binne-in die vierkant,
rondom die kon gewees het vierkante, kan elders gewees
op die vel, so waarskynlik dubbelsinnig.
>> Helling kan dalk gewees het neem die meeste vryhede mondelings
met wat dit beteken.
En sommige van julle dit vertaal dit as 'n kronkel lyn
of 'n reguit lyn en dies meer.
En dan driehoek ook kan hê is gerig in 'n aantal maniere.
So in kort, selfs met iets wat jy blik en jy soos, wow, so
eenvoudige, 'n kind kon trek dit goed nie
regtig nie, tensy jy super, super oortuigende
en vertel die rekenaar presies wat om te doen.
So as ons kon, as jy ' 'n ander vel papier, kom ons
probeer om hierdie keer meer.
En ek gaan Victoria een gee ander voorbeeld op die skerm hier.
En weer, moenie omdraai en kyk nie na jou skyfies.
En Ek sal haar 'n oomblik om te gee dink oor hoe om dit te beskryf.
Moet nie toelaat dat hulle sien die vrees in jou oë.
>> [Gelag]
>> En weer, hierdie keer hefboom sommige van daardie wegneemetes
en probeer om byna almal kry ten minste die regte antwoord.
>> Publiek: OK, neem 'n stuk papier, lyk
in die middel van daardie stuk papier.
In die middel van daardie stuk papier, trek 'n kubus.
>> [Gelag]
David Malan: Wat het ons geleer?
Ons was so naby.
OK, herhaal as jy kon, vir almal.
>> Publiek: In die middel van die stuk papier, trek 'n voorwerp,
wat lyk soos 'n kubus.
>> David Malan: OK, dis al wat jy kry om te werk met.
Laat my toe om analitiese wees en nie soseer krities,
maar om die eis te maak dat Victoria beslis
lyk baie dink in hoë vlak abstraksies, wat
is nie onredelik nie.
Want anders, ons wil almal wees mooi abnormaal,
As ons ooit so presies te wees met alles wat ons doen in die wêreld.
>> Maar sê gaan na die middle-- ek gedink ons ​​op so 'n goeie track
daar, soos gaan tot by die helfte van die bladsy, en dan trek 'n kubus.
So sy denke in abstraksies, want sy is nog steeds lees
wat op die skerm soos inderdaad 'n kubus.
Maar daar is so baie geleenthede vir interpretasie is daar.
En in werklikheid, daar is so baie ander maniere wat jy kan uitdruk
dat, wat ek sal voorstel in 'n oomblik.
So hier het ons 'n inkarnasie van die picture-- whoops-- een
inkarnasie van die prentjie, so 'n bietjie drie dimensionaliteit om dit,
wat is lekker.
>> Hier is nog 'n, waar jy die dieselfde, maar dit is soort van 'n oop blokkie.
Sommige mense het dit 'n bietjie meer plat, twee dimensionele.
En dit is goed.
So is daar inderdaad in die middel van die papier.
Hierdie een ek dink jy sal soos, want as ons hier gaan,
dit is wat sy beskryf.
So nou, laat my stel hoe anders Ons kan hierdie situasie beskryf.
>> Terug in die dag, een van die mees meer algemene maniere om te leer programmeer
was om kode te skryf, skryf lyne van instruksies,
daardie beheerde 'n bietjie skilpad op die skerm.
Logo en ander variante van hierdie was die naam van die taal.
En die skilpad het in 'n wêreld.
>> So veronderstel dit reghoekige ruimte is sy wêreld.
En jy sal begin deur assuming-- ek weet nie regtig hoe om skilpad trek,
so laat ons doen dit so.
En dan is hy 'n dop en dan miskien 'n paar voete.
So jy kan hierdie klein hê karakter op die skerm.
>> En die doel van hierdie programmeertaal
was om die skilpad te dwing optrek, af, links, regs
en sy pen neer te sit of haal sy pen up,
sodat hy kan eintlik stel op die skerm in hierdie baie plat vierkantige wêreld.
So waar ek gedink dat jy dalk gaan, en waar jy moet duik oorweeg
af te geestelik wanneer beskryf instruksies meer algemeen,
Ek sou eis, is sit jou pen in die middle--
en ons sal ontslae te raak van die kry skilpad, want ek kan nie regtig
ons teken hom baie goed.
>> En nou, hoe anders kon Ek sê trek 'n kubus?
Wel, ons kan iets soos trekking sê 'n skuins lyn noordooste, byvoorbeeld,
of op 'n hoek van 45 grade opwaarts.
En dit kan my hier gekry het.
En ek is redelik ver van 'n kubus.
Maar nou, kan ek iets sê soos draai 90 grade na links
en trek 'n streep van ewe lank noordweste.
En ek kon voortgaan met 'n soortgelyke rigtings.
En dit gaan nie maklik wees nie.
En eerlik, sou ons waarskynlik het hier vir vyf minute was.
Maar miskien sal ons gekry het om iets wat aan die einde van die dag,
beland om 'n kubus, maar ons geduik binnekant van daardie onttrekking
om dit te doen op so 'n lae vlak wat jy nie kan regtig
sien wat jy doen totdat die hele ding is eintlik daar op die bladsy.
En dus is dit 'n algemene beginsel, weer van programming-- hierdie idee
van abstraksie.
Dit is so wonderlik kragtige, want weer,
Sy het net gesê, trek 'n kubus, wat al ons pretty much sal baie vinnig grok.
Ons wil net verstaan, OK, trek 'n kubus.
Ons kan nie weet wat die oriëntasie, sodat ons kan 'n bietjie meer presies te wees,
maar ons kan oor die algemeen beeld of weet wat 'n kubus is.
En dit is nuttig, want as elke keer as jy
gaan sit as 'n programmeerder by u sleutelbord om die kode te skryf,
As jy het om te dink aan so ' 'n lae vlak, niemand van ons
sou ooit iets gedoen.
En in elk geval, nie een van ons sou geniet die proses van die skryf-kode.
Dit sou wees soos die skryf in 0 en 1 se wat eerlik was nie so lank gelede
die mens is-kode skryf in 0 en 1 se.
En ons het baie vinnig met hierdie hoër vlak languages--
C ++ en Java en ander.
>> So kom ons probeer dit weer net flip die tafels, sodat ons almal
het die kans om te dink in plaas van die dieselfde manier.
Kan ons nog 'n vrywilliger hierdie tyd om te kom tot die direksie en trek,
nie opsê?
Ja, OK.
Ben, kom op tot.
En Ben, in hierdie geval, as jy gesig die raad, kyk nie links,
kyk nie reg nie.
Slegs doen wat jou kollegas hier vertel jou.
En vir almal in die kamer, jy is nou die programmeerder.
Hy is die rekenaar.
En die prentjie wat ek hier gekies vooruit is hierdie een hier.
Hulle is just-- hulle dink van 'n snaakse grap is al.
>> So sou beteken iemand wil vrywilliger die eerste instruksie
of stelling dat indien pen opdrag Ben se?
En ons sal dit gesamentlik te doen, miskien een opdrag van elke persoon.
Ek is jammer?
>> Publiek: Trek 'n sirkel.
David Malan: Trek 'n sirkel is die eerste ding wat ek gehoor het.
>> Publiek: Up top.
>> David Malan: Up top.
OK, kan ons u verwyder, ongedaan te maak.
En nou, iemand anders.
Dan sal jy gemaklik wees bied die volgende opdrag?
>> Gehoor: Ja, trek die sentrum van die onderkant van die sirkel,
met 'n small-- 'n bietjie klein ruimte van daardie,
trek 'n reguit lyn af na drie kwartale van die pad af die direksie
'n effense hoek om jou linkerkant.
>> David Malan: Goeie.
>> Publiek: effens skuins.
>> David Malan: Herroep, beheer-Z. OK.
Andrew, jy wil aan te bied die volgende opdrag?
>> Publiek: Seker.
Van die onderkant van die lyn, 'n verdere effense angle--
whoops-- miskien oor 'n derde van die lengte [onhoorbaar],
effense hoek afwaarts en soos 'n derde van die lengte van [onhoorbaar].
So ja, van daardie punt, trek 'n streep 'n derde
van die lengte van die vorige lyn verder aan die linkerkant.
>> David Malan: Dit OK?
Reguitlyn, dit is OK?
OK, Olivier, wat jy wil om die volgende aan te bied nie?
>> Gehoor: [onhoorbaar] van die onderkant van die sirkel, [onhoorbaar].
Teken op die regterkant van [onhoorbaar] sentimeter.
>> [Gelag]
>> David Malan: Ek dink jy gaan moet omskep dis duim hier.
>> Publiek: Stop.
>> [Gelag]
>> David Malan: OK.
[? Ara,?] Wat jy wil om die volgende aan te bied nie?
>> Publiek: Teken 'n [onhoorbaar] die boonste [onhoorbaar] dieselfde.
[Onhoorbaar] sirkel, te vestig op die [Onhoorbaar] en trek [onhoorbaar].
>> David Malan: OK, nie meer ongedaan te maak.
Kom ons doen een of twee meer instruksies.
Chris, jy wil een aanbied?
>> Publiek: Aan die onderkant van die sirkel, [onhoorbaar]
trek 'n gelyke lyn Hellend Vlak afwaartse na links [onhoorbaar].
>> David Malan: OK.
Andrew?
Ons did-- Karim?
>> Publiek: Vanaf die regte lyn, die einde van die links lyn, die onderkant,
jy gaan reg oor te gaan dieselfde lengte as die lyn
jy op, teken aan die reg [onhoorbaar].
[Onhoorbaar] grade, so [onhoorbaar] grade aan die regterkant.
>> David Malan: Alle reg.
Kom ons breek.
Moet tog nie omdraai.
Kom ons breek, en laat ons Probeer een ander poging
voordat ons openbaar Ben wat hy is teken.
Kan jy shuffle Ben om die right-- of eintlik,
nee, laat ons net gee die ander styl, selfs beter.
So sal iemand nou wil meer van die benadering
dat Victoria het vroeër op, waar Ons praat in 'n hoër vlak onttrekking
en in net 'n sin of twee te beskryf Ben
wat om te trek sonder om in die onkruid,
so op hierdie 'n laer vlak te praat,?
Victoria.
[Gelag]
Publiek: Teken 'n figuur van die loop man.
En sy bene en arms het na die regterkant wees.
>> David Malan: OK, dit is al wat jy kry.
Alles reg.
Hoekom het ons nie openbaar aan Ben wat hy gedoen het.
So 'n rondte van applous.
Dit was die moeilikste miskien.
>> So selfs al is ons praat in redelik dom terme
oor net teken foto's, hopelik jy
kan dit baie waardeer die graad van uitdrukking wat nodig mag wees
ten einde 'n rekenaar wat om te doen te vertel.
En in werklikheid, die feit dat Ben was in staat om dit so vinnig trek
is 'n soort van bewys van die gebruik van 'n taal, miskien 'n hoër vlak
weergawe van die Engelse, wat hom toelaat om net te gebruik woorde, of woorde hoor
van Victoria, wat hom toelaat hierdie abstractions-- net trek
'n figuur loop om die right-- dié soort van het
sommige semantiese betekenis aan dit wat nie naastenby so voor die hand liggend as jy net
en gesê: sit jou pen neer, trek om die reg, trek aan die linkerkant.
>> En so gaan dit ook baie algemeen in programmering.
Dit sou gesê dat dit soos 'n 'n baie lae vlak taal, ontwikkeling
in 0 en 1 se as jy wil.
En dit sal 'n hoër vlak wees taal programmering in Java,
of iets soos dit.
'N bietjie van 'n oorvereenvoudiging, maar dit is
die soort van soos emosionele voel dat jy voel wanneer
met behulp van 'n soort van ding of 'n ander.
'N bietjie van frustrasie hier deur die behoefte vir sodanige presisie, maar die geleentheid
om 'n bietjie losser wees met die interpretasie hier.
Maar natuurlik, foute kan ontstaan ​​as gevolg.
>> As jy wil te home-- ons sal hierdie een in class-- nie
maar as jy wil bring hierdie een huis,
Ek het gedink ons ​​sou duik in hierdie.
So as jy wil hierdie speel speletjie saam met jou beduidende ander
of kinders of dies meer, jy kan geniet wat sowel.
>> So laat ons gaan voort en kyk na 'n laaste ding hier vir Rekenaardenke.
En dit bring ons by Johannes Oliver, nie vir die clip
jy dalk gisteraand gesien het, maar 'n bietjie onlangse uitgawe.
'N Paar maande terug, Volkswagen het nogal 'n bietjie van kritiek
om watter rede, as jy weet?
Wat het hulle in die moeilikheid vir?
>> Ja, so emissions-- hulle probeer uitstoot klop
toetse deur in wese met hul motors besoedel die omgewing minder
wanneer hul motors getoets en die omgewing besoedel meer
wanneer die motors is nie getoets.
En wat is toenemend interessante in die wêreld, as jy kan afgeleide het
uit besprekings van like-- wat it-- CarPlay, Apple se sagteware vir motors
en die feit dat baie van ons toenemend
het raakskerms in ons motors, daar is 'n skrikwekkende bedrag
van sagteware in mense se motors vandag, wat
eerlik open 'n hele blikkie wurms wanneer dit kom by veiligheid en fisiese risiko.
Maar vir vandag, laat ons fokus op net wat
betrokke by die skryf sagteware wat dalk die stelsel het gamed.
>> Vir die definisie van die probleem, vir diegene wat nie vertroud,
Kom ons neem 'n blik op John Oliver.
En vir diegene wat vertroud is met die probleem, laat ons kyk na dit
in 'n prettige lens via John Oliver sowel.
So laat my getref speel op hierdie, ek dink, drie minute inleiding.
Vervloek dit.
[Video speel]
-Cars--
David Malan: Dit is duidelik dat, op YouTube, it's--
- --the Slimste karakters in die Fast and Furious films.
Hierdie week, Duitse automaker Volkswagen gevind homself
in die middel van 'n skandaal van potensieel kriminele proporsies.
>> -Volkswagen Is verspanning vir miljarde in boetes, moontlik 'n kriminele klag
vir sy bestuurders, soos die maatskappy vra om verskoning
vir rigging 11 miljoen motors te help dit klop uitstoot toetse.
>> -Certain Diesel modelle is ontwerp met gesofistikeerde sagteware wat
gebruik inligting, insluitend die posisie van die stuurwiel en voertuig
spoed, om vas te stel die motor was ondergaan uitstoot toets.
Onder daardie omstandighede, die enjin sou giftige uitlaatgasse te verminder.
Maar die motor getuig om verbypad dat wanneer dit gedryf.
Uitstoot verhoog 10-40 keer bo aanvaarbare EPA vlakke.
>> -Wow 10 tot 40 keer groter as die EPA kan.
Dit is die ergste ding Volkswagen het ooit gedoen het,
is iets wat jy kan sê of jy het nog nooit gehoor van die Tweede Wêreldoorlog.
Maar miskien is die sekerste teken van hoe veel moeite Volkswagen is in,
is dat mense op die heel top het uitgetree.
Die hoof uitvoerende beampte bedank het gister ná skommeling skadebeheer doen,
sê hy eindeloos jammer was, wat geklink groot totdat dit blyk
Hy was slegs 10% jammer maar het sy mond getuig
kunsmatig opblaas sy sorriness.
En intussen, Volkswagen se Amerikaanse hoof het 'n verskoning van sy eie.
>> -Laat Se duidelik wees oor hierdie, Ons maatskappy is oneerlik.
En in my Duitse woorde, ons het heeltemal geskroef.
>> -Yeah, Maar heeltemal geskroef up is nie Duitse werke.
En die Duitse taal het baie mooi frases
om situasies te beskryf net soos hierdie, soos [Duits], wat min of meer beteken,
die hartseer wat kom van sake wat verband hou leuens,
of [Duits], wat vertaal as shaming kinders vader wat
wolke van petrol.
Dit is 'n pragtige taal.
Dit seile net buite die tong.
En by the way, terwyl die man se verskoning kan opreg geklink het,
Dit is opmerklik Hy het gepraat by 'n amptelike bekendstelling party vir die 2016
Volkswagen Passat, wat beteken dat binnekort nadat sê jammer, het hy gesê dit.
>> -Thank You very much vir die komende.
Geniet die aand.
Tot volgende is Lenny Kravitz.
>> [Speel van musiek]
>> -OK, OK, eindig jou verskoning met tot volgende
Lenny Kravitz nie skree nugter berou.
Dit skree, vra ons Bon Jovi, en hy het gesê nee.
merk Volkswagen se is erg beskadig.
En eerlik, hul nuwe advertensie veldtog is nie juis help.
>> - [Duits], het ons by Volkswagen wil om verskoning te vra vir jou mislei met
ons voertuie.
>> [Einde TERUGSPEEL]
David Malan: So dit was 'n ompad of-- sorry--
dit was 'n ompad van die bekendstelling van 'n fundamentele probleem
in sagteware, en dit is dat jy moet aan sekere voorwaardes op te spoor.
En so het die vraag aan die hand hier is, hoe 'n motor potensieel,
soos toegepas in sagteware deur hierdie programmeerders,
ontdek dat dit eintlik getoets?
So om super duidelik wees, wat hulle doen
was, in 'n omgewing waar die programmeerders uitgepluis
die motor is wat getoets, hulle een of ander manier gemaak
die motor stoot minder uitstoot, minder uitstoot, sodat minder giftige dampe
en so.
Maar wanneer dit normaalweg ry op die pad,
Dit sou net stoot so veel besoedeling soos dit wou.
>> So, hoe kan ons skryf die pseudokode vir hierdie algoritme?
Hoe kan ons skryf die pseudokode vir die sagteware wat in die motor?
Ek bedoel, in 'n neutedop, dit kook af om iets soos hierdie.
As getoets, uitstraal minder.
anders straal meer.
Maar dit is 'n bietjie te hoë vlak, reg?
>> Kom ons probeer om te duik in oor wat hierdie onttrekking van getoets middel.
Met ander woorde, selfs as jy weet niks oor motors, watter soort vrae
kan jy vra ten einde te bepaal of jy getoets, as jy die motor is?
Watter eienskappe kan wees bied as 'n motor word getoets?
>> Publiek: toets van toerusting.
>> David Malan: toets van toerusting.
So as toets toerusting buurt, dan stoot minder.
So ek kon dink die implementering wat met 'n soort van kameras
of die opsporing van wat rondom jou.
En laat my stel, wat voel net te ingewikkeld
om werklik nog meer hardeware net vir daardie doel.
>> Publiek: As jy in park, as jou kap oop.
>> David Malan: In die park of kap oop, so dit is goed.
>> Publiek: En motor bestuur.
>> David Malan: So dit is 'n bietjie meer concrete-- en motor loop.
So sou dit die samewerking van 'n wees paar verskillende toestande, as jy wil.
So as die motor is in 'n park, en selfs al is dit 'n baie meganiese ding
Tipies, ek kon dink skryf sagteware,
veral omdat daar dikwels 'n ligte daar deesdae,
Ek kon daar voorstel wat sagteware wat die shifter kan navraag
of wat nie, is jy in 'n park, is jy in ry, is jy in reverse.
En ek kan terug te kry 'n beantwoord dit is óf ja
of nee vir hierdie soort van vrae.
>> En so het ek kon ook waarskynlik beantwoord 'n vraag soos, is die enjinkap oop.
Miskien is daar 'n soort van sensor wat óf gee my terug 'n 1 of 0,
waar of onwaar is, die enjinkap oop.
En dan die motor loop, ek kon opspoor dat een of ander manier deur middel van watter meganisme?
Soos die motor loop, ek kon opspoor wat dit op,
kon ek opspoor een of ander manier dat die motor beweeg?
>> Publiek: RPMs.
>> David Malan: Ja, so daar is altyd dat naald wat
vertel jou hoeveel rotasies per minuut die wiele ervaar.
En so het ek kan kyk na dit.
En as dit nie 0, wat waarskynlik beteken die motor beweeg.
Maar ons het 'n wees bietjie versigtig daar,
because-- laat ons vereenvoudig this-- As ons net sê, as die motor loop,
Ons wil nie net uitstraal minder, Ons wil as die motor loop
en dit is getoets.
>> So is daar 'n paar ander bestanddele wat mense
het vermoed die sagteware doen, omdat afwesig die werklike bron-kode,
jy kan net soort van aflei uit die fisiese gevolge van die motor oor wat
kan aangaan onder die enjinkap in sagteware.
So as motor loop en miskien, sê, agterwiele nie beweeg,
kan dit wees 'n aanduiding van die een of ander toets?
Wat ek sinspeel op hier?
Ja, miskien, dis op 'n van diegene roller dinge,
waar soos die wiele draai in die voorkant of in die rug,
afhangende van of dit nou voorwiel of agterwiel-aandrywing, sodat die helfte van die wiele
beweeg, maar die ander twee is nie, wat
is 'n vreemde situasie in die werklike wêreld.
As jy ry op die pad, wat moet nie gebeur nie.
Maar as jy in 'n pakhuis op die een of ander roller stelsel,
wat kan inderdaad gebeur.
>> Ek dink mense het ook voorgestel dat miskien, As die motor loop en stuur
wiel nie beweeg, wat Ook kan 'n sein wees,
want dit is redelik vir soos 'n dadelik op 'n pad.
Maar selfs dan, die mens is waarskynlik beweeg dit 'n bietjie of beslis
oor 'n paar sekondes.
Of die loop van 'n minuut, die kans is dit nie
gaan gefikseerd in presies dieselfde posisie.
>> So met ander woorde, ons kan Substraction neem,
is jy getoets, en afbreek wat funksionaliteit
in hierdie komponent bestanddele.
En dit is werklik wat Volkswagen se ingenieurs op 'n manier gedoen.
Hulle het sagteware bewus te spoor indien die motor word getoets,
dus uitstraal minder, anders uitstraal in die gewone manier.
>> En die probleem hier ook is dat sagteware is nie
iets wat jy kan regtig sien nie, tensy jy het die sogenaamde bronkode.
Daar is dus twee verskillende tipes code-- ten minste twee verskillende tipes
van die kode in die wêreld.
Daar is iets genoem bron kode, wat nie in teenstelling met wat
ons het al skryf, bronkode.
>> Dit is bronkode wat geskryf is in 'n taal genoem pseudokode,
wat net iets Engels-agtige.
Daar is geen formele definisie daarvan.
Maar C en Java, C ++, diegene is alle formele tale wat,
wanneer jy skryf in hulle wat jy het is 'n teks lêer met bronkode.
>> Maar daar is ook iets in die wêreld genoem masjienkode.
En masjien-kode ongelukkig is net 0 en 1 se.
So masjienkode is wat masjiene verstaan, natuurlik.
Bronkode is wat mense verstaan.
>> En oor die algemeen, maar nie altyd, daar is 'n program
wat 'n programmeerder gebruik wat neem bron kode en draai dit in masjienkode.
En dat hierdie kursus algemeen bekend as 'n samesteller.
So jou insette is bronkode, jou uitset is masjienkode,
en die samesteller is 'n stuk sagteware wat daardie proses nie.
So hierdie kaarte eintlik mooi na ons insette, algoritmes, uitsette.
>> Maar dit is 'n baie spesifieke inkarnasie van dit wat om te sê dat,
selfs al is jy die eienaar van een van Volkswagen se motors wat hieraan skuldig is,
dit is nie soos jy kan net maak die kap of oop die gebruiker se handleiding of kyk
by die bronkode, want teen die tyd dit jou motor bereik in jou oprit,
Dit is reeds omskep in 0 en 1 se.
En dit is baie moeilik, nie onmoontlik nie, maar baie moeilik om te optel veel van enigiets
van net te kyk na die onderliggende 0 en 1 se.
So jy kan dit uit te vind, uiteindelik, as jy verstaan ​​hoe 'n masjien operates--
Intel inside-- as jy verstaan die Intel argitektuur,
maar dit is baie tydrowend.
En selfs daar, kan jy nie in staat wees om alles te sien
dat die kode eintlik kan doen.
>> Enige vrae oor hierdie of hierdie soort proses meer algemeen?
En eintlik, kan ons hierdie gesprek te bind bespreking van Apple gister.
Dit is ook waarom die FBI kan nie net gaan kyk in telefoon die verdagte se
en vind die reëls van die kode, vir Byvoorbeeld, wat in staat stel om die wagwoord uitsluitlik
of in staat stel dat 80-millisekonde vertraging.
Omdat teen die tyd dat dit op iPhone die mede se
Dit is reeds omgeskakel word na 0 en 1 se.
>> Wel, laat ons breek hier vir ons kyk na Rekenaardenke.
Hoekom het ons nie neem 'n 15 minute breek.
En wanneer ons terugkeer, sal ons 'n blik op ontwikkeling
self en begin om 'n paar te karteer van hierdie hoë vlak konsepte
om 'n werklike, as speels, programmeertaal.