Multipiattaforma: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
m alcuni link sistemati
Annullata la modifica 140998726 di Posleniibon (discussione) UPE spam
Etichetta: Annulla
 
(36 versioni intermedie di 28 utenti non mostrate)
Riga 1:
{{nd|il termine dei videogiochi online|Cross-platform (videogiochi)|Cross-platform}}
{{F|informatica|gennaio 2010}}
{{C|Oltre l'incipit, il resto della voce sembra una ricerca originale con considerazioni talvolta arbitrarie.|informatica|marzo 2019}}
'''Multipiattaforma''' può essere detto di un [[linguaggio di programmazione]], di un'applicazione [[software]] o di un dispositivo [[hardware]] che funziona su più di un [[sistema (informatica)|sistema]] o appunto, ''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]].
{{F|terminologia informatica|gennaio 2010}}
Il termine '''Multipiattaformamultipiattaforma''' in [[informatica]] 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]]).<ref>{{cita web|url=https://www.ehiweb.it/significato/c/cross_platform/|titolo=Significato di Cross platform|accesso=10 agosto 2020}}</ref> Esempi di linguaggi multipiattaforma sono: [[C (linguaggio)|C]], [[C++]], [[Java (linguaggio di programmazione)|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]]<nowiki> (gestione delle finestre, accesso allo all'</nowiki>''[[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 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.
 
Una soluzione comune è quella di realizzare una API intermedia, implementata in una [[libreriaLibreria (informaticasoftware)|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/>
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).
 
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).
 
Inoltre, per alcuni linguaggi, compilatori diversi rispettano in modo diverso o incompleto le [[Specifica|specifiche]] del linguaggio stesso; in questi casi potrebbe essere necessario fare maggiore attenzione nella scrittura del [[codice sorgente]] di un programma, prima di compilarlo su più sistemi.
 
==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 di programmazione)|Java]] della [[SunOracle MicrosystemsCorporation]], è 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 farifar 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 TextHypertext 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]].
 
==Multipiattaforma e Videogiochi==
{{vedi anche|Multipiattaforma (videogiochi)}}
In questo caso il sistema multipiattaforma si basa sul creare un codice sorgente unico che viene poi integrato con sezioni di codice specifico quando deve essere compilato per una determinata piattaforma, in alcuni casi possono verificarsi esigenze che richiedano un interfacciamento differente con i comandi in quanto non interscambiabili oppure integrare funzioni specifiche di una determinata piattaforma.
 
== Note ==
<references/>
 
==Voci correlate==
*[[Interoperabilità]]
 
== Altri progetti ==
{{interprogetto}}
 
== Collegamenti esterni ==
* {{FOLDOC|cross-platform|cross-platform}}
 
{{portale|informatica}}
 
[[Categoria:Terminologia informatica]]
[[Categoria:Software multipiattaforma| ]]
 
[[af:Kruisplatform]]
[[ar:متعدد المنصات]]
[[ast:Multiplataforma]]
[[ca:Multiplataforma]]
[[cs:Multiplatformní software]]
[[da:Platformsuafhængighed]]
[[de:Plattformunabhängigkeit]]
[[el:Ανεξάρτητο πλατφόρμας (λογισμικό)]]
[[en:Cross-platform]]
[[eo:Plursistema]]
[[es:Multiplataforma]]
[[eu:Plataforma-anitz]]
[[fa:چندسکویی]]
[[fi:Alustariippumattomuus]]
[[fr:Multiplate-forme]]
[[gl:Multiplataforma]]
[[hr:Više-platformski]]
[[hu:Platformfüggetlenség]]
[[id:Lintas platform]]
[[ja:クロスプラットフォーム]]
[[ko:크로스 플랫폼]]
[[lv:Vairākplatformu programmatūra]]
[[ms:Rentas-pelantar]]
[[nl:Multiplatform]]
[[no:Multiplattform]]
[[pl:Wieloplatformowość]]
[[pt:Multiplataforma]]
[[ro:Multiplatformă]]
[[ru:Кроссплатформенное программное обеспечение]]
[[simple:Cross-platform]]
[[sk:Viacplatformový softvér]]
[[sq:Ndër-platformik]]
[[sv:Multiplattform]]
[[th:หลายระบบปฏิบัติการ]]
[[tr:Çapraz platform yazılımları]]
[[uk:Багатоплатформність]]
[[vi:Đa nền tảng]]
[[zh:跨平台]]