Dlaczego dane wyjściowe kompilatora nazywa się kodem obiektowym?


13

Z eseju Języki programowania wyjaśnione przez Paula Grahama, opublikowanego w Hackers & Painters :

Język wysokiego poziomu, który podajesz kompilatorowi, jest również znany jako kod źródłowy , a generowane przez niego tłumaczenie języka maszynowego nazywa się kodem obiektowym .

Z artykułu w Wikipedii na temat kodu obiektowego :

Kod obiektowy, a czasem moduł obiektowy, jest tym, co wytwarza kompilator komputerowy.

Z definicji „kompilatora” :

Tradycyjnie wynik kompilacji nazywany jest kodem obiektowym, a czasem modułem obiektowym. (Należy zauważyć, że termin „obiekt” tutaj nie jest związany z programowaniem obiektowym).

Jaki jest zatem termin obiekt?


2
Zauważ, że kompilator nie musi generować kodu maszynowego. Zwykle ma się niższy poziom abstrakcji, w przeciwnym razie zwykle nazywa się to tłumaczem.

2
Pierwsze dwie osoby, które musiały się ze sobą komunikować na temat kodu obiektowego, nie wiedziały, jak go nazwać, więc przyjęły bardzo ogólny termin.
semaj

Dobrzy ludzie w RetroComputing.SE mogą mieć lepszy wgląd w to.
Roger

Odpowiedzi:


10

Kod obiektowy jest czasem nazywany także kodem docelowym , ponieważ jest to docelowy wynik procesu tłumaczenia wykonywanego przez kompilatory. Zatem „kod obiektu” jest używany jako przeciwieństwo „kodu źródłowego”.

Istnieją inne dziwne nazwy w świecie kompilatorów: na przykład segment pliku z kodem binarnym twojego programu jest często nazywany „segmentem tekstowym”.


1
Wiesz, dlaczego to się nazywa „tekst”? Jak w historycznym pochodzeniu?
nielsbot

@nielsbot: Myślę, że po prostu w przeciwieństwie do „segmentu danych”, w którym przechowywane są zmienne, „segment tekstowy” zawiera tekst pierwotnie (przed kompilacją), a mianowicie kod programu.
Michael Borgwardt,

8

Jest to obiekt jak w „celu”. Nie sprzeciwiać się jako „rzecz”.

Podobne do odpowiedzi dasblinkenlight o byciu nazywanym „kodem docelowym”. Jest to cel lub cel kompilatora.


1
Nie jestem pewien, czy się z tym zgadzam.
Martin York,

1
Brzmi dobrze. Zawsze było o tym mowa w kontekście celu kompilatora.
Lord Tydus

Tak, to właściwa odpowiedź. Odzwierciedla to, jak to działa w zdaniu, gdzie czasownik reprezentuje kompilator ( wykonujący ), podmiot jest kodem źródłowym, a obiekt jest celem lub wynikiem tej akcji (kompilacji). Stąd „kod podmiotowy” jest źródłem (który podlega kompilacji, jako „podmiot”), podczas gdy „kod obiektowy” jest celem („celem” kompilacji).
BarbaraKwarc

1

Kod obiektowy powstaje podczas kompilacji kodu źródłowego. Ten kod obiektowy nie jest jeszcze wykonywalny, ponieważ nie ma wymaganych bibliotek do uruchomienia. Łącząc wiele kodów obiektów i bibliotek, staje się on plikiem wykonywalnym.

W moim rozumieniu „ obiekt ” odnosi się do „rzeczy”, którą opracowałeś, pisząc ten kod źródłowy. Może to być moduł, klasa, funkcja lub cokolwiek innego.


-1

Kod obiektowy należy do pliku obiektowego .

Termin Obiekt we wczesnej informatyce nie odnosi się do „celu” (aka „celu”), ale podkreśla właściwość obiektów, które są łatwe do rozpoznania, odrębne od siebie. Zwykłe obiekty są łatwe do zdefiniowania i omówienia, ponieważ mają granice. W przeciwieństwie do mgły ...

Obiekty wirtualne to kontenery danych.

Nie chodzi o to, że siadasz i piszesz kod, a to w jakiś sposób Kod Obiektowy . Nie, siadasz, czytając wymagania ELF, COFF, XCOFF (popularne formaty plików obiektowych) i jeśli twój kod spełnia te wymagania, staje się kodem obiektowym, jak mówisz.


-3

Zwykle uczniowie rozumieją język niskiego poziomu lub program napisany w języku niskiego poziomu nazywa się „kodem obiektowym”. Problemem jest zrozumienie, dlaczego dane wyjściowe kompilatora nazywane są kodem obiektowym. Ogólne dane wyjściowe nazywane są celami, które są kompilowane przez kompilator. Jest to cel kodu źródłowego. Nie oznacza to, że kod obiektowy jest programem języka niskiego poziomu. Po prostu generuje cel, więc cel odnosi się do celu i celu kodu źródłowego, który jest kompilowany przez kompilator, i dlatego wyjście kompilatora jest zwykle nazywane „kodem obiektowym”. Ponieważ niski język nie jest kompilowany przez kompilator. Język niskiego poziomu znajduje się na tłumaczach takich jak „asembler” lub „tłumacz”.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.