哪种编程语言最像自然语言? [关闭]
nlp
6
0

在很多情况下,我不了解对方在说什么,而其他人也不了解我时,我就想到了这个问题。

因此,“智能”解决方案是说一种计算机语言。 :)

我感兴趣的是,一种编程语言可以接近(英语)自然语言。当我说接近时,我的意思是不仅要使用单词和句子,而且要能够“做”自然语言可以“做”的事情,通过“做”,我的意思是可以(以非常有限的方式)使用它代替自然语言。

我知道这是不可能的(是吗?),但是我认为这很有趣。

参考资料:
Stack Overflow
收藏
评论
共 10 个回答
高赞 时间 活跃

如果您是行家,那么莎士比亚编程语言是很自然的;)

但是,您在编程中获得的“自然”程度是有限度的。人类语言太开放了,无法解释-一种编程语言需要具体且精确,我认为这与拥有一种“自然的”编程语言不太吻合。

收藏
评论

gherkin是一种特定于域的语言,用于描述可执行的bdd规范。 黄瓜 (红宝石)和Specflow (dotnet)都使用它。

    Feature: Browsing
        In order to see who's been on the site
        As a user
        I want to be able to view the list of posts

    Scenario: Navigation to homepage
        When I navigate to /Guestbook
        Then I should be on the guestbook page

    Scenario: Viewing existing entries
        Given I am on the guestbook page
        Then I should see a list of guestbook entries
            And guestbook entries have an author
            And guestbook entries have a posted date
            And guestbook entries have a comment

    Scenario: Most recent entries are displayed first
        Given we have the following existing entries
            | Name      | Comment      | Posted date       |
            | Mr. A     | I like A     | 2008-10-01 09:20  |
            | Mrs. B    | I like B     | 2010-03-05 02:15  |
            | Dr. C     | I like C     | 2010-02-20 12:21  |
          And I am on the guestbook page
        Then the guestbook entries includes the following, in this order
            | Name      | Comment      | Posted date       |
            | Mrs. B    | I like B     | 2010-03-05 02:15  |
            | Dr. C     | I like C     | 2010-02-20 12:21  |
            | Mr. A     | I like A     | 2008-10-01 09:20  |
收藏
评论

COBOL读起来很像英语

000100 IDENTIFICATION DIVISION.
000200 PROGRAM-ID.     HELLOWORLD.
000300
000400*
000500 ENVIRONMENT DIVISION.
000600 CONFIGURATION SECTION.
000700 SOURCE-COMPUTER. RM-COBOL.
000800 OBJECT-COMPUTER. RM-COBOL.
000900
001000 DATA DIVISION.
001100 FILE SECTION.
001200
100000 PROCEDURE DIVISION.
100100
100200 MAIN-LOGIC SECTION.
100300 BEGIN.
100400     DISPLAY " " LINE 1 POSITION 1 ERASE EOS.
100500     DISPLAY "Hello world!" LINE 15 POSITION 10.
100600     STOP RUN.
100700 MAIN-LOGIC-EXIT.
100800     EXIT.

资源

收藏
评论

好的'ol AppleScript称赞英语是英语的强项之一。但是,使用它并不是很有趣。

收藏
评论

理查德·普赖尔(Richard Pryor)在《超人III》中用来转移数百万美元的语言非常接近:

> TRANSFER $1,000,000 DOLLARS TO WEBSTER'S ACCOUNT.... NOW

;-)

编辑:已更正字符;-)

收藏
评论

HyperTalk-苹果HyperCard背后的语言。

 on mouseUp
   put "100,100" into pos
   repeat with x = 1 to the number of card buttons
     set the location of card button x to pos
     add 15 to item 1 of pos
   end repeat
 end mouseUp

维基百科上的HyperTalk

收藏
评论

有所谓的通知,在其最近的化身,通知7编程语言,看起来很像自然语言...特别是书面语言。

Inform是专门用于创建文本冒险游戏的,但是没有内在的理由不能将这些概念扩展到其他领域。

这是一小段Inform 7代码,摘自Emily Short的Glass游戏。

Stage is a room. 

The old lady is a woman in the Stage. Understand "mother" or 
"stepmother" as the old lady. The old lady is active. The description 
of the lady is "She looks plucked: thin neck with folds of skin
exposed, nose beaky, lips white. Perhaps when her fortunes are mended
her cosmetics too will improve." 

The Prince is a man in the Stage. The description of the prince is
"He's tolerably attractive, in his flightless way. It's hard not to
pity him a little." The prince carries a glass slipper. The glass
slipper is wearable. Understand "shoe" or "heel" or "toe" or "foot"
as the slipper. The description of the slipper is "It is very small
for an adult woman's foot." 

完整的代码可以在这里找到。

这是一个简单的小示例……它实际上可以处理令人惊讶的强大想法集。

应该指出的是,代码并不是真正的奇怪密码,其构造具有隐藏的含义……该代码或多或少地完成了您的期望。例如:

The old lady is a woman in the Stage. Understand "mother" or 
"stepmother" as the old lady. 

创建一个碰巧是女性的对象,将该对象命名为“老太太”,并将该对象放置在名为“舞台”的房间对象中。然后,创建两个别名(“母亲”和“继母”),它们也都引用“老太太”对象。

当然,随着示例变得越来越复杂,跳过的必要步骤也变得更加复杂。英语从其本质上来说就是模棱两可的,而计算机代码绝对不是。因此,我们永远不会获得“完美的婚姻”。

收藏
评论

取决于您插入的圈子,但是LOLCODE可以被视为自然语言;)

循环示例:

HAI
    CAN HAS STDIO?
    I HAS A VAR
    IM IN YR LOOP
        UP VAR!!1
        VISIBLE VAR
        IZ VAR BIGGER THAN 10? KTHXBYE
    IM OUTTA YR LOOP
KTHXBYE

值得一提的是,VB是一种非常自然的语言。非程序员类型很容易学习,因此语法必须非常容易理解。

收藏
评论

我不知道我会说VB.NET接近英语,但是我认为它与您真正获得的语言差不多。当然,一旦你设定了一段时间,好像英语- 读起来就像一本书,一个经验丰富的VB程序员,但如果你停下来思考现实世界的英语:

For i As Integer = 1 To 10
  Console.WriteLine("Hello World")
Next

离:

编写“ Hello World”,然后移至控制台的下一行10次。

当然,英语是模棱两可的-是要您将整个事情做10次,还是只写一次“ Hello World”,然后再移至下一行10次?

我想我们需要学会以一种不太含糊的方式讲话:

这样做10次:在控制台中,编写“ Hello World”,然后移至下一行。

但是我非常怀疑是否有一种编程语言真的像英语一样读。甚至那些说这就像自然语言的Cobol狂热分子-如果您停下来思考一下如何以一种真实的方式而不是编程语言所定义的方式思考事物,那实际上不是。

即使在VB中,您也受限于框架指示您做事的方式...

收藏
评论

Lisp(当然(如果您知道我的意思(LOL)))

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号