Hva er fremtiden for programvareutvikling?

Hva er fremtiden for programvareutvikling?

I mange år ble programvareutvikling gjort manuelt.

Fra bankkort i FORTRAN til å komponere distribuerte metoder i Go, har disiplinen holdt seg i utgangspunktet den samme: tenk intenst på et problem, produser en smart tilnærming (dvs. algoritme) og gi maskinen et par instruksjoner å implementere.

Denne tilnærmingen, som kan kalles "eksplisitt programmering", var nøkkelen til alt fra hovedrammen til smarttelefonen fra internettbommen til mobilrevolusjonen. Det har bidratt til å skape nye markeder og laget selskaper som Apple, Microsoft, Google og Facebook.

Og likevel, noe vil mangle. De intelligente systemene som er forutsett av forfattere fra gamle Computing Age, av Philip Dicks robottaxi til George Lucas C-3PO, fortsetter science fiction. Tilsynelatende enkle oppgaver trosser automatisert selv de mest strålende informatikerne. Pundits anklager Silicon Valley, i møte med disse utfordringene, for å vike seg fra grunnleggende fremskritt for å fokusere på inkrementelle eller kjepphestdrevne selskaper.

Det kommer åpenbart til å endre seg. Waymos selvkjørende biler brukte i det siste åtte millioner kilometer. Microsofts oversettelsesmotor, selv om den ikke behersker seks millioner former for kommunikasjon, kan passe menneskelige nøyaktighetsnivåer i kinesisk-til-engelsk oppgaver. Og startups bryter ny bakke på steder som intelligente assistenter, industriell automatisering, svindeloppdagelse og mange andre.

Individuelt lover disse nye teknologiene å påvirke hverdagen vår. Samlet representerer de en havendring i måten vi tenker på programvareutvikling - og også en bemerkelsesverdig avvik fra den eksplisitte programmeringsmodellen.

Hjertegjennombruddet som støtter hvert av disse fremskrittene er dyp læring, en strategi for kunstig intelligens motivert av hjernens konstruksjon. Det som startet som et relativt smalt dataevalueringsverktøy, fungerer nå som noe i nærheten av et generelt datasystem. Det overgår tradisjonell programvare på tvers av et bredt spekter av jobber, og kan til slutt levere de intelligente systemene som lenge har unngått informatikere - bragd at pressen noen ganger blåser ut av proporsjoner.

Midt i den dype læringshypen overser de fleste observatører imidlertid den største grunnen til å være positive til fremtiden: dyp læring krever at kodere nesten ikke skriver noen kode. I stedet for å stole på forhåndsinnstilte regler eller hvis så fakturaer, skriver et dyp læringsprogram automatisk prinsipper basert på tidligere eksempler. En programvareutvikler trenger bare å lage et "grovt skjelett" for å omskrive Andrej Karpathy fra Tesla, og la deretter datamaskinene gjøre resten av

I dette nye universet trenger ikke programmerere lenger å designe en spesiell algoritme for hvert problem. Mesteparten av arbeidet konsentrerer seg heller om å generere datasett som gjenspeiler ønsket oppførsel og styre opplæringsprosessen. Pete Warden fra Googles TensorFlow-team påpekte dette så langt tilbake som i 2014: "Jeg pleide å være en koder," skrev han. " Jeg lærer datamaskiner å komponere sine egne apper."

Igjen: programmeringsmodellen som driver de viktigste forbedringene i applikasjoner i dag, krever ikke en betydelig mengde faktisk programmering.

Hva innebærer dette for fremtiden for programvareutvikling?

Programmering og datavitenskap vil i økende grad konvergere

De fleste applikasjoner inkluderer ikke "end-to-end " læringsprogrammer i overskuelig fremtid. Det vil stole på datamodeller for å tilby kjernekognisjonskapasiteter og eksplisitt logikk for å grensesnitt med brukere og oversette resultater. Spørsmålet "skal jeg bruke AI eller til og med en konvensjonell tilnærming til dette problemet?" Vil utvikle seg i økende grad. Å designe intelligente systemer vil kreve kontroll av begge deler.

AI-profesjonelle vil sannsynligvis være rockestjernene

Å gjøre AI er vanskelig. Rang-og-fil AI-programmerere - ikke bare strålende akademikere og forskere - vil være et av de mest verdifulle verktøyene for programvarevirksomheter senere. Dette bærer litt ironi for tradisjonelle kodere, som har automatisk arbeid i forskjellige bransjer fordi 1950-tallet og som for øyeblikket står overfor delvis automatisering av sine egne jobber. Kravet til tjenestene deres vil sikkert ikke avta, men enkeltpersoner som ønsker å være i forkant, må med en sunn dose skepsis sjekke vannet fra AI.

AI-verktøykjeden må konstrueres

Gil Arditi, leder for maskinlæring i Lyft, sa det best. "Maskinlæring er nå i den første suppe-perioden. Den ligner veldig på databasen fra begynnelsen av 80- eller slutten av 70-tallet. Du måtte bli en verdensspesialist for å få disse elementene til å fungere. " Studier viser også at mange AI-modeller er ikke enkelt å forklare, ubetydelig å bedra og utsatt for fordommer. Verktøy for å løse disse problemene, blant annet, vil være avgjørende for å frigjøre potensialet til AI-utviklere.

Vi trenger alle å bli kjent med uforutsigbar oppførsel

Konseptet med en pc "utdannelse" passer både for programmerere og brukere. Det forsterker inntrykket av at datamaskiner gjør akkurat det vi sier, og at lignende innganger konsekvent produserer lignende utganger. AI-versjoner, derimot, fungerer som puste, levende systemer. Nytt verktøy vil få dem til å oppføre seg mer som eksplisitte programmer, spesielt i sikkerhetskritiske konfigurasjoner, men vi risikerer å miste verdien av disse systemene - som AlphaGos "fremmede" trekk - hvis vi legger rekkverket for tett. Når vi vokser og bruker AI-programvare, må vi forstå og omfavne sannsynlige resultater.

Og håper sannsynligheten for AI-overtakelse er nær null.