Nella programmazione, cosa significa nativo?

Quando sviluppa software, il programmatore tende ad usare una particolare piattaforma di calcolo per fare il lavoro. Per esempio, uno potrebbe scegliere una piattaforma Linux x86 a 64-bit usando qualche distro come Debian, o uno potrebbe scegliere una particolare piattaforma PC Windows, o un Mac di qualche tipo. Il software che viene costruito nativamente verrà eseguito su quella particolare piattaforma. Potrebbe, ma non di solito, funzionare anche su altre piattaforme. Questo è generalmente vero per le applicazioni Java, poiché esse mirano alla Java Virtual Machine, e in linea di principio, qualsiasi piattaforma che ospiti una JVM potrebbe eseguire il software, indipendentemente dall'architettura dell'host di costruzione. Ma generalmente, in particolare per linguaggi compilati come C o C++, questo non è il caso.

Il caso contrastante sarebbe quello in cui un build host supporta lo sviluppo trasversale usando qualche tipo di toolchain trasversale. Un esempio potrebbe essere che uno sviluppatore usa una toolchain trasversale ospitata da Linux x86 per sviluppare codice per qualche sistema embedded che usa un'architettura CPU completamente diversa, come ARM, per esempio. Questo è abbastanza comune quando l'architettura di destinazione non supporta facilmente una toolchain nativa, a causa di vincoli di risorse come la memoria, lo stoccaggio, la velocità, ecc.

È anche possibile avere un sistema ibrido, chiamato una toolchain cross-nativa. Questo potrebbe essere qualcosa come una build host Linux x86 di qualche versione particolare, dove l'architettura di destinazione è un'altra architettura Linux x86. Questo è abbastanza raro, ed è un po' difficile da configurare correttamente.