Những ngôn ngữ lập trình nào khác ngoài Python và tiền thân đang sử dụng thụt lề để xác định khối mã? [đóng cửa]


12

Python khá nổi tiếng sử dụng thụt đầu dòng để xác định cú pháp các khối mã. (Xem câu lệnh Hợp chất trong Tài liệu tham khảo ngôn ngữ Python). Sau nhiều năm sử dụng Python, tôi vẫn bị thu hút và rất thích tính năng cú pháp này.

Nhưng tôi tự hỏi: Ngoài Python và ngôn ngữ "tiền thân" (*) ABC , ngôn ngữ lập trình nào khác ở ngoài đó sử dụng thụt lề để định nghĩa các khối mã ? Các khối mã có nghĩa ở đây "nhiều câu lệnh theo một cách nào đó được coi là một thành phần".

Tôi đặc biệt quan tâm đến các ngôn ngữ lập trình thực tế , nhưng các ngôn ngữ bí truyền cũng có thể đáng được đề cập đến.


(*): " Người tiền nhiệm " là sự lựa chọn từ của tôi theo mặc định để biết ở đây một từ tốt hơn. Guido van Rossum, người tạo ra Python, đã mô tả mối quan hệ giữa Python và ABC liên quan đến việc thụt lề trong một cuộc phỏng vấn như thế này: " Sự lựa chọn thụt lề để nhóm không phải là một khái niệm mới trong Python; Tôi đã thừa hưởng điều này từ ABC. "


15
Tôi không nghĩ "vui lòng cho tôi danh sách các ngôn ngữ lập trình có tính năng X" là một câu hỏi về khoa học máy tính.
David Richerby

2
Tại sao, có ngôn ngữ Whitespace yêu cầu thụt lề thích hợp cho phương thức biểu đạt cốt lõi của nó.
chim cánh cụt359

1
YAML dạng dài có lẽ đáng được đề cập mặc dù nó không phải là ngôn ngữ lập trình theo nghĩa chặt chẽ nhất, vì đây có lẽ là một trong những ngôn ngữ có khả năng tiếp theo có tính năng này cho ai đó gặp phải sau Python.
Austin Hemmelgarn

1
@ penguin359 Tôi cũng nghĩ về khoảng trắng. Đây không phải là một câu trả lời cho câu hỏi bởi vì thụt đầu dòng, không được sử dụng để xác định các khối; nhưng chắc chắn đó là ngôn ngữ trong đó khoảng trắng có ý nghĩa nhất về tổng thể.
Peter - Phục hồi Monica

1
@DavidR Richby Phân nhóm theo thuộc tính (nghĩa là phân loại) chắc chắn là một phần của khoa học: Ví dụ: một câu hỏi thú vị cho Sinh học StackExchange có thể là: " Động vật nào khác đi bằng hai chân? " Vì vậy, tôi cho rằng câu hỏi trên rất phù hợp với Khoa học máy tính StackExchange .
halloleo

Câu trả lời:


23

Wikipedia có một danh sách rộng lớn các ngôn ngữ sử dụng quy tắc phụ 1 :

  • ABC
  • Boo
  • BuddyScript
  • Rắn hổ mang
  • Cà phê
  • Hội tụ
  • Cà ri
  • Thuốc tiên ( , do:khối)
  • Cây du
  • F # (nếu #light "off"không được chỉ định)
  • thần đèn
  • Haskell (chỉ dành cho where, let, do, hoặc case ... ofđiều khoản khi niềng răng được bỏ qua)
  • Thông báo 7
  • ISWIM, ngôn ngữ trừu tượng đã đưa ra quy tắc
  • LiveScript
  • Miranda
  • Gà trống
  • Nim
  • thỉnh thoảng
  • KHUYẾN MÃI
  • Con trăn
  • Lược đồ, khi sử dụng, ví dụ SRFI 119
  • Quay
  • XL

1: Tôi chưa bao giờ nghe thuật ngữ này trước bản thân mình.


2
Các quy tắc bên ngoài là một phát hiện thú vị!
halloleo

3
Không biết đó là ngôn ngữ mà bạn hoặc wikipedia hiểu nó, nhưng Makefiles cũng sử dụng thụt lề.
TheWildHealer

@TheWildHealer Bài viết trên wikipedia cũng có một phần với các ngôn ngữ không lập trình (bao gồm các thứ như Make, YAML, RST). Tôi đã không trích dẫn điều đó bởi vì OP đã hỏi về ngôn ngữ lập trình.
Bergi

Bạn nói đúng, lần sau tôi chắc chắn sẽ mở mắt ra, cảm ơn.
TheWildHealer

10

Có: Elm , Haskell , tiền thân Miranda và tiền thân ISWIM , YAML trong đó các không gian rất quan trọng cho cú pháp và các tab bị cấm, OCCAM , Coffee scriptCokescript đều là ngôn ngữ cho trình biên dịch ngôn ngữ với JavaScript là Whitespaces .

Ngoài ra còn có Agda - người cung cấp định lý tương tác, có lẽ không phải là điều bạn nghĩ đến, nhưng từ vựng của nó rất nhạy cảm với không gian trắng.
Makefile , tập hợp các mục tiêu với ý định dựa trên tab.


1
Ngoài ra Miranda, ngôn ngữ Haskell dựa trên.
quỳ

1
Agda có cú pháp rất giống Haskell và nhạy cảm với cả thụt lề và dấu cách: (x-y)không (x - y)) ngay cả khi nó có thể không "thực tế" đủ cho OP.
chi

1
Ngoài ra, CoffeeScript và CokeScript ít được biết đến
Bergi

5
Nếu YAML được tính, thì tôi cho rằng Makefiles cũng phải như vậy
Izkata

1
Ngoài ra còn có PureScript .
song công

4

Làm cho phù hợp với mô tả của bạn, mặc dù nó có thể không hoàn toàn như những gì bạn nghĩ, với cú pháp và sức mạnh hạn chế của nó.

ổi chỉ ra khối mã của nó ( công thức nấu ăn ) với một hình thức cụ thể của khoảng trắng: một ký tự tab. Các cách khác có sẵn (ví dụ: GNU Make hỗ trợ sử dụng một ký tự thay thế ), nhưng hiếm khi được sử dụng trong thực tế.

Một ví dụ khác lơ lửng ở rìa là Ansible playbooks . Chúng được chỉ định trong YAML , phụ thuộc nhiều vào vết lõm. YAML không phải là ngôn ngữ lập trình, nhưng Playbook Ansible có thể được coi là chương trình dành riêng cho tên miền.

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.