Чому вихід компілятора називається об'єктним кодом?


13

З есеї Мови програмування, пояснені Полом Гремом, опубліковані в « Хакерах і живописцях» :

Мова високого рівня, якою ви подаєте компілятор, також відома як вихідний код , а машинний переклад, який він створює, називається об'єктним кодом .

З статті Вікіпедії про об'єктний код :

Об'єктний код або іноді об'єктний модуль - це те, що виробляє комп'ютерний компілятор.

З визначення "компілятора" :

Традиційно вихід компіляції називають об'єктним кодом або іноді об'єктним модулем. (Зауважте, що термін "об'єкт" тут не пов'язаний з об'єктно-орієнтованим програмуванням.)

То з чим пов’язаний термін об’єкт?


2
Зауважте, що компілятору не потрібно генерувати машинний код. Зазвичай існує нижчий рівень абстракції, інакше його зазвичай називають перекладачем.

2
Перші двоє людей, яким довелося спілкуватися один з одним щодо об'єктного коду , не знали, як його називати, тому вони прийняли дуже загальний термін.
semaj

Хороші люди в RetroComputing.SE могли б краще зрозуміти це.
Роджер

Відповіді:


10

Код об'єкта іноді також називають цільовим кодом, оскільки він є цільовим результатом процесу перекладу, який виконують компілятори. Тож "об'єктний код" використовується як протилежний "вихідному коду".

У світі компілятора є й інші дивні імена: наприклад, сегмент файлу з двійковим кодом вашої програми часто називають "текстовим сегментом".


1
Будь-яка ідея, чому це називається "текст"? Як за історичним походженням?
nielsbot

@nielsbot: Я думаю, що це просто те, що на відміну від "сегмента даних", де зберігаються змінні, "текстовий сегмент" містить те, що було спочатку (до компіляції) тексту, а саме код програми.
Майкл Боргвардт

8

Це об'єкт як в "об'єктивному". Не об’єкт як "річ".

Схожа на відповідь dasblinkenlight про те, що називається "кодом цілі". Це ціль або мета компілятора.


1
Не впевнений, що я з цим згоден.
Мартін Йорк

1
Звучить правильно для мене. Це завжди посилалося на контекст цілі компілятора.
Лорд Тидус

Так, це правильна відповідь. Він відображає, як він працює в реченні, де дієслово представляє компілятор ( doer ), предмет - вихідний код, а об'єкт - ціль або результат цієї дії (компіляції). Отже, "предметний код" є джерелом (який підлягає компіляції як його "предмет"), а "об'єктний код" - цільовим ("об'єктивним" компіляції).
BarbaraKwarc

1

Об'єктний код створюється при складанні вихідного коду. Цей об'єктний код ще не виконується, тому що для його запуску не потрібні бібліотеки. Таким чином, ви зв'язуєте декілька об'єктних кодів і бібліотек, і він стає виконуваним.

На моє розуміння, " об'єкт " стосується "речі", яку ви розробили, написавши цей вихідний код. Це може бути модуль, клас, функція чи що завгодно.


-1

Код об'єкта належить до файлу об'єктів .

Термін " Об'єкт у ранній інформатиці" не відноситься до "об'єктивного" (він же "цільовий"), але натомість підкреслює властивість об'єктів бути легко впізнаваними, відмінними один від одного. Звичайні об’єкти легко визначити і говорити про них, оскільки вони мають межі. На відміну від туману ...

Віртуальні об'єкти є контейнерами даних.

Справа не в тому, що ви сідаєте і пишете якийсь код, а це якось об'єктний код . Ні, ви сідаєте читати вимоги ELF, COFF, XCOFF (загальні формати файлів об'єктів), і якщо ваш код відповідає цим вимогам, він стає об'єктним кодом, як ви говорите.


-3

Зазвичай студенти розуміють мову низького рівня або програму, написану мовою низького рівня, називають "об'єктним кодом". Існує проблема, щоб зрозуміти, чому вихід компілятора називається об'єктним кодом. Загальний вихід називається цільовим, який складається компілятором. Це об'єктивний код вихідного коду. Немає сенсу, що об'єктним кодом є мовна програма низького рівня. Просто воно генерує ціль, тому ціль стосується цілі та мети вихідного коду, який складається компілятором, і тому вихід компілятора зазвичай називається "об'єктним кодом". Тому що низька мова не компілюється компілятором. Мова низького рівня є на такому перекладачі, як "Асемблер" або "Перекладач".

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.