Web Analytics
Privacy Policy Cookie Policy Terms and Conditions Portabilità - Wikipedia

Portabilità

Da Wikipedia, l'enciclopedia libera.

In informatica, la portabilità di un componente software è un adattamento o una modifica del componente, volto a consentirne l'uso in un ambiente di esecuzione diverso da quello originale. L'operazione di porting, cioè la creazione (scrittura) di un port, è solitamente richiesta a causa delle differenze tra le CPU, dalle diverse interfacce (API) dei sistemi operativi, dalla diversità dell'hardware o per delle sottili incompatibilità dell'implementazione del linguaggio di programmazione sull'ambiente target (quello su cui deve essere compilato il programma).

Il porting può essere un'attività complessa e costosa; ciò dipende dalla "distanza" tecnologica fra l'ambiente di origine e l'ambiente di destinazione, dal tipo di componente software da "portare", e dagli strumenti con cui esso è stato costruito.

Un componente software è portabile se eseguirne il porting è semplice (e quindi poco costoso); in questo senso, la portabilità si può considerare un caso particolare di riusabilità del software. Il caso limite è quello in cui un componente software può essere riutilizzato su diverse piattaforme senza che questo comporti alcuna modifica: oggi si tende a usare il termine portabilità proprio in quest'ultima accezione. 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 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. Esistono un gran numero di strumenti che aiutano il porting, come 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.

Due attività collegate con il porting ma distinte da esso sono l'emulazione e la compilazione incrociata o cross-compiling.


Benché vi siano numerose sfumature nel significato che si attribuisce al termine "portabilità" in diversi contesti, vale la pena enfatizzarne almeno due: la portabilità dei dati e la portabilità dei programmi.

[modifica] Portabilità dei dati

Dipende dal formato in cui i dati sono archiviati su file. Per esempio, un file di testo memorizzato come sequenza di codici ASCII si considera generalmente portabile, in quanto questo tipo di codifica è oggi (quasi) universalmente adottata dai costruttori di calcolatori.

[modifica] Portabilità dei programmi

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 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 che attribuiscono ad alcuni costrutti; cosicché, un programma che funziona correttamente su una macchina potrebbe esibire dei malfunzionamenti più o meno gravi, o addirittura non compilare, su un'altra. Quest'ultimo problema può essere risolto pubblicando uno 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 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 compilati in un qualsiasi ambiente (grazie all' API comune), ottenendo programmi in linguaggio macchina ovviamente diversi ma che esibiscono un comportamento semanticamente equivalente.

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; il software Java può essere eseguito in un qualunque ambiente, cosa che ha reso possibile l'inserimento di piccoli programmi Java (applet) all'interno di pagine Web destinate a essere visualizzate da diversi browser in esecuzione su macchine completamente diverse.

[modifica] Il port dei videogiochi

Port indica anche quelle versioni di videogiochi che, scritte per poter essere eseguite su una certa piattaforma, vengono convertite per poterle eseguire su altre (per esempio passando da una consolle 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 consolle, delegando quindi l'operazione di porting a tali programmi.

THIS WEB:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia 2006:

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - be - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - closed_zh_tw - co - cr - cs - csb - cu - cv - cy - da - de - diq - dv - dz - ee - el - eml - en - eo - es - et - eu - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gd - gl - glk - gn - got - gu - gv - ha - haw - he - hi - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mg - mh - mi - mk - ml - mn - mo - mr - ms - mt - mus - my - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - rm - rmy - rn - ro - roa_rup - roa_tara - ru - ru_sib - rw - sa - sc - scn - sco - sd - se - searchcom - sg - sh - si - simple - sk - sl - sm - sn - so - sq - sr - ss - st - su - sv - sw - ta - te - test - tet - tg - th - ti - tk - tl - tlh - tn - to - tokipona - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu