Ohjelmistokehityksen tulevaisuus: Tietokoneiden tulevaisuus P2

KUVAKrediitti: Quantumrun

Ohjelmistokehityksen tulevaisuus: Tietokoneiden tulevaisuus P2

    Vuonna 1969 Neil Armstrongista ja Buzz Aldrinista tuli kansainvälisiä sankareita, kun he olivat ensimmäiset ihmiset astuneet Kuun pinnalle. Mutta vaikka nämä astronautit olivatkin sankareita kameran edessä, on tuhansia laulamattomia sankareita, joiden ensimmäinen miehitetty laskeutuminen Kuuhun ei olisi ollut mahdotonta ilman heidän osallistumistaan. Jotkut näistä sankareista olivat ohjelmistokehittäjiä, jotka koodasivat lennon. Miksi?

    No, tuolloin olemassa olleet tietokoneet olivat paljon yksinkertaisempia kuin nykyään. Itse asiassa keskimääräisen ihmisen kulunut älypuhelin on useita suuruusluokkaa tehokkaampi kuin mikään Apollo 11 -avaruusaluksessa (ja koko 1960-luvun NASAssa). Lisäksi tietokoneita koodasivat tuolloin erikoistuneet ohjelmistokehittäjät, jotka ohjelmoivat ohjelmistoja alkeellisimmilla konekielillä: AGC Assembly Code tai yksinkertaisesti 1s ja 0s.

    Kontekstiksi yksi näistä laulamattomista sankareista, Apollon avaruusohjelman ohjelmistosuunnitteluosaston johtaja, Margaret Hamilton, ja hänen tiiminsä piti kirjoittaa vuori koodia (kuvassa alla), jonka nykyisten ohjelmointikielien avulla olisi voitu kirjoittaa murto-osalla vaivaa.

    (Yllä olevassa kuvassa Margaret Hamilton seisoo Apollo 11 -ohjelmiston sisältävän paperipinon vieressä.)

    Ja toisin kuin nykyään, jossa ohjelmistokehittäjät koodaavat noin 80-90 prosenttia mahdollisista skenaarioista, Apollo-tehtävissä heidän koodinsa piti ottaa huomioon kaikki. Asettaakseen tämän perspektiiviin Margaret itse sanoi:

    "Tarkistuslistakäsikirjan virheen vuoksi kohtaamistutkan kytkin oli asetettu väärään asentoon. Tämä sai sen lähettämään virheellisiä signaaleja tietokoneelle. Tuloksena oli, että tietokonetta pyydettiin suorittamaan kaikki normaalit toiminnot laskeutumiseen samalla kun se vastaanotti ylimääräisen kuorman vääriä tietoja, jotka käyttivät 15 % ajastaan. Tietokone (tai pikemminkin siinä oleva ohjelmisto) oli tarpeeksi älykäs tunnistamaan, että sitä pyydettiin suorittamaan enemmän tehtäviä kuin sen pitäisi suorittaa. hälytyksen, mikä tarkoitti astronautille, että olen ylikuormitettu enemmän tehtävillä kuin minun pitäisi tällä hetkellä tehdä, ja aion säilyttää vain tärkeämmät tehtävät, eli laskeutumiseen tarvittavat... Itse asiassa , tietokone oli ohjelmoitu tekemään muutakin kuin tunnistamaan virhetilanteet. Täydellinen sarja palautusohjelmia sisällytettiin ohjelmistoon. Ohjelmiston toiminta tässä tapauksessa oli poistaa alhaisemman prioriteetin tehtävät ja palauttaa tärkeämmät... Jos tietokone ei olisitunnisti tämän ongelman ja ryhtyi elvytystoimiin, epäilen, olisiko Apollo 11 ollut onnistunut laskeutuminen kuuhun."

    — Margaret Hamilton, Apollon lentotietokoneohjelmoinnin johtaja MIT Draper Laboratory, Cambridge, Massachusetts, "Computer Got Loaded", kirje Datamaatio, Maaliskuu 1, 1971

    Kuten aiemmin vihjattiin, ohjelmistokehitys on kehittynyt noista Apollon ajoista lähtien. Uudet korkean tason ohjelmointikielet korvasivat ikävän koodausprosessin ykkösillä ja noloilla koodaamiseen sanoilla ja symboleilla. Toiminnot, kuten satunnaisluvun luominen, jotka aiemmin vaativat päivien koodausta, korvataan nyt kirjoittamalla yksi komentorivi.

    Toisin sanoen ohjelmistokoodauksesta on tullut yhä enemmän automatisoitua, intuitiivisempaa ja inhimillisempää vuosikymmenen aikana. Nämä ominaisuudet jatkuvat vain tulevaisuudessa ohjaten ohjelmistokehityksen kehitystä tavoilla, joilla on syvällinen vaikutus jokapäiväiseen elämäämme. Tämä on mitä tämä luku Tietokoneiden tulevaisuus sarja tutkii.

    Ohjelmistokehitys massoille

    Prosessia, jossa tarve koodata 1:t ja 0:t (konekieli) korvataan sanoilla ja symboleilla (ihmisen kieli), kutsutaan abstraktiokerrosten lisäämisprosessiksi. Nämä abstraktiot ovat tulleet uusien ohjelmointikielien muodossa, jotka automatisoivat monimutkaisia ​​tai yleisiä toimintoja alalla, jolle ne on suunniteltu. Mutta 2000-luvun alussa ilmaantui uusia yrityksiä (kuten Caspio, QuickBase ja Mendi), jotka alkoivat tarjota niin kutsuttuja koodittomia tai matalakoodialustoja.

    Nämä ovat käyttäjäystävällisiä online-hallintapaneeleja, joiden avulla ei-tekniset ammattilaiset voivat luoda mukautettuja sovelluksia, jotka on räätälöity yrityksensä tarpeisiin yhdistämällä visuaalisia koodilohkoja (symbolit/grafiikka). Toisin sanoen sen sijaan, että kaadat puun ja muotoilet siitä pukeutumiskaapin, rakennat sen käyttämällä Ikean valmiita osia.

    Vaikka tämän palvelun käyttäminen vaatii edelleen tietyn tason tietokonetaitoa, et enää tarvitse tietojenkäsittelytieteen tutkintoa, käytä sitä. Tämän seurauksena tämä abstraktion muoto mahdollistaa miljoonien uusien "ohjelmistokehittäjien" nousun yritysmaailmaan, ja sen ansiosta monet lapset voivat oppia koodaamaan varhaisemmassa iässä.

    Määrittele uudelleen, mitä ohjelmistokehittäjä tarkoittaa

    Oli aika, jolloin maisema tai ihmisen kasvot voitiin vangita vain kankaalle. Taidemaalari joutuisi opiskelemaan ja harjoittelemaan vuosia oppipoikana, opetellakseen maalaustaitoja – miten värejä yhdistetään, mitkä työkalut ovat parhaat, oikeat tekniikat tietyn visuaalin toteuttamiseen. Kaupan kustannukset ja sen hyvin suorittamiseen tarvittava monivuotinen kokemus tarkoittivat myös sitä, että maalareita oli vähän.

    Sitten kamera keksittiin. Ja napin painalluksella otettiin maisemia ja muotokuvia sekunnissa, jonka maalaamiseen menisi muuten päivistä viikkoihin. Ja kun kamerat paranivat, halpenivat ja tulivat niin runsaiksi, että ne ovat nyt mukana jopa kaikkein perustavimmassa älypuhelimessa, ympärillämme olevan maailman vangitsemisesta tuli yleistä ja arkipäivää, johon kaikki nyt osallistuvat.

    Mitä tarkoittaa olla ohjelmistokehittäjä 10-20 vuoden kuluttua, kun abstraktiot edistyvät ja uudet ohjelmistokielet automatisoivat yhä rutiinisemmat ohjelmistokehitystyöt? Vastataksesi tähän kysymykseen käymme läpi, kuinka tulevat ohjelmistokehittäjät todennäköisesti aikovat rakentaa huomisen sovelluksia:

    *Ensinnäkin kaikki standardoitu, toistuva koodaustyö katoaa. Sen tilalle tulee laaja kirjasto ennalta määritettyjä komponenttien käyttäytymismalleja, käyttöliittymää ja tietovirran käsittelyä (Ikean osat).

    *Kuten nykyään, työnantajat tai yrittäjät määrittelevät ohjelmistokehittäjille erityiset tavoitteet ja suoritukset, jotka ne voivat toteuttaa erikoistuneiden ohjelmistosovellusten tai -alustojen kautta.

    *Nämä kehittäjät hahmottavat sitten suoritusstrategiansa ja alkavat prototyyppien laatia ohjelmistojensa varhaisia ​​luonnoksia käyttämällä komponenttikirjastoaan ja yhdistämällä ne toisiinsa visuaalisten käyttöliittymien avulla – lisätyn todellisuuden (AR) tai virtuaalitodellisuuden (VR) kautta.

    *Erikoistuneet tekoälyjärjestelmät, jotka on suunniteltu ymmärtämään kehittäjiensä alkuperäisten luonnosten sisältämiä tavoitteita ja suorituksia, hiovat sitten laadittua ohjelmistosuunnittelua ja automatisoivat kaiken laadunvarmistustestauksen.

    *Tulosten perusteella tekoäly esittää kehittäjälle lukuisia kysymyksiä (todennäköisesti suullisen, Alexan kaltaisen viestinnän kautta), jotta hän ymmärtää ja määritellä paremmin projektin tavoitteet ja suoritukset sekä keskustelee siitä, miten ohjelmiston tulisi toimia eri skenaarioissa. ja ympäristöt.

    *Kehittäjän palautteen perusteella tekoäly oppii vähitellen hänen tarkoituksensa ja luo koodin, joka vastaa projektin tavoitteita.

    *Tämä edestakaisin, ihmisen ja koneen välinen yhteistyö toistaa ohjelmiston versiot toisensa jälkeen, kunnes valmis ja myyntikelpoinen versio on valmis sisäiseen käyttöönottoon tai myytäväksi yleisölle.

    * Itse asiassa tämä yhteistyö jatkuu sen jälkeen, kun ohjelmisto on alttiina todelliseen käyttöön. Kun yksinkertaisia ​​bugeja ilmoitetaan, tekoäly korjaa ne automaattisesti tavalla, joka kuvastaa ohjelmistokehityksen aikana hahmoteltuja alkuperäisiä, haluttuja tavoitteita. Sillä välin vakavammat virheet vaativat ihmisen ja tekoälyn yhteistyötä ongelman ratkaisemiseksi.

    Kaiken kaikkiaan tulevat ohjelmistokehittäjät keskittyvät vähemmän "miten" ja enemmän "mitä" ja "miksi". Heistä tulee vähemmän käsityöläisiä ja enemmän arkkitehteja. Ohjelmointi on älyllistä harjoitusta, joka vaatii ihmisiä, jotka voivat järjestelmällisesti viestiä aikeista ja tuloksista tavalla, jonka tekoäly ymmärtää, ja sitten automaattisesti koodata valmiin digitaalisen sovelluksen tai alustan.

    Tekoälyn ohjaama ohjelmistokehitys

    Yllä olevan osion perusteella on selvää, että mielestämme tekoäly tulee olemaan yhä keskeisempi rooli ohjelmistokehityksen alalla, mutta sen käyttöönotto ei ole pelkästään ohjelmistokehittäjien tehostamisen tarkoitus, vaan tämän trendin takana on myös bisnesvoimia.

    Kilpailu ohjelmistokehitysyritysten välillä kiristyy vuosi vuodelta. Jotkut yritykset kilpailevat ostamalla kilpailijansa. Toiset kilpailevat ohjelmistojen erottelusta. Jälkimmäisen strategian haasteena on, että sitä ei ole helppo puolustaa. Kaikki ohjelmistoominaisuudet tai parannukset, joita yritys tarjoaa asiakkailleen, kilpailijat voivat kopioida suhteellisen helposti.

    Tästä syystä ovat menneet ajat, jolloin yritykset julkaisevat uusia ohjelmistoja XNUMX–XNUMX vuoden välein. Nykyään eriyttämiseen keskittyvillä yrityksillä on taloudellinen kannustin julkaista uusia ohjelmistoja, ohjelmistokorjauksia ja ohjelmistoominaisuuksia yhä säännöllisemmin. Mitä nopeammin yritykset innovoivat, sitä enemmän ne lisäävät asiakasuskollisuutta ja lisäävät kilpailijoihin siirtymisen kustannuksia. Tämä siirtyminen kohti säännöllistä ohjelmistopäivitysten toimittamista on trendi, jota kutsutaan "jatkuvaksi toimitukseksi".

    Valitettavasti jatkuva toimitus ei ole helppoa. Vain neljännes tämän päivän ohjelmistoyrityksistä pystyy toteuttamaan tämän trendin vaatiman julkaisuaikataulun. Ja tästä syystä on niin paljon kiinnostusta tekoälyn käyttämiseen asioiden nopeuttamiseen.

    Kuten aiemmin mainittiin, tekoälyllä tulee lopulta olemaan yhä enemmän yhteistyötä ohjelmistojen laadinnassa ja kehittämisessä. Mutta lyhyellä aikavälillä yritykset käyttävät sitä yhä enemmän ohjelmistojen laadunvarmistusprosessien (testaus) automatisointiin. Muut yritykset kokeilevat tekoälyn käyttöä ohjelmistodokumentaation automatisoimiseen – prosessiin, jolla seurataan uusien ominaisuuksien ja komponenttien julkaisua ja kuinka ne on tuotettu kooditasolle asti.

    Kaiken kaikkiaan tekoäly tulee olemaan yhä keskeisempi rooli ohjelmistokehityksessä. Ne ohjelmistoyritykset, jotka hallitsevat sen käytön aikaisessa vaiheessa, kasvavat lopulta eksponentiaalisesti kilpailijoihinsa verrattuna. Mutta näiden tekoälyhyötyjen toteuttamiseksi alan on myös nähtävä edistystä asioiden laitteistopuolella – seuraavassa osassa käsitellään tätä asiaa.

    Ohjelmisto palveluna

    Kaikenlaiset luovat ammattilaiset käyttävät Adobe-ohjelmistoa luodessaan digitaalista taidetta tai suunnittelutyötä. Lähes kolmen vuosikymmenen ajan ostit Adoben ohjelmiston CD-levynä ja omistit sen käytön ikuisesti ja ostit tarvittaessa päivitettyjä versioita. Mutta 2010-luvun puolivälissä Adobe muutti strategiaansa.

    Sen sijaan, että Adoben asiakkaat ostaisivat ohjelmisto-CD-levyjä, joissa on ärsyttävän monimutkaiset omistusavaimat, he joutuisivat nyt maksamaan kuukausimaksun oikeudesta ladata Adobe-ohjelmistoa tietokoneisiinsa, ohjelmistoja, jotka toimisivat vain säännöllisen ja jatkuvan Internet-yhteyden kanssa Adoben palvelimiin. .

    Tämän muutoksen myötä asiakkaat eivät enää omistaneet Adobe-ohjelmistoja. he vuokrasivat sen tarpeen mukaan. Vastineeksi asiakkaiden ei enää tarvitse ostaa jatkuvasti päivitettyjä versioita Adobe-ohjelmistosta. niin kauan kuin he ovat tilaaneet Adobe-palvelun, heillä on aina uusimmat päivitykset ladattu laitteelleen heti julkaisun jälkeen (usein useita kertoja vuodessa).

    Tämä on vain yksi esimerkki yhdestä viime vuosien suurimmista ohjelmistotrendeistä: kuinka ohjelmistot ovat siirtymässä käyttöön erillisen tuotteen sijaan. Eikä vain pienempiä, erikoistuneita ohjelmistoja, vaan kokonaisia ​​käyttöjärjestelmiä, kuten olemme nähneet Microsoftin Windows 10 -päivityksen julkaisun yhteydessä. Toisin sanoen ohjelmisto palveluna (SaaS).

    Itseoppiva ohjelmisto (SLS)

    Toimialan siirtymän kohti SaaS:a pohjalta on nousemassa uusi trendi ohjelmistoalalla, jossa yhdistyvät sekä SaaS että tekoäly. Amazonin, Googlen, Microsoftin ja IBM:n johtavat yritykset ovat alkaneet tarjota AI-infrastruktuuriaan palveluna asiakkailleen.

    Toisin sanoen tekoäly ja koneoppiminen eivät ole enää vain ohjelmistojättiläisten saatavilla, vaan nyt kuka tahansa yritys ja kehittäjä voi käyttää online-AI-resursseja itseoppivan ohjelmiston (SLS) rakentamiseen.

    Käsittelemme tekoälyn mahdollisuuksia yksityiskohtaisesti Future of Artificial Intelligence -sarjassamme, mutta tämän luvun yhteydessä sanomme, että nykyiset ja tulevat ohjelmistokehittäjät luovat SLS:n luodakseen uusia järjestelmiä, jotka ennakoivat tehtäviä, jotka tarvitsevat täytä ne automaattisesti puolestasi.

    Tämä tarkoittaa, että tuleva tekoälyassistentti oppii työtyylisi toimistossa ja alkaa suorittaa perustehtäviä puolestasi, kuten asiakirjojen muotoilua haluamallasi tavalla, sähköpostien laatimista omalla äänelläsi, työkalenterisi hallintaa ja paljon muuta.

    Kotona tämä voi tarkoittaa sitä, että SLS-järjestelmä hallitsee tulevaa älykästä kotiasi, mukaan lukien esimerkiksi kodin esilämmitys ennen saapumistasi tai ostettavien päivittäistavaroiden seuranta.

    2020-luvulle ja 2030-luvulle saakka näillä SLS-järjestelmillä tulee olemaan keskeinen rooli yritys-, hallitus-, sotilas- ja kuluttajamarkkinoilla, ja ne auttavat vähitellen parantamaan tuottavuuttaan ja vähentämään kaikenlaista jätettä. Käsittelemme SLS-tekniikkaa yksityiskohtaisemmin myöhemmin tässä sarjassa.

    Kaikessa tässä on kuitenkin saalis.

    Ainoa tapa SaaS- ja SLS-mallit toimivat, jos Internet (tai sen takana oleva infrastruktuuri) jatkaa kasvuaan ja paranemistaan ​​näiden SaaS/SLS-järjestelmien "pilveä" pyörittävän laskenta- ja tallennuslaitteiston ohella. Onneksi seuraamamme trendit näyttävät lupaavilta.

    Saat lisätietoja Internetin kasvusta ja kehittymisestä lukemalla artikkelimme Internetin tulevaisuus sarja. Saat lisätietoja tietokonelaitteiston kehittymisestä lukemalla alla olevien linkkien avulla!

    Future of Computers -sarja

    Kehittyvät käyttöliittymät määrittelemään ihmiskunnan uudelleen: Tietokoneiden tulevaisuus P1

    Digitaalisen tallennustilan vallankumous: Tietokoneiden tulevaisuus P3

    Hiipuva Mooren laki herättää mikrosirujen perusteellisen uudelleenajattelun: Tietokoneiden tulevaisuus P4

    Pilvipalveluista hajautetaan: Future of Computers P5

    Miksi maat kilpailevat rakentaakseen suurimpia supertietokoneita? Tietokoneiden tulevaisuus P6

    Kuinka kvanttitietokoneet muuttavat maailmaa: Tietokoneiden tulevaisuus P7    

    Seuraava suunniteltu päivitys tälle ennusteelle

    2023-02-08

    Ennusteviitteet

    Tässä ennusteessa viitattiin seuraaviin suosittuihin ja institutionaalisiin linkkeihin:

    Tässä ennusteessa viitattiin seuraaviin Quantumrun-linkkeihin: