有人类可读的编程语言吗? [关闭]
nlp
5
0

我的意思是,是否存在具有人类风格编码的编码语言?例如:

Create an object called MyVar and initialize it to 10;
Take MyVar and call MyMethod() with parameters. . .

我知道它不是那么有用,但是创建这样的语法可能会很有趣。

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

我看到还没有提到莎士比亚编程语言

这些程序经过编码,看起来像是摇摇晃晃的剧本,剧本中的个人角色是可以容纳数字的变量,而剧本中的各个短语可以操纵角色及其所拥有的数字。例如,“说出你的想法”命令一个角色输出其价值。

收藏
评论

所有语言都是“人类可读的”。 :)别人还能如何创建它?话虽这么说,支持DSL的语言却非常直观,例如Boo

收藏
评论

LOLCODE怎么样?

HAI
CAN HAS STDIO?
VISIBLE "HAI WORLD!"
KTHXBYE

本身就是简单!

收藏
评论

这是大约在1980年代初期的“下一件大事”,我在前几年的大部分时间都是在“ NATURAL”中工作的,当时据说这是新兴的4GL(第四代语言)中最好的一种。旨在使数据访问(在本例中为ADABAS数据库)易于阅读。

当然,它绝对没有做任何事情。我们最终得到的是冗长且结构错误的代码。这两种产品仍然存在,但您从未听说过它们,这证明了它的死胡同。

实际上在那个时期,人们似乎普遍希望超越“编程”,而进入某种2001年启发的AI天堂。 Oracle的确非常热衷于代码生成,我怀着一些兴趣,记得有一种名为“最后一个”的产品作为产品销售给管理人员,该产品可以自动生成您想要的任何程序,并使所有编程人员变得多余。似乎没有达到期望;-)

值得记住的是,SQL最初是在某些季度上市的,这是允许管理层直接查询其数据的一种方式。我什至被送去学习基本SQL的课程(在大型的全国性运输组织中运行,它是钢铁品种)其中包括了初级管理类型,因为他们计划将基本查询工具掌握在手中。那真是一场灾难。

也许在50年后可能会有所不同,但是在游戏的当前阶段,编码需要一定的思想和实现的清晰度,最好通过为此目的设计的专用语法来进行调解,而不是与不清楚和模棱两可的自然语言近似。最接近的近似值可能是物理学,其中主题的本质在于所用的数学(认为是物理学的编程语言)而不是冗长的措辞。

添加

我忘记了,除了COBOL之外,还有PL / 1,有时是因为它允许NASA将一个人送上月球,这和COBOL一样冗长,甚至更努力地使其成为“经理可读的”。这就是为什么现在也没人真正听说过它的原因:-)

收藏
评论

让编程语言像(冗长的)普通语言一样阅读,就像要求人们一直以合法语言交谈一样。所有多余的杂物都挡住了。

理想的编程语言应具有尽可能透明的语法,并使程序背后的概念脱颖而出。显然,在快速学习曲线与最小但晦涩的语法(请考虑Perl甚至K)之间需要权衡取舍。

收藏
评论

AppleScript与此非常接近,尽管这显然与平台有关。

这是打开iTunes并播放播放列表的脚本

tell application "iTunes"
    activate
    play playlist "Party Shuffle"
end tell

来源: AppleScript示例

收藏
评论

厨师 !任何人都可以阅读食谱吗?看世界你好

Ingredients.
72 g haricot beans
101 eggs
108 g lard
111 cups oil
32 zucchinis
119 ml water
114 g red salmon
100 g dijon mustard
33 potatoes

Method.
Put potatoes into the mixing bowl. Put dijon mustard into the mixing bowl. 
Put lard into the mixing bowl. Put red salmon into the mixing bowl. Put oil into the mixing bowl. 
Put water into the mixing bowl. Put zucchinis into the mixing bowl. Put oil into the mixing bowl. 
Put lard into the mixing bowl. Put lard into the mixing bowl. Put eggs into the mixing bowl. 
Put haricot beans into the mixing bowl. Liquefy contents of the mixing bowl. 
Pour contents of the mixing bowl into the baking dish.

抱歉,这不是一个认真的答案,但这真棒。 :-)

收藏
评论

通知7

通知7也许是我认为以人类语言方式设计的最合适的语言。它是专门用于编写冒险游戏的应用程序。

它基于基于规则的语义,您可以在其中编写许多规则来描述对象及其位置之间的关系。例如,以下部分是一个Inform 7程序:

"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. The description is "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: 
    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.

维基百科引用的示例

收藏
评论

COBOL很像那样。

SET MYVAR TO 10.
EXECUTE MYMETHOD with 10, MYVAR.

维基百科的另一个示例:

ADD YEARS TO AGE.
MULTIPLY PRICE BY QUANTITY GIVING COST.
SUBTRACT DISCOUNT FROM COST GIVING FINAL-COST.

奇怪的是,尽管它的设计可以读成英文,但大多数程序员还是用奇怪的命名约定完全破坏了这一点:

SET VAR_00_MYVAR_PIC99 TO 10.
EXECUTE PROC_10_MYMETHOD with 10, VAR_00_MYVAR_PIC99.
收藏
评论

促进“自然语言”编程的项目本质上注定要失败。

-Edsger W.Dijkstra, 我们如何分辨可能会伤害的真相?

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

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号