ความคิดในการ 'เรียก' ฟังก์ชั่นมาจากไหน?


17

ฉันสงสัยอยู่เสมอว่าเพราะเหตุใดคนหนึ่งจึงเรียกใช้ฟังก์ชั่นซึ่งตรงข้ามกับการใช้งานมัน

การค้นหาของ Google สำหรับการfunction call etymologyและเงื่อนไขที่คล้ายกันผลัดกันขึ้นไม่มีอะไรที่มีประโยชน์, วิกิพีเดียไม่ได้พูดถึงมันพจนานุกรมออนไลน์มีทั้งรายการที่ทุกคนหรือไม่ส่วนนิรุกติศาสตร์

ความคิดในการ 'เรียก' ฟังก์ชั่นมาจากไหน?


มันอาจมาจากความหมายที่แตกต่างกันสำหรับการจัดการข้อโต้แย้ง - โทรตามค่าโทรตามการอ้างอิงโทรตามชื่อ ฯลฯ ฉันยังจินตนาการว่าคำที่มาจาก "การเรียกขั้นตอน" หรือ "การเรียกรูทีนย่อย" และถูกนำไปใช้กับฟังก์ชันภายหลังเท่านั้น . ในวิชาคณิตศาสตร์คุณใช้ฟังก์ชั่นกับข้อโต้แย้งของพวกเขาและสิ่งที่เราเรียกว่าฟังก์ชั่นมักจะเป็นขั้นตอน / รูทีนย่อย (เพราะฟังก์ชั่นทางคณิตศาสตร์ไม่มีผลข้างเคียง)
Doval

@Doval: ใช่ แต่ทำไมใช้ "การเรียก" ใน "การเรียกขั้นตอน" แทนคำกริยาอื่น?
FrustratedWithFormsDesigner

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

2
ในแลมบ์ดา - แคลคูลัสคุณใช้ฟังก์ชั่น (และผู้ประกอบการแลมบ์ดากำลังสร้างรูปนามธรรม ) บางภาษาพูดถึงการเรียกใช้ไม่ใช่ฟังก์ชัน
Basile Starynkevitch

2
ในบางภาษาของภาษาแอสเซมบลี (เช่นแอสเซมบลี x86) มีการตั้งชื่อ opcodes callและretหรือตัวแปรบางอย่าง เป็นไปได้ว่าภาษาการเขียนโปรแกรมสืบทอดคำศัพท์จากฮาร์ดแวร์ที่อยู่ภายใต้แม้ว่าจะยังคงมีคำถามว่าทำไมนักออกแบบฮาร์ดแวร์เลือกชื่อเหล่านั้นสำหรับการดำเนินงาน
David Conrad

คำตอบ:


15

คำว่าcallอย่างน้อยก็กลับไปที่ Fortran ซึ่งเป็นภาษาโปรแกรมที่ใช้กันอย่างแพร่หลาย ใน Fortran, CALLเป็นคำหลักที่ผ่านการควบคุมการย่อยเป็น ยังไม่ชัดเจนว่าทำไมJohn Backusเลือกคำนั้นเพื่อเรียกรูทีนย่อย - คุณอาจจำเป็นต้องอ่านชีวประวัติของ Backus อย่างน้อยหนึ่งครั้งเพื่อค้นพบว่า - แต่ดูเหมือนว่าการใช้ใน Fortran นั้นเป็นเหตุผลที่เราใช้การเรียกคำในวันนี้ด้วย เกี่ยวกับฟังก์ชั่นวิธีการ ฯลฯ

โปรดทราบว่าการใช้การโทรที่เกี่ยวกับฟังก์ชั่นและโปรแกรมย่อยอื่น ๆ ก็พอดีกับหลายภาษาอังกฤษคำจำกัดความของการโทร :

  • เพื่อเยี่ยมชมสั้น ๆ
  • ต้องการบางสิ่งบางอย่าง
  • เพื่อปลุกจากการนอนหลับ
  • เพื่อเชิญ

3
OP ต้องการทราบว่าเหตุใด CALL จึงเป็นที่แรก
Tulains Córdova

5
กระดาษ 1952 ACM ของ David Wheeler การใช้รูทีนย่อยในโปรแกรมอธิบายแนวคิดและฉันพนันได้เลยว่าการใช้คำว่า "เรียก" พัฒนาขึ้นระหว่างนั้นและรูปลักษณ์ของCALLและRETURNใน FORTRAN II ในปี 1958 ถ้าไม่ได้ใช้ ในกระดาษเอง (ฉันราคาถูกเกินไปที่จะจ่าย ACM $ 15 เพื่อหา)
Blrfl

2
@Timo ถึงแม้ว่าฉันจะไม่สามารถชี้ไปที่ต้นกำเนิดของคำศัพท์ได้ แต่เป้าหมายของฉันกับคำตอบนี้คือเพื่อให้คุณเข้าใกล้จุดนั้นมากขึ้น การรู้ว่าCALLปรากฏในบริบทนี้ใน Fortran (สร้างในปี 1954) ควร จำกัด การค้นหาต้นกำเนิดให้แคบลง ความคิดเห็นของ Blrfl ด้านบนดูเหมือนจะเป็นข้อผูกมัดที่ดีในตอนต้นดังนั้นเราจึง จำกัด ช่วงเวลาที่คำนั้นดูเหมือนจะถูกนำมาใช้เป็นเวลาไม่กี่ปี
คาเลบ

2
@Caleb: CALLไม่ได้เป็นส่วนหนึ่งของ FORTRAN เวอร์ชันแรก ดูหน้า 1 ของคู่มือการใช้งาน IBM Fortran II อ้างอิง
Blrfl

2
@Blrfl ฉันอ่านกระดาษมันไม่ได้ใช้คำcallหรือคำอื่น ๆ ส่วนใหญ่ก็แค่พูดถึงuse ofรูทีนย่อย
Lars Viklund
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.