Budućnost razvoja softvera: Budućnost računara P2

KREDIT ZA SLIKU: Quantumrun

Budućnost razvoja softvera: Budućnost računara P2

    Godine 1969. Neil Armstrong i Buzz Aldrin postali su međunarodni heroji nakon što su bili prvi ljudi koji su kročili na Mjesec. Ali dok su ovi astronauti bili heroji na kameri, postoje hiljade neopevanih heroja koji bez njihovog učešća to prvo sletanje na Mesec sa ljudskom posadom ne bi bilo nemoguće. Neki od ovih heroja bili su programeri softvera koji su kodirali let. Zašto?

    Pa, kompjuteri koji su postojali u to vrijeme bili su daleko jednostavniji nego danas. Zapravo, istrošeni pametni telefon prosječne osobe je za nekoliko redova magnitude moćniji od bilo čega na svemirskoj letjelici Apollo 11 (i svih 1960-ih NASA-e). Štaviše, kompjutere su u to vreme kodirali specijalizovani programeri softvera koji su programirali softver na najosnovnijim mašinskim jezicima: AGC Assembly Code ili jednostavno, 1s i 0s.

    Za kontekst, jedan od ovih neopjevanih heroja, direktor odjela za softversko inženjerstvo svemirskog programa Apollo, Margaret Hamilton, a njen tim je morao da napiše brdo koda (na slici dole) koji bi korišćenjem današnjih programskih jezika mogao biti napisan uz samo delić truda.

    (Na slici iznad je Margaret Hamilton koja stoji pored hrpe papira u kojoj se nalazi softver Apollo 11.)

    I za razliku od današnjih dana kada programeri softvera kodiraju za oko 80-90 posto mogućih scenarija, za Apollo misije njihov kod je morao da uzme u obzir sve. Da bi ovo stavila u perspektivu, sama Margaret je rekla:

    "Zbog greške u priručniku za kontrolnu listu, prekidač radara za sastanke bio je postavljen u pogrešan položaj. To je dovelo do toga da šalje pogrešne signale kompjuteru. Rezultat je bio da se od kompjutera tražilo da izvrši sve svoje normalne funkcije za sletanje dok je primao dodatno opterećenje lažnih podataka koji su potrošili 15% svog vremena. Računar (ili bolje rečeno softver u njemu) je bio dovoljno pametan da prepozna da se od njega traži da izvrši više zadataka nego što bi trebao. Zatim je poslao iz alarma, što je za astronauta značilo, ja sam preopterećen sa više zadataka nego što bih trebao da radim u ovom trenutku, a zadržaću samo važnije zadatke, tj. one potrebne za sletanje... Zapravo , kompjuter je programiran da radi više od prepoznavanja stanja greške. Kompletan set programa za oporavak je ugrađen u softver. Radnja softvera, u ovom slučaju, bila je da eliminiše zadatke nižeg prioriteta i ponovo uspostavi one važnije... Da kompjuter nijeprepoznao ovaj problem i poduzeo mjere za oporavak, sumnjam da bi Apollo 11 bio uspješno sletanje na Mjesec."

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

    Kao što je ranije rečeno, razvoj softvera je evoluirao od tih ranih Apollo dana. Novi programski jezici visokog nivoa zamijenili su dosadan proces kodiranja sa 1s i 0s kodiranjem riječima i simbolima. Funkcije poput generiranja slučajnog broja za koje su prije bili potrebni dani kodiranja sada su zamijenjene pisanjem jedne komandne linije.

    Drugim riječima, softversko kodiranje postaje sve automatiziranije, intuitivnije i ljudsko sa svakom prolaskom decenije. Ovi kvaliteti će se nastaviti samo u budućnosti, usmjeravajući evoluciju razvoja softvera na načine koji će imati dubok utjecaj na naš svakodnevni život. To je ono što ovo poglavlje Budućnost kompjutera serija će istraživati.

    Razvoj softvera za mase

    Proces zamjene potrebe za kodiranjem 1s i 0s (mašinski jezik) riječima i simbolima (ljudski jezik) se naziva procesom dodavanja slojeva apstrakcija. Ove apstrakcije su došle u obliku novih programskih jezika koji automatizuju složene ili uobičajene funkcije za polje za koje su dizajnirane. Ali tokom ranih 2000-ih, pojavile su se nove kompanije (kao što su Caspio, QuickBase i Mendi) koje su počele da nude ono što se naziva platformama bez koda ili sa niskim kodom.

    Ovo su kontrolne table na mreži koje su prilagođene korisniku koje omogućavaju netehničkim profesionalcima da kreiraju prilagođene aplikacije prilagođene potrebama njihovog poslovanja tako što spajaju vizuelne blokove koda (simboli/grafike). Drugim riječima, umjesto da posječete drvo i oblikuje ga u ormarić za garderobu, pravite ga koristeći gotove dijelove iz Ikee.

    Iako korištenje ove usluge i dalje zahtijeva određeni nivo poznavanja računara, više vam nije potrebna diploma informatike, već je koristite. Kao rezultat toga, ovaj oblik apstrakcije omogućava porast miliona novih "programera softvera" u korporativnom svijetu i omogućava mnogo djece da nauče kako da kodiraju u ranijoj dobi.

    Redefinisanje šta znači biti programer softvera

    Bilo je vremena kada su pejzaž ili lice osobe mogli biti snimljeni samo na platnu. Slikar bi morao godinama učiti i vježbati kao šegrt, učeći slikarski zanat – kako spojiti boje, koji su alati najbolji, ispravne tehnike za izvođenje određenog vizuala. Troškovi zanata i dugogodišnje iskustvo potrebno za dobro obavljanje također su značili da je slikara bilo malo.

    Tada je izumljena kamera. A pritiskom na dugme, pejzaži i portreti su snimljeni u sekundi, za čije bi slikanje inače bili potrebni dani ili nedelje. A kako su se kamere poboljšale, pojeftinile i postale u izobilju do te mjere da su sada uključene čak i u najosnovnije pametne telefone, snimanje svijeta oko nas postalo je uobičajena i ležerna aktivnost u kojoj sada svi sudjeluju.

    Kako apstrakcije napreduju i novi softverski jezici automatizuju sve rutinskiji rad na razvoju softvera, šta će značiti biti programer softvera za 10 do 20 godina? Da bismo odgovorili na ovo pitanje, hajde da prođemo kroz to kako će budući programeri softvera vjerovatno krenuti u izgradnji budućih aplikacija:

    *Prvo, sav standardizirani, ponavljajući rad kodiranja će nestati. Na njegovom mjestu će biti ogromna biblioteka unaprijed definiranih ponašanja komponenti, korisničkog sučelja i manipulacija protokom podataka (Ikea dijelovi).

    *Kao i danas, poslodavci ili preduzetnici će definisati specifične ciljeve i rezultate za programere softvera koje će izvršiti putem specijalizovanih softverskih aplikacija ili platformi.

    *Ovi programeri će zatim zacrtati svoju strategiju izvršavanja i započeti prototipiranje ranih nacrta svog softvera tako što će pristupiti njihovoj biblioteci komponenti i koristeći vizuelne interfejse da ih povežu zajedno – vizuelna interfejsa kojima se pristupa putem proširene stvarnosti (AR) ili virtuelne stvarnosti (VR).

    *Specijalizovani sistemi veštačke inteligencije (AI) dizajnirani da razumeju ciljeve i rezultate koje impliciraju početni nacrti njihovog programera, zatim će usavršiti izrađeni softverski dizajn i automatizovati sva testiranja osiguranja kvaliteta.

    *Na osnovu rezultata, AI će zatim postaviti mnoštvo pitanja programeru (vjerovatno kroz verbalnu komunikaciju nalik na Alexa), nastojeći bolje razumjeti i definirati ciljeve i rezultate projekta i razgovarati o tome kako bi softver trebao djelovati u različitim scenarijima i okruženja.

    *Na osnovu povratnih informacija programera, AI će postepeno naučiti njegovu ili njenu namjeru i generirati kod koji odražava ciljeve projekta.

    *Ova napred i nazad, saradnja ljudi i mašina će ponavljati verziju za verzijom softvera sve dok gotova verzija koja se može prodati ne bude spremna za internu implementaciju ili za prodaju javnosti.

    *Zapravo, ova saradnja će se nastaviti nakon što softver bude izložen stvarnoj upotrebi. Kako se prijavljuju jednostavne greške, AI će ih automatski popraviti na način koji odražava originalne, željene ciljeve zacrtane tokom procesa razvoja softvera. U međuvremenu, ozbiljnije greške će zahtijevati saradnju između ljudi i AI kako bi se riješio problem.

    Sve u svemu, budući programeri softvera će se manje fokusirati na 'kako', a više na 'šta' ​​i 'zašto'. Oni će biti manje zanatlije, a više arhitekti. Programiranje će biti intelektualna vježba koja će zahtijevati ljude koji mogu metodično komunicirati namjere i rezultate na način koji AI može razumjeti, a zatim automatski kodirati gotovu digitalnu aplikaciju ili platformu.

    Razvoj softvera vođen umjetnom inteligencijom

    Imajući u vidu gornji odeljak, jasno je da smatramo da će AI igrati sve centralniju ulogu u oblasti razvoja softvera, ali njeno usvajanje nije isključivo u svrhu da programeri softvera budu efikasniji, već postoje i poslovne snage koje stoje iza ovog trenda.

    Konkurencija između kompanija za razvoj softvera je svake godine sve žešća. Neke kompanije se takmiče kupujući svoje konkurente. Drugi se takmiče u softverskoj diferencijaciji. Izazov sa potonjom strategijom je u tome što je nije lako odbraniti. Bilo koju softversku funkciju ili poboljšanje koje jedna kompanija ponudi svojim klijentima, njeni konkurenti mogu kopirati s relativnom lakoćom.

    Iz tog razloga, prošla su vremena kada kompanije svake jedne do tri godine objavljuju novi softver. Ovih dana kompanije koje se fokusiraju na diferencijaciju imaju finansijski podsticaj da izdaju novi softver, softverske ispravke i softverske funkcije na sve redovnijoj osnovi. Što kompanije brže inoviraju, to više podstiču lojalnost klijenata i povećavaju troškove prelaska na konkurente. Ovaj pomak ka redovnoj isporuci inkrementalnih ažuriranja softvera je trend koji se naziva "kontinuirana isporuka".

    Nažalost, kontinuirana isporuka nije laka. Jedva četvrtina današnjih softverskih kompanija može izvršiti raspored izdanja koji se zahtijeva od ovog trenda. I to je razlog zašto postoji toliko interesovanje za korištenje AI za ubrzavanje stvari.

    Kao što je ranije navedeno, AI će na kraju igrati sve više kolaborativnu ulogu u izradi i razvoju softvera. Ali kratkoročno, kompanije ga koriste da sve više automatizuju procese osiguranja kvaliteta (testiranja) za softver. I druge kompanije eksperimentišu sa korišćenjem veštačke inteligencije za automatizaciju softverske dokumentacije – proces praćenja objavljivanja novih funkcija i komponenti i načina na koji su proizvedene do nivoa koda.

    Sve u svemu, AI će sve više igrati centralnu ulogu u razvoju softvera. One softverske kompanije koje rano ovladaju njegovom upotrebom na kraju će uživati ​​u eksponencijalnom rastu u odnosu na svoje konkurente. Ali da bi ostvarila ove prednosti AI, industrija će takođe morati da vidi napredak u hardverskoj strani stvari – u sledećem odeljku će se detaljnije objasniti ova tačka.

    Softver kao usluga

    Sve vrste kreativnih profesionalaca koriste Adobe softver kada kreiraju digitalnu umjetnost ili dizajn. Skoro tri decenije kupovali ste Adobeov softver kao CD i posedovali njegovu upotrebu u večnosti, kupujući buduće nadograđene verzije po potrebi. Ali sredinom 2010-ih, Adobe je promijenio svoju strategiju.

    Umjesto kupovine softverskih CD-ova s ​​dosadno razrađenim vlasničkim ključevima, Adobe korisnici bi sada morali plaćati mjesečnu pretplatu za pravo preuzimanja Adobe softvera na svoje računarske uređaje, softvera koji bi radio samo uz redovnu i stalnu internet vezu s Adobe serverima. .

    Sa ovom promjenom, kupci više nisu posjedovali Adobe softver; iznajmljivali su je po potrebi. Zauzvrat, kupci više ne moraju stalno da kupuju nadograđene verzije Adobe softvera; sve dok su se pretplatili na Adobe uslugu, uvijek bi imali najnovije ispravke učitane na njihov uređaj odmah po objavljivanju (često nekoliko puta godišnje).

    Ovo je samo jedan primjer jednog od najvećih softverskih trendova koje smo vidjeli posljednjih godina: kako softver prelazi u uslugu umjesto u samostalni proizvod. I ne samo manji, specijalizovani softver, već i čitavi operativni sistemi, kao što smo videli sa izdavanjem Microsoftovog ažuriranja za Windows 10. Drugim riječima, softver kao usluga (SaaS).

    Softver za samoučenje (SLS)

    Nadovezujući se na pomak industrije prema SaaS-u, pojavljuje se novi trend u softverskom prostoru koji kombinira i SaaS i AI. Vodeće kompanije iz Amazona, Googlea, Microsofta i IBM-a počele su da nude svoju AI infrastrukturu kao uslugu svojim klijentima.

    Drugim riječima, umjetna inteligencija i strojno učenje više nisu dostupni samo softverskim gigantima, sada svaka kompanija i programer mogu pristupiti internetskim AI resursima za izradu softvera koji se samostalno uči (SLS).

    Detaljno ćemo raspravljati o potencijalu AI u našoj seriji Future of Artificial Intelligence, ali za kontekst ovog poglavlja reći ćemo da će sadašnji i budući programeri softvera kreirati SLS za kreiranje novih sistema koji predviđaju zadatke koje je potrebno izvršiti i jednostavno ih automatski dopunite umjesto vas.

    To znači da će budući AI asistent naučiti vaš stil rada u kancelariji i početi obavljati osnovne zadatke za vas, kao što je formatiranje dokumenata onako kako vam se sviđa, pisanje vaših e-poruka vašim tonom glasa, upravljanje vašim radnim kalendarom i još mnogo toga.

    Kod kuće, to bi moglo značiti da SLS sistem upravlja vašom budućom pametnom kućom, uključujući zadatke kao što su prethodno zagrijavanje vašeg doma prije dolaska ili praćenje namirnica koje trebate kupiti.

    Do 2020-ih i do 2030-ih, ovi SLS sistemi će igrati vitalnu ulogu na korporativnom, državnom, vojnom i potrošačkom tržištu, postepeno pomažući svakom da poboljša svoju produktivnost i smanji otpad svih vrsta. SLS tehnologiju ćemo detaljnije pokriti kasnije u ovoj seriji.

    Međutim, u svemu tome postoji kvaka.

    Jedini način na koji SaaS i SLS modeli funkcionišu je ako Internet (ili infrastruktura iza njega) nastavi da raste i poboljšava se, zajedno sa računarskim i skladišnim hardverom koji pokreće 'oblak' na kojem ovi SaaS/SLS sistemi rade. Srećom, trendovi koje pratimo izgledaju obećavajuće.

    Da biste saznali kako će internet rasti i evoluirati, pročitajte naš Budućnost interneta serije. Da saznate više o tome kako će kompjuterski hardver napredovati, pročitajte dalje koristeći linkove ispod!

    Future of Computers serija

    Nova korisnička sučelja za redefiniranje čovječanstva: Budućnost kompjutera P1

    Revolucija digitalnog skladištenja: Budućnost računara P3

    Mooreov zakon koji blijedi da podstakne fundamentalno preispitivanje mikročipova: Budućnost kompjutera P4

    Računarstvo u oblaku postaje decentralizovano: budućnost računara P5

    Zašto se zemlje takmiče u izgradnji najvećih superkompjutera? Budućnost računara P6

    Kako će kvantni računari promijeniti svijet: Budućnost računara P7    

    Sljedeće planirano ažuriranje za ovu prognozu

    2023-02-08

    Reference prognoze

    Za ovu prognozu su referencirane sljedeće popularne i institucionalne veze:

    ProPublica

    Sljedeći Quantumrun linkovi su referencirani za ovu prognozu: