ทำไมผลลัพธ์ของคอมไพเลอร์จึงเรียกว่า object code?


13

จากบทความการเขียนโปรแกรมภาษาอธิบายโดย Paul Graham เผยแพร่ในแฮกเกอร์ & จิตรกร :

ภาษาระดับสูงที่คุณกินคอมไพเลอร์ยังเป็นที่รู้จักกันเป็น รหัสที่มาและการแปลภาษาเครื่องจะสร้างเรียกว่ารหัสวัตถุ

จากบทความ Wikipedia เกี่ยวกับรหัสวัตถุ :

รหัสวัตถุหรือบางครั้งวัตถุโมดูลคือสิ่งที่คอมไพเลอร์คอมพิวเตอร์ผลิต

จากคำจำกัดความของ 'คอมไพเลอร์' :

ตามเนื้อผ้าเอาท์พุทของการรวบรวมได้รับการเรียกว่ารหัสวัตถุหรือบางครั้งโมดูลวัตถุ (โปรดทราบว่าคำว่า "object" ที่นี่ไม่เกี่ยวข้องกับการเขียนโปรแกรมเชิงวัตถุ)

ดังนั้นสิ่งที่เป็นวัตถุระยะที่เกี่ยวข้องกับ?


2
โปรดทราบว่าคอมไพเลอร์ไม่จำเป็นต้องสร้างรหัสเครื่อง เป็นธรรมเนียมที่ต้องมีระดับนามธรรมที่ต่ำกว่ามิฉะนั้นจะเรียกว่านักแปล

2
คนสองคนแรกที่ต้องสื่อสารกับคนอื่น ๆ เกี่ยวกับรหัสวัตถุ ไม่รู้ว่าจะเรียกมันว่าอะไรดังนั้นพวกเขาจึงนำคำศัพท์ทั่วไปมาใช้
Semaj

คนดี ๆ ใน RetroComputing.SE อาจมีความเข้าใจในเรื่องนี้ดีกว่า
Roger

คำตอบ:


10

รหัสวัตถุบางครั้งเรียกว่ารหัสเป้าหมายเนื่องจากเป็นผลลัพธ์เป้าหมายของกระบวนการแปลที่ดำเนินการโดยคอมไพเลอร์ ดังนั้น "object code" จึงถูกใช้แทน "source code"

มีชื่อแปลก ๆ ในโลกของคอมไพเลอร์: ตัวอย่างเช่นส่วนของไฟล์ที่มีรหัสไบนารี่ของโปรแกรมของคุณมักจะเรียกว่า "กลุ่มข้อความ"


1
มีความคิดว่าทำไมมันถึงเรียกว่า "ข้อความ"? ในฐานะที่เป็นแหล่งกำเนิดทางประวัติศาสตร์?
nielsbot

@ Nielsbot: ฉันคิดว่ามันเป็นเพียงที่ตรงกันข้ามกับ "ส่วนข้อมูล" ที่เก็บตัวแปร "ส่วนข้อความ" มีสิ่งที่เดิม (ก่อนการรวบรวม) ข้อความคือรหัสของโปรแกรม
Michael Borgwardt

8

มันเป็นวัตถุใน "วัตถุประสงค์" ไม่คัดค้านว่าเป็น "สิ่งของ"

คล้ายกับคำตอบของ dasblinkenlight เกี่ยวกับการถูกเรียกว่า "รหัสเป้าหมาย" มันเป็นเป้าหมายหรือวัตถุประสงค์ของคอมไพเลอร์


1
ไม่แน่ใจว่าฉันเห็นด้วยกับที่
Martin York

1
ฟังดูถูกต้องสำหรับฉัน มันถูกอ้างถึงเสมอในบริบทของวัตถุประสงค์ของคอมไพเลอร์
ลอร์ด Tydus

ใช่นี่คือคำตอบที่ถูก มันสะท้อนให้เห็นถึงวิธีการทำงานในประโยคที่คำกริยาหมายถึงคอมไพเลอร์ ( ผู้กระทำ ) เรื่องคือรหัสแหล่งที่มาและวัตถุเป็นเป้าหมายหรือผลของการกระทำนั้น (รวบรวม) ดังนั้น "รหัสวิชา" คือแหล่งที่มา (ที่ผ่านการรวบรวมเป็น "หัวเรื่อง") ในขณะที่ "รหัสวัตถุ" เป็นเป้าหมาย ("วัตถุประสงค์" ของการรวบรวม)
BarbaraKwarc

1

รหัสวัตถุถูกสร้างขึ้นเมื่อคุณรวบรวมซอร์สโค้ด รหัสวัตถุนี้ยังไม่สามารถเรียกใช้งานได้เนื่องจากยังไม่มีไลบรารีที่ต้องการให้เรียกใช้ ดังนั้นคุณเชื่อมโยงหลายรหัสวัตถุและห้องสมุดและมันจะกลายเป็นปฏิบัติการ

ในความเข้าใจของฉัน " วัตถุ " เกี่ยวข้องกับ "สิ่ง" ที่คุณพัฒนาโดยการเขียนซอร์สโค้ดนั้น มันสามารถเป็นโมดูลคลาสฟังก์ชั่นหรืออะไรก็ได้


-1

วัตถุรหัสเป็นไฟล์วัตถุ

คำว่าวัตถุในวิทยาการคอมพิวเตอร์ยุคแรกไม่ได้อ้างถึง "วัตถุประสงค์" (aka "เป้าหมาย") แต่เน้นถึงคุณสมบัติของวัตถุที่สามารถจดจำได้ง่ายแตกต่างจากกัน วัตถุธรรมดานั้นง่ายต่อการนิยามและพูดคุยเพราะมันมีขอบเขต ไม่เหมือนกับหมอก ...

วัตถุเสมือนเป็นที่เก็บข้อมูล

มันไม่ใช่ว่าคุณนั่งลงและเขียนโค้ดบางอย่างและก็อย่างใดวัตถุรหัส ไม่คุณต้องการอ่านข้อกำหนดของ ELF, COFF, XCOFF (รูปแบบไฟล์วัตถุทั่วไป) และหากรหัสของคุณตรงกับข้อกำหนดเหล่านี้มันจะกลายเป็นรหัสวัตถุตามที่คุณพูด


-3

โดยทั่วไปนักเรียนเข้าใจภาษาระดับต่ำหรือโปรแกรมที่เขียนด้วยภาษาระดับต่ำเรียกว่า "รหัสวัตถุ" มีปัญหาในการทำความเข้าใจว่าทำไมผลลัพธ์ของคอมไพเลอร์เรียกว่ารหัสวัตถุ เอาท์พุททั่วไปเรียกว่าเป้าหมายซึ่งรวบรวมโดยคอมไพเลอร์ มันเป็นวัตถุประสงค์ของรหัสที่มา ไม่มีความหมายว่ารหัสวัตถุเป็นโปรแกรมภาษาระดับต่ำ เพียงแค่สร้างเป้าหมายดังนั้นเป้าหมายจึงสัมพันธ์กับวัตถุประสงค์และวัตถุประสงค์ของซอร์สโค้ดที่คอมไพล์โดยคอมไพเลอร์และนั่นเป็นสาเหตุที่เอาต์พุตของคอมไพเลอร์ปกติเรียกว่า "รหัสวัตถุ" เพราะภาษาต่ำไม่ได้แปลโดยคอมไพเลอร์ ภาษาระดับต่ำมีนักแปลเช่น "Assembler" หรือ "interpreter"

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.