Futuro dello sviluppo software: Futuro dei computer P2

CREDITO IMMAGINE: Corsa quantistica

Futuro dello sviluppo software: Futuro dei computer P2

    Nel 1969, Neil Armstrong e Buzz Aldrin divennero eroi internazionali dopo essere stati i primi umani a mettere piede sulla Luna. Ma mentre questi astronauti erano gli eroi della telecamera, ci sono migliaia di eroi sconosciuti che, senza il loro coinvolgimento, quel primo sbarco sulla Luna con equipaggio non sarebbe stato impossibile. Alcuni di questi eroi erano gli sviluppatori di software che hanno codificato il volo. Come mai?

    Ebbene, i computer che esistevano a quel tempo erano molto più semplici di quanto lo siano oggi. In effetti, lo smartphone usurato di una persona media è di diversi ordini di grandezza più potente di qualsiasi cosa a bordo della navicella spaziale Apollo 11 (e di tutta la NASA degli anni '1960 per quella materia). Inoltre, i computer a quel tempo erano codificati da sviluppatori di software specializzati che programmavano il software nel più elementare dei linguaggi macchina: AGC Assembly Code o semplicemente, 1s e 0s.

    Per contesto, uno di questi eroi sconosciuti, il direttore della divisione di ingegneria del software del programma spaziale Apollo, Margaret Hamiltone il suo team ha dovuto scrivere una montagna di codice (nella foto sotto) che utilizzando i linguaggi di programmazione odierni avrebbe potuto essere scritto utilizzando una frazione dello sforzo.

    (Nella foto sopra c'è Margaret Hamilton in piedi accanto a una pila di carta contenente il software Apollo 11.)

    E a differenza di oggi, dove gli sviluppatori di software codificano per circa l'80-90 percento dei possibili scenari, per le missioni Apollo, il loro codice doveva tenere conto di tutto. Per mettere questo in prospettiva, Margaret stessa ha detto:

    "A causa di un errore nel manuale della lista di controllo, l'interruttore del radar rendezvous è stato posizionato nella posizione sbagliata. Ciò ha causato l'invio di segnali errati al computer. Il risultato è stato che al computer è stato chiesto di eseguire tutte le sue normali funzioni per l'atterraggio mentre riceveva un carico aggiuntivo di dati spuri che consumavano il 15% del suo tempo. Il computer (o meglio il software in esso contenuto) era abbastanza intelligente da riconoscere che gli veniva chiesto di eseguire più attività di quelle che avrebbe dovuto eseguire. Quindi ha inviato un allarme, il che significava per l'astronauta, sono sovraccarico di più compiti di quanto dovrei fare in questo momento, e manterrò solo i compiti più importanti, cioè quelli necessari per l'atterraggio ... In realtà , il computer è stato programmato per fare di più che riconoscere le condizioni di errore. Nel software è stato incorporato un set completo di programmi di ripristino. L'azione del software, in questo caso, è stata quella di eliminare le attività con priorità inferiore e ristabilire quelle più importanti ... Se il computer non l'avesse fattoriconosciuto questo problema e intrapreso un'azione di recupero, dubito che l'Apollo 11 sarebbe stato lo sbarco sulla luna di successo che è stato".

    — Margaret Hamilton, Direttore dell'Apollo Flight Computer Programming MIT Draper Laboratory, Cambridge, Massachusetts, "Computer Got Loaded", Lettera a Datazione, Marzo 1, 1971

    Come accennato in precedenza, lo sviluppo del software si è evoluto dai primi giorni di Apollo. Nuovi linguaggi di programmazione di alto livello hanno sostituito il noioso processo di codifica con 1 e 0 per codificare con parole e simboli. Funzioni come la generazione di un numero casuale che richiedeva giorni di codifica ora vengono sostituite dalla scrittura di una singola riga di comando.

    In altre parole, la codifica del software è diventata sempre più automatizzata, intuitiva e umana ogni decennio che passa. Queste qualità continueranno solo nel futuro, guidando l'evoluzione dello sviluppo del software in modi che avranno un profondo impatto sulla nostra vita quotidiana. Questo è ciò che questo capitolo del Futuro dei computer la serie esplorerà.

    Sviluppo software per le masse

    Il processo di sostituzione della necessità di codificare 1 e 0 (linguaggio macchina) con parole e simboli (linguaggio umano) è indicato come il processo di aggiunta di strati di astrazioni. Queste astrazioni si sono presentate sotto forma di nuovi linguaggi di programmazione che automatizzano funzioni complesse o comuni per il campo per cui sono state progettate. Ma durante i primi anni 2000 sono emerse nuove società (come Caspio, QuickBase e Mendi) che hanno iniziato a offrire quelle che vengono chiamate piattaforme no-code o low-code.

    Si tratta di dashboard online di facile utilizzo che consentono ai professionisti non tecnici di creare app personalizzate su misura per le esigenze della propria attività unendo blocchi di codice visivi (simboli/grafica). In altre parole, invece di abbattere un albero e trasformarlo in un armadio da toeletta, lo costruisci usando parti pre-modellate di Ikea.

    Sebbene l'utilizzo di questo servizio richieda ancora un certo livello di competenza informatica, non è più necessaria una laurea in informatica, utilizzalo. Di conseguenza, questa forma di astrazione sta consentendo la nascita di milioni di nuovi "sviluppatori di software" nel mondo aziendale e sta consentendo a molti bambini di imparare a programmare in tenera età.

    Ridefinire cosa significa essere uno sviluppatore di software

    C'è stato un tempo in cui un paesaggio o il volto di una persona potevano essere catturati solo su una tela. Un pittore dovrebbe studiare ed esercitarsi per anni come apprendista, imparando il mestiere della pittura: come fondere i colori, quali strumenti sono i migliori, le tecniche corrette per eseguire una specifica visuale. Il costo del mestiere e i molti anni di esperienza necessari per eseguirlo bene significavano anche che i pittori erano pochi e rari.

    Poi è stata inventata la fotocamera. E con il semplice clic di un pulsante, paesaggi e ritratti sono stati catturati in un secondo che altrimenti richiederebbero giorni o settimane per essere dipinti. E poiché le fotocamere sono migliorate, sono diventate più economiche e sono diventate abbondanti al punto da essere incluse anche negli smartphone più elementari, catturare il mondo intorno a noi è diventato un'attività comune e casuale a cui tutti ora prendono parte.

    Man mano che le astrazioni progrediscono e i nuovi linguaggi software automatizzano sempre più il lavoro di routine di sviluppo del software, cosa significherà essere uno sviluppatore di software tra 10 e 20 anni? Per rispondere a questa domanda, esaminiamo come probabilmente i futuri sviluppatori di software costruiranno le applicazioni di domani:

    *In primo luogo, tutto il lavoro di codifica standardizzato e ripetitivo scomparirà. Al suo posto ci sarà una vasta libreria di comportamenti dei componenti predefiniti, UI e manipolazioni del flusso di dati (parti Ikea).

    *Come oggi, i datori di lavoro o gli imprenditori definiranno obiettivi e risultati specifici che gli sviluppatori di software potranno eseguire tramite applicazioni o piattaforme software specializzate.

    *Questi sviluppatori definiranno quindi la loro strategia di esecuzione e inizieranno a creare prototipi delle prime bozze del loro software accedendo alla loro libreria di componenti e utilizzando interfacce visive per collegarli insieme: interfacce visive accessibili tramite realtà aumentata (AR) o realtà virtuale (VR).

    *I sistemi specializzati di intelligenza artificiale (AI) progettati per comprendere gli obiettivi e i risultati impliciti nelle bozze iniziali dei loro sviluppatori, perfezioneranno quindi la progettazione del software in bozza e automatizzano tutti i test di garanzia della qualità.

    *In base ai risultati, l'IA porrà quindi una moltitudine di domande allo sviluppatore (probabilmente attraverso una comunicazione verbale, simile ad Alexa), cercando di comprendere e definire meglio gli obiettivi e i risultati del progetto e discutere come il software dovrebbe agire in vari scenari e ambienti.

    *In base al feedback dello sviluppatore, l'IA imparerà gradualmente il suo intento e genererà il codice per riflettere gli obiettivi del progetto.

    *Questa collaborazione uomo-macchina, avanti e indietro, ripeterà una versione dopo l'altra del software fino a quando una versione finita e commerciabile non sarà pronta per l'implementazione interna o per la vendita al pubblico.

    *In effetti, questa collaborazione continuerà dopo che il software sarà stato esposto all'utilizzo nel mondo reale. Quando vengono segnalati semplici bug, l'IA li risolverà automaticamente in un modo che riflette gli obiettivi originali desiderati delineati durante il processo di sviluppo del software. Nel frattempo, bug più gravi richiederanno una collaborazione uomo-IA per risolvere il problema.

    Nel complesso, i futuri sviluppatori di software si concentreranno meno sul "come" e più sul "cosa" e sul "perché". Saranno meno artigiani e più architetti. La programmazione sarà un esercizio intellettuale che richiederà persone in grado di comunicare metodicamente intenzioni e risultati in un modo che un'IA possa comprendere e quindi codificare automaticamente un'applicazione o una piattaforma digitale finita.

    Sviluppo di software basato sull'intelligenza artificiale

    Data la sezione precedente, è chiaro che riteniamo che l'IA giocherà un ruolo sempre più centrale nel campo dello sviluppo del software, ma la sua adozione non è puramente allo scopo di rendere più efficaci gli sviluppatori di software, ci sono anche forze commerciali dietro questa tendenza.

    La concorrenza tra le società di sviluppo software sta diventando sempre più agguerrita ogni anno che passa. Alcune aziende competono comprando i loro concorrenti. Altri competono sulla differenziazione del software. La sfida con quest'ultima strategia è che non è facilmente difendibile. Qualsiasi caratteristica o miglioramento del software che un'azienda offre ai propri clienti, i suoi concorrenti possono copiare con relativa facilità.

    Per questo motivo, sono finiti i giorni in cui le aziende rilasciano nuovi software ogni uno o tre anni. Al giorno d'oggi, le aziende che si concentrano sulla differenziazione hanno un incentivo finanziario a rilasciare nuovi software, correzioni software e funzionalità software su base sempre più regolare. Più velocemente le aziende innovano, più promuovono la fidelizzazione dei clienti e aumentano il costo del passaggio alla concorrenza. Questo passaggio verso la consegna regolare di aggiornamenti software incrementali è una tendenza chiamata "consegna continua".

    Sfortunatamente, la consegna continua non è facile. Appena un quarto delle società di software di oggi è in grado di eseguire il programma di rilascio richiesto per questa tendenza. Ed è per questo che c'è così tanto interesse nell'usare l'IA per accelerare le cose.

    Come accennato in precedenza, l'IA svolgerà un ruolo sempre più collaborativo nella redazione e nello sviluppo di software. Ma a breve termine, le aziende lo stanno utilizzando per automatizzare sempre più i processi di assicurazione della qualità (test) per il software. E altre aziende stanno sperimentando l'utilizzo dell'IA per automatizzare la documentazione del software: il processo di monitoraggio del rilascio di nuove funzionalità e componenti e il modo in cui sono stati prodotti fino al livello di codice.

    Nel complesso, l'IA giocherà sempre più un ruolo centrale nello sviluppo del software. Quelle società di software che padroneggiano il suo utilizzo in anticipo godranno alla fine di una crescita esponenziale rispetto ai loro concorrenti. Ma per realizzare questi vantaggi dell'IA, il settore dovrà anche vedere progressi nel lato hardware delle cose: la prossima sezione elaborerà questo punto.

    Software come un servizio

    Tutti i tipi di professionisti creativi utilizzano il software Adobe durante la creazione di opere d'arte o di design digitali. Per quasi tre decenni, hai acquistato il software Adobe come CD e ne hai posseduto l'uso in perpetuo, acquistando versioni aggiornate future secondo necessità. Ma a metà degli anni 2010, Adobe ha cambiato la sua strategia.

    Invece di acquistare CD software con chiavi di proprietà noiosamente elaborate, i clienti Adobe dovrebbero ora pagare un abbonamento mensile per il diritto di scaricare il software Adobe sui propri dispositivi informatici, software che funzionerebbe solo insieme a una connessione Internet da regolare a costante ai server Adobe .

    Con questa modifica, i clienti non possedevano più il software Adobe; l'hanno affittato secondo necessità. In cambio, i clienti non devono più acquistare costantemente versioni aggiornate del software Adobe; fintanto che si sono abbonati al servizio Adobe, avrebbero sempre caricato gli ultimi aggiornamenti sul proprio dispositivo subito dopo il rilascio (spesso più volte all'anno).

    Questo è solo un esempio di una delle più grandi tendenze software che abbiamo visto negli ultimi anni: come il software sta passando al servizio invece di un prodotto autonomo. E non solo software più piccoli e specializzati, ma interi sistemi operativi, come abbiamo visto con il rilascio dell'aggiornamento di Windows 10 di Microsoft. In altre parole, software as a service (SaaS).

    Software di autoapprendimento (SLS)

    Basandosi sul passaggio del settore verso SaaS, sta emergendo una nuova tendenza nello spazio software che combina SaaS e intelligenza artificiale. Le aziende leader di Amazon, Google, Microsoft e IBM hanno iniziato a offrire la propria infrastruttura AI come servizio ai propri clienti.

    In altre parole, l'intelligenza artificiale e l'apprendimento automatico non sono più accessibili solo ai giganti del software, ora qualsiasi azienda e sviluppatore può accedere alle risorse di intelligenza artificiale online per creare software di autoapprendimento (SLS).

    Discuteremo in dettaglio il potenziale dell'IA nella nostra serie Il futuro dell'intelligenza artificiale, ma per il contesto di questo capitolo diremo che gli sviluppatori di software attuali e futuri creeranno SLS per creare nuovi sistemi che anticipano le attività che devono essere eseguite e semplicemente completali automaticamente per te.

    Ciò significa che un futuro assistente AI imparerà il tuo stile di lavoro in ufficio e inizierà a completare le attività di base per te, come formattare i documenti come preferisci, redigere le tue e-mail con il tuo tono di voce, gestire il tuo calendario di lavoro e altro ancora.

    A casa, questo potrebbe significare avere un sistema SLS per gestire la tua futura casa intelligente, comprese attività come il preriscaldamento della tua casa prima del tuo arrivo o tenere traccia dei generi alimentari che devi acquistare.

    Entro il 2020 e il 2030, questi sistemi SLS svolgeranno un ruolo vitale nei mercati aziendale, governativo, militare e di consumo, aiutando gradualmente ciascuno a migliorare la propria produttività e ridurre gli sprechi di ogni tipo. Tratteremo la tecnologia SLS in modo più dettagliato più avanti in questa serie.

    Tuttavia, c'è un problema in tutto questo.

    L'unico modo in cui funzionano i modelli SaaS e SLS è se Internet (o l'infrastruttura dietro di esso) continua a crescere e migliorare, insieme all'hardware di elaborazione e archiviazione che esegue il "cloud" su cui operano questi sistemi SaaS/SLS. Per fortuna, le tendenze che stiamo monitorando sembrano promettenti.

    Per conoscere come crescerà ed evolverà Internet, leggi il nostro Futuro di Internet serie. Per saperne di più su come avanzerà l'hardware del computer, continua a leggere utilizzando i collegamenti seguenti!

    Serie Future of Computers

    Interfacce utente emergenti per ridefinire l'umanità: il futuro dei computer P1

    La rivoluzione dell'archiviazione digitale: il futuro dei computer P3

    Una legge di Moore in dissolvenza per innescare un ripensamento fondamentale dei microchip: Future of Computers P4

    Il cloud computing diventa decentralizzato: Future of Computers P5

    Perché i paesi competono per costruire i più grandi supercomputer? Il futuro dei computer P6

    Come i computer quantistici cambieranno il mondo: Future of Computers P7    

    Prossimo aggiornamento programmato per questa previsione

    2023-02-08

    Riferimenti previsionali

    I seguenti collegamenti popolari e istituzionali sono stati referenziati per questa previsione:

    I seguenti collegamenti Quantumrun sono stati referenziati per questa previsione: