Essere un programmatore nel 2018

Negli ultimi 10 anni il mondo digitale si è evoluto più che nei precedenti 30: AI, Realtà aumentata, Smartphones ecc.
Di conseguenza si sono evoluti velocemente anche l’hardware e il software, il primo uniformandosi sempre di più (prima tutti con l’impronta digitale, poi tutti con la doppia fotocamera, ora tutti borderless, insomma tutti si muovono in blocco e propongono la loro versione della stessa cosa), il secondo invece frammentandosi incredibilmente. Un numero sempre più grande di “sviluppatori” capaci di fare soltanto una cosa si è riversato nel mondo e ha cominciato a dedicare la sua vita a quella singola cosa. Come una corsa all’oro, aspiranti sviluppatori trovano una via semplice per fare soldi (e come per la corsa all’oro, il 90% ne rimane a bocca asciutta e deluso), un anno è lo sviluppo di app, un altro lo sviluppo web, fino a questo ultimo anno dove l’AI l’ha fatta da padrona. Se per gli utenti finali questo significa maggiore scelta, per gli sviluppatori vuol dire un’incredibile sofferenza.

Per sviluppare una qualsiasi cosa, occorre oggi destreggiarsi in multiple piattaforme e multipli tipi di hardware e di conseguenza multipli linguaggi di programmazione, paradigmi, regole molto spesso in contrasto tra di loro. Certo, per chi ha scelto di vivere per i prossimi 30 anni programmando siti web non avrà problemi (o forse si?), ma per chi è appassionato ed eclettico, diventa frustrante. Non tanto per la moltitudine di cose, ma per il fatto che all’80% sono cose pessime e che hanno avuto successo per caso. Ci sono esempi anche dagli anni 90 di tali cose, primi fra tutti Java e PHP, due linguaggi usatissimi ma che starebbero meglio nel cestino della spazzatura ed è colpa di chi si è fossilizzato solo su quelli se oggi, ad esempio, se vuoi programmare un’app Android devi per forza usare Java (anche se con Kotlin le cose potrebbero cambiare, stiamo a vedere).

Qualcuno penserà “vabbè, prima o poi moriranno e saranno sostituiti da qualcosa di meglio” e non ha tutti i torti, se non fosse che i sostituti non sono tanto migliori. JavaScript, il re del Web e Python, il re della Matematica, sono ad oggi i due linguaggi “di moda”. Ma cosa portano al mondo? Pessime prestazioni, bassa sicurezza e dei maledettissimi “moduli” al posto delle care vecchie librerie, tantissimi e piccolissimi, capaci di mettere in ginocchio il più performante degli SSD. E allora perchè hanno successo? Perchè sono facilissimi da imparare e non devi sbattere la testa sui problemi, visto che ci pensa il linguaggio a risolvere la maggior parte dei problemi. Altro che “Il programma ha smesso di funzionare” senza poter sapere il motivo. Ma questo porta a trascurare di ciò che manda veramente avanti il mondo dell’informatica, come i linguaggi a basso livello e il “ragionare come ragiona il PC”, cosa che questo branco di milioni di finti sviluppatori non ha mai imparato. E fra 10 anni, JavaScript e Python saranno i nuovi Java e PHP.

Ma non finisce qui. Non è solo lo sviluppatore a rimetterci, ma anche l’utente finale e gli esempi sono sotto ai nostri occhi. Prendiamo un esempio attuale e di moda, ovvero l’AI: tutti puntano sull’AI e tutti vogliono dominare in questo settore. Risultato? ARM ha presentato il suo coprocessore AI. Ma anche Qualcomm. E Samsung. E Huawei. E Apple. E Intel. Insomma tutti. Visto che si parla prevalentemente di Android, ci si aspetterebbe che Google intervenisse creando un modo per gli sviluppatori di usare tutti questi processori senza problemi giusto? E invece no, presentano il Pixel Visual Core e relegano il loro Framework per l’AI, Tensorflow Lite a quello oppure la classica CPU, totalmente inadatta per l’AI. Cosa potrà mai succedere quindi? NESSUNO sfrutta alcuno di questi coprocessori. Quindi chi ha comprato il Mate 10 Pro o il Pixel 2 per “l’AI”, può stare tranquillo che non avrà nulla di quel che gli è stato promesso.

La situazione è tragica sia quando bisogna interagire con diversi hardware sia con diversi software, vedi i browsers. Questa API va qua ma non di là, questo ha la sua versione e non usa quella standard ecc ecc. E a rimetterci sono sia gli sviluppatori che gli utenti. E la colpa è, oltre che di questi finti sviluppatori, delle grandi aziende che, invece di “democratizzare” lo sviluppo, si fanno i dispetti tra di loro mettendolo in quel posto agli altri. Menzione di demerito per la community Open Source, che oltre a venir puntualmente monopolizzata dal linguaggio di moda, non è minimamente in grado di fornire un’alternativa decente a quella delle grandi aziende e costringendo quindi i dev ad avere la loro azienda di riferimento, da cui non possono più staccarsi per non finire in un mondo buio e scarsamente documentato. Non resta che vedere cosa ci porterà il futuro, che non sembra molto roseo.