Kluczowa różnica między programem źródłowym a programem obiektowym polega na tym, że program źródłowy jest programem czytelnym dla człowieka napisanym przez programistę, podczas gdy program obiektowy to program wykonywalny maszynowo utworzony przez kompilację programu źródłowego.
Programy źródłowe mogą być kompilowane lub interpretowane w celu wykonania. Dekompilatory pomagają konwertować programy obiektowe z powrotem do oryginalnych programów źródłowych. Należy zauważyć, że terminy program źródłowy i program obiektowy są używane jako terminy względne. Jeśli weźmiesz program do transformacji programu (jak kompilator), to, co wchodzi, jest programem źródłowym, a to, co wychodzi, jest programem obiektowym. Dlatego program obiektowy stworzony przez jedno narzędzie może stać się plikiem źródłowym dla innego narzędzia.
Co to jest program źródłowy?
Programista pisze program źródłowy w języku wyższego poziomu. Dlatego jest łatwo czytelny dla ludzi. Programy źródłowe zazwyczaj zawierają znaczące nazwy zmiennych i pomocne komentarze, aby uczynić je bardziej czytelnymi. Maszyna nie może bezpośrednio wykonać programu źródłowego. Kompilator pomaga przekształcić program źródłowy w kod wykonywalny do wykonania przez maszynę. Alternatywnie jest skorzystanie z tłumacza. Wykonuje program źródłowy wiersz po wierszu bez wstępnej kompilacji.
Rysunek 01: Program źródłowy
Visual Basic jest przykładem języka kompilowanego, natomiast Java jest przykładem języka interpretowanego. Pliki źródłowe Visual Basic (pliki.vb) są kompilowane do kodu.exe, natomiast pliki źródłowe Java (pliki.java) są najpierw kompilowane (za pomocą polecenia javac) do kodu bajtowego (kod wynikowy zawarty w plikach.class), a następnie interpretowane za pomocą interpreter java (za pomocą polecenia java). Gdy aplikacje są rozpowszechniane, zazwyczaj nie zawierają plików źródłowych. Jeśli jednak aplikacja jest open source, źródło jest również dystrybuowane, a użytkownik może również zobaczyć i zmodyfikować kod źródłowy.
Co to jest program obiektowy?
Program obiektowy jest zwykle plikiem wykonywalnym maszyny, który jest wynikiem kompilacji pliku źródłowego za pomocą kompilatora. Oprócz instrukcji maszynowych mogą one zawierać informacje dotyczące debugowania, symbole, informacje o stosie, informacje o relokacji i profilowaniu. Ponieważ zawierają instrukcje w kodzie maszynowym, nie są łatwe do odczytania przez ludzi. Ale czasami programy obiektowe odwołują się do obiektu pośredniego między plikami źródłowymi a wykonywalnymi.
Narzędzia znane jako konsolidatory pomagają połączyć zestaw obiektów w plik wykonywalny (np. język C). Jak wspomniano powyżej, pliki.exe i pliki kodu bajtowego są plikami obiektowymi utworzonymi odpowiednio przy użyciu Visual Basic i Java. Pliki.exe są wykonywane bezpośrednio na platformie Windows, podczas gdy pliki kodu bajtowego wymagają do wykonania interpretera.
Większość aplikacji jest rozpowszechniana tylko z plikami obiektowymi lub wykonywalnymi. Możliwe jest przekonwertowanie obiektu lub plików wykonywalnych z powrotem do oryginalnych plików źródłowych poprzez dekompilację. Na przykład narzędzia dekompilujące mogą dekompilować pliki java.class (kod bajtowy) do oryginalnych plików.java.
Jaka jest różnica między programem źródłowym a programem obiektowym?
Program źródłowy to program czytelny dla człowieka napisany przez programistę. Jest napisany w językach wyższego poziomu, takich jak Java lub C. Dlatego program źródłowy jest czytelny dla człowieka. Nie jest to zrozumiałe dla maszyny.
Z drugiej strony program obiektowy to program wykonywalny maszynowo utworzony po skompilowaniu programu źródłowego. Zawiera języki niższego poziomu, takie jak asembler lub kod maszynowy. Dlatego program obiektowy nie jest czytelny dla człowieka. Jest to zrozumiałe dla maszyny.
Podsumowanie – Program źródłowy a program obiektowy
Różnica między programem źródłowym a programem obiektowym polega na tym, że program źródłowy jest programem czytelnym dla człowieka napisanym przez programistę, podczas gdy program obiektowy jest programem wykonywalnym maszynowo utworzonym przez kompilację programu źródłowego.