Khái niệm 'gọi' một chức năng đến từ đâu?


17

Tôi đã luôn tự hỏi tại sao một người gọi một chức năng trái ngược với, ví dụ, thực thi nó.

Một tìm kiếm Google function call etymologyvà các thuật ngữ tương tự không có gì hữu ích, Wikipedia không đề cập đến nó, từ điển trực tuyến không có mục nào cả hoặc không có phần từ nguyên .

Khái niệm 'gọi' một chức năng đến từ đâu?


Có lẽ nó xuất phát từ các ngữ nghĩa khác nhau để xử lý các đối số - gọi theo giá trị, gọi theo tham chiếu, gọi theo tên, v.v. Tôi cũng tưởng tượng rằng thuật ngữ này bắt nguồn từ "cuộc gọi thủ tục" hoặc "cuộc gọi chương trình con" và chỉ được áp dụng cho các hàm sau này . Trong toán học, bạn áp dụng các hàm cho các đối số của chúng và những gì chúng ta gọi là các hàm hầu như luôn luôn là các thủ tục / chương trình con (vì các hàm toán học không có tác dụng phụ).
Doval

@Doval: Có, nhưng tại sao lại sử dụng chính "cuộc gọi" trong "cuộc gọi thủ tục" thay vì một động từ khác?
Thất

2
@FrustratedWithFormsDesigner Không có manh mối, nhưng tôi đoán rằng họ sẽ may mắn hơn khi cố gắng tìm ra nguồn gốc của "cuộc gọi chương trình con" hoặc "cuộc gọi thủ tục" hơn là "cuộc gọi chức năng", điều này không có ý nghĩa về mặt lịch sử. Tôi nhận ra nhận xét không trả lời câu hỏi, nhưng đó chính xác là lý do tại sao tôi đưa ra nhận xét và không trả lời.
Doval

2
Trong lambda-tính, bạn áp dụng một hàm (và toán tử lambda đang thực hiện trừu tượng hóa ). Một số ngôn ngữ nói về việc gọi , không gọi, một chức năng.
Basile Starynkevitch

2
Trong một số phương ngữ của ngôn ngữ lắp ráp (chẳng hạn như lắp ráp x86), các mã được đặt tên callrethoặc một số biến thể của chúng. Có thể các ngôn ngữ lập trình được thừa hưởng thuật ngữ từ phần cứng cơ bản, mặc dù điều đó vẫn sẽ để lại câu hỏi tại sao các nhà thiết kế phần cứng chọn những tên đó cho các hoạt động.
David Conrad

Câu trả lời:


15

Cuộc gọi từ quay trở lại ít nhất là với Fortran, ngôn ngữ lập trình được sử dụng rộng rãi đầu tiên. Trong Fortran, CALLmột từ khóa chuyển điều khiển sang chương trình con . Không rõ tại sao John Backus chọn từ đó để gọi chương trình con - bạn có thể cần đọc một hoặc nhiều tiểu sử của Backus để khám phá điều đó - nhưng có vẻ như việc sử dụng trong Fortran là lý do mà chúng ta sử dụng từ gọi ngày hôm nay với liên quan đến chức năng, phương pháp, vv

Lưu ý rằng việc sử dụng cuộc gọi liên quan đến chức năng và các chương trình con khác cũng phù hợp với một số định nghĩa cuộc gọi bằng tiếng Anh :

  • để thực hiện một chuyến thăm ngắn
  • đòi hỏi một cái gì đó
  • đánh thức giấc ngủ
  • mời

3
OP muốn biết tại sao GỌI ngay từ đầu.
Tulains Córdova

5
1952 ACM giấy David Wheeler của Việc sử dụng các phụ thói quen trong các chương trình mô tả các khái niệm, và tôi muốn đặt cược việc sử dụng thuật ngữ "gọi là" phát triển giữa sau đó và sự xuất hiện của CALLRETURNtrong FORTRAN II vào năm 1958, nếu nó không được sử dụng trong bài báo (Tôi quá rẻ để trả cho ACM $ 15 để tìm hiểu.)
Blrfl

2
@Timo Mặc dù tôi không thể chỉ ra nguồn gốc của thuật ngữ, mục tiêu của tôi với câu trả lời này là giúp bạn đến gần điểm đó hơn. Biết rằng CALLxuất hiện trong bối cảnh này ở Fortran (được tạo ra vào năm 1954) nên thu hẹp đáng kể việc tìm kiếm nguồn gốc. Nhận xét của Blrfl ở trên có vẻ như là một ràng buộc tốt ở phía đầu, vì vậy chúng ta đã thu hẹp khoảng thời gian mà thuật ngữ này dường như đã được sử dụng trong một vài năm.
Caleb

2
@Caleb: CALLkhông phải là một phần của phiên bản đầu tiên của FORTRAN. Xem trang 1 của Tài liệu tham khảo IBM Fortran II .
Blrfl

2
@Blrfl Tôi đọc lướt qua bài báo, nó không sử dụng thuật ngữ này callhay bất kỳ thuật ngữ nào khác, nó chủ yếu chỉ nói về use ofchương trình con.
Lars Viklund
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.