Chúng ta đã từng chứng kiến rằng các procedure là các abstraction diễn tả các hoạt động tính toán phối hợp của các con số độc lập với các con số cụ thể. Ví dụ, khi chúng ta muốn tính lập phương của một số bất kì ta định nghĩa như sau:
(define (cube x) (* x x x))
we are not talking about the cube of a particular number, but rather
about a method for obtaining the cube of any number. Of course we
could get along without ever defining this procedure, by always writing
expressions such as
Chúng ta không nói về việc tính cube trên một con số cụ thể, nhưng về một phương thức để tính cube của một số bất kì. Dĩ nhiên, cùng với đó chúng ta cũng có thể tính cube không cần định nghĩa procedure bằng biểu thức như sau:
(* 3 3 3)
(* x x x)
(* y y y)
Và không cần đề cập đến việc tính cube. Điều này sẽ tạo ra một thách thức nghiêm trọng, tốn công sức để làm việc tính toán cụ thể ở các toán tử cơ sở trong ngôn ngữ lập trình ( phép nhân) hơn là các hoạt đọng tính toán ở level cao hơn. Các chương trình của chúng ta chỉ có thể tính cube, nhưng ngôn ngữ thiếu khả năng trình bày khái niệm tính cube.
Một thứ quan trọng chúng ta cần xem xét ở bất kì một ngôn ngữ lập trình mạnh mẽ nào là khả năng tạo các abstraction bằng việc gán cho nó một cái tên đến các mô hình tính toán phổ biến and sau đó work trong các điều kiện của abstraction đó. Các procedure cung cấp khả năng tạo các abstraction này. Đây cũng là lý dó tại sao tất cả các ngôn ngữ lập trình luôn bo hàm cơ chế định nghĩa các procedure.
Tuy nhiên, ngay cả trong xử lý số số học, chúng ta sẽ bị hạn chế nghiêm trọng trong khả năng tạo ra các mô hình trừu tượng nếu chúng ta bị giới hạn ở các thủ tục có các parameter phải là các con số. Thường thì cùng một mô hình lập trình sẽ được sử dụng với nhiều thủ tục khác nhau. Để trình bày những mô hình như vậy dưới dạng khái niệm, chúng ta sẽ cần tạo ra các procedure có thể chấp nhận các procedure như là đối số hoặc trả về các thủ tục dưới dạng giá trị. Các procedure mà sử dụng các procedures khác được gọi là các thủ tục bậc cao. Các bài viết tiếp theo sẽ cho thấy các thủ tục bậc cao hơn có thể đóng vai trò trừu tượng hóa mạnh mẽ như thế nào cơ chế, làm tăng đáng kể sức mạnh biểu đạt ngôn ngữ của chúng ta.
Bài viết tiếp theo: Procedures as Arguments