Porting: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Folto82 (discussione | contributi)
Etichette: Modifica da mobile Modifica da web per mobile
 
(8 versioni intermedie di 6 utenti non mostrate)
Riga 1:
{{F|programmazione|febbraio 2013}}
LaIl '''portabilità''porting''''', (intermine [[lingua inglese|inglese]] '''porting'''), in [[informatica]], indicaè un processo di trasposizione, a volte anche con modifiche, di un componente [[software]], volto a consentirne l'uso in ununa [[ambientepiattaforma di esecuzione(informatica)|piattaforma]] diversodiversa da quelloquella originale. DueSi attivitàeffettua collegate con ilun porting, maquando distinteil dasoftware esso,viene sonoin l'[[emulatore|emulazione]]qualche emodo laadattato, compilazionenon incrociataquando oil [[cross-compilazionecodice sorgente]]. Aviene voltecompletamente con tale termine si indicariscritto in manieraun più generale possibile l'indipendenza in fase dialtro [[esecuzionelinguaggio (informatica)|esecuzione]]di dalla [[piattaforma (informatica)|piattaformaprogrammazione]] [[hardware]] e/o software di esecuzione.
 
La '''portabilità''' è la caratteristica di un software (detto quindi '''portabile''') di poter essere facilmente sottoposto a porting, con un impegno decisamente inferiore rispetto a quello che costerebbe ricreare da zero le stesse funzionalità nelle nuove piattaforme. A volte con portabilità si indica in maniera più generale possibile l'indipendenza in fase di [[esecuzione (informatica)|esecuzione]] dalla piattaforma utilizzata.
 
Due attività collegate con il porting, ma distinte da esso, sono l'[[emulatore|emulazione]] e la compilazione incrociata o [[cross-compilazione]].
 
==Descrizione==
Riga 9 ⟶ 13:
Nello scenario odierno, in cui calcolatori di ogni tipo sono in grado di comunicare e scambiarsi dati e programmi attraverso [[Internet]], la ''portabilità'' rappresenta un fattore spesso decisivo nella scelta di tecnologie, metodologie e strumenti per la produzione del software. Allo stesso tempo, l'emergere di standard come quelli promulgati da [[ISO]] e [[ANSI]] (p.es. riguardo a formati di archiviazione dati o [[linguaggio di programmazione|linguaggi di programmazione]]), e la conseguente convergenza di tecnologie e sistemi informatici rispetto ad almeno alcuni aspetti del loro funzionamento, gioca evidentemente a favore della portabilità del software in generale.
 
EsistonoEsiste un gran numero di strumenti che aiutano il porting, come [[GNU Compiler Collection|GCC]], che permette di compilare diversi linguaggi sotto diverse architetture, e [[autoconf]], che prima della compilazione, automatizza la ricerca di quelle piccole differenze che potrebbero impedire di compilare il sorgente e adatta di conseguenza il programma.
 
=== Cause ===
Riga 23 ⟶ 27:
La portabilità dei programmi dipende essenzialmente dal [[linguaggio di programmazione]] usato. Alcuni linguaggi non si possono considerare ''portabili'' (ovvero non consentono la scrittura di programmi portabili) per il semplice motivo che per alcuni ambienti non esiste un [[interprete (informatica)|interprete]] o [[compilatore]] del linguaggio; oppure perché i compilatori o interpreti disponibili in diversi ambienti presentano alcune differenze più o meno sottili relativamente alla [[sintassi]] che accettano o alla [[semantica (informatica)|semantica]] che attribuiscono ad alcuni costrutti; cosicché, un programma che funziona correttamente su una macchina potrebbe esibire dei malfunzionamenti più o meno gravi, o addirittura [[compilatore|non compilare]], su un'altra.
 
Quest'ultimo problema può essere risolto pubblicando uno [[norma (tecnologia)tecnica|standard]] del linguaggio, ovvero una sua descrizione il più possibile precisa e non ambigua, eventualmente gestita da un ente "autorevole" che abbia il compito di certificare l'aderenza di [[compilatore|compilatori]] e interpreti a tale descrizione. Un esempio celebre in questo senso è data dal [[linguaggio C]], di cui hanno fornito uno standard prima [[ANSI]] e poi [[ISO]]. Di conseguenza, i programmi C sono portabili nel senso che possono essere [[compilatore|compilati]] in un qualsiasi ambiente (grazie all'[[Application programming interface|API]] comune), ottenendo programmi in [[linguaggio macchina]] ovviamente diversi ma che esibiscono un comportamento [[semantica (informatica)|semanticamente]] equivalente.
 
Si osservi che nonostante il C e il C++ siano linguaggi portabili, la diversità dei compilatori dei due linguaggi di programmazione pone una serie di problemi alla portabilità. Il solo fatto di avere un programma in C oppure in C++ non garantisce la portabilità del medesimo e quindi spesso bisogna fare uno sforzo aggiuntivo per superare le differenze tra i due sistemi e tra i compilatori.
 
Una forma più radicale di portabilità viene fornita dai linguaggi interpretati, ovviamente sotto la condizione che esistano interpreti per i diversi ambienti di interesse, e che questi interpreti esibiscano un comportamento equivalente (p.es. conforme a uno standard). In questo caso, il "porting" di un programma non richiede neppure ricompilazione. È per esempio il caso di [[Java (linguaggio di programmazione)|Java]]; il software Java può essere eseguito in qualunque ambiente in cui sia installata la cosiddetta macchina virtuale Java (più precisamente il JRE, ''Java Runtime Environment'', scaricabile gratuitamente dal sito internet della Oracle). Altro aspetto della portabilità Java è quello che rende possibile l'inserimento di piccoli programmi Java ([[applet]]) all'interno di [[pagina Web|pagine Web]] destinate a essere visualizzate da diversi [[Web browser|browser]] in esecuzione su macchine completamente diverse.
 
==Voci correlate==
==Il ''port'' dei videogiochi==
* [[Emulatore]]
* [[Cross-compilazione]]
* [[Multipiattaforma]]
* [[Programmazione (informatica)]]
* [[Software]]
* [[Stub (informatica)|Stub]]
 
== Collegamenti esterni ==
Port indica anche quelle versioni di [[videogioco|videogiochi]] che, scritte per poter essere eseguite su una certa piattaforma, vengono convertite per poterle eseguire su altre (per esempio passando da una [[Console (videogiochi)|console]] per videogiochi a un [[computer]]). I primi port di videogiochi erano comunque vere e proprie riscritture del codice; in tempi recenti si preferisce invece scrivere e sviluppare il gioco utilizzando programmi capaci di emettere [[codice sorgente]] sia per [[computer]] che per console, delegando quindi l'operazione di porting a tali programmi.
* {{FOLDOC}}
 
{{portale|Informaticainformatica}}
===Arcade perfect===
Arcade perfect è un termine utilizzato per descrivere [[videogioco|videogiochi]] per varie piattaforme realizzati praticamente "copiando" la versione [[videogioco arcade|arcade]], senza alterare alcunché. Questo significa che [[grafica]], [[suono|sonoro]] e giocabilità, assieme a tutte le altre caratteristiche del gioco, sono identiche alla versione arcade.
 
Si tratta dunque di porting, la conversione del programma originale per una nuova piattaforma, e non di [[Emulatore|emulazione]] vera e propria come avviene, ad esempio, con [[MAME]].
 
==Voci correlate==
* [[Emulatore]]
* [[Cross-compilazione]]
* [[Multipiattaforma]]
* [[Programmazione (informatica)]]
* [[Software]]
* [[Stub (informatica)|Stub]]
* [[PDF]]
 
{{portale|Informatica}}
 
[[Categoria:Concetti di programmazione]]
 
[[de:Portierung]]
[[es:Portabilidad]]