La diferència clau entre el programa font i el programa objecte és que el programa font és un programa llegible pels humans escrit per un programador mentre que el programa objecte és un programa executable per màquina creat compilant un programa font.
Els programes font es poden compilar o interpretar per a l'execució. Descompiladors ajuda a convertir els programes d'objectes als seus programes font originals. És important tenir en compte que els termes programa font i programa objecte s'utilitzen com a termes relatius. Si prens un programa de transformació de programa (com un compilador), el que entra és un programa font i el que surt és un programa objecte. Per tant, un programa objecte produït per una eina pot convertir-se en un fitxer font per a una altra eina.
Què és el programa font?
El programador escriu el programa font utilitzant un llenguatge de nivell superior. Per tant, és fàcilment llegible pels humans. Els programes font solen contenir noms de variables significatius i comentaris útils per fer-lo més llegible. Una màquina no pot executar directament un programa font. Un compilador ajuda a transformar el programa font en codi executable per executar-lo per la màquina. Alternativament, és utilitzar un intèrpret. Executa un programa font línia per línia sense precompilació.
Figura 01: Un programa font
Visual Basic és un exemple de llenguatge compilat, mentre que Java és un exemple de llenguatge interpretat. Els fitxers font de Visual Basic (fitxers.vb) es compilen amb codi.exe, mentre que els fitxers font de Java (fitxers.java) primer es compilen (mitjançant l'ordre javac) a bytecode (un codi d'objecte contingut en fitxers.class) i després s'interpreten mitjançant la intèrpret de java (utilitzant l'ordre java). Quan es distribueixen aplicacions de programari, normalment no inclouran fitxers font. Tanmateix, si l'aplicació és de codi obert, la font també es distribueix i l'usuari també pot veure i modificar el codi font.
Què és el programa d'objectes?
El programa objecte sol ser un fitxer executable de màquina, que és el resultat de la compilació d'un fitxer font mitjançant un compilador. A part de les instruccions de la màquina, poden incloure informació de depuració, símbols, informació de pila, reubicació i informació de perfils. Com que contenen instruccions en codi màquina, no són fàcilment llegibles pels humans. Però de vegades, els programes d'objectes fan referència a un objecte intermedi entre els fitxers font i els executables.
Les eines conegudes com a enllaçadors ajuden a enllaçar un conjunt d'objectes a un executable (per exemple, llenguatge C). Com s'ha esmentat anteriorment, els fitxers.exe i bytecode són fitxers d'objectes produïts quan s'utilitza Visual Basic i Java respectivament. Els fitxers.exe s'executen directament a la plataforma Windows, mentre que els fitxers bytecode necessiten un intèrpret per a l'execució.
La majoria d'aplicacions de programari es distribueixen només amb l'objecte o els fitxers executables. És possible tornar a convertir l'objecte o els fitxers executables als fitxers font originals mitjançant la descompilació. Per exemple, les eines de descompilador poden descompilar fitxers java.class (codi de bytes) als seus fitxers.java originals.
Quina diferència hi ha entre el programa font i el programa objecte?
El programa font és un programa llegible per l'home escrit per un programador. Està escrit en llenguatges de nivell superior com Java o C. Per tant, un programa font és llegible per l'home. La màquina no l'entén.
D' altra banda, el programa Object és un programa executable de màquina creat després de compilar un programa font. Conté llenguatges de nivell inferior com ara codi d'assemblatge o màquina. Per tant, el programa objecte no és llegible per l'ésser humà. És comprensible per la màquina.
Resum: programa font vs programa objecte
La diferència entre el programa font i el programa objecte és que el programa font és un programa llegible per l'home escrit per un programador mentre que el programa objecte és un programa executable per màquina creat compilant un programa font.