Dalla mia esperienza dipende molto dal tipo di applicazione che vuoi fare. Supponendo che la familiarità con la piattaforma non sia un problema.
Se hai bisogno di sviluppare una "logica di programmazione", l'applicazione "algoritmi pesanti" :
WinPhone 7 - > Android - > iOS (ordine crescente di difficoltà)
Motivo : WinPhone supporta "immediatamente" un set più ricco di lingue forti in quell'area (ad esempio C #, F # rispetto a Java o Objective-C) e ha una buona libreria standard per roba "backend" (approssimativamente uguale a Android, ma di gran lunga superiore a Cocoa, che è semplicemente imbarazzante in questo senso).
All'obiettivo C mancano i generici e alla sua API di raccolta manca un ampio supporto per le operazioni map / filter / fold ecc (il supporto di base è lì grazie chiusure / blocchi) e l'implementazione sottostante della tua infrastruttura cambia con il numero di elementi memorizza, il che risulta difficile da prevedere quando ad es usando NSArray, NSDictionaries, ecc. combinalo con una sintassi piuttosto prolissa, con metodi di denominazione del tutto banali e con buchi sgargianti nella sua API (es. nessun Regexes, nessun parser) e finisci con enormi quantità di boilerplate quando implementa anche semplici algoritmi.
Java è "solo" ostacolato da una mancanza di chiusure (con il conseguente bloat che trasforma le collezioni) e da generici non reificati (che non sono un problema enorme) e che necessitano di verificare le eccezioni dei puntatori nulli più spesso di quanto desideri . Tutto ciò si traduce in quantità non trascurabili di boilerplate quando si tenta di esprimere qualsiasi cosa in cui si desidera trasformare un set di dati in un altro insieme di dati (la maggior parte degli algoritmi riguarda essenzialmente). F # (e in misura minore C #) non vengono con questo bagaglio, che nella mia esperienza si traduce in un codice molto meno quando si fa "roba dell'algoritmo".
Se non ti dispiace il lavoro extra, puoi usare Clojure e / o Scala su Android che lo metterebbero in questo senso nello stesso punto di WinPhone. MonoTouch / Mono Android permettono all'iPhone di avvicinarsi anche a questo.
Se hai bisogno di sviluppare un'applicazione "UI intensiva", "interazione pesante" il mio posizionamento è :
iOS - > WinPhone 7 - > Android (ordine di difficoltà crescente)
Motivo : Questo è IMHO molto soggettivo, ma Cocoa Touch ti offre un set molto ricco di bellissimi widget dell'interfaccia utente e Objective-C - arcaico com'è - è molto utile per la gestione di "elementi dell'interfaccia utente" (codifica valore-chiave, catena del risponditore, ecc.). WinPhone sembra interessante in questo senso (i delegati / lambdas sono molto utili per gestire eventi asincroni), quindi direi che è un secondo vicino. Scrivere GUI con Android è IMHO complesso non necessario, in parte dovuto alla mancanza di dinamismo e / o di chiusura di Java.
Se hai bisogno di avvicinarti veramente al metallo, abusando dell'hardware per le tue abilità, lo classificherei come tale :
Android - > iPhone - > ... - > WinPhone 7 (ordine di difficoltà crescente)
Motivo : Android ti consente di sviluppare app native e di distribuirle (in teoria) senza restrizioni. Sull'iPhone non c'è altra opzione, ma AFAIK Apple limita l'accesso al sistema operativo un po 'più di quanto non faccia Android. A parte ciò direi che entrambi sono molto vicini. WinPhone ti esegue il sandbox completo.
Ci sono naturalmente più altri possibili scenari con classifiche corrispondenti.