Ngôn ngữ lập trình, ngôn ngữ định vị và ngôn ngữ tự nhiên


8

Một số ngôn ngữ lập trình được mô hình hóa trên mã máy, như ngôn ngữ lắp ráp. Các ngôn ngữ khác được mô hình hóa trên một ngôn ngữ tự nhiên, ngôn ngữ tiếng Anh. Những người khác không được mô hình hóa trên mã máy hoặc ngôn ngữ tự nhiên. Các ngôn ngữ như PRITAL chẳng hạn, không theo một trong hai mô hình.

Tôi đã xem qua mô-đun Perl này Lingua :: Romana :: Perligata , cho phép viết các chương trình bằng một cú pháp rất giống với tiếng Latin.

Có ngôn ngữ lập trình có cú pháp vị trí ít hơn?

Có ngôn ngữ hoặc mô-đun nào khác cho phép bạn viết theo cú pháp lấy cảm hứng từ các ngôn ngữ tự nhiên khác, như tiếng Pháp, tiếng Do Thái hoặc tiếng Farsi không? Có một danh sách rất dài trên Wikipedia , nhưng hầu hết các dự án đó đều đã chết.

Có một câu hỏi liên quan trên StackOverflow . Câu trả lời đã được chấp nhận là "Sử dụng Google".


1
Không hoàn toàn liên quan, nhưng nhiều câu trả lời liên quan đến các ngôn ngữ hỗ trợ sửa đổi cú pháp và do đó có thể là những gì bạn đang tìm kiếm: http://programmers.stackexchange.com/questions/145751/has-whitespace-in-identifier-ever -been-idiomatic
Telastyn

2
Một số ngôn ngữ lập trình không được mô hình hóa trên mã máy hoặc ngôn ngữ tự nhiên. Các ngôn ngữ như PRITAL chẳng hạn, không theo mô hình nào cả ...
Andres F.

Bạn cũng nên lưu ý các ngôn ngữ lập trình chủ yếu lấy cảm hứng từ toán học. Ít nhất là trong nghiên cứu PL, những điều này khá phổ biến.
Tikhon Jelvis

@TikhonJelvis bạn có nghĩa là đối với một ngôn ngữ lập trình có thể diễn đạt các cấu trúc và khái niệm toán học được coi là quan trọng hơn so với ngôn ngữ tự nhiên?
Виталий Олегович

Sắp xếp Đặc biệt, tôi đang nghĩ về các ngôn ngữ mà bạn thể hiện tính toán chủ yếu bằng các ý tưởng toán học. Chủ yếu là các ngôn ngữ lập trình chức năng như Haskell. Vì vậy, nó không chỉ diễn tả các khái niệm toán học, nó thực sự sử dụng chúng cho mọi thứ như đại diện cho trạng thái và IO. Nó cũng gần với ký hiệu toán học hơn là ngôn ngữ tự nhiên.
Tikhon Jelvis

Câu trả lời:


2

Ngôn ngữ lập trình bằng văn bản duy nhất hiện đang được sử dụng mà tôi có thể nghĩ ra khỏi đỉnh đầu là HTML. Bây giờ tùy thuộc vào định nghĩa của bạn về ngôn ngữ lập trình, điều này có thể hoặc không thể tính.

Để giúp bạn hiểu tại sao không có nhiều ngôn ngữ lập trình sử dụng cao có ít cú pháp vị trí hơn, bạn phải hiểu cách hầu hết các ngôn ngữ lập trình được thiết kế. Hầu hết các ngôn ngữ lập trình đều dựa trên các ngữ pháp không rõ ràng, chủ yếu bằng cách sử dụng các ngữ pháp LL và LR. Để giữ cho các ngữ pháp rõ ràng, hầu hết các công nghệ đều dựa vào việc sử dụng thứ tự các ký hiệu và từ, ví dụ như các thiết bị đầu cuối, để làm cho đầu vào không rõ ràng. Những gì bạn đang tìm kiếm là các ngôn ngữ từ bỏ vị trí để làm cho ngữ pháp không rõ ràng. Nếu trình biên dịch không thể sử dụng vị trí để quyết định xem ngữ pháp có rõ ràng không, thì trình biên dịch cần một số gợi ý khác để làm cho ngữ pháp không rõ ràng, do đó, các tiền tố như #,%, 'và ". Một kỹ thuật khác là liên kết từ khóa với từng giá trị, nghĩa là width = 10, đó là những gì HTML làm.

Các ngôn ngữ khai báo gần nhất nói chung mà tôi biết như PRITAL và SQL, nhưng một lần nữa yêu cầu sử dụng một số giá trị vị trí.

Các ngôn ngữ khác xuất hiện trong tâm trí là ngôn ngữ nói vào các hệ thống AI xử lý đầu vào như Watson , nhưng một lần nữa, bạn có coi đây là ngôn ngữ lập trình; nếu bạn coi SQL là ngôn ngữ lập trình, thì tại sao không truy vấn bằng lời cho Watson.


Cảm ơn bạn đã giải thích tuyệt vời! Tôi đoán rằng theo cách này, ngôn ngữ HTML phải có một số lượng lớn các từ khóa. Tôi đoán rằng việc hết hạn thường xuyên trên các mã thông báo có thể được sử dụng để quyết định loại mã thông báo. Tất nhiên điều đó sẽ làm cho trình biên dịch chậm hơn nhiều.
Виталий Олегович

ngoài ra, bằng cách mở rộng XML có thể được xem xét.
alfa64

3
Có thể xem xét Forth, vốn không có nhiều ngữ pháp.
Gort Robot

1
AFAIK HTML không phải là ngôn ngữ lập trình.
jcora

3
HTML là một ngôn ngữ đánh dấu ; đó là những gì M đại diện cho, nó không phải là ngôn ngữ lập trình vì nó không hoàn thành Turing! XML chắc chắn không phải là ngôn ngữ lập trình. Chúng là các định dạng mã hóa dữ liệu ! Điều này giống như nói rằng JPEG là một ngôn ngữ lập trình!

2

Tự động hóa chính sách của Oracle có các quy tắc kinh doanh được mã hóa bằng ngôn ngữ tự nhiên. Đó là giá trị một cái nhìn.

Một ví dụ là:

Human Resources Policy 100 – Maternity Leave 

100.1. The employee is eligible for maternity leave if

a. The employee is female and
b. Either
 i. The employee has given birth to a natural child or
 ii. The employee has taken legal custody of an adopted child
 and
c. The employee is a full time employee and
d. The employee has been employed for at least 12 months continuously

Nguồn gốc của ví dụ.

Tài liệu chính thức của Oracle có ở đây .

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.