Toekomst van softwareontwikkeling: toekomst van computers P2

BEELDKREDIET: Kwantumrun

Toekomst van softwareontwikkeling: toekomst van computers P2

    In 1969 werden Neil Armstrong en Buzz Aldrin internationale helden nadat ze de eerste mensen waren die voet op de maan zetten. Maar terwijl deze astronauten de helden op de camera waren, zijn er duizenden onbezongen helden die zonder hun betrokkenheid die eerste bemande maanlanding niet onmogelijk zou zijn geweest. Een paar van deze helden waren de softwareontwikkelaars die de vlucht codeerden. Waarom?

    Welnu, de computers die toen bestonden, waren veel eenvoudiger dan nu. In feite is de versleten smartphone van de gemiddelde persoon verschillende orden van grootte krachtiger dan alles aan boord van het Apollo 11-ruimtevaartuig (en de hele NASA uit de jaren 1960 trouwens). Bovendien werden computers in die tijd gecodeerd door gespecialiseerde softwareontwikkelaars die software programmeerden in de meest elementaire machinetalen: AGC Assembly Code of simpelweg 1s en 0s.

    Voor de context: een van deze onbezongen helden, de directeur van de afdeling Software Engineering van het Apollo-ruimteprogramma, Margaret Hamilton, en haar team moest een berg code schrijven (hieronder afgebeeld) die met de huidige programmeertalen geschreven had kunnen worden met een fractie van de moeite.

    (Hierboven afgebeeld is Margaret Hamilton die naast een stapel papier staat met de Apollo 11-software.)

    En in tegenstelling tot tegenwoordig, waar softwareontwikkelaars coderen voor ongeveer 80-90 procent van de mogelijke scenario's, moest hun code voor de Apollo-missies alles verantwoorden. Om dit in perspectief te plaatsen, zei Margaret zelf:

    "Door een fout in de checklisthandleiding was de rendez-vous-radarschakelaar in de verkeerde positie geplaatst. Hierdoor werden foutieve signalen naar de computer gestuurd. Het resultaat was dat de computer werd gevraagd om al zijn normale functies uit te voeren voor de landing terwijl hij een extra lading valse gegevens ontving die 15% van zijn tijd opslokten. De computer (of liever de software erin) was slim genoeg om te herkennen dat er werd gevraagd om meer taken uit te voeren dan het zou moeten uitvoeren. alarm af, wat voor de astronaut betekende, dat ik overladen ben met meer taken dan ik op dit moment zou moeten doen, en ik ga alleen de belangrijkere taken houden, dat wil zeggen, degenen die nodig zijn voor de landing ... Eigenlijk , was de computer geprogrammeerd om meer te doen dan alleen foutcondities te herkennen. Er was een complete set herstelprogramma's in de software opgenomen. In dit geval was de actie van de software het elimineren van taken met een lagere prioriteit en het herstellen van de belangrijker taken... Als de computer dat niet had gedaanherkende dit probleem en ondernam herstelmaatregelen, ik betwijfel of Apollo 11 de succesvolle maanlanding zou zijn geweest die het was."

    — Margaret Hamilton, directeur van Apollo Flight Computer Programming MIT Draper Laboratory, Cambridge, Massachusetts, "Computer Got Loaded", Brief aan Datamatie, Maart 1, 1971

    Zoals eerder gesuggereerd, is de softwareontwikkeling geëvolueerd sinds die vroege Apollo-dagen. Nieuwe programmeertalen op hoog niveau hebben het moeizame proces van coderen met enen en nullen vervangen door coderen met woorden en symbolen. Functies zoals het genereren van een willekeurig getal waarvoor dagenlang coderen nodig was, worden nu vervangen door het schrijven van een enkele opdrachtregel.

    Met andere woorden, het coderen van software is met de jaren steeds meer geautomatiseerd, intuïtief en menselijk geworden. Deze kwaliteiten zullen alleen in de toekomst blijven bestaan ​​en de evolutie van softwareontwikkeling begeleiden op manieren die een diepgaande impact zullen hebben op ons dagelijks leven. Dit is wat dit hoofdstuk van de Toekomst van computers serie zal onderzoeken.

    Softwareontwikkeling voor de massa

    Het proces van het vervangen van de noodzaak om enen en nullen (machinetaal) te coderen door woorden en symbolen (menselijke taal) wordt het proces van het toevoegen van abstractielagen genoemd. Deze abstracties zijn gekomen in de vorm van nieuwe programmeertalen die complexe of veelvoorkomende functies automatiseren voor het veld waarvoor ze zijn ontworpen. Maar tijdens de vroege jaren 1 kwamen er nieuwe bedrijven op (zoals Caspio, QuickBase en Mendi) die begonnen met het aanbieden van zogenaamde no-code of low-code platforms.

    Dit zijn gebruiksvriendelijke, online dashboards waarmee niet-technische professionals apps op maat kunnen maken die zijn afgestemd op de behoeften van hun bedrijf door visuele codeblokken (symbolen/afbeeldingen) aan elkaar te klikken. Met andere woorden, in plaats van een boom om te hakken en er een dressingkast van te maken, bouw je hem met voorgevormde onderdelen van Ikea.

    Hoewel het gebruik van deze service nog steeds een bepaald niveau van computerkennis vereist, hebt u niet langer een informatica-diploma nodig, maar gebruik het. Als gevolg hiervan maakt deze vorm van abstractie de opkomst mogelijk van miljoenen nieuwe 'softwareontwikkelaars' in de bedrijfswereld, en stelt het veel kinderen in staat om op jongere leeftijd te leren coderen.

    Opnieuw definiëren wat het betekent om een ​​softwareontwikkelaar te zijn

    Er was een tijd dat een landschap of het gezicht van een persoon alleen op een doek kon worden vastgelegd. Een schilder zou jarenlang als leerling moeten studeren en oefenen om het ambacht van schilderen te leren - hoe kleuren te mengen, welke gereedschappen het beste zijn, de juiste technieken om een ​​specifiek beeld uit te voeren. De kosten van het vak en de vele jaren ervaring die nodig waren om het goed uit te voeren, zorgden er ook voor dat er maar weinig schilders waren.

    Toen werd de camera uitgevonden. En met een druk op de knop werden landschappen en portretten in een oogwenk vastgelegd, wat anders dagen tot weken zou duren om te schilderen. En naarmate camera's verbeterden, goedkoper werden en zo talrijk werden dat ze nu zijn opgenomen in zelfs de meest elementaire smartphone, werd het vastleggen van de wereld om ons heen een gewone en informele activiteit waar iedereen nu aan deelneemt.

    Naarmate de abstracties vorderen en nieuwe softwaretalen steeds meer routinematig softwareontwikkelingswerk automatiseren, wat betekent het dan om over 10 tot 20 jaar een softwareontwikkelaar te zijn? Om deze vraag te beantwoorden, laten we eens kijken hoe toekomstige softwareontwikkelaars waarschijnlijk de applicaties van morgen zullen bouwen:

    *Ten eerste zal al het gestandaardiseerde, repetitieve codeerwerk verdwijnen. In plaats daarvan komt er een enorme bibliotheek met vooraf gedefinieerde gedragingen van componenten, gebruikersinterfaces en gegevensstroommanipulaties (Ikea-onderdelen).

    *Net als vandaag zullen werkgevers of ondernemers specifieke doelen en deliverables definiëren voor softwareontwikkelaars om uit te voeren via gespecialiseerde softwareapplicaties of -platforms.

    *Deze ontwikkelaars zullen vervolgens hun uitvoeringsstrategie in kaart brengen en beginnen met het prototypen van vroege concepten van hun software door toegang te krijgen tot hun componentenbibliotheek en visuele interfaces te gebruiken om ze aan elkaar te koppelen - visuele interfaces die toegankelijk zijn via augmented reality (AR) of virtual reality (VR).

    *Gespecialiseerde kunstmatige-intelligentiesystemen (AI) die zijn ontworpen om inzicht te krijgen in de doelen en resultaten die worden geïmpliceerd door de eerste concepten van hun ontwikkelaar, zullen vervolgens het opgestelde softwareontwerp verfijnen en alle kwaliteitsborgingstesten automatiseren.

    *Op basis van de resultaten stelt de AI vervolgens een groot aantal vragen aan de ontwikkelaar (waarschijnlijk via verbale, Alexa-achtige communicatie), om de doelen en resultaten van het project beter te begrijpen en te definiëren en te bespreken hoe de software in verschillende scenario's moet handelen en omgevingen.

    *Op basis van de feedback van de ontwikkelaar zal de AI geleidelijk zijn of haar bedoeling leren kennen en de code genereren om de projectdoelen weer te geven.

    *Deze heen en weer samenwerking tussen mens en machine zal versie na versie van de software herhalen totdat een voltooide en verkoopbare versie klaar is voor interne implementatie of voor verkoop aan het publiek.

    *In feite zal deze samenwerking worden voortgezet nadat de software is blootgesteld aan gebruik in de echte wereld. Als er eenvoudige bugs worden gemeld, zal de AI deze automatisch oplossen op een manier die overeenkomt met de oorspronkelijke, gewenste doelen die tijdens het softwareontwikkelingsproces zijn geschetst. Ondertussen zullen meer ernstige bugs een samenwerking tussen mens en AI vereisen om het probleem op te lossen.

    Over het algemeen zullen toekomstige softwareontwikkelaars zich minder richten op het 'hoe' en meer op het 'wat' en 'waarom'. Ze zullen minder ambachtsman en meer architect zijn. Programmeren zal een intellectuele oefening zijn waarvoor mensen nodig zijn die de intentie en resultaten methodisch kunnen communiceren op een manier die een AI kan begrijpen en vervolgens een voltooide digitale applicatie of platform automatisch kan coderen.

    Door kunstmatige intelligentie gedreven softwareontwikkeling

    Gezien het bovenstaande gedeelte, is het duidelijk dat we denken dat AI een steeds centralere rol zal spelen op het gebied van softwareontwikkeling, maar de acceptatie ervan is niet alleen bedoeld om softwareontwikkelaars effectiever te maken, er zijn ook zakelijke krachten achter deze trend.

    De concurrentie tussen softwareontwikkelingsbedrijven wordt elk jaar heviger. Sommige bedrijven concurreren door hun concurrenten uit te kopen. Anderen concurreren op softwaredifferentiatie. De uitdaging bij de laatste strategie is dat deze niet gemakkelijk verdedigbaar is. Elke softwarefunctie of verbetering die een bedrijf zijn klanten aanbiedt, kunnen concurrenten relatief gemakkelijk kopiëren.

    Om deze reden zijn de dagen voorbij dat bedrijven elke één tot drie jaar nieuwe software uitbrengen. Tegenwoordig hebben bedrijven die zich richten op differentiatie een financiële prikkel om steeds vaker nieuwe software, softwarefixes en softwarefuncties uit te brengen. Hoe sneller bedrijven innoveren, hoe meer ze de loyaliteit van klanten stimuleren en de kosten van het overstappen naar concurrenten verhogen. Deze verschuiving naar de regelmatige levering van incrementele software-updates is een trend die 'continue levering' wordt genoemd.

    Helaas is continue levering niet eenvoudig. Amper een kwart van de huidige softwarebedrijven kan het releaseschema dat van deze trend wordt geëist, uitvoeren. En daarom is er zoveel interesse in het gebruik van AI om dingen te versnellen.

    Zoals eerder uiteengezet, zal AI uiteindelijk een steeds grotere rol gaan spelen bij het opstellen en ontwikkelen van software. Maar op korte termijn gebruiken bedrijven het om kwaliteitsborgings- (test)processen voor software steeds meer te automatiseren. En andere bedrijven experimenteren met het gebruik van AI om softwaredocumentatie te automatiseren - het proces van het volgen van de release van nieuwe functies en componenten en hoe ze tot op codeniveau zijn geproduceerd.

    Al met al zal AI steeds meer een centrale rol gaan spelen in softwareontwikkeling. Die softwarebedrijven die het gebruik ervan vroeg onder de knie krijgen, zullen uiteindelijk een exponentiële groei genieten ten opzichte van hun concurrenten. Maar om deze AI-winst te realiseren, zal de industrie ook vooruitgang moeten zien in de hardware-kant van de dingen - de volgende sectie zal op dit punt ingaan.

    Software als een service

    Allerlei creatieve professionals gebruiken Adobe-software bij het maken van digitale kunst of ontwerpwerk. Bijna drie decennia lang kocht u de software van Adobe als cd en bezat u het gebruik ervan voor altijd, en zo nodig toekomstige geüpgradede versies. Maar halverwege de jaren 2010 veranderde Adobe zijn strategie.

    In plaats van software-cd's te kopen met irritant uitgebreide eigendomssleutels, zouden Adobe-klanten nu een maandelijks abonnement moeten betalen voor het recht om Adobe-software op hun computerapparatuur te downloaden, software die alleen zou werken naast een normale tot constante internetverbinding met Adobe-servers .

    Met deze wijziging bezaten klanten niet langer Adobe-software; ze huurden het naar behoefte. In ruil daarvoor hoeven klanten niet langer voortdurend geüpgradede versies van Adobe-software aan te schaffen; zolang ze zich hadden geabonneerd op de Adobe-service, zouden ze altijd de nieuwste updates onmiddellijk na de release naar hun apparaat hebben geüpload (vaak meerdere keren per jaar).

    Dit is slechts één voorbeeld van een van de grootste softwaretrends die we de afgelopen jaren hebben gezien: hoe software overgaat in service in plaats van een op zichzelf staand product. En niet alleen kleinere, gespecialiseerde software, maar hele besturingssystemen, zoals we hebben gezien met de release van de Windows 10-update van Microsoft. Ofwel software as a service (SaaS).

    Zelflerende software (SLS)

    Voortbouwend op de verschuiving in de sector naar SaaS, ontstaat er een nieuwe trend in de softwareruimte die zowel SaaS als AI combineert. Toonaangevende bedrijven van Amazon, Google, Microsoft en IBM zijn begonnen hun AI-infrastructuur als een service aan hun klanten aan te bieden.

    Met andere woorden, AI en machine learning zijn niet langer alleen toegankelijk voor softwaregiganten, nu heeft elk bedrijf en elke ontwikkelaar toegang tot online AI-bronnen om zelflerende software (SLS) te bouwen.

    We zullen het potentieel van AI in detail bespreken in onze serie Future of Artificial Intelligence, maar voor de context van dit hoofdstuk zullen we zeggen dat huidige en toekomstige softwareontwikkelaars SLS zullen creëren om nieuwe systemen te creëren die anticiperen op taken die moeten worden uitgevoerd en vul ze gewoon automatisch voor u in.

    Dit betekent dat een toekomstige AI-assistent uw werkstijl op kantoor zal leren en basistaken voor u zal uitvoeren, zoals documenten opmaken zoals u ze wilt, uw e-mails opstellen in uw tone of voice, uw werkagenda beheren en meer.

    Thuis kan dit betekenen dat een SLS-systeem uw toekomstige slimme huis beheert, inclusief taken zoals het voorverwarmen van uw huis voordat u aankomt of het bijhouden van boodschappen die u moet kopen.

    Tegen de jaren 2020 en in de jaren 2030 zullen deze SLS-systemen een cruciale rol spelen in de bedrijfs-, overheids-, militaire en consumentenmarkten, waarbij ze elk geleidelijk hun productiviteit helpen verbeteren en allerlei soorten afval verminderen. We zullen later in deze serie uitgebreider ingaan op SLS-technologie.

    Er is echter een addertje onder het gras aan dit alles.

    De enige manier waarop de SaaS- en SLS-modellen werken, is als het internet (of de infrastructuur erachter) blijft groeien en verbeteren, naast de computer- en opslaghardware waarop de 'cloud' draait waarop deze SaaS/SLS-systemen werken. Gelukkig zien de trends die we volgen er veelbelovend uit.

    Om meer te weten te komen over hoe het internet zal groeien en evolueren, lees onze Toekomst van internet serie. Om meer te weten te komen over hoe computerhardware zich zal ontwikkelen, lees dan verder via de onderstaande links!

    Future of Computers-serie

    Opkomende gebruikersinterfaces om de mensheid opnieuw te definiëren: toekomst van computers P1

    De digitale opslagrevolutie: toekomst van computers P3

    Een vervagende wet van Moore om een ​​fundamentele heroverweging van microchips teweeg te brengen: Future of Computers P4

    Cloud computing wordt gedecentraliseerd: Future of Computers P5

    Waarom concurreren landen om de grootste supercomputers te bouwen? Toekomst van computers P6

    Hoe kwantumcomputers de wereld zullen veranderen: Future of Computers P7    

    Volgende geplande update voor deze prognose

    2023-02-08

    Prognose referenties

    Voor deze prognose werd verwezen naar de volgende populaire en institutionele links:

    ProPublica

    Voor deze voorspelling werd verwezen naar de volgende Quantumrun-links: