SOS 112, vad har inträffat?
SOS 112, vad...
Den 9:e april 2014 slutade SOS-numret plötsligt att fungera
för miljontals människor i hela USA.
Systemet låg nere i över sex timmar.
Fler än 6 000 nödsamtal kunde inte kopplas fram.
Man spårade problemet till en dator
i en omkopplingsanläggning i Englewood i Colorado.
Det var ett simpelt kodfel.
De som programmerade datorn,
valde att sätta en övre gräns för antalet samtal som kunde loggas,
en gräns programmerarna aldrig trodde skulle nås.
Men den kvällen 2014, nåddes den.
Datorn följde instruktionerna perfekt.
Den nådde gränsen och slutade koppla samtal.
Problemet var inte datorn, och det var ingen bugg i koden.
Det var programmeringen,
beslutsprocessen med vilken människan kommunicerar med datorn.
Med denna makt följer stort etiskt ansvar.
Det finns inget liknande. Det finns ingen ersättning.
På samma sätt som stadsbyggare bestämmer hur du ska leva i staden,
styr kod våra liv på nätet, vilket i princip är hur vi lever.
Inte bara på internet, men när vi kontaktar SOS...
...går till doktorn...
...eller kliver in i en bil.
Alla är nära kod, varje dag.
Trots det, vet bara en tredjedels procent av oss hur man skriver den.
För den stora massan är det en svart låda. Men det behöver inte vara så.
Så hur funkar programmering egentligen?
Och vilken ny värld bygger vi med den?
EN ORIGINAL-DOKUMENTÄRSERIE FRÅN NETFLIX
Datorn.
En genialisk samling av elektronisk hårdvara
skapades av människan.
Vi saknar inte maskiner som löser våra problem,
vi saknar beskrivningar av hur problemen ska lösas.
När någon säger programmering, tror man att det är jättesvårt.
Det är viktigt att komma ihåg att allt man använder på datorn,
skapades av en människa.
PROGRAMMERING
Låt säga att en utomjording frågar: "Vad betyder programmering?
Jag skulle säga: "Vi lever på den här fysiska jorden, och för 50 år sedan
började en grupp människor bygga en annan planet.
Inte en fysisk, utan en virtuell planet.
Titta runtom dig, ser du alla som går med huvudet nedböjt mot sina telefoner?
De är i den andra världen.
Det är kod. Det är byggstenarna i den världen.
Den här vävstolen är ursprunget till varje dator och smartphone på jorden.
Den uppfanns år 1804, och den stora innovationen var dessa kort.
Hålen i korten släppte bara igenom vissa stift.
Med tusentals hål i hundratals kort,
kunde vävarna skapa mer avancerade mönster än förut.
Detaljerade sjalar blev populära i Europa.
Vävda tyger kunde vara så invecklade att de såg ut som teckningar,
som denna, av vävstolens uppfinnare.
Innan dessa vävstolar, valdes enskilda trådar ut för hand av "dragpojkar."
Man räknade matte för hand också, av så kallade "beräknare."
De första datorerna var människor.
Och våra bästa maskiner kunde bara lösa en typ av problem,
som kulramen med addition och subtraktion.
Den brittiske matematikern Charles Babbage ville ha en maskin
som löste alla matteproblem man ville, eller snarare programmerade den till.
Han föreslog något han kallade "den analytiska maskinen."
Babbages idé gav honom en plats i historien.
Datorn uppfanns först av Babbage,
en mycket excentrisk brittisk uppfinnare.
Babbage hade en idé om hur den skulle funka.
Han hade en kopia av den här bilden i sitt hus.
Babbages analytiska maskin hade, likt Jacquards vävstol,
fysiska delar: "hårdvara."
Och likt vävstolen
kunde man ge hårdvaran instruktioner i form av kort med stansade hål.
Hålen släpper in stift,
och frånvaron av hål pressar andra stift bakåt,
vilket utlöser en serie mekaniska beräkningar.
Korten med olika hål, det är mjukvara.
Babbage färdigställde inte sin analytiska maskin,
men en ung kvinna som arbetade med honom, såg dess potential
bortom matematiken.
Ada Byron, grevinna av Lovelace, skrev:
"Aritmetikens gränser överskreds i det ögonblick tanken
på att använda korten uppkom..."
Hon såg det Jacquard såg: Hålen kunde representera mer än siffror.
De kunde vara mönster, musik...
...eller hela meningar.
Man kan se det ungefär som morsekod.
Varje bokstav i Morse-alfabetet uttrycks med bara två signaler:
...eller... Det är binärt.
Med de pipen kan vi säga vad som helst,
som detta nödanrop från Titanic år 1912.
"SOS" betyder ingenting.
Det är bara otroligt enkelt att skicka i morsekod.
Man kan också tänka att varje bokstav kan uttryckas som en kombination
av nollor och ettor.
Ser det bekant ut? Det här är binär kod.
Det är så vi minskar klyftan mellan maskiners och människors språk.
Varje nolla eller etta är en binär siffra, eller "bit."
De är atomerna i datorberäkningen.
De har också ett annat namn: åtta bit är en byte.
Du vet den där bilden i din dator, den som är 1,1 megabyte?
Det är åtta miljoner åttahundra tusen ettor och nollor.
Morsekodens prickar och streck är bara ett sätt att skriva ner...
och binär kod är vårt sätt att skriva ner vad som händer i en modern dator:
ström eller ingen ström.
Det här är en enkel elektrisk krets. Tänk dig miljontals sådana som samarbetar.
Det är en nutida dator.
I en elektrisk krets är detta en bit.
Är glödlampan släckt? Noll. Tänd? Ett.
Datorer förstår bara elektricitet,
så det programmerarna gör med datorer, är i slutändan
bara en serie av-och-på.
Det funkar, för sammankopplat på rätt sätt
kan strömmen representera logik.
Logik är en förutsägbar serie fakta eller händelser,
som att sluta den här kretsen...
...och den här för att ringa i klockan.
Datorfolk kallar detta en "logisk AND-krets."
Eller en logisk "grind."
Få se om det går utan att bränna hål i bordet.
I en AND-grind måste båda kretsarna slutas för att lampan ska lysa.
Det finns också OR-grindar, där lampan tänds om en krets sluts.
Man kan säga så här: Om en av kretsarna sluts, tänd lampan.
En sådan "if then"-sats, är en algoritm.
I populärkulturen orsakar ordet "algoritm" en del förvirring.
Vi har sett det förut, algoritmer som spårar ur!
Algoritmer är ett mysterium för de flesta.
Vad sjutton är en algoritm egentligen?
Men en algoritm är bara instruktioner.
Tänk dig att du går till affären. Du kan gå vänster och sedan höger.
Eller gå höger och sedan vänster.
Eller gå vänster fyra gånger, springa runt parken, gå över motorvägen
och sedan gå höger fyra gånger igen.
Som det finns olika vägar för att nå en plats,
kan det finnas olika algoritmer för att lösa ett problem.
Målet är att hitta den mest effektiva och eleganta.
Vacker kod upprepar sig inte.
Den är elegant. Den är kratfull.
Datorer som kör algoritmer gjorde det vi sa till dem att göra,
men väldigt mycket snabbare, vilket gjorde människor mycket mäktigare.
När forskarna började utveckla fusionsbomben
använde de främst mänskliga beräknare.
Men sedan vände de sig till denna:
ENIAC-datorn gjorde termonukleära beräkningar i sex veckor.
Dess resultat bidrog till detta:
Det första lyckade testet år 1952
av en bomb, hundratals gånger kraftigare än de fissionsbomber
som släpptes över Hiroshima och Nagasaki under andra världskriget.
Förmågan att programmera ökade folks möjlighet att göra...
...det de valde att göra.
Men... på 1940-talet krävdes mycket jobb.
Att skriva program i ettor och nollor är inte skalbart.
Folk ville ha mer av den makt programmering gav.
Men de ville ha ett lättare sätt att programmera.
Programmeringens historia sedan dess har inneburit att göra koden allt mer lik
mänskligt språk genom att uppfinna det nästan alla programmerare idag använder:
programmeringsspråk.
Jämfört med ettor och nollor är dessa språk ganska abstrakta.
Abstraktion är ett svårt ord.
Mer abstrakta språk har i grunden samma ettor och nollor,
vi har bara hittat bättre sätt att organisera dem.
Man kan tänka på det som biologi.
Människor är oerhört komplexa,
men 99 % av våra kroppar består av bara sex grundämnen.
Man kan komma upp i stora molekyler.
Mellan det lagret av ordning, och det som är det enklaste levande ting
är det ett stort hopp.
Och människan har en hjärna som gör så avancerade saker
att det är svårt att tro att de består av samma ämnen.
Datorer är lite likadana, men mycket enklare.
Det är det positiva.
Programmering handlar om att flytta upp den här rutan,
bort från det binära, för att ge oss
enklare, snabbare, mer kraftfulla sätt att programmera,
utan att behöva hantera eller förstå de binära och logiska grindarna nedanför.
Det ger programmerarna möjlighet att skapa välbekanta produkter.
Det första steget på vägen var...
..."assemblerspråk," vilket är lättare att läsa och skriva,
där man till exempel istället för 0-1-0-0-0-1-1-1,
kallar det för "add,"
och sedan har man ett program, assemblern, som översätter bokstäverna
A-D-D till motsvarande ettor och nollor.
På den nivån organiseras binärkoden i bokstäver och siffror,
precis som atomer organiseras i molekyler.
Men programmering i assemblerspråk var inte direkt enkelt,
för alla dessa datorer använde olika assemblerspråk.
Skrev man ett program för en dator så funkade det inte på de andra.
Väldigt snart började folk tänka att det vi egentligen vill ge datorn
är termer som vi använder i vardagen.
Det finns programmeringsspråk som vi byggde utifrån assemblerspråk,
och utifrån de språken byggde vi fler programmeringsspråk.
Du har nog hört namnen.
-LISP... -BASIC...
-Java... -C++...
-Python 3... -HTML 5...
PEARL, PHP, lite C...
Talat språk är olika sätt att uttrycka samma tanke till andra,
och programmeringsspråk är olika sätt att uttrycka
samma tanke till datorer.
Det finns fler än ett högnivåspråk,
för olika språk tillfredsställer olika behov.
Titta på dessa två.
Det här, COBOL, skapades på sent 1950-tal
för att göra det lättare för företag att använda kod.
Det är väldigt likt engelska, förutom att varje samtal
avslutades med "STOP RUN."
CPL utvecklades på 1960-talet och innehöll mer vetenskapliga beräkningar.
Det är som biologisk evolution.
När organismer blir mer komplexa, utvecklar de särdrag
som gör dem mer anpassade till sin specifika miljö.
Ärligt talat är det en fråga om smak.
Folk gillar olika verktyg för att uttrycka sig.
Språket C++ till exempel...
Elon Musk är inte förtjust i det.
Du kan hitta på ett.
Det här är ett högnivåspråk skapat helt av ordet "moo."
Seriöst. Det heter COW.
Det här är skapat utifrån filmcitat av Arnold Schwarzenegger.
Varje gång jag tänker: "Nu måste vi vara färdiga,"
kommer nån på ett nytt språk som får nya anhängare.
Så jag ser ingen ände på uppkomsten av nya språk.
Och alla dessa språk baseras fortfarande på logik.
En programmerare på Netflix kan till exempel säga:
"Om du har tittat längre än två timmar...
...visa detta."
Men för att kod ska påverka de flesta, måste de flesta använda datorer.
Det innebar att datorer behövde bli enklare, vänligare
och det krävde ett till stort steg.
Det började här, i en demonstration av Doug Engelbart år 1968.
Alldeles strax ser vi hans skärm,
och hur punkten rör sig i enlighet med musens rörelser.
Nuförtiden programmerar man inte genom att skriva satser
på ett papper och ge dem till någon som matar in dem.
Man sitter vid en skärm, man har ett grafiskt gränssnitt.
Idag kallas det GUI.
Med GUI kan man programmera utan att skriva något alls.
Eller använda kod på ett enklare sätt.
Man arbetar oftast i en programmeringsmiljö
av den typ Alan och hans kollegor så vackert skapade
på Xerox Palo Alto Research Center på 1970-talet.
"Alan." Den här Alan.
Jag ser honom som persondatorernas fader,
för han var den första att uttala den visionen.
Och jag måste erkänna att jag tyckte att det var science fiction.
När stora saker sker,
finns det oftast en stor grupp.
PARC var fantastiskt på det viset. Det var magiskt.
Det grafiska gränssnittet gjorde det möjligt för miljoner
att använda datorer på ett sätt som känns naturligt för dem.
När Xerox marknadsförde GUI år 1979,
visade de hur kod kunde förändra vardagslivet.
Man kommer till kontoret och en Xerox-maskin
visar morgonens post på en skärm.
Inom kort kommer Xerox-system som detta
att hjälpa dig hantera din mest värdefulla resurs: information.
Det fanns många som jag, och många människor
inom forskningsområdet som ville göra världen bättre.
De hade en idé som var djupt anknuten till mänsklig förstärkning.
Något som skulle interagera med oss, allmänheten,
den vanliga människan och ge oss förmåga att göra mer än vi kunde förut.
Det gav oss förmågan att göra mer.
GUI var ett stort kliv upp på skalan.
Och sedan kom nästa världsförändrande uppfinning.
Ett nytt sätt att dela ut allt som vi kunde skapa med kod.
På tv började folk förutspå vad plötslig tillgång till all kod skulle betyda.
Tänk dig att du sitter med morgonkaffet,
slår igång din hemdator för att läsa tidningen.
Tänk dig en värld där alla ord som skrivits, alla bilder av en målning,
alla filmer nånsin inspelade, kan ses i ditt hem.
Jag tror att vi är på gränsen till något inspirerande och skrämmande.
-Men det är bara ett verktyg? -Nej.
Nutidens mest tongivande program använder alla dessa innovationer.
En collegestudent använde högnivåspråket PHP
för att skapa något att dela på internet för användning på datorer med GUI.
Han beskrev det in sin första tv-intervju år 2004.
Det är en online-katalog som kopplar ihop folk
från universitet och college genom sociala nätverk.
Nu är vi 100 000 personer, vem vet vad det blir.
Det blev fler än två miljarder personer på Facebook varje månad.
Idag formar programmerare miljardtals människors liv.
Hur de jobbar, handlar, äter, dejtar och chillar.
Vad gör du nu? Du tittar på mig i en Netflix-webbläsare.
Netflix är kod, och den körs i en webbläsare som är kod,
som körs på en dator som utformades med hjälp av kod.
Det är sköldpaddor hela vägen ner.
Bra kod är som att vara arkitekt till ett museum
som miljontals människor tänker på, går runt i och använder varje dag.
Inget är som att skriva kod, det känns som äkta skapande.
Man har en tanke om hur något ska funka
och sedan sitter man vid en dator och försöker förverkliga det.
Den rollen medför stort ansvar.
Det finns en fartgräns. Inte fortare än 90 km/h.
Okej.
Men tänk om du hade en bil, och datorn sa:
"Den här bilen kommer inte att köra fortare än 90"?
Det är ett sätt att styra beteenden.
Genom att styra våra val, har koden i våra liv
en nästan mer djupgående reglerande effekt än lagen kan önska.
Och det kan vara bra.
Det sker ungefär sex miljoner bilolyckor i USA varje år,
och en analys visade att 94 % av dem orsakas av föraren.
Framsteg inom programmering kan rädda miljontals liv.
Men de kan också försätta liv i fara på nya sätt.
Jag har hypertrofisk kardiomyopati,
vilket är den medicinska termen för att jag har ett stort hjärta.
Bokstavligt talat. Det är tre gånger större än ett normalt hjärta.
Jag fick veta det när jag var 30, så risken för att plötsligt dö vid 40,
var väldigt hög.
Elektrofysiologen sa: "Det är ingen fara, du kan få en pacemaker med hjärtstartare."
Apparaten går på kod.
När jag var gravid för ett par år sedan, fick jag hjärtklappning.
En fjärdedel av alla kvinnor har hjärtklappning, det är normalt.
Men apparaten trodde att jag hade en farlig hjärtrytm, och gav mig en stöt.
Tillverkarna har inget intresse av att ge elstötar till gravida kvinnor.
Det är det sista de vill. De har bara inte tänkt på det.
Det finns en enorm mängd beslut
och personerna som programmerar kommer att fatta dem.
Och oundvikligen
kommer det att finnas kombinationer av omständigheter som de inte förutsett.
Så det vi försöker lära ut när vi undervisar i hantverket programmering,
är hur man ska tänka på alla olika förhållanden.
Hur man ska vara grundlig
utan att bli förlamad av mängden saker som man måste ta hänsyn till.
Och det blir allt mer sant eftersom vi har börjat programmera
på ett helt nytt sätt.
I traditionell programmering ger man instruktioner till en dator.
Men nu kan vi ge datorn en mängd indata och en mängd utdata
och få den att skriva sina egna instruktioner.
Det man gör är att ge datorn många exempel,
och säga: "Det här är en fest."
Och så andra saker. En tandläkarmottagning: inte fest.
Ett klassrum: inte fest.
Sedan tittar datorn på dessa och försöker bygga ett klassificeringssystem.
Det är maskininlärning.
Nu för tiden, om någon säger artificiell intelligens så menar de detta.
Det är en annan sorts abstraktion och ett sätt att göra saker,
för det passar inte riktigt in i vårt sätt att stapla saker.
Vi kallar dem maskininlärningsalgoritmer eftersom datorn skapar
sina egna instruktioner.
Men i slutändan översätts de förstås till små instruktioner.
Google Translate innehöll mer än en miljon rader kod.
Det är folk som skrivit en miljon små instruktioner.
Just nu innehåller Google Translate ungefär femhundra rader kod
som anropar maskininlärning.
Tänk dig att på grund av ett misstag så har ingen av festbilderna du la in
med icke-vita eller latinamerikaner.
Datorn kan besluta att en festregel är är att bara vita och asiater är inbjudna.
Det är många vita och asiater som programmerar.
Vi borde absolut utvidga vilka som är vid ritbordet, av miljoner orsaker.
Mer livserfarenhet ger bättre frågor.
Men i slutändan, om man ger maskininlärningssystemet data,
låt säga ett rättsväsende med inbyggd strukturell rasism i datan,
och låt säga att programmerarna ser ut som en Benetton-annons...
...olika etnicitet, olika ansikten, olika social bakgrund...
...så lär sig systemet ändå av datan.
Utan folk som aktivt korrigerar detta,
så kommer historiska data få oss att repetera misstag från förr.
Programmeringens historia är en av mänsklig ambition och kreativitet.
Falcon 9 har lyft.
Vi har sett det vi trodde inte kunde ses.
Ett svart hål.
Vi bygger en ny värld med allt mer intuitiva verktyg
som många fler människor kan använda för att hjälpa oss förbättra den världen.
Vi har gjort en resa för att göra datorer mer tillgängliga
för människor, och för fler människor.
Vi har sett revolutionen utspela sig framför våra ögon de senaste 50 åren.
Det är därför det är så spännande att leva nu.
Det är viktigt att komma ihåg att allt du använder på din dator,
skapades av en människa.
Du kan vara en av dem, och det är viktigt att du blir en av dem.
Du kan förändra världen på ett fundamentalt vis.
Det finns en värld som kommer att styras med maskininlärning,
data och traditionell programmering på allt fler sätt.
Som samhälle måste vi säga: "Okej! Vi har en kraftfull ny teknik
som på sätt och vis kan vara jättebra, men den blir inte bra av sig själv."