Fremtiden for softwareudvikling: Fremtiden for computere P2

BILLEDKREDIT: Quantumrun

Fremtiden for softwareudvikling: Fremtiden for computere P2

    I 1969 blev Neil Armstrong og Buzz Aldrin internationale helte efter at have været de første mennesker til at træde foden på Månen. Men mens disse astronauter var heltene på kameraet, er der tusindvis af ubesungne helte, som uden deres involvering ville den første bemandede månelanding ikke have været umulig. Et par af disse helte var softwareudviklerne, der kodede flyvningen. Hvorfor?

    Nå, de computere, der eksisterede på det tidspunkt, var langt enklere, end de er i dag. Faktisk er den gennemsnitlige persons slidte smartphone flere størrelsesordener stærkere end noget andet ombord på Apollo 11-rumfartøjet (og hele 1960'ernes NASA for den sags skyld). Desuden blev computere på det tidspunkt kodet af specialiserede softwareudviklere, der programmerede software på de mest basale maskinsprog: AGC Assembly Code eller blot 1'er og 0'er.

    Til kontekst, en af ​​disse ubesungne helte, Apollo rumprogrammets direktør for Software Engineering Division, Margaret Hamilton, og hendes team skulle skrive et bjerg af kode (billedet nedenfor), som ved hjælp af nutidens programmeringssprog kunne være skrevet med en brøkdel af indsatsen.

    (Billedet ovenfor er Margaret Hamilton, der står ved siden af ​​en stak papir, der indeholder Apollo 11-softwaren.)

    Og i modsætning til nu om dage, hvor softwareudviklere koder for omkring 80-90 procent af mulige scenarier, til Apollo-missionerne, skulle deres kode stå for alt. For at sætte dette i perspektiv sagde Margaret selv:

    "På grund af en fejl i tjeklistemanualen blev rendezvous-radarkontakten placeret i den forkerte position. Dette fik den til at sende fejlagtige signaler til computeren. Resultatet var, at computeren blev bedt om at udføre alle sine normale funktioner til landing mens den modtog en ekstra belastning af falske data, som brugte 15 % af sin tid. Computeren (eller rettere softwaren i den) var smart nok til at genkende, at den blev bedt om at udføre flere opgaver, end den skulle udføre. Den sendte derefter ud af en alarm, hvilket betød for astronauten, at jeg er overbelastet med flere opgaver, end jeg burde gøre på dette tidspunkt, og jeg vil kun beholde de mere vigtige opgaver, dvs. dem, der er nødvendige for at lande... Faktisk , var computeren programmeret til at gøre mere end at genkende fejltilstande. Et komplet sæt genoprettelsesprogrammer blev indarbejdet i softwaren. Softwarens handling var i dette tilfælde at eliminere lavere prioriterede opgaver og genetablere de mere vigtige ... Hvis computeren ikke havdegenkendte dette problem og tog genopretningsforanstaltninger, jeg tvivler på, om Apollo 11 ville have været den vellykkede månelanding, det var."

    — Margaret Hamilton, direktør for Apollo Flight Computer Programming MIT Draper Laboratory, Cambridge, Massachusetts, "Computer Got Loaded", Brev til Databehandling, Marts 1, 1971

    Som antydet tidligere har softwareudvikling udviklet sig siden de tidlige Apollo-dage. Nye programmeringssprog på højt niveau erstattede den kedelige proces med kodning med 1'ere og 0'ere til kodning med ord og symboler. Funktioner som at generere et tilfældigt tal, der før krævede dages kodning, erstattes nu af at skrive en enkelt kommandolinje.

    Med andre ord er softwarekodning blevet mere og mere automatiseret, intuitiv og menneskelig for hvert årti, der går. Disse egenskaber vil kun fortsætte ind i fremtiden og styre udviklingen af ​​softwareudvikling på måder, der vil have en dybtgående indflydelse på vores daglige liv. Dette er, hvad dette kapitel af Computernes fremtid serien vil udforske.

    Softwareudvikling til masserne

    Processen med at erstatte behovet for at kode 1'er og 0'er (maskinsprog) med ord og symboler (menneskeligt sprog) omtales som processen med at tilføje lag af abstraktioner. Disse abstraktioner er kommet i form af nye programmeringssprog, der automatiserer komplekse eller fælles funktioner til det felt, de er designet til. Men i løbet af begyndelsen af ​​2000'erne dukkede nye virksomheder op (som Caspio, QuickBase og Mendi), der begyndte at tilbyde det, der kaldes no-code eller low-code platforme.

    Disse er brugervenlige, online dashboards, der gør det muligt for ikke-tekniske fagfolk at skabe brugerdefinerede apps, der er skræddersyet til deres virksomheds behov ved at sammensætte visuelle kodeblokke (symboler/grafik). Med andre ord, i stedet for at fælde et træ og forme det til et omklædningsskab, bygger du det ved hjælp af færdige dele fra Ikea.

    Mens brugen af ​​denne service stadig kræver et vist niveau af computerkyndig, behøver du ikke længere en datalogisk grad, brug den. Som et resultat muliggør denne form for abstraktion fremkomsten af ​​millioner af nye "softwareudviklere" i erhvervslivet, og det gør det muligt for mange børn at lære at kode i en tidligere alder.

    Omdefinerer, hvad det vil sige at være softwareudvikler

    Der var engang, hvor et landskab eller en persons ansigt kun kunne fanges på et lærred. En maler ville skulle studere og øve sig i årevis som lærling, lære kunsthåndværket at male – hvordan man blander farver, hvilke værktøjer der er bedst, de korrekte teknikker til at udføre et specifikt billede. Omkostningerne ved handelen og de mange års erfaring, der skulle til for at udføre den godt, betød også, at malerne var få og langt imellem.

    Så blev kameraet opfundet. Og med et klik på en knap blev landskaber og portrætter fanget på et sekund, som ellers ville tage dage til uger at male. Og efterhånden som kameraer blev forbedret, blev billigere og blev rigelige til et punkt, hvor de nu er inkluderet i selv den mest basale smartphone, blev det at fange verden omkring os en almindelig og afslappet aktivitet, som alle nu deltager i.

    Efterhånden som abstraktioner skrider frem og nye softwaresprog automatiserer stadig mere rutinemæssigt softwareudviklingsarbejde, hvad vil det så betyde at være softwareudvikler om 10 til 20 år? For at besvare dette spørgsmål, lad os gennemgå, hvordan fremtidige softwareudviklere sandsynligvis vil gå om at bygge morgendagens applikationer:

    *For det første vil alt standardiseret, gentagne kodningsarbejde forsvinde. I stedet vil der være et stort bibliotek af foruddefinerede komponentadfærd, brugergrænseflader og dataflowmanipulationer (Ikea-dele).

    *Som i dag vil arbejdsgivere eller iværksættere definere specifikke mål og leverancer, som softwareudviklere kan udføre gennem specialiserede softwareapplikationer eller platforme.

    *Disse udviklere vil derefter kortlægge deres eksekveringsstrategi og begynde at lave prototyper af tidlige udkast til deres software ved at få adgang til deres komponentbibliotek og bruge visuelle grænseflader til at forbinde dem sammen – visuelle grænseflader, der tilgås via augmented reality (AR) eller virtual reality (VR).

    *Specialiserede kunstig intelligens (AI)-systemer designet til at forstå de mål og resultater, der er impliceret af deres udvikleres indledende udkast, vil derefter forfine det udarbejdede softwaredesign og automatisere al kvalitetssikringstest.

    *Baseret på resultaterne vil AI'en derefter stille et væld af spørgsmål til udvikleren (sandsynligvis gennem verbal, Alexa-lignende kommunikation), for bedre at forstå og definere projektets mål og leverancer og diskutere, hvordan softwaren skal agere i forskellige scenarier og miljøer.

    *Baseret på udviklerens feedback vil AI'en gradvist lære hans eller hendes hensigt og generere koden for at afspejle projektets mål.

    *Dette frem og tilbage, menneske-maskine-samarbejde vil gentage version efter version af softwaren, indtil en færdig og salgbar version er klar til intern implementering eller til salg til offentligheden.

    *Faktisk vil dette samarbejde fortsætte, efter at softwaren er udsat for brug i den virkelige verden. Efterhånden som simple fejl rapporteres, vil AI'en rette dem automatisk på en måde, der afspejler de oprindelige, ønskede mål, der er skitseret under softwareudviklingsprocessen. I mellemtiden vil mere alvorlige fejl kræve et menneske-AI-samarbejde for at løse problemet.

    Samlet set vil fremtidige softwareudviklere fokusere mindre på 'hvordan' og mere på 'hvad' og 'hvorfor.' De bliver mindre håndværkere og mere arkitekter. Programmering vil være en intellektuel øvelse, der vil kræve folk, der metodisk kan kommunikere hensigter og resultater på en måde, som en AI kan forstå og derefter autokode en færdig digital applikation eller platform.

    Kunstig intelligens drevet softwareudvikling

    I betragtning af afsnittet ovenfor er det klart, at vi føler, at AI vil spille en stadig mere central rolle inden for softwareudvikling, men dets vedtagelse er ikke udelukkende med det formål at gøre softwareudviklere mere effektive, der er også forretningskræfter bag denne tendens.

    Konkurrencen mellem softwareudviklingsvirksomheder bliver hårdere for hvert år, der går. Nogle virksomheder konkurrerer ved at købe deres konkurrenter ud. Andre konkurrerer på softwaredifferentiering. Udfordringen med sidstnævnte strategi er, at den ikke er let at forsvare. Enhver softwarefunktion eller forbedring, som en virksomhed tilbyder sine kunder, kan dens konkurrenter kopiere med relativ lethed.

    Af denne grund er de dage forbi, hvor virksomheder frigiver ny software hvert til tredje år. I disse dage har virksomheder, der fokuserer på differentiering, et økonomisk incitament til at frigive ny software, softwarerettelser og softwarefunktioner på en stadig mere regelmæssig basis. Jo hurtigere virksomheder innoverer, jo mere fremmer de kundeloyalitet og øger omkostningerne ved at skifte til konkurrenter. Dette skift i retning af regelmæssig levering af trinvise softwareopdateringer er en trend kaldet "kontinuerlig levering".

    Desværre er kontinuerlig levering ikke let. Knap en fjerdedel af nutidens softwarevirksomheder kan udføre den frigivelsesplan, der kræves af denne tendens. Og det er derfor, der er så stor interesse for at bruge AI til at fremskynde tingene.

    Som skitseret tidligere vil kunstig intelligens i sidste ende spille en stadig mere samarbejdsrolle i softwareudkast og -udvikling. Men på kort sigt bruger virksomheder det til i stigende grad at automatisere kvalitetssikring (test) processer for software. Og andre virksomheder eksperimenterer med at bruge AI til at automatisere softwaredokumentation - processen med at spore frigivelsen af ​​nye funktioner og komponenter, og hvordan de blev produceret ned til kodeniveau.

    Alt i alt vil AI i stigende grad spille en central rolle i softwareudvikling. De softwarevirksomheder, der mestrer brugen tidligt, vil i sidste ende nyde eksponentiel vækst i forhold til deres konkurrenter. Men for at realisere disse AI-gevinster bliver industrien også nødt til at se fremskridt inden for hardware-siden af ​​tingene - det næste afsnit vil uddybe dette punkt.

    Software som en tjeneste

    Alle slags kreative fagfolk bruger Adobe-software, når de skaber digital kunst eller designarbejde. I næsten tre årtier købte du Adobes software som en cd og ejede dens brug for evigt, og købte fremtidige opgraderede versioner efter behov. Men i midten af ​​2010'erne ændrede Adobe sin strategi.

    I stedet for at købe software-cd'er med irriterende komplicerede ejerskabsnøgler, skulle Adobe-kunder nu betale et månedligt abonnement for retten til at downloade Adobe-software på deres computerenheder, software, der kun ville fungere sammen med en almindelig til konstant internetforbindelse til Adobes servere .

    Med denne ændring ejede kunder ikke længere Adobe-software; de lejede det efter behov. Til gengæld behøver kunderne ikke længere konstant at købe opgraderede versioner af Adobe-software; så længe de abonnerer på Adobe-tjenesten, vil de altid have de seneste opdateringer uploadet til deres enhed umiddelbart efter udgivelsen (ofte flere gange om året).

    Dette er kun et eksempel på en af ​​de største softwaretrends, vi har set i de seneste år: hvordan software går over i drift i stedet for et selvstændigt produkt. Og ikke kun mindre, specialiseret software, men hele operativsystemer, som vi har set med udgivelsen af ​​Microsofts Windows 10-opdatering. Med andre ord software as a service (SaaS).

    Selvlærende software (SLS)

    Med udgangspunkt i brancheskiftet i retning af SaaS opstår en ny trend inden for softwareområdet, der kombinerer både SaaS og AI. Førende virksomheder fra Amazon, Google, Microsoft og IBM er begyndt at tilbyde deres AI-infrastruktur som en service til deres kunder.

    Med andre ord er AI og maskinlæring ikke længere kun tilgængelig for softwaregiganter, nu kan enhver virksomhed og udvikler få adgang til online AI-ressourcer til at bygge selvlærende software (SLS).

    Vi vil diskutere potentialet ved AI i detaljer i vores Future of Artificial Intelligence-serie, men i forbindelse med dette kapitel vil vi sige, at nuværende og fremtidige softwareudviklere vil skabe SLS for at skabe nye systemer, der forudser opgaver, der skal udføres og blot automatisk udfyld dem for dig.

    Det betyder, at en fremtidig AI-assistent vil lære din arbejdsstil på kontoret og begynde at udføre grundlæggende opgaver for dig, som at formatere dokumenter, lige som du kan lide dem, udarbejde dine e-mails i dit tonefald, administrere din arbejdskalender og meget mere.

    Derhjemme kan det betyde, at et SLS-system administrerer dit fremtidige smarte hjem, herunder opgaver som at forvarme dit hjem, før du ankommer, eller holde styr på dagligvarer, du skal købe.

    I 2020'erne og ind i 2030'erne vil disse SLS-systemer spille en afgørende rolle på virksomheds-, regerings-, militær- og forbrugermarkederne og gradvist hjælpe dem med at forbedre deres produktivitet og reducere affald af enhver art. Vi vil dække SLS-teknologi mere detaljeret senere i denne serie.

    Der er dog en hake ved alt dette.

    Den eneste måde, SaaS- og SLS-modellerne fungerer på, er, hvis internettet (eller infrastrukturen bag det) fortsætter med at vokse og forbedres, sammen med computer- og lagerhardwaren, der kører 'skyen', som disse SaaS/SLS-systemer opererer på. Heldigvis ser de tendenser, vi følger, lovende ud.

    For at lære om, hvordan internettet vil vokse og udvikle sig, kan du læse vores Internettets fremtid serie. For at lære mere om, hvordan computerhardware vil udvikle sig, så læs videre ved at bruge linkene nedenfor!

    Future of Computers-serien

    Nye brugergrænseflader til at omdefinere menneskeheden: Fremtiden for computere P1

    Den digitale lagringsrevolution: Future of Computers P3

    En falmende Moores lov til at sætte gang i grundlæggende gentænkning af mikrochips: Future of Computers P4

    Cloud computing bliver decentraliseret: Future of Computers P5

    Hvorfor konkurrerer lande om at bygge de største supercomputere? Computernes fremtid P6

    Hvordan Quantum-computere vil ændre verden: Future of Computers P7    

    Næste planlagte opdatering af denne prognose

    2023-02-08

    Forecast referencer

    Følgende populære og institutionelle links blev refereret til denne prognose:

    ProPublica

    Følgende Quantumrun-links blev refereret til denne prognose: