Почему выходные данные компилятора называются объектным кодом?

13

Из эссе « Языки программирования», объясненного Полом Грэмом, опубликованным в Hackers & Painters :

Язык высокого уровня, которым вы снабжаете компилятор, также известен как исходный код , а генерируемый им перевод машинного языка называется объектным кодом .

Из статьи Википедии об объектном коде :

Объектный код или иногда объектный модуль - это то, что создает компьютерный компилятор.

Из определения «компилятор» :

Традиционно выходные данные компиляции называются объектным кодом или иногда объектным модулем. (Обратите внимание, что термин «объект» здесь не связан с объектно-ориентированным программированием.)

Так что это термин объект , связанный с?

Михель ван Остерхаут
источник
2
Обратите внимание, что компилятор не должен генерировать машинный код. Обычно уровень абстракции ниже, в противном случае его обычно называют переводчиком.
2
Первые два человека, которые должны были общаться друг с другом об объектном коде , не знали, как его назвать, поэтому они приняли очень общий термин.
Семай
Хорошие люди в RetroComputing.SE могут лучше понять это.
Роджер

Ответы:

10

Объектный код иногда также называют целевым кодом, потому что он является целевым результатом процесса перевода, выполняемого компиляторами. Таким образом, «объектный код» используется как противоположность «исходного кода».

В мире компиляторов есть и другие странные имена: например, сегмент файла с двоичным кодом вашей программы часто называют «текстовым сегментом».

dasblinkenlight
источник
1
Есть идеи, почему это называется «текст»? Как в историческом происхождении?
Нильсбот
@nielsbot: я думаю, что просто, в отличие от «сегмента данных», где хранятся переменные, «текстовый сегмент» содержит то, что было изначально (до компиляции) текстом, а именно код программы.
Майкл Боргвардт
8

Это объект как в «цели». Не объект как «вещь».

Аналогично ответу dasblinkenlight о том, что его называют «целевой код». Это цель или задача компилятора.

mike30
источник
1
Не уверен, что я согласен с этим.
Мартин Йорк,
1
Звучит о праве на меня. Это всегда упоминалось в контексте цели компилятора.
Лорд Тидус
Да, это правильный ответ. Он отражает то, как он работает в предложении, где глагол представляет компилятор ( исполнитель ), субъект является исходным кодом, а объект является целью или результатом этого действия (компиляции). Следовательно, «субъектный код» является источником (который подвергается компиляции, как его «субъект»), в то время как «объектный код» является целью («целью» компиляции).
BarbaraKwarc
1

Объектный код создается при компиляции исходного кода. Этот объектный код еще не является исполняемым, поскольку для его работы не требуются библиотеки. Таким образом, вы связываете несколько объектных кодов и библиотек, и он становится исполняемым.

В моем понимании « объект » относится к «вещи», которую вы разработали, написав этот исходный код. Это может быть модуль, класс, функция или что угодно.

Мерт Акчакая
источник
-1

Код объекта принадлежит объектному файлу .

Термин « объект» в ранних компьютерных науках не относится к «цели» (иначе «цель»), но вместо этого подчеркивает свойство объектов быть легко узнаваемыми, отличными друг от друга. Обычные объекты легко определить и обсудить, потому что они имеют границы. В отличие от тумана ...

Виртуальные объекты - это контейнеры данных.

Дело не в том, что вы садитесь и пишете какой-то код, а в некотором смысле как объектный код . Нет, вы садитесь читать требования ELF, COFF, XCOFF (общие форматы объектных файлов) и, если ваш код соответствует этим требованиям, он становится, как вы говорите, объектным кодом .

Jubei
источник
-3

Обычно ученики понимают язык низкого уровня, или программа, написанная на языке низкого уровня, называется «объектный код». Существует проблема, чтобы понять, почему вывод компилятора называется объектным кодом. Обычно вывод называется target, который компилируется компилятором. Это цель исходного кода. Не имеет значения, что объектный код является языковой программой низкого уровня. Он просто генерирует цель, поэтому цель связана с целью и задачей исходного кода, который компилируется компилятором, и поэтому выходные данные компилятора обычно называют «объектным кодом». Потому что низкий язык не компилируется компилятором. Низкий уровень языка есть там на переводчике, как «Ассемблер» или «переводчик».

Тасавар Хуссейн Раторр
источник