ชุมชนโปรแกรมเมอร์กำลังหารือกันอย่างคึกคักเกี่ยวกับที่มาและความเหมาะสมของคำศัพท์ทางการเขียนโปรแกรมที่ใช้กันทั่วไป โดยเฉพาะอย่างยิ่งว่าทำไมเราถึง call ฟังก์ชันแทนที่จะใช้คำทางเลือกอื่นเช่น invoke หรือ execute การสนทนานี้เผยให้เห็นข้อมูลเชิงลึกที่น่าสนใจเกี่ยวกับวิธีที่ภาษาโปรแกรมมิ่งพัฒนาขึ้นมาจากแนวปฏิบัติในยุคแรกของคอมพิวเตอร์
คำศัพท์ทางเลือกที่ใช้ในการเขียนโปรแกรม:
- Invoke: เป็นคำที่เป็นทางการมากกว่า มาจากภาษา Latin "invocāre" (การเรียกขอ)
- Execute: คำศัพท์ทั่วไปที่เน้นการกระทำที่กำลังดำเนินการ
- Apply: ใช้ในบริบทของการเขียนโปรแกรมเชิงฟังก์ชัน
- Activate: เกี่ยวข้องกับ activation records ในหน่วยความจำ
- Perform: ใช้ในภาษาโปรแกรม COBOL
- Transfer: คำศัพท์ในยุคแรกที่เน้นไปที่การควบคุมการไหลของโปรแกรม
ความเชื่อมโยงกับห้องสมุด: จากหนังสือสู่โค้ด
คำว่า call ในการเขียนโปรแกรมมีรากฐานลึกในศาสตร์ห้องสมุด ย้อนกลับไปถึงปี ค.ศ. 1870 นักวิทยาศาสตร์คอมพิวเตอร์ยุคแรกได้ยืมแนวคิดของเลขเรียกหนังสือที่ใช้จัดระเบียบหนังสือในห้องสมุดมาใช้ เมื่อโปรแกรมเมอร์ต้องการเข้าถึงซับรูทีนที่เก็บไว้ในสิ่งที่พวกเขาเรียกว่าไลบรารีของโค้ด พวกเขาจะ call หาซับรูทีนเหล่านั้นโดยใช้หมายเลขระบุตัวตน เช่นเดียวกับการขอหนังสือจากบรรณารักษ์ แนวปฏิบัตินี้ฝังรากลึกจนในปี ค.ศ. 1958 Fortran II ได้นำเสนอคำสั่ง CALL อย่างแท้จริง ทำให้คำศัพท์นี้ฝังแน่นในวัฒนธรรมการเขียนโปรแกรม
ความเชื่อมโยงระหว่างห้องสมุดจริงและไลบรารีโค้ดไม่ได้เป็นเพียงการเปรียบเทียบเท่านั้น คอมพิวเตอร์ยุคแรกจริงๆ แล้วเก็บซับรูทีนไว้ในเทปแม่เหล็ก จัดระเบียบเหมือนกับหนังสือบนชั้นวาง โดยแต่ละอันมีระบบระบุตัวตนของตัวเอง
ไทม์ไลน์ประวัติศาสตร์ของคำศัพท์ "Call":
- 1876: Melvil Dewey แนะนำ "call numbers" ในห้องสมุด
- 1947: John W. Mauchly ใช้คำว่า "called in" สำหรับ subroutines
- 1956: MANIAC II ใช้ "call number" สำหรับ subroutines
- 1958: Fortran II แนะนำคำสั่ง "CALL" แบบตรงตัว
- 1959-1960: Algol นำคำศัพท์ "procedure call" มาใช้
- 1961: การใช้วลี "to call X" ครั้งแรกที่มีการบันทึกไว้
- 1963: การใช้งานแบบสมัยใหม่กลายเป็นมาตรฐาน
การใช้งานในปัจจุบันที่หลากหลายและความแตกต่างตามภูมิภาค
ชุมชนโปรแกรมเมอร์ในปัจจุบันใช้คำศัพท์หลายคำแทนกันได้ แม้ว่า call จะยังคงเป็นที่นิยมมากที่สุด นักพัฒนาบางคนชอบใช้ invoke เพราะฟังดูเป็นทางการมากกว่า ในขณะที่คนอื่นๆ ใช้ execute เพื่อความชัดเจน ที่น่าสนใจคือ ภาษาและวัฒนธรรมที่แตกต่างกันได้หล่อหลอมการใช้คำเหล่านี้ ตัวอย่างเช่น โปรแกรมเมอร์ชาว Finnish แปลคำว่า call เป็น kutsua ซึ่งหมายถึงเชิญหรือเรียกมา แสดงให้เห็นว่าพวกเขามองการเรียกฟังก์ชันเหมือนกับการเรียกความช่วยเหลือมากกว่าการโทรศัพท์
ชุมชนยังสังเกตเห็นการใช้คำศัพท์ผิดๆ ที่น่าขบขัน โดยเฉพาะในหมู่นักเรียนที่ใช้ภาษาอังกฤษเป็นภาษาที่สอง ซึ่งอาจพูดว่าพวกเขากำลัง calling ปุ่มหรือ calling คำสั่ง return ความแปลกประหลาดทางภาษาเหล่านี้เน้นย้ำให้เห็นว่าคำศัพท์การเขียนโปรแกรมสามารถสร้างความสับสนได้แม้แต่กับนักพัฒนาที่มีประสบการณ์
ศัพท์เทคนิคข้ามภาษา:
- Finnish: "kutsua" (เชิญ/เรียก)
- C: ใช้ "Invoke" สำหรับ delegates และ reflected methods
- Tcl: ใช้ "command" แทน function
- Smalltalk: ใช้ if-statements เป็น methods
- Excel: ถือว่าโครงสร้างควบคุมอย่าง IF เป็น functions
การแพร่กระจายของคำศัพท์การเขียนโปรแกรม
วิวัฒนาการจากการใช้คอมพิวเตอร์ยุคแรกสู่การเขียนโปรแกรมสมัยใหม่แสดงให้เห็นว่าคำศัพท์ใหม่สามารถแพร่กระจายได้อย่างรวดเร็วเมื่อมันเข้ากันได้กับผู้ใช้ คำที่สั้น จดจำง่าย และช่วยให้นักพัฒนาสร้างความเชื่อมโยงทางความคิดได้มักจะแพร่กระจายอย่างรวดเร็วผ่านชุมชนโปรแกรมเมอร์ คำว่า call ประสบความสำเร็จเพราะมันสั้น จดจำง่าย และเชื่อมโยงกับแนวคิดที่คุ้นเคยเช่นการเรียกความช่วยเหลือหรือการขอบริการ
เหตุผลที่มันถูกเรียกว่า compiler [ประมาณปี ค.ศ. 1952] ก็เพราะว่าซับรูทีนแต่ละตัวได้รับ call word เนื่องจากซับรูทีนอยู่ในไลบรารี และเมื่อคุณดึงสิ่งต่างๆ ออกมาจากไลบรารี คุณก็ compile สิ่งต่างๆ
มุมมองทางประวัติศาสตร์นี้เผยให้เห็นว่าคำศัพท์การเขียนโปรแกรมในปัจจุบันส่วนใหญ่เกิดขึ้นจากความต้องการในทางปฏิบัติและการเปรียบเทียบที่คุ้นเคย มากกว่าการวางแผนทางภาษาศาสตร์อย่างรอบคอบ การเข้าใจที่มาเหล่านี้ช่วยอธิบายว่าทำไมคำศัพท์บางคำจึงติดอยู่ในขณะที่คำอื่นๆ จางหายไป และทำไมภาษาโปรแกรมมิ่งจึงยังคงพัฒนาคำศัพท์ของตนอยู่ในปัจจุบัน