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

KREDIT ZA SLIKE: Quantumrun

Budućnost razvoja softvera: Budućnost računala 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. No dok su ovi astronauti bili heroji pred kamerama, postoje tisuće neopjevanih heroja koji bez njihova angažmana prvo slijetanje ljudske posade na Mjesec ne bi bilo nemoguće. Neki od ovih heroja bili su programeri softvera koji su kodirali let. Zašto?

    Pa, računala koja su postojala u to vrijeme bila su daleko jednostavnija nego što su danas. Zapravo, istrošeni pametni telefon prosječne osobe je nekoliko redova veličine moćniji od bilo čega na svemirskoj letjelici Apollo 11 (i od cijele NASA-e iz 1960-ih). Štoviše, računala u to vrijeme su kodirali specijalizirani programeri softvera koji su programirali softver u najosnovnijim strojnim 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 njezin tim morao je napisati brdo koda (na slici dolje) koji bi korištenjem današnjih programskih jezika mogao biti napisan uz djelić truda.

    (Na gornjoj slici je Margaret Hamilton koja stoji pokraj hrpe papira koji sadrži softver Apollo 11.)

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

    "Zbog pogreške u priručniku s popisom za provjeru, prekidač radara za spajanje postavljen je u krivi položaj. To je uzrokovalo slanje pogrešnih signala računalu. Rezultat je bio da je od računala zatraženo da izvrši sve svoje normalne funkcije za slijetanje primajući dodatnu količinu lažnih podataka koji su trošili 15% vremena. Računalo (ili bolje rečeno softver u njemu) bilo je dovoljno pametno da prepozna da se od njega traži da izvrši više zadataka nego što bi trebalo. Zatim je poslalo oglasio alarm, što je za astronauta značilo da sam preopterećen s više zadataka nego što bih trebao raditi u ovom trenutku, i zadržat ću samo važnije zadatke, tj. one potrebne za slijetanje... Zapravo , računalo je bilo programirano da učini više od prepoznavanja stanja pogreške. Cjeloviti skup programa za oporavak ugrađen je u softver. Softver je u ovom slučaju eliminirao zadatke nižeg prioriteta i ponovno uspostavio one važnije ... Da računalo nijeprepoznao ovaj problem i poduzeo mjere oporavka, sumnjam da bi Apollo 11 bio uspješan slijetanje na Mjesec."

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

    Kao što je ranije nagoviješteno, razvoj softvera evoluirao je od tih ranih Apollo dana. Novi programski jezici visoke razine zamijenili su dosadan proces kodiranja s 1 i 0 kodiranjem s riječima i simbolima. Funkcije poput generiranja nasumičnog broja koje su prije zahtijevale dane kodiranja sada su zamijenjene pisanjem jedne naredbene linije.

    Drugim riječima, kodiranje softvera postaje sve više automatizirano, intuitivno i ljudsko sa svakim desetljećem. Ove kvalitete će se nastaviti samo u budućnosti, usmjeravajući evoluciju razvoja softvera na načine koji će imati dubok utjecaj na naše svakodnevne živote. O tome govori ovo poglavlje Budućnost računala serija će istražiti.

    Razvoj softvera za široke mase

    Proces zamjene potrebe za kodiranjem jedinica i nula (strojni jezik) riječima i simbolima (ljudski jezik) naziva se procesom dodavanja slojeva apstrakcija. Te su apstrakcije došle u obliku novih programskih jezika koji automatiziraju složene ili uobičajene funkcije za područje za koje su dizajnirani. Ali tijekom ranih 1-ih pojavile su se nove tvrtke (kao što su Caspio, QuickBase i Mendi) koje su počele nuditi ono što se naziva platformama bez koda ili s niskim kodom.

    Ovo su mrežne nadzorne ploče jednostavne za korištenje koje netehničkim stručnjacima omogućuju stvaranje prilagođenih aplikacija prilagođenih potrebama njihovog poslovanja spajanjem vizualnih blokova koda (simbola/grafike). Drugim riječima, umjesto da posječete stablo i pretvorite ga u garderobni ormarić, gradite ga koristeći unaprijed izrađene dijelove iz Ikee.

    Iako korištenje ove usluge i dalje zahtijeva određenu razinu računalnog znanja, više vam nije potrebna diploma iz informatike, koristite je. Kao rezultat toga, ovaj oblik apstrakcije omogućuje uspon milijuna novih "programera softvera" u korporativnom svijetu i omogućuje mnogoj djeci da nauče kodirati u ranijoj dobi.

    Redefiniranje onoga što znači biti programer softvera

    Bilo je vrijeme kada se krajolik ili lice osobe moglo uhvatiti samo na platnu. Slikar bi morao učiti i vježbati godinama kao šegrt, učeći slikarski zanat - kako pomiješati boje, koji su alati najbolji, ispravne tehnike za izvođenje određene slike. 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 gumb, krajolici i portreti su snimljeni u sekundi za čije bi slikanje inače bili potrebni dani ili tjedni. I kako su se kamere poboljšavale, postajale jeftinije i postajale brojne do te mjere da su sada uključene čak i u najosnovniji pametni telefon, snimanje svijeta oko nas postalo je uobičajena i ležerna aktivnost u kojoj sada svi sudjeluju.

    Kako apstrakcije napreduju i novi softverski jezici automatiziraju sve više rutinskog rada na razvoju softvera, što će značiti biti programer softvera za 10 do 20 godina? Da bismo odgovorili na ovo pitanje, prođimo kroz to kako će budući programeri softvera vjerojatno krenuti u izgradnju aplikacija sutrašnjice:

    *Prvo, sav standardizirani rad na kodiranju koji se ponavlja nestat će. Na njegovom će mjestu biti golema biblioteka unaprijed definiranih ponašanja komponenti, korisničkih sučelja i manipulacija protokom podataka (Ikea dijelovi).

    *Kao i danas, poslodavci ili poduzetnici će definirati specifične ciljeve i rezultate koje će programeri softvera izvršiti putem specijaliziranih softverskih aplikacija ili platformi.

    *Ovi programeri će zatim zacrtati svoju strategiju izvršenja i započeti s izradom prototipa ranih nacrta svog softvera pristupom svojoj biblioteci komponenti i korištenjem vizualnih sučelja za njihovo povezivanje—vizualnih sučelja kojima se pristupa putem proširene stvarnosti (AR) ili virtualne stvarnosti (VR).

    *Specijalizirani sustavi umjetne inteligencije (AI) dizajnirani da razumiju ciljeve i rezultate implicirane u početnim nacrtima njihovih razvojnih programera, zatim će poboljšati nacrt dizajna softvera i automatizirati sva testiranja osiguranja kvalitete.

    *Na temelju rezultata, AI će zatim postaviti mnoštvo pitanja razvojnom programeru (vjerojatno kroz verbalnu komunikaciju nalik Alexa), nastojeći bolje razumjeti i definirati ciljeve i rezultate projekta te raspravljati o tome kako bi se softver trebao ponašati u različitim scenarijima i okruženja.

    *Na temelju povratnih informacija razvojnog programera, AI će postupno naučiti njegovu ili njezinu namjeru i generirati kod koji odražava ciljeve projekta.

    *Ova suradnja između čovjeka i stroja ponavljat će 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 će se suradnja nastaviti nakon što softver bude izložen korištenju u stvarnom svijetu. Kako se jednostavne pogreške prijave, AI će ih automatski popraviti na način koji odražava izvorne, željene ciljeve zacrtane tijekom procesa razvoja softvera. U međuvremenu, ozbiljniji bugovi zahtijevat će suradnju čovjeka i umjetne inteligencije kako bi se problem riješio.

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

    Razvoj softvera potaknut umjetnom inteligencijom

    S obzirom na gornji odjeljak, jasno je da smatramo da će umjetna inteligencija igrati sve veću središnju ulogu u području razvoja softvera, ali njegovo usvajanje nije isključivo u svrhu povećanja učinkovitosti programera softvera, iza ovog trenda također stoje poslovne snage.

    Konkurencija između tvrtki koje se bave razvojem softvera svake je godine sve veća. Neke se tvrtke natječu otkupom svojih konkurenata. Drugi se natječu u diferencijaciji softvera. Izazov s potonjom strategijom je taj što ju nije lako obraniti. Bilo koju softversku značajku ili poboljšanje koje jedna tvrtka nudi svojim klijentima, njezini konkurenti mogu kopirati s relativnom lakoćom.

    Iz tog razloga, prošla su vremena kada su tvrtke izdavale novi softver svake jedne do tri godine. Ovih dana tvrtke koje se fokusiraju na diferencijaciju imaju financijski poticaj da sve redovitije izdaju novi softver, softverske popravke i softverske značajke. Što brže tvrtke uvode inovacije, to više potiču lojalnost klijenata i povećavaju troškove prelaska na konkurenciju. Ovaj pomak prema redovitoj isporuci inkrementalnih ažuriranja softvera je trend koji se naziva "kontinuirana isporuka".

    Nažalost, kontinuirana isporuka nije laka. Jedva četvrtina današnjih softverskih tvrtki može izvršiti raspored izdanja koji zahtijeva ovaj trend. I to je razlog zašto postoji toliko zanimanje za korištenje umjetne inteligencije za ubrzavanje stvari.

    Kao što je ranije navedeno, umjetna inteligencija će s vremenom igrati sve veću ulogu suradnje u izradi i razvoju softvera. Ali kratkoročno, tvrtke ga koriste za sve veću automatizaciju procesa osiguranja kvalitete (testiranja) za softver. I druge tvrtke eksperimentiraju s korištenjem umjetne inteligencije za automatiziranje softverske dokumentacije - proces praćenja izdavanja novih značajki i komponenti i načina na koji su proizvedene sve do razine koda.

    Sve u svemu, AI će sve više igrati središnju ulogu u razvoju softvera. One softverske tvrtke koje rano ovladaju njegovom uporabom u konačnici će uživati ​​u eksponencijalnom rastu u odnosu na svoje konkurente. Ali da bi se ostvarila ova poboljšanja umjetne inteligencije, industrija će također morati vidjeti napredak u hardverskoj strani stvari - sljedeći odjeljak će razraditi ovu točku.

    Softver kao usluga

    Sve vrste kreativnih profesionalaca koriste Adobe softver kada stvaraju digitalnu umjetnost ili dizajn. Skoro tri desetljeća kupovali ste Adobeov softver kao CD i imali ste njegovo trajno korištenje, kupujući buduće nadograđene verzije po potrebi. No sredinom 2010-ih Adobe je promijenio strategiju.

    Umjesto kupnje softverskih CD-ova s ​​dosadno razrađenim vlasničkim ključevima, korisnici Adobea sada bi morali plaćati mjesečnu pretplatu za pravo preuzimanja Adobe softvera na svoje računalne uređaje, softvera koji bi radio samo uz redovnu do stalnu internetsku vezu s Adobe poslužiteljima .

    S ovom promjenom korisnici više nisu posjedovali Adobe softver; iznajmljivali su ga prema potrebi. Zauzvrat, korisnici više ne moraju stalno kupovati nadograđene verzije Adobe softvera; tako dugo dok su se pretplatili na Adobe uslugu, uvijek će imati najnovija ažuriranja prenesena na svoj 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 kao samostalni proizvod. I to ne samo manji, specijalizirani softver, već čitavi operativni sustavi, kao što smo vidjeli s 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 SaaS i AI. Vodeće tvrtke iz Amazona, Googlea, Microsofta i IBM-a počele su nuditi svoju AI infrastrukturu kao uslugu svojim klijentima.

    Drugim riječima, umjetna inteligencija i strojno učenje više nisu dostupni samo softverskim divovima, sada svaka tvrtka i programer može pristupiti mrežnim resursima umjetne inteligencije za izradu samoučećeg softvera (SLS).

    Detaljno ćemo raspravljati o potencijalu umjetne inteligencije u našoj seriji Budućnost umjetne inteligencije, ali za kontekst ovog poglavlja, reći ćemo da će sadašnji i budući programeri softvera stvoriti SLS za stvaranje novih sustava koji predviđaju zadatke koje je potrebno izvršiti i jednostavno ih automatski dovršite za vas.

    To znači da će budući pomoćnik s umjetnom inteligencijom naučiti vaš stil rada u uredu i početi obavljati osnovne zadatke umjesto vas, poput formatiranja dokumenata onako kako vi želite, pisanja e-poruka vašim tonom glasa, upravljanja vašim radnim kalendarom i više.

    Kod kuće, to bi moglo značiti da SLS sustav upravlja vašim budućim pametnim domom, uključujući zadatke kao što je prethodno zagrijavanje vašeg doma prije nego što stignete ili praćenje namirnica koje trebate kupiti.

    Do 2020-ih i 2030-ih ovi SLS sustavi igrat će vitalnu ulogu na korporativnim, vladinim, vojnim i potrošačkim tržištima, postupno pomažući svakome da poboljša svoju produktivnost i smanji otpad svih vrsta. SLS tehnologiju ćemo detaljnije obraditi kasnije u ovoj seriji.

    Međutim, u svemu tome postoji kvaka.

    Jedini način na koji modeli SaaS i SLS funkcioniraju jest ako Internet (ili infrastruktura koja stoji iza njega) nastavi rasti i poboljšavati se, zajedno s računalnim hardverom i hardverom za pohranu koji pokreće 'oblak' na kojem ovi SaaS/SLS sustavi rade. Srećom, trendovi koje pratimo izgledaju obećavajuće.

    Da biste saznali kako će Internet rasti i razvijati se, pročitajte naše Budućnost Interneta niz. Da biste saznali više o tome kako će računalni hardver napredovati, čitajte dalje koristeći donje veze!

    Future of Computers serije

    Nova korisnička sučelja za redefiniranje čovječanstva: budućnost računala P1

    Revolucija digitalne pohrane: budućnost računala P3

    Blijedi Mooreov zakon koji će potaknuti temeljito preispitivanje mikročipova: budućnost računala P4

    Računalstvo u oblaku postaje decentralizirano: budućnost računala P5

    Zašto se zemlje natječu u izgradnji najvećih superračunala? Budućnost računala P6

    Kako će kvantna računala promijeniti svijet: budućnost računala P7    

    Sljedeće zakazano ažuriranje za ovo predviđanje

    2023-02-08

    Reference prognoze

    Za ovo predviđanje navedene su sljedeće popularne i institucionalne veze:

    Sljedeće Quantumrun veze navedene su za ovu prognozu: