引言


如今的程技暴露了一系列问题,而问题在很大程度上可以用人类自然程法加以解决,特殊一点的可以用珀加索斯法解决。



这些问题可以归结为四点:

1. 思想问题了适某一种特殊言的广泛模式,开者不得不重新其思维进组织,因此他就不能直接表其思想(如:C#程序中对类、属性、方法的事先考虑),降低了创造性。


2. 问题程思想不生根本的改,新明的程序言就会不得不反复的行同的算法。比如:原先在汇编语言里使用的冒泡排序算法,如今也用在Java语言中,不久的将来应该还会应用在别的新的语言中。


3. 阅读障碍:程序开者不得不反复的阅读那些非母写就的注和文档。由于写者的疏忽或者使用错误的表方式,致开者的解、错误及无效率。


4. 术问题:在造性方面,开者不能全身心的投入到深入的研究中,而是在开的一致性上花了很多精力。例如,在正确的字符集、网详细日志或者数据的格式等的挑上浪了很多时间


解决方法和想:

利用珀加索斯的人类自然程可以很松的解决上述问题1. 开发者可以不用费力的去改变其编程思维结构,而是直接用其母语进行表达。2. 当人类自然语言长时间保持不变时,用该语言编写的程序也会保持不变,为适应现有技术而重新开发程序的现象将不复存在,取而代之的将是编译器,它会自动的为该自然语言进行再开发,不需要开发者对其关注。3. 开发者可以用母语编写备注和文件集,其他的开发者则可以在自动翻译的基础上用自己的母语继续开发。如果程序都是由自然语言所编写,那么对于备注的需求就会减少。4. 珀加索斯只允许诸如Unicode字符形式的标准形式。

基于上述考,我的工作就是通“珀加索斯”编程系统的实现和使用大量的例子来证实下面三条假设: (Anwendungsbeispiele:)


1. 使用人类自然编程语言比使用传统语言在一般的应用上更有效率,可以得到更大的发展。尤其是在语境依存、相互关系和压缩短语的应用上。

2. 使用人类自然编程语言比使用传统语言可以更快的让人理解程序的编写。

3. 使用人类自然编程语言比使用传统语言可以让人更易学,更易掌握。


言思想:

人类自然言(如人类思想)的用必在珀加索斯中以某种形式行表。要个目的,就会附加外的思维标记过程。有了些,我中的简单思想(如:“红”和“声大”)和多层思想(如:“木材”和“桌子”)就会结合起来,重新组合出新的思想,使之可以描绘出我们的想法。如:这个桌子是棕色的(桌子,棕色),这种思想本身超越了特定的自然语言,它是由不同的自然语言进行表述的。尽管对个人来说这些思想都具有隐私性,但,对于整个人类来说大体上又都是一样的。因此,交流是非常重要的,这也是运用一般知识的计算机体系的基础。


自然言的特性:

自然言用下述三点行区分,其目的是用有的程序言尽可能高效率的行信息交1. 自然语言经常使用暗示指代,如“他”、“她”或者“最后”,另外还是用直接指代,如:“这个字符串列”或者使用部分语句关联关系指代,如:“是的,那是一定的”。2. 使用表达,如:使用句法上的表达“在列和栏中给出数学元素表”,又或者使用语义学的表达,如:“使人群由左向右穿过并转弯” 3. 对文章的依赖。如:“取出一个目录,把数字3放于末尾。取出一个目录的名字,把数字3放于末尾”,这样,由于前句不同,虽然后句使用了同样的文字,其意思却是完全不同的。

上面所提到的Story-Telling-System(39)相关领域的一个调查研究还是值得关注的。如果存在或者即将存在相关工作,则其研究可以实现,该研究会有一定的成果并且不是我所涉及的领域。我一定会促进该项研究的合作。

    总体上来说,在专业领域成熟的人类自然语言程序只有很少的程式,以我们的角度来看,其主要原因是目前类似系统的发展还没有令人满意的或者说对于人类自然语言来说还没有绝对必要的技术发展支持,或者不存在自然语言的有效分列、足够的计算、存储能力的语意数据格式。


讨论


人类自然问题可能是由人类言存在的语义相同但表述不同的情况而生的。比如:”写出字符串”或者“给出字符串”,这种语义相同的表达却被赋予强大的限制,让人们无法理解。


此外,人类言的表存在多的情况,问题就不能通来解决。例如:“您说指的‘Sie’是值数量还是字符串?”。


言描述的正式记录要比事物比更令人意,尤其是在数学域。人类自然言的程序言也应该额外的支持正式符号,目的是使用者随可以使用理想的程技,且可以自己决定什么候使用正式符号,以及什么候不用。

总结


最后,按照作者的思想总结一下:使程模式成可能的、适于事物的言已,并且定位于最高点。是从机械言开始所走的很一段路的果,直至在它引域,使之更能确切的表人类的思想。但,我们应该,在未来展有可能停滞不前。人类自然程在里起到了决定性的作用,至少于以后的研究会激的兴趣。


珀加索斯第一次以理论为,具有实际可操作性的言。通过这项工作,我期望在件技和程序言范畴内、在算机言学的基到学的可展。



“珀加索斯”读取一段由自然语言撰写的文字,然后生成可执行的程序,该程序可以将文章中描写的内容展示出来。


结构

以一种隐喻的方式展示出了“珀加索斯”方法的结构体系:

思想言表的解决:

“珀加索斯”读取一段程序代码,然后产生与该代码相适应的表达。如例句:If the first element of the second row of the matrix is smaller than 3 then write“I can understand you”. 珀加索斯会产生如下的表达 :

(
  (
  ((be, action), normal mode, present tense, predicate),
  ((element, entity), (first, positive, property),
  ((row, entity), (second, positive, property),
  ((matrix, entity), single, entity reference,
  reference, normal phrase, phrase),
  single, entity reference, reference, normal phrase, phrase),
  single, entity reference, reference, normal phrase, phrase, subject),
  (smallness, comparative, property),
  ((three, entity), single, entity reference, reference,
  comparation phrase, phrase, object),
  statement clause, clause, first),
  (
  ((writing, action), normal mode, present tense, predicate),
  (direct personal reference, reference entity, subject),
  (("I can understand you!", character string symbol),
  symbol phrase, phrase, object),
  command clause, clause, second),
condition sentence, sentence)


一本字典中保存着必要的典知,其中包括单词的所有法形式。如:所描述言中单词对应的思想排列。下表就是一个条目的概况:

在程序代段在思想言中被表之后,珀加索斯会尝试弄明白句子所要展的思想。思想言的表将会被一步一步的由外向内行分析,然后与程序内的相校:

段所存的命令与Java程序中的“If-then”所起到的作用是相同的。

种短思考的帮助下,一个保存了7次记录的列示就会如参考“数”或者“他”这样解决出来。


程序设计

之后通分解出的意思,在中就会生程序代段。下面是小例子:


Take the matrix ([2, 2, 1], [1, 4, 3]).
Print it.
New line.
If the first element of the second row of the matrix is smaller than 3 then write "I can understand you!".


转换成代就是下面的子:


// Take the matrix ([2, 2, 1], [1, 4, 3]).
long[][] matrix74 = new long[2][3];
matrix74[0] = new long[]{2, 2, 1};
matrix74[1] = new long[]{1, 4, 3};

// Print it.
System.out.print("(");
for (int i7 = 0; i7 <= 1; i7++)
{
  System.out.print("[");
  for (int i8 = 0; i8 <= 2; i8++)
  {
  System.out.print(matrix74[i7][i8]);
  if (i8 < 2) System.out.print(", ");
  } 
  System.out.print("]");
  if (i7 < 1) System.out.print(", ");
}
System.out.print(")");

// New line.
System.out.println("");

// If the first element of the second row of the matrix is
// smaller than 3 then write "I can understand you!".
if (matrix74[1][0] < 3)
  System.out.println("I can understand you!");


如果矩第二行的第一个元素小于3,就会在屏幕上打印出“I can understand you!”。

珀加索斯只能用德,目的是在目标语言中取得表意思的一致,并用德语语法塑造出法上完全正确的句子。


相关工作:


,以前就已存在信息言,只是言的用在很大程度上是由人类的言所完成的,但并不是人类自然言的本意,因不是在大量的人类言的基建的。也就是,它只是仅仅产生出一个人类自然言形式上的充式言,如:COBOL, FORTRAN 和BASIC。新产生的还有:KlarDeutsch和AppleScript(010)。KlarDeutsch是该补充式的商业编程语言,主要应用于机器控制方面。AppleScript是一种笔记本语言,主要是为Apple公司的MacOS企业系统编写简单的程序。它的早期版本可以应用于多种语言。NaturlJava(045)也是一种言,合着人类言,人可以Java代码。Java结构在编程上存在一定的局限性,如某种命令样式“I would like to create a public method that is named XYZ”.


80年代也产生过单纯人类自然语言编程工具:NLC(054, 006)语言。这个英文版的人类自然语言程序实现于受限制的以字模运算为主的主机中,但它是第一个这种形式的程序。另一个比较新的有趣的语言是Metafor-Prototype(039),它依靠于Story-Telling-Systeme(034),使用一种“Pacman is a character who loves to run through a maze and eat dots”句型来阐述一个故事。伴随学术工程还有一个由个人创作的语言:Osmosian (049)。


珀加索斯不仅仅支持上面所列程序的所有特点,甚至有更多:

理解

短期记忆

形成

自然
- 德语
- 英语


- Java

层记忆