Editoriale: ancora ci domandiamo perché gli sviluppatori preferiscano iOS?

Roberto Orgiu
Roberto Orgiu
Editoriale: ancora ci domandiamo perché gli sviluppatori preferiscano iOS?

Un recente sondaggio di AppCelerator ha evidenziato come gli sviluppatori continuino a prediligere iOS. Il report porta alla luce una sorta di disinteresse nei confronti di Android, che è ormai il sistema mobile più diffuso.

Ma allora perché Apple continua a rimanere ai vertici della classifica? A questa domanda abbiamo già dato una risposta chiara e precisa: conviene di più. Gli utenti del melafonino sono più propensi a spendere rispetto ai droidofili, ma questa è ormai una conoscenza comune, quasi pregressa.

Un altro dei motivi che mi sento di evidenziare è la pigrizia che contraddistingue i programmatori, anzi, gli informatici in genere: se una cosa esiste già e fa più o meno quello che mi serve in questo momento, perché rifarla? E se non esiste e io so usare il linguaggio A, cosa mi spinge ad imparare il linguaggio B, che è diverso e mi richiede un sacco di impegno per fare qualcosa che magari con il primo linguaggio farei molto meglio? Nulla.

Il fulcro della questione è proprio questo, a mio avviso. Molti degli sviluppatori non si sono mai mossi da iOS, per il semplice fatto che conoscono l'Objective-C e le API della mela e sarebbe troppo dispendioso iniziare da zero e buttarsi su librerie e paradigmi come quelli di Android. Certo, alcuni lo fanno, ma io stesso appartengo alla prima categoria: ho iniziato su Android e continuerò su questa strada, almeno finché mi sarà possibile. Non per demeriti di un sistema o meriti di un altro, ma perché, come molti altri sviluppatori, la mia scelta l'ho fatta all'inizio, e sarebbe troppo dispendioso, sia in termini di tempo, sia in termini di denaro, iniziare a sviluppare per iOs, Windows Phone o qualunque altro sistema.

AppCelerator ha evidenziato anche lo scontento degli sviluppatori verso quella che l'HTML5 ci prometteva essere una programmazione cross-platform: nel vero senso del termine, questo implicherebbe che una volta scritto il mio codice potrei tranquillamente compilarlo per le piattaforme volute e il mio lavoro sarebbe finito, ma non è così.

Purtroppo l'HTML5, il JavaScript e il CSS3 sono ben lungi dall'essere standardizzati e ognuno li implementa un po' come meglio crede. Se Larry Page lo vuole implementato in un modo, aggiungendo alcuni componenti e levandone altri, e Tim Cook vuole dire la sua sul proprio sistema, anche costruire librerie come PhoneGap diventa un'impresa improba e di conseguenza ci saranno discrepanze tra le funzioni che ho a disposizione su un sistema e quelle che mi trovo su un altro, obbligandomi a scrivere un algoritmo che si comporti diversamente a seconda del dispositivo. Questa non è programmazione cross-platform, è usare lo stesso linguaggio su diversi sistemi con algoritmi differenti a seconda della piattaforma.

E allora, perché mi converrebbe imparare il JavaScript, l'HTML5, il CSS3, l'XML e tutto quanto, quando posso usare le API proprietarie? Tralasciamo per un attimo il fattore della sicurezza delle web app (e quindi delle applicazioni cross-platform) e concentriamoci sullo sviluppo in sé, prendendo come esempio Android che ci è più familiare: ammesso che voglia fare un'applicazione che funzioni in maniera quantomeno decente su tablet e smartphone di varie dimensioni, quanto ci metto a fare il layout? Minuti, al massimo qualche ora se ho proprio layout complessi.

Ora portiamo il tutto sulle tecnologie non standard dell'HTML5. Quanto ci metto a far sì che una pagina web venga visualizzata più o meno nello stesso modo su ogni dispositivo con lo stesso browser (perché anche questo entra in gioco)? Pensiamo solo alle due macro-categorie: dispositivi pre-JB, che quindi useranno come webview quella del browser stock, e dispositivi con Android 4.1, che come webview avranno quella di Chrome. Ora scendiamo di un livello e dividiamo tra tablet e smartphone. Siamo a 4 categorie, e per ciascuna di esse devo considerare anche la risoluzione. Da uscirne pazzi!

E viene da chiedersi perché uno sviluppatore non è contento di queste tecnologie, soprattutto contando che anche aziende nate sul web come Facebook preferiscono usare tecnologie native invece dello sviluppo multipiattaforma.

E non abbiamo parlato degli editor (molte volte specifici) sconosciuti o integrati negli altri ambienti di sviluppo: prendo PhoneGap e voglio scrivere un'applicazione.

Mi piace Eclipse, allora scarico il plugin e scrivo la mia applicazione. Fin qui tutto normale, ma se la voglio portare su iOs, devo aprire X-Code, importare il progetto e compilarlo, stessa cosa con Windows Phone e Visual Studio, senza contare che per poter mantenere tre versioni identiche dovrei usare tre branch di Git Hub solo per le modifiche che devo fare al codice.

Non c'è proprio da stupirsi dei risultati del test, contando soprattutto che la maggior parte delle app viene sviluppata da developer indie. Chi ce lo fa fare di avere tre editor per ogni app? Quanto tempo, soldi e diottrie perdo solo per questa possibilità? Non so quanti di voi abbiano provato X-Code ma molto probabilmente, se mi fossi avvicinato alla programmazione su Mac, difficilmente avrei amato Eclipse o Visual Studio, e così vale per ognuno di essi, dal mio punto di vista. Fortunatamente, nonostante il paradosso apparente dell'editor scritto in Java per programmare in Java, sono nato su Eclipse, e non riesco ad immaginarmi a sviluppare da qualche altra parte.