Cú pháp đặc biệt

Bách khoa toàn thư mở Wikipedia
Bước tới: menu, tìm kiếm

Trong khoa học máy tính, cú pháp đặc biệt (tiếng Anh: syntactic sugar) là cú pháp trong một ngôn ngữ lập trình được thiết kế để làm cho mọi thứ dễ đọc hay thể hiện hơn. Nó khiến ngôn ngữ "ngọt ngào hơn" cho con người sử dụng: mọi thứ có thể được thể hiện rõ ràng hơn, chính xác hơn, hay theo một cách khác mà một số người khác thích.

Ví dụ, nhiều ngôn ngữ lập trình cung cấp cú pháp đặc biệt để tham chiếu và cập nhật các phần tử của mảng (array). Một cách tóm tắt, tham chiếu mảng là một thủ tục với 2 đối số: một mảng và một vector chỉ số, có thể được biểu diễn như get_array(Array, vector(i,j)). Thay vì vậy, nhiều ngôn ngữ cung cấp cú pháp như Array[i,j]. Tương tự như vậy, cập nhật phần tử của một mảng là một thủ với 3 đối số, như set_array(Array, vector(i,j), value), nhưng nhiều ngôn ngữ cung cấp cú pháp Array[i,j] = value.

Một cách cụ thể, một cấu trúc trong ngôn ngữ được gọi là "cú pháp đặc biệt" nếu nó có thể được gỡ bỏ khỏi ngôn ngữ mà không gây bất kì ảnh hưởng tới chức năng của ngôn ngữ đó: chức năngnăng lực biểu hiện vẫn như cũ.

Các bộ xử lý ngôn ngữ, bao gồm trình biên dịch, bộ phân tích tĩnh, và các loại tương tự, thường mở rộng các cấu trúc đặc biệt thành các cấu trúc cơ bản hơn trước khi xử lý, và quá trình này được gọi là "desugaring".

Nguồn gốc[sửa | sửa mã nguồn]

Thuật ngữ cú pháp đặc biệt (syntactic sugar) đã được đặt ra bởi Peter J. Landin vào năm 1964 để mô tả cú pháp bề mặt của một ngôn ngữ lập trình đơn giản giống như ALGOL,[1][2]

Ví dụ nổi bật[sửa | sửa mã nguồn]

  • Trong COBOL, nhiều từ khóa trung gian là cú pháp đặc biệt có thể được bỏ qua. Ví dụ, câu MOVE A B. và câu MOVE A TO B. thực hiện chính xác cùng một chức năng, nhưng câu sau khiến hành động được thực hiện rõ ràng hơn.

Ghi chú[sửa | sửa mã nguồn]

  1. ^ Landin, Peter J. (1964). “The mechanical evaluation of expressions” (PDF). The Computer Journal (Computer Journal) 6 (4): 308–320. doi:10.1093/comjnl/6.4.308. Truy cập ngày 21 tháng 7 năm 2014. 
  2. ^ Abelson & Sussman 1996, Chapter 1, footnote 11.

Tham khảo[sửa | sửa mã nguồn]

  • Abelson, Harold; Sussman, Gerald Jay; Sussman, Julie (1996) [1984]. Structure and Interpretation of Computer Programs. Cambridge, MA: MIT Press. ISBN 0-262-51087-1. 
  • Landin, Peter J. (February–March 1965). “A Correspondence Between ALGOL 60 and Church's Lambda-Notation: Parts I and II”. Communications of the ACM 8 (2.3): 89–101, 158–165. doi:10.1145/363744.363749. 
  • Landin, Peter J. (tháng 3 năm 1965). “Programming Without Imperatives – An Example”. UNIVAC Systems Programming Research. 
  • Landin, Peter J. (tháng 7 năm 1965). “Getting Rid of Labels”. UNIVAC Systems Programming Research. 
  • Landin, Peter J. (tháng 8 năm 1965). “A Generalization of Jumps and Labels”. UNIVAC Systems Programming Research. , reprinted in Higher-Order and Symbolic Computation11. 1998. tr. 125–143.  Đã bỏ qua tham số không rõ |citeseerx= (trợ giúp)
  • Perlis, A. J. (tháng 9 năm 1982). “Epigrams on programming”. ACM SIGPLAN Notices (New York, NY, USA: Association for Computing Machinery) 17 (9): 7–13. doi:10.1145/947955.1083808. Bản gốc lưu trữ ngày 17 tháng 1 năm 1999. 

Bài này phần lớn được lấy dữ liệu từ Free On-line Dictionary of Computing, đã có giấy phép GFDL.