Prihodnost razvoja programske opreme: Prihodnost računalnikov P2

KREDIT ZA SLIKO: Quantumrun

Prihodnost razvoja programske opreme: Prihodnost računalnikov P2

    Leta 1969 sta Neil Armstrong in Buzz Aldrin postala mednarodna junaka, potem ko sta kot prva človeka stopila na Luno. Toda medtem ko so bili ti astronavti junaki pred kamero, je na tisoče neopevanih junakov, ki brez njihove vpletenosti ne bi bil nemogoč tisti prvi pristanek s posadko na Luni. Nekateri od teh junakov so bili razvijalci programske opreme, ki so kodirali let. Zakaj?

    No, računalniki, ki so obstajali v tistem času, so bili veliko enostavnejši kot danes. Pravzaprav je iztrošen pametni telefon povprečnega človeka za več velikosti zmogljivejši od vsega na krovu vesoljskega plovila Apollo 11 (in kar zadeva celotno NASA iz leta 1960). Poleg tega so računalnike v tistem času kodirali specializirani razvijalci programske opreme, ki so programirali programsko opremo v najbolj osnovnih strojnih jezikih: AGC Assembly Code ali preprosto 1s in 0s.

    Za kontekst, eden od teh neopevanih junakov, direktor oddelka za programsko inženirstvo vesoljskega programa Apollo, Margaret Hamilton, in njena ekipa je morala napisati goro kode (na sliki spodaj), ki bi jo z uporabo današnjih programskih jezikov lahko napisali z le delčkom truda.

    (Na zgornji sliki je Margaret Hamilton, ki stoji poleg kupa papirja s programsko opremo Apollo 11.)

    In za razliko od današnjih dni, ko razvijalci programske opreme kodirajo približno 80-90 odstotkov možnih scenarijev, je morala njihova koda za misije Apollo upoštevati vse. Da bi to postavila v perspektivo, je Margaret sama rekla:

    "Zaradi napake v priročniku za kontrolni seznam je bilo radarsko stikalo za srečanje postavljeno v napačen položaj. To je povzročilo pošiljanje napačnih signalov računalniku. Rezultat je bil, da je bil računalnik pozvan, naj izvede vse svoje običajne funkcije za pristanek medtem ko je prejel dodatno obremenitev lažnih podatkov, ki so porabili 15 % njegovega časa.Računalnik (oziroma programska oprema v njem) je bil dovolj pameten, da je prepoznal, da je od njega zahtevano, da izvede več nalog, kot bi jih moral. Nato je poslal oglasil se je alarm, kar je za astronavta pomenilo, da sem preobremenjen z več nalogami, kot bi jih moral v tem trenutku in bom obdržal samo pomembnejše naloge, torej tiste, ki so potrebne za pristanek ... Pravzaprav , je bil računalnik programiran za več kot samo prepoznavanje napak. V programsko opremo je bil vključen celoten nabor obnovitvenih programov. Programska oprema je v tem primeru odpravila naloge z nižjo prioriteto in ponovno vzpostavila pomembnejša ... Če računalnik ne biprepoznal to težavo in ukrepal za obnovo, dvomim, da bi bil Apollo 11 tako uspešen pristanek na Luni, kot je bil."

    — Margaret Hamilton, direktorica Apollo Flight Computer Programming MIT Draper Laboratory, Cambridge, Massachusetts, "Computer Got Loaded", pismo Datamation, Marec 1, 1971

    Kot je bilo že omenjeno, se je razvoj programske opreme razvijal od tistih prvih dni Apolla. Novi visokonivojski programski jeziki so zamenjali dolgočasen proces kodiranja z 1 in 0 s kodiranjem z besedami in simboli. Funkcije, kot je generiranje naključnega števila, ki so prej zahtevale več dni kodiranja, so zdaj nadomeščene s pisanjem ene same ukazne vrstice.

    Z drugimi besedami, kodiranje programske opreme je z vsakim desetletjem postalo vse bolj avtomatizirano, intuitivno in človeško. Te lastnosti se bodo nadaljevale le v prihodnosti in vodile razvoj razvoja programske opreme na načine, ki bodo močno vplivali na naše vsakodnevno življenje. O tem govori to poglavje Prihodnost računalnikov serija bo raziskovala.

    Razvoj programske opreme za množice

    Postopek zamenjave potrebe po kodiranju 1 in 0 (strojni jezik) z besedami in simboli (človeški jezik) se imenuje postopek dodajanja plasti abstrakcij. Te abstrakcije so prišle v obliki novih programskih jezikov, ki avtomatizirajo kompleksne ali običajne funkcije za področje, za katerega so bili zasnovani. Toda v začetku leta 2000 so se pojavila nova podjetja (kot so Caspio, QuickBase in Mendi), ki so začela ponujati tako imenovane platforme brez kode ali platforme z nizko kodo.

    To so uporabniku prijazne spletne nadzorne plošče, ki netehničnim strokovnjakom omogočajo ustvarjanje aplikacij po meri, prilagojenih potrebam njihovega podjetja, tako da združijo vizualne bloke kode (simboli/grafike). Z drugimi besedami, namesto da posekate drevo in ga oblikujete v garderobno omaro, ga zgradite z vnaprej izdelanimi deli iz Ikee.

    Čeprav uporaba te storitve še vedno zahteva določeno raven računalniškega znanja, ne potrebujete več diplome iz računalništva, ampak jo uporabite. Posledično ta oblika abstrakcije omogoča vzpon milijonov novih "razvijalcev programske opreme" v podjetniškem svetu in mnogim otrokom omogoča, da se naučijo kodirati v zgodnejši starosti.

    Ponovno definiranje, kaj pomeni biti razvijalec programske opreme

    Bili so časi, ko je bilo pokrajino ali človekov obraz mogoče ujeti le na platno. Slikar bi se moral kot vajenec leta učiti in vaditi ter se učiti obrti slikanja – kako mešati barve, katera orodja so najboljša, pravilne tehnike za izvedbo določene vizuale. Stroški obrti in dolgoletne izkušnje, potrebne za dobro opravljanje, so prav tako pomenili, da je bilo slikarjev le malo.

    Potem je bil izumljen fotoaparat. In s klikom na gumb so bile pokrajine in portreti zajeti v sekundi, ki bi sicer trajali od dni do tednov za slikanje. In ko so se kamere izboljšale, postale cenejše in jih je postalo tako veliko, da so zdaj vključene tudi v najosnovnejše pametne telefone, je zajemanje sveta okoli nas postalo običajna in priložnostna dejavnost, ki se je zdaj udeležujejo vsi.

    Ker abstrakcije napredujejo in novi jeziki programske opreme avtomatizirajo vse bolj rutinsko delo pri razvoju programske opreme, kaj bo pomenilo biti razvijalec programske opreme čez 10 do 20 let? Da odgovorimo na to vprašanje, si poglejmo, kako se bodo bodoči razvijalci programske opreme verjetno lotili gradnje jutrišnjih aplikacij:

    *Prvič, vse standardizirano, ponavljajoče se kodiranje bo izginilo. Na njegovem mestu bo obsežna knjižnica vnaprej določenih vedenj komponent, uporabniških vmesnikov in manipulacij podatkovnega toka (deli Ikea).

    *Tako kot danes bodo delodajalci ali podjetniki določili posebne cilje in rezultate, ki jih bodo razvijalci programske opreme izvedli prek specializiranih programskih aplikacij ali platform.

    *Ti razvijalci bodo nato začrtali svojo strategijo izvajanja in začeli izdelovati prototipe zgodnjih osnutkov svoje programske opreme z dostopom do svoje knjižnice komponent in uporabo vizualnih vmesnikov, da jih povežejo skupaj – vizualnih vmesnikov, do katerih lahko dostopate prek razširjene resničnosti (AR) ali navidezne resničnosti (VR).

    *Specializirani sistemi umetne inteligence (AI), zasnovani za razumevanje ciljev in rezultatov, ki jih predvidevajo začetni osnutki razvijalca, bodo nato izboljšali osnutek zasnove programske opreme in avtomatizirali vsa testiranja zagotavljanja kakovosti.

    *Na podlagi rezultatov bo umetna inteligenca nato postavila množico vprašanj razvijalcu (verjetno z verbalno komunikacijo, podobno Alexi), da bi bolje razumela in opredelila cilje in rezultate projekta ter razpravljala o tem, kako naj programska oprema deluje v različnih scenarijih. in okolja.

    *Na podlagi povratnih informacij razvijalca se bo AI postopoma naučil njegove namere in ustvaril kodo, ki bo odražala cilje projekta.

    *To sodelovanje med človekom in strojem bo ponavljalo različico za različico programske opreme, dokler končna in tržna različica ne bo pripravljena za interno izvedbo ali za prodajo javnosti.

    * Pravzaprav se bo to sodelovanje nadaljevalo tudi po tem, ko bo programska oprema izpostavljena uporabi v resničnem svetu. Ko so preproste napake sporočene, jih bo AI samodejno popravil na način, ki odraža prvotne, želene cilje, začrtane med postopkom razvoja programske opreme. Medtem bodo resnejše napake zahtevale sodelovanje človeka in umetne inteligence za rešitev težave.

    Na splošno se bodo prihodnji razvijalci programske opreme manj osredotočali na "kako" in bolj na "kaj" in "zakaj". Manj bodo obrtniki in bolj arhitekti. Programiranje bo intelektualna vaja, ki bo zahtevala ljudi, ki bodo lahko metodično sporočali namere in rezultate na način, ki ga lahko razume AI, in nato samodejno kodirali dokončano digitalno aplikacijo ali platformo.

    Razvoj programske opreme, ki ga poganja umetna inteligenca

    Glede na zgornji razdelek je jasno, da menimo, da bo umetna inteligenca igrala vse bolj osrednjo vlogo na področju razvoja programske opreme, vendar njeno sprejetje ni zgolj za namen povečanja učinkovitosti razvijalcev programske opreme, za tem trendom so tudi poslovne sile.

    Konkurenca med podjetji za razvoj programske opreme je z vsakim letom hujša. Nekatera podjetja tekmujejo tako, da odkupujejo svoje konkurente. Drugi tekmujejo glede diferenciacije programske opreme. Izziv slednje strategije je, da je ni zlahka braniti. Vsako funkcijo programske opreme ali izboljšavo, ki jo eno podjetje ponudi svojim strankam, lahko njegovi konkurenti relativno enostavno kopirajo.

    Zaradi tega so minili dnevi, ko so podjetja vsako leto do tri leta izdala novo programsko opremo. Dandanes imajo podjetja, ki se osredotočajo na diferenciacijo, finančno spodbudo, da vse bolj redno izdajajo novo programsko opremo, popravke programske opreme in funkcije programske opreme. Hitreje kot podjetja uvajajo inovacije, bolj spodbujajo zvestobo strank in povečujejo stroške prehoda h konkurentom. Ta premik k redni dostavi postopnih posodobitev programske opreme je trend, imenovan »neprekinjena dobava«.

    Na žalost neprekinjena dostava ni enostavna. Komaj četrtina današnjih podjetij, ki se ukvarjajo s programsko opremo, lahko izvede časovni razpored izdaj, ki ga zahteva ta trend. In zato je toliko zanimanja za uporabo AI za pospešitev stvari.

    Kot je bilo že omenjeno, bo AI sčasoma igral vse bolj sodelovalno vlogo pri pripravi in ​​razvoju programske opreme. Toda kratkoročno ga podjetja uporabljajo za vse večjo avtomatizacijo procesov zagotavljanja (testiranja) kakovosti programske opreme. Druga podjetja pa eksperimentirajo z uporabo umetne inteligence za avtomatizacijo dokumentacije programske opreme – proces sledenja izdaji novih funkcij in komponent ter kako so bile proizvedene vse do ravni kode.

    Na splošno bo AI vse bolj igral osrednjo vlogo pri razvoju programske opreme. Tista podjetja za programsko opremo, ki zgodaj obvladajo njeno uporabo, bodo na koncu uživala eksponentno rast v primerjavi s svojimi konkurenti. Toda za uresničitev teh pridobitev umetne inteligence bo morala industrija videti tudi napredek na strani strojne opreme – naslednji razdelek bo podrobneje obravnaval to točko.

    Programska oprema kot storitev

    Vse vrste ustvarjalnih strokovnjakov uporabljajo programsko opremo Adobe pri ustvarjanju digitalne umetnosti ali oblikovalskega dela. Skoraj tri desetletja ste kupovali Adobejevo programsko opremo kot CD in jo uporabljali za nedoločen čas ter po potrebi kupovali prihodnje nadgrajene različice. Toda sredi leta 2010 je Adobe spremenil svojo strategijo.

    Namesto da bi kupovali CD-je s programsko opremo z nadležno dodelanimi lastniškimi ključi, bi morali kupci Adobeja zdaj plačevati mesečno naročnino za pravico do prenosa programske opreme Adobe na svoje računalniške naprave, programske opreme, ki bi delovala samo ob redni do stalni internetni povezavi s strežniki Adobe. .

    S to spremembo si stranke niso več lastile programske opreme Adobe; po potrebi so ga najeli. V zameno strankam ni več treba nenehno kupovati nadgrajenih različic programske opreme Adobe; če bi bili naročeni na storitev Adobe, bi imeli najnovejše posodobitve vedno naložene v svojo napravo takoj po izdaji (pogosto večkrat na leto).

    To je le en primer enega največjih programskih trendov, ki smo jim bili priča v zadnjih letih: kako programska oprema prehaja v storitev namesto v samostojen izdelek. In ne samo manjša, specializirana programska oprema, ampak celotni operacijski sistemi, kot smo videli pri izdaji Microsoftove posodobitve za Windows 10. Z drugimi besedami, programska oprema kot storitev (SaaS).

    Samoučeča se programska oprema (SLS)

    Na podlagi premika industrije k SaaS se pojavlja nov trend v prostoru programske opreme, ki združuje SaaS in AI. Vodilna podjetja Amazon, Google, Microsoft in IBM so začela ponujati svojo infrastrukturo umetne inteligence kot storitev svojim strankam.

    Z drugimi besedami, umetna inteligenca in strojno učenje nista več dostopna samo programskim velikanom, zdaj lahko vsako podjetje in razvijalec dostopa do spletnih virov umetne inteligence za izdelavo samoučeče se programske opreme (SLS).

    O potencialu umetne inteligence bomo podrobno razpravljali v naši seriji Prihodnost umetne inteligence, vendar bomo v okviru tega poglavja rekli, da bodo sedanji in prihodnji razvijalci programske opreme ustvarili SLS za ustvarjanje novih sistemov, ki predvidevajo naloge, ki jih je treba opraviti in preprosto jih samodejno izpolni namesto vas.

    To pomeni, da se bo bodoči pomočnik z umetno inteligenco naučil vašega stila dela v pisarni in začel namesto vas opravljati osnovne naloge, kot je oblikovanje dokumentov, kot vam je všeč, pisanje vaših e-poštnih sporočil z vašim tonom glasu, upravljanje vašega delovnega koledarja in drugo.

    Doma bi to lahko pomenilo, da sistem SLS upravlja vaš prihodnji pametni dom, vključno z nalogami, kot je predhodno ogrevanje vašega doma, preden pridete, ali spremljanje živil, ki jih morate kupiti.

    Do leta 2020 in do leta 2030 bodo ti sistemi SLS igrali ključno vlogo na podjetniških, vladnih, vojaških in potrošniških trgih ter jim postopoma pomagali izboljšati produktivnost in zmanjšati vse vrste odpadkov. Tehnologijo SLS bomo podrobneje obravnavali pozneje v tej seriji.

    Vendar pa je pri vsem tem ulov.

    Modela SaaS in SLS delujeta le, če internet (ali infrastruktura, ki stoji za njim) še naprej raste in se izboljšuje, skupaj z računalniško in shranjevalno strojno opremo, ki poganja 'oblak', v katerem delujejo ti sistemi SaaS/SLS. Na srečo so trendi, ki jih spremljamo, videti obetavni.

    Če želite izvedeti, kako bo internet rasel in se razvijal, preberite naše Prihodnost interneta serije. Če želite izvedeti več o tem, kako bo računalniška strojna oprema napredovala, berite naprej na spodnjih povezavah!

    Serija Prihodnost računalnikov

    Nastajajoči uporabniški vmesniki za redefiniranje človeštva: Prihodnost računalnikov P1

    Revolucija digitalnega shranjevanja: Prihodnost računalnikov P3

    Bledeči Moorov zakon, ki sproži temeljito premislek o mikročipih: Prihodnost računalnikov P4

    Računalništvo v oblaku postane decentralizirano: prihodnost računalnikov P5

    Zakaj države tekmujejo v izdelavi največjih superračunalnikov? Prihodnost računalnikov P6

    Kako bodo kvantni računalniki spremenili svet: Prihodnost računalnikov P7    

    Naslednja načrtovana posodobitev za to napoved

    2023-02-08

    Reference napovedi

    Za to napoved so bile navedene naslednje priljubljene in institucionalne povezave:

    Za to napoved so bile navedene naslednje povezave Quantumrun: