2009/10/26 Walter Di Carlo
<wdicarlo@gmail.com>
Android sta maturando....ma non dimenticarti di considerare l'altra
stella nascente...ossia l'N900 di Nokia che accumuna in se
- uno dei migliori produttori di cellulari, ossia Nokia
- miglior distribuzione Linux visto che Maemo deriva da Debian
- miglior interfaccia grafica...visto che le prossime versioni adotteranno le QT
Mi permetto un'analisi che già feci in un post su
androidiani.com (ovviamente tutto imho).
Premessa personale: un device mobile non è un pc perchè ha target e obiettivi diversi.
l'analisi è meramente dal punto di svista di chi le applicazioni le dovrà sviluppare.
Se io dovessi scegliere su quale piattaforma andare a sviluppare guarderei sicuramente il numero di utenti che quella piattaforma raggiunge (penetrazione del mercato della piattaforma).
Altro punto fondamentale però è sicuramente lo sforzo per produrre un'applicazione e gli strumenti che ho a disposizione.
Quindi ci sono da considerare:
1) Linguaggio di programmazione
2) Ambiente di Sviluppo
3) Sistema di distribuzione
Quindi:
3) Parto dal punto 3, perchè è il più facile: non è differenziale visto che praticamente tutti hanno oramai ciò che Apple ha imposto di fatto: un application market. Non conosco quello di Maeboo ma spero non sia come quello di Apple in cui tutto deve essere sottoposto alla supervisione della casa produttrice altrimenti non ne usciamo più ;).
1) Linguaggi di Programmazione:
Android = Java + Android API
Windows Mobile = .Net e C++ (per alcune attività native di cui è fondamentale l'utilizzo altrimenti con il solo Framework .Net non hai molta integrazione)
iPhone = Object-C (me lo devo studiare da zero, così come tutti quelli che non usano apple come piattaforma di sviluppo: chi la usa?)
Maeboo = C++ e QT
qualsiasi cosa pensiate dello sviluppo con un ambiente di sviluppo managed (quindi con accesso alla memoria non direttametne controllato dallo sviluppatore), la cosa da dire è la semplicità di sviluppo e la gestione dei bug legata ad una errata gestione della memoria. Oggi, e sempre di più sarà così, si sta diffondendo l'usanza di scrivere codice managed sui PC, figuriamoci sui device mobili. Parlo da sviluppatore (anceh su ambienti mobile) e posso dire che i vantaggi dell'usare un linguaggio come Java o .Net superano di gran lunga i vantaggi della gestione nativa della memoria.
Oggi scrivere un'applicazione è moooooolto più veloce e redditizia (temporalmente parlando) di quando il C++ era l'unica via.
C++ è potentissimo ma è anche moooolto difficile e qui sfido chiunque a dire il contrario, sopratutto se si parla di creare interfacce GUI.
Quindi mi sento di dare il mio voto a favore di piattaforme che mi rendono la vita facile.
Java è attualmetne il linguaggio di programmazione più usato al mondo ed è quindi quello che più mi permette di essere operativo da subito nello sviluppo senza impazzire ad impararmi da zero un nuovo linguaggio (object-C ad esempio) oppure ore e ore di analisi funzionali e tecniche per ovviare a problemi legati al dovermi gestire la memoria al 100%.
Ribadisco che il business di applicazioni mobile non è il business di applicazioni su pc e il tempo/costo di sviluppo non è sostenibile se non mi danno strumenti concreti che mi permettono di essere rapido e diretto (IMHO).
3) Ambiente di sviluppo:
Android = Eclipse
Apple = X-Code
Maeboo = ? (fondamentalmente sono ignorante...)
Eclipse mi pare che sia uno degli IDE più usati, sviluppare su android è facile e produttivamente competitivo, non devo imparare null'altro nè tantomeno preoccuparmi di analizzare bug tipo overflow di stack, heap, string format, ecc...ecc...
X-Code: non l'ho mai usato per l'analisi fatta al punto 1) => leggi non ho tempo di impararmi un linguaggio di una piattaforma che ritengo poco vincente (è un limite legato ad una valutazione che se risulterà errata significherà la mia morte professionale :))
Maeboo: forse KDevelop (Ajunta credo di no, ripeto la mia condizione di ignoranza) e ribadisco che se dovessi usare C++ per sviluppare allora userei sicuramente kdevelop, ma forse non per sviluppare su PC (uso .Net o Java a seconda della piattaforma, sicuramente non C++)
Ripeto che la mia premessa è che io sviluppi per la piattaforma, non che sviluppo la piattaforma stessa o il kernel.
In quel frangente tutto sarebbe al contrario (moooooolto meglio C/C++ che altro, ovviamente ammesso che "altro" sia usabile).
Dario