Future of software development: Future of computers P2

BILDKREDIT: Quantumrun

Future of software development: Future of computers P2

    1969 blev Neil Armstrong och Buzz Aldrin internationella hjältar efter att ha varit de första människorna att trampa sin fot på månen. Men medan dessa astronauter var hjältarna på kameran, finns det tusentals obesjungna hjältar som utan deras inblandning, den första bemannade månlandningen inte skulle ha varit omöjlig. Några av dessa hjältar var mjukvaruutvecklarna som kodade flygningen. Varför?

    Tja, datorerna som fanns på den tiden var mycket enklare än de är idag. Faktum är att den genomsnittliga personens utslitna smartphone är flera storleksordningar mer kraftfull än något annat ombord på rymdfarkosten Apollo 11 (och hela 1960-talets NASA för den delen). Dessutom kodades datorer på den tiden av specialiserade mjukvaruutvecklare som programmerade programvara i de mest grundläggande maskinspråken: AGC Assembly Code eller helt enkelt 1:or och 0:or.

    För sammanhanget, en av dessa obesjungna hjältar, Apollo rymdprogrammets chef för Software Engineering Division, Margaret Hamilton, och hennes team var tvungna att skriva ett berg av kod (bilden nedan) som med hjälp av dagens programmeringsspråk kunde ha skrivits med en bråkdel av ansträngningen.

    (Bilden ovan är Margaret Hamilton som står bredvid en bunt papper som innehåller programvaran Apollo 11.)

    Och till skillnad från nuförtiden där mjukvaruutvecklare kodar för cirka 80-90 procent av möjliga scenarier, för Apollo-uppdragen, var deras kod tvungen att stå för allt. För att sätta detta i perspektiv sa Margaret själv:

    "På grund av ett fel i checklistmanualen placerades rendezvous-radarbrytaren i fel läge. Detta gjorde att den skickade felaktiga signaler till datorn. Resultatet blev att datorn ombads utföra alla sina normala funktioner för landning. samtidigt som den tog emot en extra mängd falsk data som använde 15 % av sin tid. Datorn (eller snarare programvaran i den) var smart nog att känna igen att den ombads utföra fler uppgifter än den borde utföra. Den skickade sedan ut ett larm, vilket betydde för astronauten, jag är överbelastad med fler uppgifter än jag borde göra just nu, och jag kommer bara att behålla de viktigare uppgifterna, dvs de som behövs för att landa ... Egentligen , var datorn programmerad att göra mer än att känna igen feltillstånd. En komplett uppsättning återställningsprogram inkorporerades i programvaran. Programvarans åtgärd, i det här fallet, var att eliminera lägre prioriterade uppgifter och återupprätta de viktigare ... Om inte datorn hade gjort detupptäckte detta problem och vidtog återhämtningsåtgärder, jag tvivlar på om Apollo 11 skulle ha varit den framgångsrika månlandningen den var."

    — Margaret Hamilton, chef för Apollo Flight Computer Programming MIT Draper Laboratory, Cambridge, Massachusetts, "Computer Got Loaded", brev till Datatisering, Mars 1, 1971

    Som antytts tidigare har mjukvaruutvecklingen utvecklats sedan de tidiga Apollo-dagarna. Nya programmeringsspråk på hög nivå ersatte den tråkiga processen med kodning med 1:or och 0:or till kodning med ord och symboler. Funktioner som att generera ett slumptal som tidigare krävde dagars kodning ersätts nu av att skriva en enda kommandorad.

    Med andra ord har programvarukodning blivit allt mer automatiserad, intuitiv och mänsklig för varje decennium som går. Dessa egenskaper kommer bara att fortsätta in i framtiden och vägleda utvecklingen av mjukvaruutveckling på sätt som kommer att ha en djupgående inverkan på våra dagliga liv. Detta är vad detta kapitel av Datorernas framtid serien kommer att utforska.

    Mjukvaruutveckling för massorna

    Processen att ersätta behovet av att koda 1:or och 0:or (maskinspråk) med ord och symboler (mänskligt språk) hänvisas till som processen att lägga till lager av abstraktioner. Dessa abstraktioner har kommit i form av nya programmeringsspråk som automatiserar komplexa eller vanliga funktioner för det område de designats för. Men under det tidiga 2000-talet uppstod nya företag (som Caspio, QuickBase och Mendi) som började erbjuda vad som kallas no-code eller low-code plattformar.

    Dessa är användarvänliga, online-dashboards som gör det möjligt för icke-tekniska proffs att skapa anpassade appar som är skräddarsydda för deras verksamhets behov genom att knäppa ihop visuella kodblock (symboler/grafik). Med andra ord, istället för att hugga ner ett träd och göra om det till ett omklädningsskåp, bygger du det med förmodade delar från Ikea.

    Även om användningen av den här tjänsten fortfarande kräver en viss nivå av datorvana, behöver du inte längre en datavetenskaplig examen, använd den. Som ett resultat möjliggör denna form av abstraktion uppkomsten av miljontals nya "mjukvaruutvecklare" i företagsvärlden, och det gör det möjligt för många barn att lära sig koda i en tidigare ålder.

    Omdefiniera vad det innebär att vara mjukvaruutvecklare

    Det fanns en tid då ett landskap eller en persons ansikte bara kunde fångas på en duk. En målare skulle behöva studera och praktisera i flera år som lärling, lära sig hantverket att måla – hur man blandar färger, vilka verktyg som är bäst, de rätta teknikerna för att utföra en specifik bild. Kostnaden för handeln och den mångåriga erfarenhet som behövdes för att utföra den väl gjorde också att målarna var få och långt emellan.

    Sedan uppfanns kameran. Och med ett knapptryck fångades landskap och porträtt på en sekund som annars skulle ta dagar till veckor att måla. Och när kameror förbättrades, blev billigare och blev rikliga till en punkt där de nu ingår i även den mest grundläggande smartphonen, blev det att fånga världen omkring oss en vanlig och avslappnad aktivitet som alla nu deltar i.

    Allt eftersom abstraktioner framskrider och nya mjukvaruspråk automatiserar allt mer rutinmässigt utvecklingsarbete, vad kommer det att innebära att vara mjukvaruutvecklare om 10 till 20 år? För att svara på denna fråga, låt oss gå igenom hur framtida mjukvaruutvecklare sannolikt kommer att gå tillväga för att bygga morgondagens applikationer:

    *För det första kommer allt standardiserat, repetitivt kodningsarbete att försvinna. I dess ställe kommer ett stort bibliotek av fördefinierade komponentbeteenden, användargränssnitt och dataflödesmanipulationer (Ikea-delar).

    *Som idag kommer arbetsgivare eller entreprenörer att definiera specifika mål och resultat för programvaruutvecklare att utföra genom specialiserade programvaruapplikationer eller plattformar.

    *Dessa utvecklare kommer sedan att kartlägga sin exekveringsstrategi och börja prototypa tidiga utkast av sin programvara genom att komma åt deras komponentbibliotek och använda visuella gränssnitt för att länka dem samman – visuella gränssnitt som nås via augmented reality (AR) eller virtuell verklighet (VR).

    *Specialiserade artificiell intelligens (AI)-system som är utformade för att förstå målen och resultat som impliceras av deras utvecklares initiala utkast, kommer sedan att förfina den utarbetade mjukvarudesignen och automatisera all kvalitetssäkringstestning.

    *Baserat på resultaten kommer AI:n sedan att ställa en mängd frågor till utvecklaren (troligen genom verbal, Alexa-liknande kommunikation), i syfte att bättre förstå och definiera projektets mål och resultat och diskutera hur programvaran ska agera i olika scenarier och miljöer.

    *Baserat på utvecklarens feedback kommer AI:n gradvis att lära sig hans eller hennes avsikt och generera koden för att återspegla projektets mål.

    *Detta fram och tillbaka, människa-maskin-samarbete kommer att upprepa version efter version av programvaran tills en färdig och säljbar version är redo för intern implementering eller för försäljning till allmänheten.

    *Faktum är att detta samarbete kommer att fortsätta efter att programvaran har exponerats för verklig användning. När enkla buggar rapporteras kommer AI:n att fixa dem automatiskt på ett sätt som återspeglar de ursprungliga, önskade målen som beskrivs under mjukvaruutvecklingsprocessen. Samtidigt kommer allvarligare buggar att kräva ett samarbete mellan människa och AI för att lösa problemet.

    Sammantaget kommer framtida mjukvaruutvecklare att fokusera mindre på "hur" och mer på "vad" och "varför". De blir mindre hantverkare och mer arkitekter. Programmering kommer att vara en intellektuell övning som kommer att kräva människor som metodiskt kan kommunicera avsikt och resultat på ett sätt som en AI kan förstå och sedan autokoda en färdig digital applikation eller plattform.

    Artificiell intelligens driven mjukvaruutveckling

    Med tanke på avsnittet ovan är det tydligt att vi känner att AI kommer att spela en allt mer central roll inom området mjukvaruutveckling, men dess antagande är inte enbart i syfte att göra mjukvaruutvecklare mer effektiva, det finns affärskrafter bakom denna trend också.

    Konkurrensen mellan mjukvaruutvecklingsföretag blir hårdare för varje år som går. Vissa företag konkurrerar genom att köpa ut sina konkurrenter. Andra tävlar på mjukvarudifferentiering. Utmaningen med den senare strategin är att den inte är lätt att försvara. Alla mjukvarufunktioner eller förbättringar som ett företag erbjuder sina kunder kan dess konkurrenter kopiera relativt lätt.

    Av denna anledning är de dagar borta då företag släpper ny programvara vart till vart tredje år. Nuförtiden har företag som fokuserar på differentiering ett ekonomiskt incitament att släppa ny mjukvara, programfixar och mjukvarufunktioner på en alltmer regelbunden basis. Ju snabbare företag förnyar sig, desto mer driver de kundlojalitet och ökar kostnaderna för att byta till konkurrenter. Denna förändring mot regelbunden leverans av inkrementella programuppdateringar är en trend som kallas "kontinuerlig leverans."

    Tyvärr är kontinuerlig leverans inte lätt. Knappt en fjärdedel av dagens mjukvaruföretag kan genomföra det releaseschema som krävs för denna trend. Och det är därför det finns så stort intresse för att använda AI för att påskynda saker.

    Som beskrivits tidigare kommer AI så småningom att spela en alltmer samarbetsroll i utarbetande och utveckling av programvara. Men på kort sikt använder företag det för att alltmer automatisera kvalitetssäkrings- (testnings)processer för mjukvara. Och andra företag experimenterar med att använda AI för att automatisera mjukvarudokumentation – processen att spåra lanseringen av nya funktioner och komponenter och hur de producerades ner till kodnivån.

    Sammantaget kommer AI allt mer att spela en central roll i mjukvaruutveckling. De mjukvaruföretag som bemästrar dess användning tidigt kommer i slutändan att njuta av exponentiell tillväxt jämfört med sina konkurrenter. Men för att realisera dessa AI-vinster kommer branschen också att behöva se framsteg inom hårdvarusidan av saker och ting - nästa avsnitt kommer att utvecklas på denna punkt.

    Mjukvara som en service

    Alla slags kreativa proffs använder Adobes programvara när de skapar digital konst eller designarbete. I nästan tre decennier köpte du Adobes programvara som en CD och ägde dess användning i evighet och köpte framtida uppgraderade versioner efter behov. Men i mitten av 2010-talet ändrade Adobe sin strategi.

    Istället för att köpa programvaru-cd-skivor med irriterande utarbetade ägarnycklar skulle Adobe-kunder nu behöva betala en månadsprenumeration för rätten att ladda ner Adobe-programvara på sina datorenheter, programvara som bara skulle fungera tillsammans med en vanlig till konstant internetanslutning till Adobes servrar .

    Med denna förändring ägde kunderna inte längre Adobe-programvaran; de hyrde den vid behov. I gengäld behöver kunderna inte längre ständigt köpa uppgraderade versioner av Adobes programvara; så länge de prenumererar på Adobe-tjänsten skulle de alltid ha de senaste uppdateringarna uppladdade till sin enhet direkt efter lanseringen (ofta flera gånger om året).

    Detta är bara ett exempel på en av de största mjukvarutrenderna vi har sett de senaste åren: hur mjukvara övergår till tjänst istället för en fristående produkt. Och inte bara mindre, specialiserad programvara, utan hela operativsystem, som vi har sett med lanseringen av Microsofts Windows 10-uppdatering. Med andra ord mjukvara som en tjänst (SaaS).

    Självlärande programvara (SLS)

    Bygger på branschskiftet mot SaaS, en ny trend inom mjukvaruområdet växer fram som kombinerar både SaaS och AI. Ledande företag från Amazon, Google, Microsoft och IBM har börjat erbjuda sin AI-infrastruktur som en tjänst till sina kunder.

    Med andra ord, inte längre är AI och maskininlärning endast tillgängligt för mjukvarujättar, nu kan alla företag och utvecklare få tillgång till AI-resurser online för att bygga självlärande programvara (SLS).

    Vi kommer att diskutera potentialen för AI i detalj i vår Future of Artificial Intelligence-serie, men i samband med detta kapitel kommer vi att säga att nuvarande och framtida mjukvaruutvecklare kommer att skapa SLS för att skapa nya system som förutser uppgifter som behöver göras och fyll helt enkelt i dem automatiskt åt dig.

    Det betyder att en framtida AI-assistent kommer att lära sig din arbetsstil på kontoret och börja slutföra grundläggande uppgifter åt dig, som att formatera dokument precis som du vill ha dem, utarbeta dina e-postmeddelanden i ditt tonfall, hantera din arbetskalender och mer.

    Hemma kan detta innebära att ett SLS-system hanterar ditt framtida smarta hem, inklusive uppgifter som att förvärma ditt hem innan du anländer eller hålla reda på matvaror du behöver köpa.

    Till 2020-talet och in på 2030-talet kommer dessa SLS-system att spela en viktig roll på företags-, regerings-, militär- och konsumentmarknaderna, och gradvis hjälpa var och en att förbättra sin produktivitet och minska avfall av alla slag. Vi kommer att täcka SLS-teknik mer i detalj senare i den här serien.

    Det finns dock en hake med allt detta.

    Det enda sättet som SaaS- och SLS-modellerna fungerar är om Internet (eller infrastrukturen bakom det) fortsätter att växa och förbättras, tillsammans med dator- och lagringshårdvaran som driver "molnet" som dessa SaaS/SLS-system fungerar på. Tack och lov ser de trender vi följer lovande ut.

    För att lära dig om hur Internet kommer att växa och utvecklas, läs vår Internets framtid serier. För att lära dig mer om hur hårdvaran kommer att utvecklas, läs sedan vidare med hjälp av länkarna nedan!

    Future of Computers-serien

    Nya användargränssnitt för att omdefiniera mänskligheten: Future of computers P1

    Den digitala lagringsrevolutionen: Future of Computers P3

    En bleknande Moores lag för att väcka grundläggande omtanke om mikrochips: Future of Computers P4

    Cloud computing blir decentraliserad: Future of Computers P5

    Varför tävlar länder om att bygga de största superdatorerna? Datorernas framtid P6

    Hur Quantum-datorer kommer att förändra världen: Future of Computers P7    

    Nästa planerade uppdatering för denna prognos

    2023-02-08

    Prognosreferenser

    Följande populära och institutionella länkar refererades för denna prognos:

    ProPublica

    Följande Quantumrun-länkar refererades för denna prognos: