เหตุใดส่วนรหัสจึงเรียกว่าส่วนข้อความ


14

ส่วนของปฏิบัติการที่มีรหัสบางครั้งเรียกว่า.textส่วน ในสถาปัตยกรรมหน่วยความจำที่แบ่งกลุ่มบางส่วนที่แมปเป็นรหัสบางครั้งเรียกว่าส่วนข้อความ ข้อความแสดงข้อผิดพลาด unix“ ไฟล์ข้อความไม่ว่าง” ( ETXTBSY) หมายถึง“ ไฟล์นี้เป็นโปรแกรมที่กำลังดำเนินการ”

ไม่ว่าข้อความมาหมายถึงการปฏิบัติการ (เครื่อง) รหัส ?

คำตอบในอุดมคติ: อธิบายการเชื่อมต่อระหว่างคำและความหมายของคำนั้น ให้การอ้างอิงสำหรับแหล่งกำเนิดหรืออย่างน้อยประวัติศาสตร์ของคำนั้น ให้แนวคิดเกี่ยวกับชุมชนที่ใช้


.textเป็นคำสั่งการชุมนุม การประกอบเป็นข้อความ
Austin Henley

6
คำถามที่คล้ายกันถูกถามและตอบใน StackOverflow 3 ปีที่ผ่านมา: stackoverflow.com/questions/1282506/ …
สตีเฟนซี

@StephenC ขอบคุณสำหรับลิงค์ ค้นหาได้ง่ายโดย googling "ส่วนข้อความ" ฉันพยายามส่วนใหญ่กับ "ส่วนข้อความ" และมันก็ไม่ได้เปิดขึ้น อย่างน้อยก็ย้อนกลับไปสมัย GE แต่ก็ยังไม่ชัดเจนว่าความหมายนั้นเกิดขึ้นได้อย่างไร
Gilles 'หยุดความชั่วร้าย'

คำตอบ:


5

คำนี้มาจากภาษาแอสเซมบลี ฉันไม่สามารถตรวจสอบนิรุกติศาสตร์ แต่ฉันเดาว่าชื่อนั้นมาจากการใช้ส่วนอื่น ๆ ในขณะที่.dataส่วนแสดงถึงตัวแปรที่สามารถเปลี่ยนแปลงได้ในระหว่างการดำเนินการ.textส่วนนั้นมีข้อมูลที่ไม่เปลี่ยนแปลงระหว่างการดำเนินการทำให้สามารถใส่ลงใน ROM ได้หากจำเป็น มันทำให้มีประโยชน์สำหรับรหัสใช่ แต่ยังทำให้มีประโยชน์สำหรับสตริงของข้อความที่ไม่เปลี่ยนแปลง นั่นอาจเป็นที่มาของคำ

ในการพูดถึงความคิดเห็นของ Griffin เกี่ยวกับฟังก์ชั่นชั้นหนึ่งให้พิจารณาโค้ดไพ ธ อน 3 ต่อไปนี้:

def counter():
    x = 0
    def increment(y):
        nonlocal x
        x += y
        print(x)
    return increment

รหัสที่คุณใช้จริงเพื่อincrementหาสิ่งที่อยู่ภายใน:

self.func_dict['x'] += y
print(self.func_dict['x'])

รหัสปฏิบัติการนั้นสามารถใส่ลงใน ROM ได้ มันไม่เคยเปลี่ยนแปลงตลอดการทำงานของโปรแกรมไม่ว่าคุณจะโทรมากี่ครั้งcounter()ก็ตาม สิ่งที่ไม่เปลี่ยนแปลงคือselfตัวชี้และตัวแปรสมาชิก .dataเหล่านั้นจะต้องใส่ลงไปใน เมื่อคุณreturn incrementคุณกำลังส่งคืนอินสแตนซ์ใหม่ของวัตถุฟังก์ชันที่เพิ่มขึ้น คุณไม่ได้สร้างรหัสที่สามารถใช้งานได้ใหม่ทุกครั้ง โค้ดนั้นไม่สามารถเปลี่ยนแปลงได้แม้ว่าตัวชี้จะไม่อยู่ก็ตาม

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

แม้ว่ารูปแบบการเขียนโปรแกรมอาจทำให้รู้สึกเหมือนรหัสไม่แน่นอน แต่รหัสการแก้ไขตัวเองที่แท้จริงในระดับการสอนตัวประมวลผลนั้นอันตรายและไม่ค่อยพบนอกหัวข้อ OS voodoo เช่นการสลับบริบทกระบวนการ


แล้วจะเกิดอะไรขึ้นเมื่อคุณใช้ภาษาที่ใช้งานได้เนื่องจากว่าโค้ดนั้นไม่แน่นอน / คลาสที่ 1 ด้วย?
กริฟ

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