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

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

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

有帮助吗?

解决方案

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.

其他提示

LOLCODE 怎么样?

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

简单本身!

通知7

Inform 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.

维基百科引用的示例

AppleScript非常接近,尽管这显然取决于平台。

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

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

来源: AppleScript示例

  

推广计划的项目   “自然语言”本质上是   注定会失败。

- Edsger W.Dijkstra,我们如何说实话可能会受伤吗?

这是“下一件大事”。大约在20世纪80年代早期,我花了大部分时间作为编码器工作在“NATURAL”,这应该是新一代4GL(第四代语言)中最好的,用于数据访问(在这种情况下,ADABAS数据库)人类可读。

当然它完全没有类型。我们最终得到的只是冗长的结构化代码。这两种产品仍然存在,但你从来没有听说过它们,这证明了它的死胡同。

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

值得记住的是,SQL最初在某些方面作为一种允许管理层直接查询其数据的方式进行销售。我甚至被派去学习基本的SQL课程(在一个大型的国家运输组织,在轨道上运行 - 钢铁品种),其中包括初级管理类型,因为他们计划将基本查询工具放在他们手中。真是个灾难。

也许它可能在50年内有所不同,但在目前的游戏编码阶段需要一定的思想和实现清晰度,最好通过为这些目的而设计的专用语法来调解,而不是对自然语言的任何近似。不清楚和暧昧。最接近的近似可能是物理学,其中主题的本质在于所使用的数学(认为是物理学的编程语言)而不是冗长的词汇。

<强> ADDED

我忘记了,除了COBOL之外还有PL / 1,有时因为允许美国宇航局将一个人放在月球上,它就像COBOL一样冗长,并且更加努力地成为“经理可读”。这就是为什么现在没有人真正听说过它: - )

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

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.

很抱歉,如果这不是一个严肃的答案,但这太棒了。 : - )

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

让编程语言像(详细的)普通语言一样,就像要求人们在法律术语中一直交谈一样。所有额外的措辞都会妨碍你。

理想的编程语言应该具有尽可能透明的语法,并让程序背后的概念脱颖而出。显然,在快速学习曲线和具有最小但模糊的语法之间存在折衷(想想Perl,甚至是K)。

通过创建一组规则,可以在 Prolog 中进行逻辑编程这个。您可以为特定域构建语法(或下载一个),创建知识库然后进行查询。定义语法后,您可以执行以下操作:

bob is a parent of tim.
mary is a parent of bob.

?- X is a grandparent of tim.
X = mary

?- jim is a parent of bob.
false

我发现尚未提及莎士比亚编程语言

这些程序的编码看起来像莎士比亚戏剧,戏剧中的个性角色是可以容纳数字的变量,而游戏中的各种短语操纵角色和他们持有的数字。例如,“说出你的想法”命令一个角色输出他的价值。

Applescript

tell application "Finder"
 set the percent_free to ¬
 (((the free space of the startup disk) / (the capacity of the startup disk)) * 100) div 1
end tell
if the percent_free is less than 10 then
 tell application (path to frontmost application as text)
 display dialog "The startup disk has only " & the percent_free & ¬
 " percent of its capacity available." & return & return & ¬
 "Should this script continue?" with icon 1
 end tell
end if

我可以阅读C.这意味着它是人类可读的(因为我是一个人)。这对普通人来说太简洁了。编程语言的一般概念是最大化有关计算机应如何在给定行中运行的信息。

这就是Ruby如此受欢迎的原因;它最大限度地减少了文本中的功能。英语(或任何其他自然语言)是一种非常不精确,低信息/字符的语言。

总之,它是:(i)之前完成的和(ii)已知的较弱的想法。

这实际上是一个热门话题。

首先 - 什么是人类可读?

中国读者不能读俄语,反之亦然。 你缩小你的域名,例如中国药剂师写一个你可以围绕它设计一种语言的描述。这将是人类可读

例如语言属于特定领域语言的保护范围。

SQL

SELECT name, address FROM customers WHERE region = 'Europe'

是。它被称为 COBOL ,人们通常会厌恶它。

通知7 是我见过的最成功的此类系统。它比其他答案中列出的更粗糙的系统有两个优点:它适用于特别适合自然语言(交互式小说)的领域,并且它基于更多的计算语言学知识对输入代码进行更精细的分析,而不仅仅是传统的编程语言语法碰巧使用英语单词而不是大括号等。

Perl,有些人声称。

print "hello!" and open my $File, '<', $path or die "Couldn't open the file after saying hello!";

谷歌搜索“自然语言编程”你会发现很多信息(包括为什么这是一个坏主意)。

表达的清晰度很重要。

但是,思想的清晰度远非如此重要。

HyperTalk 及其后代 AppleScript 的设计与英语类似。

VB与我能想到的一样接近:

如果MyLife.Sucks然后MyLife.End Else MyLife.Continue

当然,Erlang。

-module(listsort).
-export([by_length/1]).

 by_length(Lists) ->
    F = fun(A,B) when is_list(A), is_list(B) ->
            length(A) < length(B)
        end,
    qsort(Lists, F).

 qsort([], _)-> [];
 qsort([Pivot|Rest], Smaller) ->
     qsort([ X || X <- Rest, Smaller(X,Pivot)], Smaller)
     ++ [Pivot] ++
     qsort([ Y ||Y <- Rest, not(Smaller(Y, Pivot))], Smaller).

我是一个人,它是一种编程语言,我可以阅读它。我不知道它有什么意思,但我认为那里有很多英文单词。

(舌头紧紧地贴在脸上。)

DSL可以非常自然。请参阅使用此示例 =“http://msdn.microsoft.com/en-us/library/dd129869.aspx"rel =”nofollow noreferrer“> MGrammar :

test "Searching google for watin"
    goto "http://www.google.se"
    type "watin" into "q"
    click "btnG"
    assert that text "WatiN Home" exists
    assert that element "res" exists
end

COBOL 旨在由管理人员阅读,并且具有“干扰词”。使其更具可读性。

有趣的是,它看起来有点像一个冗长的DSL。

比大多数人更易读,是Ada的早期卖点之一。我发现这些日子是一个愚蠢的论点,因为任何语言中任何足够复杂的任务都需要一个称职的实践者来理解。但是,它确实击败了C语法语言中的bejeezus。它的主要编码风格也可以增强这种效果。例如,比较if语句中的循环: 阿达:

if Time_To_Loop then
   for i in Some_Array loop
      Some_Array(i) := i;
   end loop;
end if;

C:

if (timeToLoop != 0) {
   for (int i=0;i<SOME_ARRAY_LENGTH;i++) {
      someArray[i] = i;
   }
}
如果我使用像微软这样的匈牙利符号,那么C代码看起来会更糟,但我想要变得更好。 : - )

有趣的问题。您的问题可以理解为“是否有任何易于人类阅读的编程语言?”,或者作为“是否有可用于编程的人类语言?&QUOT ;.这里的所有答案都集中在前者上,所以让我试着回答后者。

你听说过梵语吗?它是一种古老的印度语言,印地语等现代印度语言就是以此为基础的。

wiki / Sanskrit

多年来我一直听说它的精确性和完整性足以被用作计算机上的高级语言。当然,您需要一个编译器将Sanskrit指令转换为机器语言。我知道剧本&amp;是的,它是精确的(完全是语音,所以你永远不必问“你怎么拼写”),但我不太了解语法。

这是完整的轶事,所以我不保证这个的准确性。只想分享我对此的了解。 : - )

我同意这里的普遍共识。 “人类可读” 通用编程语言大多是一个坏主意,但人类可读的领域特定语言是非常值得的。

REBOL有一个很好的系统来创建DSL。

GradStudent

它只有一个声明:“你 - 给我写一个程序来做x”
它对X的所有值都有效,并且具有以下优点:x不必定义,并且可以在编写程序后更改。

可以使用称为实习生的商业方言:开发成本较低但不保证可以使用

Cobol 就是这样。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top