几年前,我的大儿子和我开发了一个简单的英语编程和开发系统,以回答以下问题:
可以使用高级语言(例如英语)方便高效地编写低级程序(例如编译器)吗?
自然语言能否以相对“草率”的方式进行解析,并且仍然为生产性编程提供足够稳定的环境?
当您不必将自然语言的思想转换为其他语法时,编程是否更容易?
现在,我们可以根据直接的经验,用响亮的“是”回答这三个问题。
我们认为,解析器的运作类似于人脑。考虑。一位父亲对他的宝贝儿子说:
“想吮吸这个瓶子,小家伙?”
孩子听到了
“等等,等等,SUCK,等等,等等,BOTTLE,等等,等等。”
但是他的反应是正确的,因为他的头部右侧有一个“图片”,左侧与“ bottle”一词相连,脖子后部已有一个“ skill”,与瓶身相连。术语“吸”。换句话说,孩子将他的能力与他所积累的图片(类型)和技能(例行程序)相匹配,而忽略了其余部分。我们的编译器做同样的事情,在程序员编写新的应用程序代码时,不是由我们而是由程序员来定义新的图片(类型)和技能(例程)。
典型的类型定义如下所示:
多边形是具有某些顶点的事物。
在内部,名称“多边形”现在与一种动态分配的结构类型相关联,该结构包含一个双向链接的顶点列表。“顶点”以类似方式在其他地方(在此定义之前或之后)定义;复数是自动理解的。
一个典型的例程如下所示:
要将x坐标和ay坐标附加到多边形:给定x和y创建一个顶点。将顶点附加到多边形的顶点。
请注意,参数和变量不需要形式名称(专有名词)。我们认为,这是一个重要的见识。我的现实世界中的椅子和桌子从不(在正常对话中)从未被称为“ c”或“ myTable”-我将它们简称为“椅子”和“桌子”。同样在这里:“顶点”和“多边形”是此类事物的自然名称。
另请注意,例程和变量“名称”(例如“ x coord”)中允许使用空格。这是21世纪,对吗?并且还允许使用“昵称”(例如,“ x坐标”中的“ x”)。而且所有格(“多边形的顶点”)以非常自然的方式用于引用“记录”中的“字段”。
还要注意,“给定”一词本来可以是“使用”或“与”或任何其他等效形式,因为我们的草率分析着重于理解和忽略所需要的图片(类型)和技能(例程)尽可能的休息。
在最低级别,事情看起来像这样:
将一个数字添加到另一个数字:Intel $ 8B85080000008B008B9D0C0000000103。
请注意,在这种情况下,我们在一个例程中同时拥有最高和最低的语言-英语和机器代码(尽管为十六进制)。这里的见识是(像典型的数学书一样)程序应该主要用自然语言编写,并根据需要(并且仅根据需要)以更方便的语法编写适当的摘要。
您可以在这里获得我们的开发系统:www.osmosian.com/cal-3040.zip。这是一个小的Windows程序,大小不到一兆字节。如果从“ documentation”目录中的PDF开始,则在进入十页之前,您将重新编译整个文件本身(在Walmart的最底层机器上,不到三秒钟)。
有关问题和意见,请发送至gerry.rzeppa@pobox.com