Future of software development: Future of computers P2

BILDEKREDITT: Quantumrun

Future of software development: Future of computers P2

    I 1969 ble Neil Armstrong og Buzz Aldrin internasjonale helter etter å ha vært de første menneskene som tråkket sin fot på månen. Men selv om disse astronautene var heltene på kameraet, er det tusenvis av ubesungne helter som uten deres involvering ville ikke den første bemannede månelandingen vært umulig. Noen få av disse heltene var programvareutviklerne som kodet flyturen. Hvorfor?

    Vel, datamaskinene som eksisterte på den tiden var langt enklere enn de er i dag. Faktisk er den gjennomsnittlige personens utslitte smarttelefon flere størrelsesordener kraftigere enn noe annet ombord på Apollo 11-romfartøyet (og hele 1960-tallets NASA for den saks skyld). Dessuten ble datamaskiner på den tiden kodet av spesialiserte programvareutviklere som programmerte programvare på de mest grunnleggende maskinspråkene: AGC Assembly Code eller ganske enkelt, 1s og 0s.

    For kontekst, en av disse ubesungne heltene, Apollo romprograms direktør for Software Engineering Division, Margaret Hamilton, og teamet hennes måtte skrive et fjell med kode (bildet nedenfor) som ved å bruke dagens programmeringsspråk kunne ha blitt skrevet med en brøkdel av innsatsen.

    (Bildet over er Margaret Hamilton som står ved siden av en bunke med papir som inneholder Apollo 11-programvaren.)

    Og i motsetning til i dag hvor programvareutviklere koder for omtrent 80-90 prosent av mulige scenarier, for Apollo-oppdragene, måtte koden deres stå for alt. For å sette dette i perspektiv sa Margaret selv:

    "På grunn av en feil i sjekklistemanualen ble rendezvous-radarbryteren plassert i feil posisjon. Dette førte til at den sendte feilsignaler til datamaskinen. Resultatet var at datamaskinen ble bedt om å utføre alle sine normale funksjoner for landing mens den mottok en ekstra mengde falske data som brukte opp 15 % av tiden. Datamaskinen (eller rettere sagt programvaren i den) var smart nok til å gjenkjenne at den ble bedt om å utføre flere oppgaver enn den skulle utføre. Den sendte deretter ut en alarm, noe som betydde for astronauten at jeg er overbelastet med flere oppgaver enn jeg burde gjøre på dette tidspunktet, og jeg kommer til å beholde bare de viktigere oppgavene, dvs. de som trengs for landing ... Faktisk , ble datamaskinen programmert til å gjøre mer enn å gjenkjenne feiltilstander. Et komplett sett med gjenopprettingsprogrammer ble integrert i programvaren. Programvarens handling, i dette tilfellet, var å eliminere lavere prioriterte oppgaver og reetablere de viktigere ... Hvis datamaskinen ikke hadde detgjenkjente dette problemet og tok gjenopprettingstiltak, jeg tviler på om Apollo 11 ville vært den vellykkede månelandingen den var."

    - Margaret Hamilton, direktør for Apollo Flight Computer Programming MIT Draper Laboratory, Cambridge, Massachusetts, "Computer Got Loaded", brev til Datamasjon, Mars 1, 1971

    Som antydet tidligere, har programvareutvikling utviklet seg siden de tidlige Apollo-dagene. Nye programmeringsspråk på høyt nivå erstattet den kjedelige prosessen med koding med 1-er og 0-er til koding med ord og symboler. Funksjoner som å generere et tilfeldig tall som pleide å kreve dager med koding, erstattes nå ved å skrive en enkelt kommandolinje.

    Med andre ord har programvarekoding blitt stadig mer automatisert, intuitiv og menneskelig for hvert tiår som har gått. Disse egenskapene vil bare fortsette inn i fremtiden, og lede utviklingen av programvareutvikling på måter som vil ha en dyp innvirkning på våre daglige liv. Dette er hva dette kapittelet av Fremtiden for datamaskiner serien vil utforske.

    Programvareutvikling for massene

    Prosessen med å erstatte behovet for å kode 1-er og 0-er (maskinspråk) med ord og symboler (menneskespråk) omtales som prosessen med å legge til lag med abstraksjoner. Disse abstraksjonene har kommet i form av nye programmeringsspråk som automatiserer komplekse eller vanlige funksjoner for feltet de er designet for. Men på begynnelsen av 2000-tallet dukket det opp nye selskaper (som Caspio, QuickBase og Mendi) som begynte å tilby det som kalles no-code eller low-code plattformer.

    Dette er brukervennlige, nettbaserte dashboards som gjør det mulig for ikke-tekniske fagfolk å lage tilpassede apper som er skreddersydd for bedriftens behov ved å knipse sammen visuelle kodeblokker (symboler/grafikk). Med andre ord, i stedet for å hogge ned et tre og forme det til et garderobeskap, bygger du det ved hjelp av ferdige deler fra Ikea.

    Selv om bruk av denne tjenesten fortsatt krever et visst nivå av datakunnskap, trenger du ikke lenger en informatikkgrad, bruk den. Som et resultat muliggjør denne formen for abstraksjon fremveksten av millioner av nye "programvareutviklere" i bedriftsverdenen, og den gjør det mulig for mange barn å lære å kode i en tidligere alder.

    Redefinerer hva det vil si å være programvareutvikler

    Det var en tid da et landskap eller en persons ansikt bare kunne fanges opp på et lerret. En maler ville måtte studere og praktisere i årevis som lærling, lære håndverket å male – hvordan blande farger, hvilke verktøy som er best, de riktige teknikkene for å utføre et spesifikt bilde. Prisen for handelen og den mange års erfaring som trengs for å utføre den godt, gjorde også at malerne var få og langt mellom.

    Så ble kameraet oppfunnet. Og med et klikk på en knapp ble landskap og portretter fanget på et sekund som ellers ville tatt dager til uker å male. Og etter hvert som kameraene ble forbedret, ble billigere og ble rikelig til et punkt hvor de nå er inkludert i selv den mest grunnleggende smarttelefonen, ble det å fange verden rundt oss en vanlig og uformell aktivitet som alle nå deltar i.

    Ettersom abstraksjoner skrider frem og nye programvarespråk automatiserer stadig mer rutinemessig programvareutvikling, hva vil det si å være programvareutvikler om 10 til 20 år? For å svare på dette spørsmålet, la oss gå gjennom hvordan fremtidige programvareutviklere sannsynligvis vil gå frem for å bygge morgendagens applikasjoner:

    *For det første vil alt standardisert, repeterende kodearbeid forsvinne. I stedet vil det være et stort bibliotek med forhåndsdefinerte komponentadferd, brukergrensesnitt og dataflytmanipulasjoner (Ikea-deler).

    *Som i dag vil arbeidsgivere eller gründere definere spesifikke mål og leveranser for programvareutviklere å utføre gjennom spesialiserte programvareapplikasjoner eller plattformer.

    *Disse utviklerne vil deretter kartlegge sin utførelsesstrategi og begynne å lage prototyping av tidlige utkast av programvaren deres ved å få tilgang til komponentbiblioteket og bruke visuelle grensesnitt for å koble dem sammen – visuelle grensesnitt som er tilgjengelig via utvidet virkelighet (AR) eller virtuell virkelighet (VR).

    *Spesialiserte kunstig intelligens (AI)-systemer designet for å forstå målene og leveransene som er implisert av utviklerens første utkast, vil deretter avgrense det utarbeidede programvaredesignet og automatisere all kvalitetssikringstesting.

    *Basert på resultatene vil AI deretter stille en rekke spørsmål til utvikleren (sannsynligvis gjennom verbal, Alexa-lignende kommunikasjon), for å forsøke å bedre forstå og definere prosjektets mål og leveranser og diskutere hvordan programvaren skal fungere i ulike scenarier og miljøer.

    *Basert på utviklerens tilbakemeldinger, vil AI gradvis lære hans eller hennes intensjoner og generere koden for å gjenspeile prosjektmålene.

    *Dette frem og tilbake, menneske-maskin-samarbeidet vil gjenta versjon etter versjon av programvaren til en ferdig og salgbar versjon er klar for intern implementering eller for salg til publikum.

    *Faktisk vil dette samarbeidet fortsette etter at programvaren er utsatt for bruk i den virkelige verden. Etter hvert som enkle feil rapporteres, vil AI fikse dem automatisk på en måte som gjenspeiler de opprinnelige, ønskede målene som er skissert under programvareutviklingsprosessen. I mellomtiden vil mer alvorlige feil kreve et menneskelig-AI-samarbeid for å løse problemet.

    Samlet sett vil fremtidige programvareutviklere fokusere mindre på "hvordan" og mer på "hva" og "hvorfor". De blir mindre håndverkere og mer arkitekter. Programmering vil være en intellektuell øvelse som vil kreve folk som metodisk kan kommunisere intensjoner og resultater på en måte som en AI kan forstå og deretter autokode en ferdig digital applikasjon eller plattform.

    Kunstig intelligens drevet programvareutvikling

    Gitt avsnittet ovenfor, er det klart at vi føler at AI kommer til å spille en stadig mer sentral rolle innen programvareutvikling, men bruken er ikke utelukkende for å gjøre programvareutviklere mer effektive, det er også forretningskrefter bak denne trenden.

    Konkurransen mellom programvareutviklingsselskaper blir hardere for hvert år som går. Noen selskaper konkurrerer ved å kjøpe ut sine konkurrenter. Andre konkurrerer på programvaredifferensiering. Utfordringen med sistnevnte strategi er at den ikke er lett å forsvare. Enhver programvarefunksjon eller forbedring et selskap tilbyr til sine kunder, kan konkurrentene kopiere relativt enkelt.

    Av denne grunn er tiden borte da selskaper slipper ny programvare hvert til tredje år. I disse dager har selskaper som fokuserer på differensiering et økonomisk insentiv til å gi ut ny programvare, programvarefikser og programvarefunksjoner på en stadig mer regelmessig basis. Jo raskere selskaper innoverer, desto mer driver de klientlojalitet og øker kostnadene ved å bytte til konkurrenter. Dette skiftet mot regelmessig levering av inkrementelle programvareoppdateringer er en trend som kalles "kontinuerlig levering."

    Dessverre er kontinuerlig levering ikke lett. Knapt en fjerdedel av dagens programvareselskaper kan gjennomføre utgivelsesplanen som kreves av denne trenden. Og dette er grunnen til at det er så stor interesse for å bruke AI for å få fart på ting.

    Som skissert tidligere, vil AI etter hvert spille en stadig mer samarbeidende rolle i programvareutforming og utvikling. Men på kort sikt bruker bedrifter det til i økende grad å automatisere kvalitetssikring (testing) prosesser for programvare. Og andre selskaper eksperimenterer med å bruke AI for å automatisere programvaredokumentasjon – prosessen med å spore utgivelsen av nye funksjoner og komponenter og hvordan de ble produsert ned til kodenivå.

    Totalt sett vil AI i økende grad spille en sentral rolle i programvareutvikling. De programvareselskapene som mestrer bruken tidlig, vil til slutt nyte eksponentiell vekst i forhold til konkurrentene. Men for å realisere disse AI-gevinstene, vil industrien også trenge å se fremskritt på maskinvaresiden - neste avsnitt vil utdype dette punktet.

    Programvare som en tjeneste

    Alle slags kreative fagfolk bruker Adobe-programvare når de lager digital kunst eller designarbeid. I nesten tre tiår kjøpte du Adobes programvare som en CD og eide bruken av den til evig tid, og kjøpte fremtidige oppgraderte versjoner etter behov. Men på midten av 2010-tallet endret Adobe strategi.

    I stedet for å kjøpe programvare-CDer med irriterende forseggjorte eierskapsnøkler, må Adobe-kunder nå betale et månedlig abonnement for retten til å laste ned Adobe-programvare på dataenhetene sine, programvare som bare vil fungere sammen med en vanlig til konstant Internett-tilkobling til Adobe-servere .

    Med denne endringen eide kundene ikke lenger Adobe-programvare; de leide den etter behov. Til gjengjeld trenger ikke kundene lenger å kjøpe oppgraderte versjoner av Adobe-programvare. så lenge de abonnerer på Adobe-tjenesten, vil de alltid ha de siste oppdateringene lastet opp til enheten umiddelbart etter utgivelse (ofte flere ganger i året).

    Dette er bare ett eksempel på en av de største programvaretrendene vi har sett de siste årene: hvordan programvare går over til bruk i stedet for et frittstående produkt. Og ikke bare mindre, spesialisert programvare, men hele operativsystemer, som vi har sett med utgivelsen av Microsofts Windows 10-oppdatering. Med andre ord programvare som en tjeneste (SaaS).

    Selvlærende programvare (SLS)

    Bygger på bransjeskiftet mot SaaS, en ny trend innen programvareområdet dukker opp som kombinerer både SaaS og AI. Ledende selskaper fra Amazon, Google, Microsoft og IBM har begynt å tilby sin AI-infrastruktur som en tjeneste til sine kunder.

    Med andre ord, AI og maskinlæring er ikke lenger bare tilgjengelig for programvaregiganter, nå kan alle selskap og utviklere få tilgang til online AI-ressurser for å bygge selvlærende programvare (SLS).

    Vi vil diskutere potensialet til AI i detalj i vår Future of Artificial Intelligence-serie, men i forbindelse med dette kapittelet vil vi si at nåværende og fremtidige programvareutviklere vil lage SLS for å lage nye systemer som forutser oppgaver som må gjøres og bare autofullfør dem for deg.

    Dette betyr at en fremtidig AI-assistent vil lære arbeidsstilen din på kontoret og begynne å fullføre grunnleggende oppgaver for deg, som å formatere dokumenter akkurat slik du liker dem, skrive utkast til e-postene dine i stemmen din, administrere arbeidskalenderen din og mer.

    Hjemme kan dette bety at et SLS-system administrerer ditt fremtidige smarthus, inkludert oppgaver som å forvarme hjemmet ditt før du ankommer eller holde styr på dagligvarer du trenger å kjøpe.

    Innen 2020-tallet og inn i 2030-årene vil disse SLS-systemene spille en viktig rolle i bedrifts-, regjerings-, militær- og forbrukermarkedene, og gradvis hjelpe hver enkelt med å forbedre produktiviteten og redusere avfall av alle slag. Vi vil dekke SLS-teknologi mer detaljert senere i denne serien.

    Det er imidlertid en hake ved alt dette.

    Den eneste måten SaaS- og SLS-modellene fungerer på, er hvis Internett (eller infrastrukturen bak det) fortsetter å vokse og forbedres, sammen med data- og lagringsmaskinvaren som kjører "skyen" disse SaaS/SLS-systemene opererer på. Heldigvis ser trendene vi følger lovende ut.

    For å lære om hvordan Internett vil vokse og utvikle seg, les vår Internetts fremtid serie. For å lære mer om hvordan maskinvare vil utvikle seg, så les videre ved å bruke lenkene nedenfor!

    Future of Computers-serien

    Nye brukergrensesnitt for å omdefinere menneskeheten: Fremtiden for datamaskiner P1

    Den digitale lagringsrevolusjonen: Future of Computers P3

    En falmende Moores lov for å sette i gang grunnleggende omtanke om mikrobrikker: Future of Computers P4

    Cloud computing blir desentralisert: Future of Computers P5

    Hvorfor konkurrerer land om å bygge de største superdatamaskinene? Fremtiden til datamaskiner P6

    Hvordan Quantum-datamaskiner vil forandre verden: Future of Computers P7    

    Neste planlagte oppdatering for denne prognosen

    2023-02-08

    Prognosereferanser

    Følgende populære og institusjonelle lenker ble referert til denne prognosen:

    ProPublica

    Følgende Quantumrun-lenker ble referert til denne prognosen: