Multipiattaforma: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
LaaknorBot (discussione | contributi)
m Bot: Aggiungo az:Cross platform
Nessun oggetto della modifica
Riga 1:
{{F|informatica|gennaio 2010}}
In [[informatica]] il termine '''Multipiattaformamultipiattaforma''' può essere dettoriferito diad un [[linguaggio di programmazione]], diad un'applicazione [[software]] o diad un dispositivo [[hardware]] che funziona su più di un [[sistema (informatica)|sistema]] o appunto, ''[[piattaforma (informatica)|piattaforma]]'' (es. [[Unix]]/[[Linux]], [[Microsoft Windows|Windows]] e [[Macintosh]]). Esempi di linguaggi multipiattaforma sono: [[C (linguaggio)|C]], [[C++]], [[Java (linguaggio)|Java]], [[JavaScript]], [[Perl]], [[PHP]], [[Python]], [[Tcl]], [[Erlang (linguaggio)|Erlang]] e [[REALbasic]].
 
==Linguaggi di programmazione e applicazioni==
Molti linguaggi informatici ad [[linguaggio di programmazione ad alto livello|alto livello]] sono per loro stessa natura multipiattaforma, poiché sono definiti per una macchina astratta (cfr. la macchina astratta C, la [[macchina virtuale]] del Java e di altri linguaggi).
 
Tuttavia, per numerosi compiti, è necessario che il programma faccia riferimento a delle [[Application programming interface|API]] che sono diverse sui diversi [[sistema operativo|sistemi operativi]] (gestione delle finestre, accesso allo ''[[hardware]]'', funzioni per il ''[[multithreading]]'', e così viaecc...). Ad esempio, sebbene il C++ di per sé sia multipiattaforma, un programma scritto per [[Microsoft Windows|Windows]] che usa le [[Application programming interface|API]] di [[Win32]], solitamente non riuscirà ad essere [[compilazione|compilato]] anche su un sistema [[Unix]], in quanto le API che rendono disponibili quelle stesse funzionalità su Unix sono scritte diversamente.<br/>
 
Una soluzione comune è quella di realizzare una API intermedia, implementata in una [[libreria (informatica)|libreria]] che sia a sua volta [[portabilità|portabile]], e quindi implementata in modo diverso per le diverse piattaforme (mantenendo invariata l'interfaccia). Il codice del programma viene ''[[linking|linkato]]'' a questa libreria. Un esempio tipico è quello delle [[Interfaccia grafica|interfacce grafiche]] ([[GUI]]).<br/>
Molti linguaggi offrono una piattaforma costituita da librerie comuni (''librerie standard''), che permettono una copertura maggiore o minore delle esigenze tipiche di un programma.
 
Molti linguaggi offrono una piattaforma costituita da librerie comuni (''librerie standard''), che permettono una copertura maggiore o minore delle esigenze tipiche di un [[programma (informatica)|programma]].
 
Un altro problema è dato dal fatto che un linguaggio può ''non specificare'' il comportamento di una certa sintassi; in questo caso, il comportamento effettivo dipende dalla implementazione specifica in uso a [[tempo di esecuzione]], e ciò rende possibile scrivere un programma il cui corretto funzionamento si fondi su uno di questi comportamenti specifici (con la conseguenza che il programma non risulta portabile).
Riga 14 ⟶ 16:
 
==Limiti e soluzioni==
Poiché fornire e [[Collaudo del software|collaudare]] versioni compilate di un programma per ogni [[Sistema operativo|OS]] ed ogni [[CPU]] è praticamente impossibile, i progetti di [[software libero]] ([[open source]]), o che altrimenti permettono all'utente di compilare il proprio ''object[[codice codesorgente]]'', possono essere considerati ''più'' multipiattaforma. Allo stesso modo, i [[Linguaggio interpretato|linguaggi interpretati]] o che richiedono una ''virtual machine'' sono più multipiattaforma quando ognuno può compilarsela. [[Hotspot (informatica)|Hotspot]], la virtual machine di [[Java (linguaggio)|Java]] della [[Oracle Corporation]], è fornita solo sotto forma di binari [[precompilati]], con supporto per parecchie piattaforme (''ma non tutte'', nemmeno potenzialmente). Per esempio, Sun supporta [[Linux|GNU/Linux]] solo sull'architettura [[i386]] (e parzialmente [[AMD64]]) così che chiunque ha Linux su un [[PowerPC]] o su computer [[SPARC]] non può utilizzare Java, se non compilando nel [[linguaggio macchina]] nativo oppure utilizzando strumenti di terzi.
 
Molte [[Application programming interface|API]] sono specifiche per una singola piattaforma. Si può dire che le [[OpenGL]] siano invece multipiattaforma perché non sono legate a un particolare sistema operativo, architettura CPU o marca di hardware grafico. API legate a una sola piattaforma possono essere ricreate sugli altri sistemi creando un livello di compatibilità, come ad esempio le librerie [[WINE]], che consentono ai programmi che richiedono le librerie di [[Microsoft Windows|Windows]] di poter funzionare su UNIX.
 
Ci sono anche estensioni multipiattaforma e [[middleware]] per molti linguaggi di programmazione che permettono ai [[programmatore|programmatori]] di compilare e fari girare lo stesso [[codice sorgente]] con minimi ritocchi su piattaforme differenti. Alcuni esempi sono le [[Qt (toolkit)|Qt]] e le [[wxWidgets]].
 
==Multipiattaforma e Web==
Le [[Applicazione web|applicazioni Web]] sono normalmente utilizzabili da ogni piattaforma con qualsiasi [[Browser|web browser]], senza preoccuparsi del linguaggio col quale sono state scritte. Ciò è vero perché il codice gira su un [[server]] (applicazione [[lato server]]) e la comunicazione con l'utente avviene soltanto attraverso l'[[Hyper Text Transfer Protocol|HTTP]] e l'([[XHTML|X]])[[HTML]].
 
Le [[Pagina web|pagine web]] si dicono talvolta multipiattaforma o ''cross-browser'' se possono essere utilizzate da qualunque browser, o da tutti i browser recenti. Per produrre codice valido all'autore spesso occorre un'esperienza tale da "domare" le bizzarrie di alcuni browser poco conformi agli [[standard (informatica)|standard]], come [[Internet Explorer]].
 
Una [[pagina web]] contenente qualcosa non interpretabile da tutti i browser come i filmati [[Macromedia Flash]] è ancora multipiattaforma se è navigabile anche da chi non possiede lo speciale [[plugin (informatica)|plugin]]. Per esempio, con l'aggiunta di immagini a sostituire un contenuto multimediale.
 
L'accessibilità web multipiattaforma richiede la conoscenza di standard tecnici, se una pagina è accessibile da vari sistemi come [[screen reader]], browser basati sul [[Braille]] e piccoli dispositivi come [[Telefono cellulare|telefoni cellulari]] e [[palmare|PDA]].