La programmazione è diventata un’abilità fondamentale per molti lavori. Alcuni paesi e scuole stanno persino considerando la codifica delle lingue come una forma accettabile di lingua straniera. In mezzo a tutto questo, la natura del codice sta cambiando radicalmente. Le piattaforme low-code e no-code stanno dimostrando una crescita aggressiva e consentono a individui e organizzazioni di creare potenti applicazioni di produzione con quantità relativamente piccole di ciò che tradizionalmente si chiamerebbe codifica. Il prossimo passo in questa tendenza è la generazione di codice tramite intelligenza artificiale, come recentemente dimostrato da Open AI Codex e Github Autopilot. Quindi cosa significano queste tendenze? La codifica diventerà obsoleta?
Contesto?
Prima di rispondere a questa domanda, è utile contestualizzare queste tendenze. Agli albori della codifica, i linguaggi assembly e la codifica diretta in linguaggi macchina erano la norma. La codifica si è quindi evoluta in linguaggi di livello superiore in cui uno sviluppatore potrebbe descrivere un intento di alto livello in un linguaggio agnostico della macchina e fare in modo che il compilatore generi sotto codice specifico per la macchina. Questa tendenza è continuata: i linguaggi dominanti di oggi, come ad esempio Python, sono dotati di molte librerie riutilizzabili. Ora è relativamente semplice creare app potenti con la necessità di scrivere un nuovo codice minimo.
È lo stesso di low-code/no-code?
Low code/No code è il prossimo passo in questa evoluzione. Gli sviluppatori non hanno più bisogno di trovare e assemblare blocchi di codice riutilizzabili. Le piattaforme a basso codice sono in grado di prendere direzioni di alto livello, identificare i giusti blocchi riutilizzabili e assemblare il codice necessario. Gli sviluppatori prendono ancora molte decisioni su cosa costruire e come dovrebbe comportarsi il software.
Il low-code prende alcune delle sue decisioni o lo sviluppatore decide tutto? È il primo e, a seconda della piattaforma, l’automazione può prendere un numero qualsiasi di decisioni. Questo era vero anche per i compilatori. Uno sviluppatore che usa un compilatore per scrivere, diciamo un ciclo, raramente specifica come il ciclo deve essere reso in codice macchina. Il compilatore decide questo, utilizzando una serie di euristiche e algoritmi accuratamente creati dai progettisti del compilatore.
L’intelligenza artificiale può scrivere codice?
Lo sviluppo più recente, il codice di scrittura AI, è un gradino sopra il low-code. In low-code, gli esseri umani (i progettisti di piattaforme a basso codice) possono avere assemblato logica di automazione che viene attivata per generare codice quando l’utente fornisce indicazioni di alto livello. Nel codice generato dall’intelligenza artificiale, un’intelligenza artificiale ha studiato un enorme corpus di codice esistente e ha determinato da sé queste regole di assemblaggio. Per un utente: potrebbe sembrare un low-code, ma è un low-code creato dall’intelligenza artificiale. Ciò significa che ora è più semplice creare nuove piattaforme low-code con AI in grado di determinare i modelli di automazione.
L’intelligenza artificiale può creare app?
I prototipi di intelligenza artificiale hanno mostrato risultati promettenti nella scrittura di app semplici basate sulla direzione del linguaggio quotidiano degli umani. Queste IA sono addestrate con molti esempi di programmi scritti in lingue diverse. Al suo livello più semplice, pensalo come una correzione automatica per il tuo codice. Nel suo livello più complesso, pensalo come un motore in grado di scrivere codice per un’attività specificata dallo sviluppatore.
L’intelligenza artificiale può eseguire il debug del codice?
Gli ambienti di sviluppo integrati (IDE) per i programmatori identificano già semplici problemi sintattici nel codice. Le nuove tecnologie AI fanno un ulteriore passo avanti. Analizzando i repository di codice, le correzioni di bug e gli aggiornamenti del codice, è possibile addestrare l’intelligenza artificiale a rilevare modelli di bug comuni e trovarli nel nuovo codice.
L’intelligenza artificiale può creare un codice per l’intelligenza artificiale?
Infatti. Ora è possibile fornire un set di dati a uno strumento di automazione e fargli generare il giusto tipo di codice per creare un’intelligenza artificiale dal set di dati. Questo tipo di automazione AI viene utilizzato nei contesti di apprendimento per insegnare la codifica AI a studenti delle scuole medie e superiori e per generare codice back-end per una varietà di ambienti AI di produzione.
Questa tendenza avrà profonde implicazioni. Molti sviluppatori sono preoccupati che li metterà senza lavoro. Non credo sia questo il caso. I compilatori non hanno messo fuori lavoro gli sviluppatori, ma hanno piuttosto aumentato in modo massiccio il numero di sviluppatori necessari, l’uso del codice e la dimensione e la scala delle app in fase di creazione. Mi aspetto che queste tendenze faranno lo stesso. Tuttavia, cambierà radicalmente la natura della codifica (se sei uno sviluppatore esperto di linguaggio assembly, i lavori sono limitati). Queste tendenze mettono l’essere umano nel ruolo di progettista piuttosto che di implementatore. I futuri sviluppatori saranno liberi di concentrarsi su usabilità, design, funzionalità delle funzionalità e così via, piuttosto che preoccuparsi di dettagli nitidi come come utilizzare una particolare API.
Resta da vedere fino a che punto si spingerà questa tendenza. Il software di produzione è uno sforzo complesso che combina design, funzionalità, implementazione, test, revisione e manutenzione, DevOps e altro ancora. Tutto ciò che automatizza l’implementazione consente allo sviluppatore di gestire gli altri elementi. È giusto dire che ci stiamo spostando ulteriormente in un’arena in cui le attività umane saranno incentrate su funzionalità, design, etica e tali argomenti e l’implementazione di basso livello sarà gestita dall’intelligenza artificiale e dall’automazione.
Asporto
Per rispondere alla domanda del titolo: l’intelligenza artificiale renderà obsoleta la codifica? – Non credo. Il compito di uno sviluppatore è creare un prodotto tenendo conto delle esigenze dell’utente, delle circostanze specifiche in cui la soluzione deve operare (come la tecnologia utilizzata dall’azienda, l’infrastruttura esistente, le competenze del team, i vincoli legali ecc.) e molti altri fattori. Il codice che genera l’intelligenza artificiale è complementare alla maggior parte di queste cose. Tuttavia, penso che l’intelligenza artificiale sia e continuerà a cambiare radicalmente ciò che significa programmare. La domanda chiave è come manteniamo aggiornata la nostra educazione alla codifica con ciò che diventeranno le pratiche di codifica del settore.
In qualità di leader aziendale o tecnologico, è importante assicurarsi che i propri team siano informati di questi sviluppi e di come possono essere sfruttati. Il low code sta già aiutando gli sviluppatori a essere più produttivi. Il codice che genera l’intelligenza artificiale è un fenomeno relativamente nuovo, ma possiamo aspettarci che diventi più pervasivo nei prossimi anni. Anche gli sviluppatori esperti beneficiano di un programma continuo di istruzione e formazione per rimanere aggiornati sulle ultime tecnologie. Se non hai un programma del genere, istituisce un’ottima idea.