Portability
Svět počítačů není jednotný. Právě naopak - můžeme se v něm setkat s mnoha různými počítači, které se liší svou celkovou architekturou, které jsou vybaveny různými procesory, a tudíž i různými soubory strojových instrukcí, které mají jinak organizovanou operační paměť, jiným způsobem přistupují ke svým periferiím a mohou se lišit ještě v mnoha a mnoha dalších aspektech.
I když si ale někdo pořídí počítač jednoho a téhož typu, se stejnou architekturou, stejným procesorem a dalšími náležitostmi, může si na něm vytvořit diametrálně odlišné pracovní prostředí - podle toho, jaký operační systém se rozhodne na svém počítači provozovat. Například běžný uživatel, zvyklý na počítače standardu IBM PC a operační systém MS DOS, si nejspíše bude připadat jako v úplně jiném světě, když mu někdo na stejném počítači najednou spustí některou z příchutí operačního systému Unix (například SCO Unix, Linux apod.).
Ale to ještě není zdaleka všemu konec. Když se někdo naučí psát programy v Basicu, nebo dokonce programovat v některém vyšším programovacím jazyku, a náhle ho někdo postaví před jiný překladač téhož jazyka, mohou mu nastat nemalé potíže - bude-li se pokoušet přinést s sebou programy napsané původně pro jiný překladač, operační systém a počítač a bude-li je chtít mechanicky, bez jakékoli úpravy, přeložit, spustit a používat i na jiném počítači, pod jiným operačním systémem, s pomocí jiného překladače (byť stejného programovacího jazyka). Zjistí totiž, že snad každá implementace jednoho a téhož jazyka se v něčem liší - někdy jen v syntaktických drobnostech, jindy mnohem podstatněji. Ještě závažnější však může být i přizpůsobení novému prostředí, protože každý operační systém může mít své představy o tom, jak se mají jednotlivé programy chovat, jakým způsobem mají operačnímu systému dávat najevo, že od něj něco chtějí atd. Takže vzato kolem a kolem, přenést jednou napsaný a odladěný program na jiný počítač nemusí být žádná legrace - často to dá opravdu hodně práce, i když je k dispozici dostatečně "průhledný" zdrojový tvar programu.
Přesto se ale lidé právě o tohle snaží: mají-li nějakou aplikaci, systémovou utilitu, či dokonce celý operační systém, usilují o to, aby jej mohli přenést a provozovat i na jiných počítačích, či alespoň na stejných počítačích, ale pod různými operačními systémy. Míra složitosti, či naopak snadnosti, s jakou tak činí, vyjadřuje úroveň tzv. přenositelnosti (anglicky: portability) programového celku.
Vysokou míru přenositelnosti vykazují programy napsané v takovém jazyku, pro který existuje vhodný překladač na co nejvíce různých počítačích a pod co možná nejvíce operačními systémy. V dnešní době jsou na tom velmi dobře programy psané v jazyku C - překladač tohoto jazyka je totiž dostupný snad opravdu všude. Samotná existence překladače na různých platformách však ještě zdaleka nemusí znamenat snadnou portabilitu - chápeme-li přenositelnost skutečně jako míru práce, kterou dá přenést něco odněkud někam jinak, a nikoli jako principiální možnost přenosu co nejvíce "do šířky", na co možná nejvíce různých počítačů a operačních systémů.
Absolutní portabilita, která by znamenala možnost přenosu programů ve spustitelném tvaru bez jakýchkoli úprav, zřejmě nikdy nebude existovat - přesto je a zřejmě vždy bude snem všech producentů softwaru, kteří vehementně usilují alespoň o to, této vysněné metě se přiblížit.