mercoledì 28 aprile 2010

Piattaforma (informatica)

Col termine piattaforma si intende l'insieme di software o hardware o entrambi su cui gli sviluppatori scrivono delle applicazioni. In parole povere è l'insieme di cose necessarie a far funzionare un programma.

In generale una piattaforma comprende l'hardware, il sistema operativo, uno o più linguaggi di programmazione, le librerie accessibili e l'interfaccia utente (oggigiorno solitamente grafica). Tuttavia alcune di queste componenti potrebbero mancare: la piattaforma Java infatti non comprende l'hardware né il sistema operativo, poiché il suo interprete funziona su architetture diverse, astraendo questi componenti. Le piattaforme Apple (sia Mac OS X sia iPhone OS), invece, hanno strettamente legato tutte le componenti elencate precedentemente.

Una buona piattaforma necessita anche di documentazione (indicante come accedere alle funzioni disponibili, cosa fanno, ecc.), di strumenti per lo sviluppo, il test ed il debugging. Inoltre, ci si aspetta una certa stabilità, sia di comportamento (in seguito alle stesse azioni deve comportarsi sempre allo stesso modo, non deve bloccarsi senza motivi apparenti, ecc.), sia di sviluppo (se gli strumenti cambiano di continuo gli sviluppatori vengono ostacolati).

Apple per prima ha allargato ulteriormente il concetto di piattaforma aggiungendo al suo iPhone OS anche un sistema di distribuzione, pagamenti ed aggiornamenti del software. Quest'idea ha avuto indubbiamente un enorme successo (e, almeno sul piano della comodità, non è ancora stata uguagliata dalla concorrenza).

Sicuramente il sistema è comodo per gli utenti ed apprezzato dagli sviluppatori. Il costo di questa semplicità è il controllo e/o la censura effettuata da Apple sul software disponibile (diciamo che la percentuale che incassa dagli sviluppatori è il compenso per il marketing e la distribuzione). Questo controllo si è spinto addirittura ad indicare quali linguaggi di sviluppo vanno usati e quali no. Non solo ciò permette ad Apple di bandire definitivamente Flash dai suoi dispositivi, ma anche di ostacolare lo sviluppo in modo semplice di applicazioni multipiattaforma (c'è chi dice che l'ostacola anche verso Mac OS X). Forse perché Jobs ha paura che alcune applicazioni multipiattaforma facilitino la concorrenza.

Mentre il controllo effettuato da Apple con l'AppStore può aver senso su uno smartphone (ricordo che molti cellulari non permettono l'esecuzione di nessuna applicazione) dove la sicurezza e la continuità di funzionamento sono essenziali, sarebbe un fallimento su dei computer (lo sanno anche alla Apple).

Altri (IBM, SUN, Digital, ecc.) in passato hanno seguito la strada di legare il loro hardware ad un proprio sistema operativo (e proprie librerie e propri strumenti di sviluppo). I vantaggi di una piattaforma così integrata sono le prestazioni e la stabilità, mentre lo svantaggio è la riduzione della compatibilità a quelle singole piattaforme (e quindi ad un unico fornitore). Tuttavia i costi dello sviluppo di una siffatta piattaforma sono elevati rispetto a chi sviluppa hardware e sistemi operativi generici, mentre i vantaggi non sembrano far leva sul grande pubblico (impedendo economie di scala). Un buon compromesso per avere una piattaforma ottimizzata per il proprio hardware ed al contempo indipendente da esso (senza spendere esageratamente) è quello di ricompilare una distribuzione Linux o almeno il kernel, ma non è un'operazione a portata di tutti, né molto veloce.

Nessun commento:

Posta un commento