cosa significa software nativo?

cosa significa software nativo?

per nativo prima di tutto si intende codice compilato, quindi niente java, python, etc

I compilatori per linguaggi come C e C++ trasformano il programma sorgente in linguaggio macchina, direttamente interpretabile dal processore. In questo caso si parla di programmi "nativi".

Java, Python, C# e gli altri linguaggi .Net, Gambas, ecc. sono invece linguaggi che funzionano attraverso degli interpreti o macchine virtuali. Il codice sorgente non viene compilato in linguaggio macchina, ma al limite in un linguaggio intermedio che poi viene eseguito da un apposito programma (interprete o virtual machine).
Sono più lenti ma hanno il vantaggio di poter girare su tutte le piattaforme senza dover essere ricompilati e spesso senza il bisogno di modificare il codice sorgente.

Esistono vari "livelli", vi sono linguaggi di basso e di alto livello, tutta quella "gran cerchia" di Java & Co. sono di alto livello.

Più il linguaggio è di basso livello, maggiori sono le difficoltà nel scriverlo. Direttamente proporzionale sono invece le caratteristiche che quel dato programma può avere dato che non ha intermediari e parla direttamente con l'hardware (linguaggio "macchina", appunto). La "personalizzazione" può diventare talmente estrema che un programma può girare soltanto sull'hardware per il quale è stato scritto.

La distinzione alto/basso livello prescinde dal fatto che il linguaggio sia compilato nativamente o meno.

C++ è un linguaggio ad alto livello ma è compilato nativamente.

per poter far girare un programma in java ovunque, e quindi renderlo portabile, ho bisogno di una JVM (Java Virtual Machine) e quindi un interprete.
Per il C++, questa non c'è, però se lo stesso programma lo compilo con gcc o con borland, non considerando problemi legati a differenti processori, ottengo comunque lo stesso risultato.

chiarito, il concetto di macchina virtuale, ma non capisco perchè sia indispensabile visto che in un certo senso anche il C++ è portabile

il programma C++ lo devi ricompilare. Quello Java no

ad esempio, gli IDE (Ambienti per lo Sviluppo), perchè ad esempio codeblocks è un IDE nativo e Netbeans no?

perché netbeans è scritto in java e quindi necessita di una virtual machine per girare, mentre code:.:blocks è compilato per diverse piattaforme (compreso GNU/Linux)

nell'ambito della portabilità, il codice scritto in C++ dal programmatore con il codice compilato.

in pratica, per il C++ è trasportabile il codice scritto dal programmatore, ma non è trasportabile l'eseguibile.
per i linguaggi tipo Java, è portabile il codice compilato, in quanto gira su una JVM. Certo!

About Post Author

pasquale.clarizio

error: Content is protected !!
Advertisment ad adsense adlogger