2010-06-18 66 views
9

Tôi chủ yếu là một lập trình viên Python và nó thường được mô tả là "mã giả thực thi". Tôi đã sử dụng một chút AppleScript, mà dường như là ngôn ngữ lập trình giống như tiếng Anh nhất mà tôi từng thấy, bởi vì hầu hết các nhà khai thác có thể là từ, và nó cho phép bạn sử dụng "ở bất cứ đâu" (ví dụ, ví dụ ngu ngốc này đến với:.Ngôn ngữ lập trình nào giống tiếng Anh nhất?

set the firstnumber to 1 
set the secondnumber to 2 
if the firstnumber is equal to the secondnumber then 
    set the sum to 5 
end if 

là một chương trình AppleScript hợp lệ có bất kỳ ngôn ngữ lập trình mà thậm chí còn nhiều hơn tiếng Anh giống như so với những VB.NET

+4

trùng lặp: http://stackoverflow.com/questions/491971/what-programming-language-is-most-like-natural-language http: // stackoverflow.com/questions/202750/is-there-a-human-readable-programming-language –

+0

Trên thực tế, thay đổi hai khai báo biến đầu tiên thành "set firstNumber to 1" và "set secondNumber to 2" và loại bỏ bất kỳ những biểu tượng toán học "pesky" hoàn toàn. –

+0

Ah, điểm tốt. Tôi rất quen với các ngôn ngữ lập trình thông thường, tôi đã có một thời gian khó khăn để đưa ra một ví dụ. Tôi sửa nó rồi. – asmeurer

Trả lời

2

Sau khi xem xét tất cả các câu trả lời, tôi tin chắc rằng AppleScript thực sự là ngôn ngữ tự nhiên nhất như thế nào.

3

(mặc dù dụ AppleScript bạn đập VB.NET),? SQL hoặc COBOL (nguồn gốc của kiểu này) Lolcode là "ngôn ngữ" nhưng tôi rất vui vì tiếng Anh không giống như nó.

VB.NET

If MsgBox("The process will be started", MsgBoxStyle.OkCancel, "Title") = DialogResult.OK Then 
    'ok was clicked 
Else 
    'cancel was clicked 
End If 

COBOL

IDENTIFICATION DIVISION. 
PROGRAM-ID. HELLO-WORLD. 
PROCEDURE DIVISION. 
    RECORD CONTAINS 55 CHARACTERS 
    DISPLAY 'Hello, world'. 
    STOP RUN. 

SQL

SELECT * 
    FROM Book 
    WHERE price > 100.00 
    ORDER BY title; 

Lolcode

ON CATURDAY 
    IM IN YR BED 
     I IZ SLEEPIN!!10 
     VISIBLE "Z!" 
    KTHX 
KTHXBYE 
+0

YOU HAZ A LOLCODE: P I LUV LOLCODE !!!! 1 !! 1 !! 1111 – SuperKael

6

COBOL luôn coi khá "ngôn ngữ tự nhiên". Dưới đây là một chiết xuất từ ​​99 bottles of beer page:

move spaces to buffer bb1         
move 1 to j            
divide i by 10 giving k remainder l      
string bb8(k + 1) delimited space into bb1 pointer j  
if j > 1             
    then move bb7(l + 1) to bb1(j + 1:)      
    else move bb7(i + 1) to bb1        
end-if 

Tất nhiên, "ngôn ngữ tự nhiên" không phải lúc nào (? Thường xuyên) một đức tính amoung ngôn ngữ lập trình, nơi sự tinh tế là thứ tự của ngày (và ngôn ngữ tự nhiên là hầu như luôn luôn mơ hồ - thêm tính chính xác theo yêu cầu của một ngôn ngữ lập trình chỉ làm cho nó tiết).

+1

Vào thời điểm COBOL xuất hiện, nó có thể được coi là một đức hạnh. Để viết COBOL giống như viết tiếng Anh, nhưng với một giáo viên tiếng Anh rất nghiêm ngặt phía sau lưng của bạn, mà bạn đánh vào ngón tay của bạn bất cứ khi nào bạn đặt sai dấu phẩy (hoặc dấu chấm). –

8

Có nguy cơ bị xáo trộn bằng ngón tay hoành hành: Tôi cho rằng ngôn ngữ tự nhiên giống như mục tiêu xấu cho ngôn ngữ lập trình. Cụ thể, mục tiêu của một ngôn ngữ tự nhiên là để gây ảnh hưởng đến thế giới để những người khác muốn hôn bạn hơn là đấm bạn; điều này rất khác với mục tiêu của một ngôn ngữ lập trình ngôn ngữ, được dự định như là một tuyên bố rõ ràng trong một miền được xác định rõ mà một máy tính hoặc một người khác có thể đánh giá. Một câu hỏi hay hơn có thể là: ngôn ngữ lập trình nào khiến bạn khó có thể tự bắn mình vào chân?

... tất nhiên là không phải tất cả những gì bạn đã hỏi.

+1

Dijkstra sẽ đồng ý: http://userweb.cs.utexas.edu/users/EWD/transcriptions/EWD06xx/EWD667.html – stephan

+0

Vâng, tôi đồng ý. Tôi chỉ quan tâm đến việc mọi người đã xoay sở được bao xa để thúc đẩy điều này. – asmeurer

4

Ngôn ngữ lập trình Shakesspeare. Đây là một phần của nguồn "hello world", trong số wikipedia:

   Act I: Hamlet's insults and flattery. 
       Scene I: The insulting of Romeo. 

[Enter Hamlet and Romeo] 
Hamlet: 
You lying stupid fatherless big smelly half-witted coward! You are as 
stupid as the difference between a handsome rich brave hero and thyself! 
Speak your mind! 
You are as brave as the sum of your fat little stuffed misused dusty 
old rotten codpiece and a beautiful fair warm peaceful sunny summer's 
day. You are as healthy as the difference between the sum of the 
sweetest reddest rose and my father and yourself! Speak your mind! 
You are as cowardly as the sum of yourself and the difference 
between a big mighty proud kingdom and a horse. Speak your mind. 
Speak your mind! 
[Exit Romeo] 

Có vẻ như làm nổi bật mã không hoạt động ở đây. :/

1

Bạn đã nghe nói về Supernova. Đó là một ngôn ngữ lập trình tự nhiên. Thậm chí bạn có thể tạo cửa sổ trong Supernova bằng cách chỉ cần nói I want window and the window title is hello.

-4

Có lẽ là Lisp thông thường? Các macro trong Lisp cho phép bạn định nghĩa các trừu tượng là "từ mới". Đó là gần với giả hoặc tiếng Anh như bạn muốn nhận được (bởi vì khi mô tả chương trình trong suy nghĩ hoặc thảo luận của chúng tôi, chúng tôi sử dụng rất nhiều trừu tượng từ cơ học của ngôn ngữ cụ thể).

Một ví dụ thú vị là các macro ẩn dụ, mà Paul Graham mô tả trong cuốn sách của ông On Lisp.vĩ mô Anaphoric là một macro mà gắn bó với một số biểu hiện với biểu tượng "nó" bên trong cơ thể của nó, vì vậy chúng tôi có thể dễ dàng tham khảo nó:

(aif (get-data) (do-something it)) 

Trong dòng này, có được dữ liệu là chức năng mà một trong hai returs một số đối tượng hoặc không. Nếu nó trả về dữ liệu, chúng được liên kết với biến "nó", được xử lý bởi hàm "do-something". Nếu dữ liệu được trả về là không, điều kiện không được thỏa mãn và điều khoản không được thực hiện.

Có nhiều ví dụ khác về macro ẩn dụ, như đối với vòng lặp, liên kết biến vòng lặp, v.v. Trong thực tế, bạn thậm chí có thể có macro tạo macro ẩn danh cho bạn.

+0

Bằng tiếng Anh như thế nào? Ngoài việc sử dụng các từ tiếng Anh, mẫu mã của bạn không xuất hiện để sử dụng ngữ pháp tiếng Anh, thậm chí cả các cụm từ dài hơn 2 từ. Nếu đó là một macro cho phép bạn viết LISP bằng tiếng Anh, vui lòng cung cấp một ví dụ về phiên bản LISP bằng tiếng Anh. – Gabe

+11

Đó là những thứ như thế khiến tôi nghĩ người dùng Lisp không thực sự là con người, chỉ là những sinh vật cố gắng vượt qua con người. –

+0

Gabe: Vâng, câu hỏi hơi mơ hồ về mục đích. Có nhiều lý do khác nhau khiến bạn muốn ngôn ngữ lập trình giống ngôn ngữ tự nhiên hơn. Một là bạn muốn có lý do dễ dàng hơn về chương trình của bạn. Định nghĩa trừu tượng như các từ có thể giúp bạn làm điều đó. –

12

Câu trả lời của Shakespeare nhắc tôi về số Inform 7, là ngôn ngữ lập trình nghiêm túc để viết tiểu thuyết tương tác. Nó có thể là ngôn ngữ gần gũi nhất với tiếng Anh tồn tại và có một ngữ nghĩa được xác định rõ ràng.

Đây là một mẫu từ Wikipedia:

"Hello Deductible" by "I.F. Author" 

The story headline is "An Interactive Example". 

The Living Room is a room. "A comfortably furnished living room." 
The Kitchen is north of the Living Room. 
The Front Door is south of the Living Room. 
The Front Door is a door. The Front Door is closed and locked. 

The insurance salesman is a man in the Living Room. "An insurance salesman in a tacky polyester suit. He seems eager to speak to you." Understand "man" as the insurance salesman. 

A briefcase is carried by the insurance salesman. The description is "A slightly worn, black briefcase." Understand "case" as the briefcase. 

The insurance paperwork is in the briefcase. The description is "Page after page of small legalese." Understand "papers" or "documents" or "forms" as the paperwork. 

Instead of listening to the insurance salesman for the first time: 

    say "The salesman bores you with a discussion of life insurance policies. From his briefcase he pulls some paperwork which he hands to you."; 
    move the insurance paperwork to the player. 

Các mẫu sử dụng một thư viện rộng lớn của các đối tượng trong đó có sẵn cho người dùng. Nhưng bản thân ngôn ngữ chính là Turing hoàn chỉnh, và bạn có thể định nghĩa các đối tượng với bất kỳ hành vi nào trong đó.

+1

Ngoại trừ tôi thực sự đang tìm kiếm một ngôn ngữ cho phép bạn nhập những gì bạn muốn bằng tiếng Anh nhất giống như cách có thể, như AppleScript, không phải cái gì đó có thể trông giống như một thứ bằng tiếng Anh trong khi làm hoàn toàn bằng mã. – asmeurer

+0

@asmeurer Ngôn ngữ Wolfram có chế độ nhập ngôn ngữ tự nhiên, chính xác là những gì chúng ta cần: http://blog.wolfram.com/2010/11/16/programming-with-natural-language-is-actually-going- to-work/ –

0

Tôi ghét phải cắm những thứ của riêng tôi (cũng không thực sự) nhưng 7Basic có khá tiếng Anh giống như cú pháp:

BEGIN FUNCTION (variable AS INTEGER) AS STRING 
    PRINT "Hello!" 

    RETURN "return value!" 
END FUNCTION 
11

Nếu bạn có nghĩa là không phù hợp trong ứng dụng các quy tắc với rất nhiều trường hợp cạnh kỳ lạ và góc nhọn để làm tổn thương người học, có rất ít ngôn ngữ lập trình giống tiếng Anh hơn C++.

+7

Điều gì đó buồn cười này phải là nhận xét chứ không phải là câu trả lời. –

0

Tôi nghĩ rằng một cuộc thảo luận về nơi mà chính xác chương trình giống như Dijkstra là cần thiết so với nơi nó sẽ không được thú vị. Trong chương trình cấp thấp hơn, nơi chi tiết là cần thiết, do đó, là chính xác. Vì nguyên tắc lập trình cao hơn, có lẽ không quá nhiều ...

Các vấn đề liên quan