Hätäkeskus.
Hätäkeskus, mikä hätänä?
Hätäkeskus, mikä...
Yhdeksäs huhtikuuta vuonna 2014 hätäkeskukset sammuivat yhtäkkiä -
miljoonille pitkin Yhdysvaltoja.
Palvelu oli kiinni kuusi tuntia.
Yli 6 000 hätäpuhelua epäonnistui. Valtio jäljitti ongelman tietokoneeseen -
puhelunvälityskeskuksessa Coloradon Englewoodissa.
Kyseessä oli simppeli koodausvirhe.
Tuon tietokoneen koodarit -
päättivät määrittää tietokoneelle välitettyjen puheluiden ylärajan,
jota he eivät uskoneet sen saavuttavan.
Mutta sinä vuoden 2014 yönä niin kävi. Tietokone seurasi ohjeitaan täydellisesti.
Rajan saavutettuaan se lopetti välitykset. Ongelma ei ollut tietokone -
eikä bugi koodissa.
Ongelma oli itse koodaus,
eli päätöksentekoprosessi, jonka kautta tietokoneen kanssa kommunikoidaan.
Sellainen voima tuo suuren eettisen vastuun.
SOSIOLOGI
Mikään ei korvaa sitä.
TIETOKONETIETEILIJÄ
Samoin kuin kaupunkisuunnittelijat määrittelevät...
KIRJAILIJA
...miten kaupungissa eletään,
määrittelee koodi elämämme netissä. Nettihän onkin nykyään elämäämme.
Eikä pelkästään internet, vaan kun soitamme hätäkeskukseen,
menemme lääkäriin -
tai nousemme autoon.
Vaikka koodi pyörittää elämäämme...
MAAILMAN KOODARIT
...silti vain prosentin kolmasosa ihmisistä osaa kirjoittaa sitä.
Murskaenemmistölle se on musta laatikko. Mutta sen ei tarvitse olla.
Miten koodaus siis oikeasti toimii?
Ja mitä uutta maailmaa rakennamme sillä?
NETFLIX-DOKUMENTTISARJA
Tietokone.
Ihminen loi nerokkaan kokoelman elektronista laitteistoa.
Ei meiltä puutu riittäviä laitteita ongelmien ratkontaan,
vaan riittävät kuvaukset siitä, miten ongelmia ratkotaan.
Kun joku puhuu koodauksesta, sen kuvittelee tosi vaikeaksi.
On tärkeää muistaa, että kaiken tietokoneissa -
on luonut joku toinen ihminen.
KOODAUS
Jos yrittäisin selittää avaruusoliolle miten tärkeää koodaus on, ja mitä se on,
sanoisin: "Tiedätkö,
asumme tällä fyysisellä planeetalla, ja noin 50 vuotta sitten -
muutama ihminen alkoi rakentaa toista planeettaa.
Se oli virtuaaliplaneetta.
Kun näet ihmisiä kulkemassa -
pää nuokkuen ja puhelintaan tuijottaen, he ovat siinä toisessa maailmassa.
Sitä koodi on. Sen toisen maailman rakennusmateriaalia."
Nämä kangaspuut ovat jokaisen tietokoneen ja älyluurin esi-isä.
Se keksittiin vuonna 1804. Sen suuri innovaatio olivat nämä kortit.
Korttien reiät antoivat vain tiettyjen neulojen kulkea läpi.
Satojen korttien tuhannet reiät -
mahdollistivat monimutkaisemmat kuviot kuin aiemmin.
Tyylitellyt šaalit tulivat muotiin Euroopassa.
Kudotuista kuvioista sai niin mutkikkaita, että ne näyttivät piirroksilta,
kuten tämä kangaspuiden keksijästä.
Ennen tätä vetopoikien oli valittava yksittäiset langat käsin.
Laskeminenkin hoitui silloin käsin laskijoiden toimesta.
Ensimmäiset tietokoneet olivat ihmisiä. Parhaatkin apuvälineet -
osasivat laskea vain yhdellä tapaa,
kuten helmitaulu yhteen- ja vähennyslaskuissa.
Matemaatikko Charles Babbage halusi koneen,
joka osasi laskea kaiken, mitä siltä halusi -
tai mitä siihen ohjelmoi.
Hän esitteli ajatuksen koneesta nimeltä Analyyttinen kone.
Babbage ansaitsi ideallaan paikan historiankirjoissa.
Tietokoneet saivat alkunsa Babbagesta,
hyvin eksentrisestä brittikeksijästä.
Babbage sai inspiraatiota siihen, miten se toimisi.
Hän oli ripustanut kotiinsa kopion tästä kuvasta.
Babbagen koneessa oli Jacquardin kangaspuiden tapaan -
fyysisiä osia: laitteisto.
Ja samoin -
laitteistolle saattoi syöttää ohjeita reikäkorteilla.
Reiät päästivät neulat läpi muiden neulojen työntyessä taakse.
Se käynnisti mekaanisten laskutoimitusten sarjan.
Reikäkortit ovat ohjelmistoa.
Babbage ei saanut konetta valmiiksi,
mutta hänen kanssaan työskennellyt nainen näki sen mullistavan potentiaalin -
laskennan tuolla puolen.
Ada Byron, Lovelacen kreivitär, kirjoitti:
"Aritmetiikan rajat ylittyivät siinä hetkessä, kun ajatus -
korttien käyttämisestä syntyi..." Hän näki saman kuin Jacquard.
Reiät saattoivat edustaa muutakin kuin numeroita,
kuten kuvioita,
musiikkia -
tai kokonaisia lauseita.
Sitä voi ajatella vaikka morseaakkosina.
Jokainen morseaakkosten kirjain koostuu vain kahdesta signaalista.
...tai... Ne ovat binäärisiä.
Näillä piippauksilla voi sanoa mitä vain,
kuten tämän hätäsanoman, jonka Titanic lähetti vuonna 1912.
OSUIMME JÄÄVUOREEN. UPPOAMME...
SOS ei tarkoita mitään.
Se on vain tosi yksinkertainen morsettaa.
Yhtä hyvin voisi ajatella, että kutakin kirjainta edustaa ykkösten ja nollien -
yhdistelmä.
Näyttääkö tutulta?
Tämä on binäärikoodia.
Se toimii meillä linkkinä ihmis- ja konekielen välillä.
Jokainen ykkönen tai nolla on binääriluku eli bitti.
Nämä ovat tietotekniikan atomeita.
Tiedät ne ehkä eri nimellä:
kahdeksan bittiä on tavu.
Tiedätkö sen kuvan tietokoneellasi, jonka koko on 1,1 megatavua?
Se on 8 800 000 ykköstä ja nollaa.
Samoin kuin morseaakkosten pisteillä ja viivoilla kirjoitetaan... ja...
binäärikoodi on vain tapa kirjoittaa, mitä nykytietokoneessa tapahtuu:
varaus tai ei varausta.
Tämä on yksinkertainen sähköpiiri.
Kuvittele miljoonat tällaiset yhteistyöhön. Se on nykytietokone.
Sähköpiirissä tämä on bitti.
Jos valo ei pala, nolla.
Palaa, yksi.
Tietokoneet ymmärtävät vain sähköä,
joten kaikki, mitä koodarit tietokoneilla tekevät,
on lopulta vain sarja varausten kytkemistä ja sammuttamista.
Se kaikki toimii, koska oikein yhteen kytkettynä -
ne varaukset voivat edustaa logiikkaa.
Logiikka on oikeastaan ennustettava sarja faktoja tai tapahtumia,
kuten tämän ja tämän kytkimen sulkeminen kellon soittamiseksi.
Tietokoneväki kutsuukin tätä logiikaksi ja piiriksi.
Tai loogiseksi portiksi.
Onnistunkohan polttamatta reikää pöytään.
JA-portissa molempien piirien on oltava kiinni valon sytyttämiseksi.
Sitten on TAI-portteja,
joissa valo syttyy, jos vain yksi piiri on kiinni.
Sen voi sanoa toisinkin.
Jos yksi piireistä on kiinni, silloin valo syttyy.
Tuollainen "jos sitten" -lause on algoritmi.
Nykyisessä pop-kulttuurissa algoritmi-sana tuottaa hämmennystä.
Se on nähty ennenkin, kun algoritmit ovat seonneet.
Algoritmien toiminta on useimmille mysteeri.
Mikä hitto algoritmi edes on?
Algoritmi on oikeastaan vain joukko ohjeita.
Kuvittele meneväsi kauppaan. Voit mennä vasemmalle ja sitten oikealle.
Tai voit mennä oikealle ja sitten vasemmalle.
Tai voit kääntyä neljästi vasemmalle, juosta puistossa, ylittää tien -
ja kääntyä neljästi oikealle.
Kuten samaan paikkaan voi mennä monia reittejä,
koodauksessa voi olla eri algoritmeja saman ongelman ratkomiseen.
Tavoitteena on löytää kaikkein tehokkain.
Kaunis koodi ei toista itseään.
Se on eleganttia ja voimakasta.
Algoritmeja pyörittävät tietokoneet toimivat ohjeiden mukaan,
mutta paljon nopeammin.
Se teki ihmisistä paljon voimakkaampia.
Kun tieteilijät alkoivat kehittää fuusiopommia,
pääasiassa ihmiset hoitivat laskutoimitukset.
Mutta sitten he alkoivat käyttää tätä.
ENIAC-tietokone teki lämpöydinlaskelmia kuusi viikkoa.
Sen suorana seurauksena vuonna 1952 voitiin ensi kertaa testata -
pommia, joka oli satoja kertaa voimakkaampi -
kuin Japaniin toisessa maailmansodassa pudotetut fissiopommit.
Koodauksen voima voimisti kykyä tehdä...
STRATOSFÄÄRI 160 KILOMETRIÄ
...mitä haluamme.
Mutta 40-luvulla se vaati yhä paljon työtä.
Ohjelmien tuottaminen ykkösillä ja nollilla ei selvästikään skaalaudu.
Koodin voimaa haluttiin käyttöön enemmän,
mutta koodauksesta piti tulla helpompaa.
Koodista onkin siitä lähtien pyritty kehittämään yhä enemmän...
TIETOKONETEKNIIKKA
...ihmiskielen kaltaista -
keksimällä jotain, mitä koodarit nykyään oikeasti käyttävät:
ohjelmointikieliä.
Ykkösiin ja nolliin verrattuna ne ovat aika abstrakteja.
Abstraktio on ihmisille hankala.
Abstraktimmat kielet ovat pohjimmiltaan ykkösiä ja nollia.
Löysimme vain parempia tapoja järjestellä niitä.
Asiaa voi ajatella biologian kautta. Ihmiset ovat tosi monimutkaisia,
mutta 99 % kehostamme koostuu vain kuudesta alkuaineesta.
Siitä pääsemme suuriin molekyyleihin.
Tuon järjestyneen kerroksen ja yksinkertaisimman olion välinen kuilu -
on aikamoinen.
Ja ihmisaivot tekevät niin edistyneitä juttuja,
että on vaikea uskoa niiden koostuvan samasta aineesta.
Tietokoneet ovat samankaltaisia mutta paljon yksinkertaisempia.
Siinä olivat hyvät uutiset.
Koodauksen tarinassa on kyse tämän laatikon nostamisesta -
binäärimaailmasta saadaksemme -
helpompia, nopeampia ja voimakkaampia koodauskeinoja -
ilman tarvetta käsitellä tai edes ymmärtää -
perustana olevia binääri- ja loogisia portteja.
Se antaa koodareille keinon luoda tutut tuotteemme.
Ensimmäinen askel siihen oli...
Symbolinen konekieli, jota on paljon helpompi lukea ja kirjoittaa.
Sen sijaan, että sanoisi 0-1-0-0-0-1-1-1, kirjoitetaan sana "add".
Sitten laitetaan assembler-ohjelma kääntämään kirjaimet -
A, D ja D vastaaviksi ykkösiksi ja nolliksi.
Tällä tasolla binäärikoodi järjestellään kirjaimiksi ja numeroiksi,
kuten atomit järjestyvät molekyyleiksi.
Koodaus symbolisilla konekielillä ei silti ollut helppoa,
sillä kaikki nämä tietokoneet käyttivät eri symbolisia konekieliä.
Jos kirjoitti ohjelman yhdelle koneelle, se ei toiminut missään muussa.
Nopeasti alettiin pohtia, että oikeastaan haluamme syöttää tietokoneelle -
tietoa jollain, mitä käytämme päivittäin.
Sitten tulivat ohjelmointikielet,
jotka luotiin symbolisilla konekielillä.
Niillä sitten luotiin lisää kieliä.
Olet ehkä kuullut niistä.
-LISP. -BASIC.
-JAVA. -C++.
-Python 3. -HTML 5.
PEARL, PHP, vähän C:tä.
Aivan kuten puhutut kielet ovat eri tapoja -
esittää sama ajatus toisille,
ovat ohjelmointikielet vain eri tapoja esittää sama ajatus tietokoneille.
Korkean tason kieliä on useita,
koska ensinnäkin eri kielet täyttävät eri tarpeita.
Katsotaan näitä kahta.
Tämä, COBOL, luotiin 50-luvun lopussa -
helpottamaan yritysten koodin käyttöä.
Se muistuttaa englantia paitsi että jokainen keskustelu -
päättyy sanaparilla "STOP RUN".
Tämä, CPL, kehitettiin 60-luvulla, ja se sisälsi tieteellisempää laskentaa.
Homma toimii kuin biologinen evoluutio.
Kun eliöt monimutkaistuvat, ne kehittyvät -
sopeutumaan paremmin elinympäristöönsä.
Kyse on myös pitkälti mieltymyksistä.
Ihmiset tykkäävät ilmaista itseään eri työkaluilla.
ONKO C++ KARMEA KIELI?
Elon Musk ei esimerkiksi pidä C++-ohjelmointikielestä.
Sinäkin voit keksiä kielen.
Tämä on korkean tason kieli, joka koostuu vain sanasta "moo".
Oikeasti. Sen nimi on COW.
Tämä taas koostuu Arnold Schwarzeneggerin elokuvalainauksista.
Aina luullessani, ettei niitä tule enää lisää,
keksii joku taas uuden kielen ja kerää ympärilleen kannattajajoukon.
En näe mitään loppua uusien kielien keksimiselle.
Ja kaikki nämä kielet perustuvat yhä logiikkaan.
Esimerkiksi Netflixin koodari voisi sanoa:
"Jos olet katsonut enemmän kuin kaksi tuntia, näytä sitten tämä."
Että koodi koskettaisi useimpien elämää, on useimmilla oltava tietokone.
Sitä varten tietokoneiden tuli olla lähestyttävämpiä.
Se vaati uuden harppauksen.
Se alkoi tästä Doug Englebartin demosta vuonna 1968.
TIETOKONEINSINÖÖRI
Kohta näemme ruudun, jota hän käyttää, ja kursorin, joka liikkuu -
tuon hiiren liikkeiden mukaan.
Nykyään ei ohjelmoida kirjoittamalla lauseita -
paperille ja ojentamalla ne jollekulle, joka syöttää ne.
Istumme ruudulla näkyvän graafisen käyttöliittymän eteen.
Sen lyhenne on GUI.
Niiden avulla voi koodata kokonaan ilman kirjoitusta.
Tai ne vain helpottavat koodausta.
Tyypillisesti käytämme sen tyyppistä ohjelmointiympäristöä,
jonka Alan ja hänen kumppaninsa niin kauniisti loivat -
Palo Altossa Xeroxin tutkimuskeskuksessa 70-luvun alussa.
Tämä Alan.
Pidän häntä kotitietokoneiden isänä,
koska hän oli ensimmäinen, joka artikuloi sen vision.
Tunnustan, että pidin sitä silloin tieteisfiktiona.
Kun isoja asioita tapahtuu, on se yleensä kokonaisen yhteisön aikaansaannosta.
Ja Park oli fantastinen siinä.
Se oli kuin taikaa.
Graafinen käyttöliittymä salli miljoonien lisää -
käyttää tietokonetta heille luonnolliseen tapaan.
Xeroxin lanseeratessa GUI:t vuonna 1979 -
he näyttivät, miten koodi voi muuttaa arkea.
Saavut toimistolle, ja Xerox-kone näyttää aamupostisi ruudulla.
Pian tällaiset Xerox-systeemit -
auttavat hallinnoimaan tärkeintä resurssiasi: tietoa.
Moni kaltaiseni tutkijayhteisömme jäsen halusi tehdä maailmasta paremman.
Heidän ideansa liittyi tiiviisti ihmisen toimintakyvyn laajentamiseen.
Jotain, mikä olisi vuorovaikutuksessa -
yleisöön, normaaleihin ihmisiin, ja se mahdollistaisi -
enemmän kuin mihin aiemmin pystyimme.
Siinä se onnistuikin.
GUIt olivat suuri hyppäys tällä asteikolla.
Sitten tuli seuraava maailmaa mullistava innovaatio.
Uusi tapa jakaa kaikkea, mitä koodilla sai aikaan.
TV:ssä alettiin ennustaa, mitä pääsy kaikkeen tähän koodiin tarkoittaisi.
Kuvittele istuvasi aamukahville -
ja käynnistäväsi tietokoneesi lukeaksesi lehden.
Kuvittele maailma, jossa kaikki sanat, kuvat maalauksista -
ja jokainen elokuva voitaisiin katsoa välittömästi kotona.
Olemme mielestäni jonkin jännittävän ja kauhistuttavan kynnyksellä.
-Eikö se ole vain työkalu? -Ei ole.
Vaikuttavimmat ohjelmistot hyödyntävät näitä kaikkia innovaatioita.
Yksi college-opiskelija käytti korkean tason ohjemointikieltä, PHP:tä,
saadakseen jotakin jakoon internetiin käytettäväksi tietokoneen GUI:lla.
Hän kuvaili sen ensimmäisessä TV-haastattelussaan vuonna 2004.
Se on nettitietokanta, joka yhdistää ihmisiä -
yliopistoissa ja collegeissa sosiaalisten verkkojen kautta.
Käyttäjiä on 100 000. Kuka tietää, mitä seuraavaksi.
Facebookilla on nyt yli kaksi miljardia kuukausittaista käyttäjää.
Nykyään koodarit muokkaavat miljardien elämää.
Sitä, miten he työskentelevät, ostavat, syövät, deittailevat ja rentoutuvat.
Mitä teet nyt? Katsot minua Netflixistä nettiselaimella.
Netflix itsessään on koodia, jota suoritetaan nettiselaimessa,
joka on koodia,
joka vuorostaan pyörii tietokoneella, joka suunniteltiin koodia käyttämällä.
Se ulottuu alas asti.
Hyvä koodi on kuin olisi suunnitellut museon,
jota miljoonat ajattelevat ja jossa kuljetaan päivittäin.
Mikään ei rinnastu koodaamiseen, koska se tuntuu luomiselta.
Sitä omaa idean jonkin toiminnasta.
Sitten sitä istuu tietokoneen ääreen yrittämään sen toteuttamista.
Siihen rooliin sisältyy paljon vastuuta.
Otetaan vaikka nopeusrajoitus. Yli 95 km/h nopeudet on kielletty.
Selvä.
Mutta entä jos omistamasi auton tietokone sanoisi:
"Tämä auto ei kulje yli 95 kilometriä tunnissa.
Se on eri tapa hallita käytöstä.
Kontrolloimalla valintojamme koodilla on elämässämme -
melkeinpä suurempi sääntelyvaikutus kuin lainsäädäntö voi toivoakaan.
Ja se voi olla hieno asia.
USA:ssa tapahtuu vuosittain kuusi miljoonaa kolaria.
Yhden analyysin mukaan 94 % niistä on kuskin aiheuttamia.
Koodauksen edistysaskeleet voivat pelastaa miljoonia.
Mutta ne voivat myös vaarantaa henkiä uusin tavoin.
Minulla on hypertrofinen kardiomyopatia.
Se on lääketieteellinen termi sille, että minulla on iso sydän.
Se on kirjaimellisesti iso. Se on kolme kertaa normaalia isompi.
Se selvisi, kun olin 30. Riskini kuolla 40-vuotiaaksi mennessä -
oli hyvin iso.
Elektrofysiologi sanoi, "Ei se ole ongelma,
koska voit saada rytmihäiriötahdistimen."
Tämä laite toimii koodilla.
Pari vuotta sitten ollessani raskaana koin sydämentykytyksiä.
Noin neljännes naisista kokee niitä. Se on normaalia.
Mutta laitteeni luuli, että rytmini oli vaarallinen,
ja se antoi iskun.
Laitevalmistajat eivät halua odottavien naisten saavan iskuja.
Sitä he viimeksi haluavat.
Sitä ei vain ollut huomioitu.
On valtava määrä päätöksiä,
joita ohjelmoijien on tehtävä.
Väistämättä eteen tulee jonkinlainen tilanteiden yhdistelmä,
jota he eivät ennakoineet.
Se, mitä yritämme opettaa, kun opetamme ohjelmoinnin taitoa,
on näiden erilaisten tilanteiden huomioon ottaminen.
Sitä yrittää olla kattava -
lamaantumatta niistä asioista, joita ehkä pitää ottaa huomioon.
Siitä tulee vain todempaa, koska aloimme koodata -
ihan uudella tapaa.
Perinteisessä koodauksessa tietokoneelle kirjoitetaan ohjeita.
Nykyään voimme antaa sille syötteitä ja tulosteita.
Lisäksi saamme ne kirjoittamaan nykyään omia ohjeitaan.
Tietokoneelle annetaan -
paljon esimerkkejä -
sanoen: "Tässä on juhlat." Sitten on muita juttuja.
Hammaslääkärin vastaanotto tai luokkahuone: ei juhlat.
Sitten tietokone katsoo niitä yrittäen rakentaa luokittelujärjestelmän.
Se on koneoppimista.
Kun joku puhuu keinoälystä, tätä hän tarkoittaa.
Se on aivan uuden tason abstraktio ja tapa tehdä asioita,
koska se ei sovi siihen tapaan, miten koostamme asioita.
Niitä kutsutaan koneoppimisalgoritmeiksi, koska tietokone luo -
itse noudattamansa ohjeet.
Mutta lopulta tietenkin nekin kääntyvät -
pieniksi ohjeiksi.
Google Kääntäjä oli yli miljoonan koodirivin kokoinen.
Ihmiset kirjoittivat miljoona pientä ohjetta.
Nykyään se on noin 500 rivin kokoinen -
ja käyttää koneoppimista.
Oletetaan, että huolimattomuuden vuoksi yksikään juhlakuva -
ei sisältänyt mustia tai latinoita.
Tietokone voi päätellä juhliin kutsuttavan vain valkoisia tai aasialaisia.
On paljon valkoisia ja aasialaisia koodareita.
Suunnitteluhuoneessa istuvien kirjoa pitäisi laajentaa monesta syystä.
Laajempi elämänkokemus tuottaa parempia kysymyksiä.
Mutta lopulta, jos koneoppimissysteemiin syöttää dataa -
vaikkapa rikosoikeudesta, joka sisältää rakenteellista rasismia,
mutta koneoppimisen ohjelmoijat näyttävät Benettonin mainokselta -
eri rotuineen, kasvoineen ja sosiaalisine taustoineen,
järjestelmä oppii silti datasta.
Jos ihmiset eivät aktiivisesti korjaa sitä,
johtaa historiallinen data meidät toistamaan menneet virheet.
Koodauksen tarina kertoo ihmisen kunnianhimosta ja luovuudesta.
Falcon 9 -raketti on laukaistu.
Näimme sen, mitä luulimme näkymättömäksi:
mustan aukon.
Rakennamme uutta maailmaa yhä intuitiivisemmilla työkaluilla,
joita useampi voi käyttää auttaakseen meitä varmistamaan paremman maailman.
Olemme pyrkineet tekemään tietokoneista lähestyttävämpiä -
suuremmalle määrälle ihmisiä.
Olemme nähneet tämän vallankumouksen toteutuvan edessämme viimeiset 50 vuotta.
Siksi on jännittävää elää nyt.
On tärkeää muistaa, että kaiken, mitä tietokoneella tekeekään,
on luonut joku ihminen.
Voit olla yksi heistä. On hyvin tärkeää, että sinusta tulee yksi heistä.
Silloin voi muuttaa maailmaa syvällisesti.
Koneoppiminen, data ja perinteinen koodaus -
tulevat pyörittämään maailmaa mitä moninaisimmin tavoin.
Yhteiskuntana meidän on sanottava:
"Ok, meillä on tämä voimakas uusi teknologia,
ja joillain tavoin se voi olla hienoa, mutta siitä ei tule hienoa itsekseen.
Tekstitys: Antti Rinta-Loppi