发博文
个人资料
OrcK
OrcK
  • 博客等级:
  • 博客积分:503
  • 博客访问:3,809
  • 关注人气:0
OrcK语言的优点

  OrcK语言是一种灵活、高效的语言,它借用了Perl正则表达式和C++编译器。以处理文本见长的Perl语言,它的正则表达式可谓是相当强大,只要是它可以识别的字符串,都可以拿来做语句。通过配置,你可以使用任意字符,包括汉字进行编程,你可以把函数名放在后边或者干脆不写函数名,你可以建立属于自己的语法风格;大名鼎鼎的C++编译器就更不用说了,生成的程序效率极高。

  Orc是魔兽争霸中兽族的名字,K的含义有很多,可以理解为King。这样OrcK就成了“兽王”,同样喜欢玩游戏的你,对这个名字应该不陌生吧。

访客
加载中…
好友
加载中…
评论
加载中…
留言
加载中…
分类
博文
标签:

杂谈

分类: 杂谈

嗨,大家好,我还活着……

开发的日子很辛苦,也很充实,所有的一切,都将成为美好的记忆。

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2012-02-20 11:25)
标签:

杂谈

这几天比较忙,没时间发博客。
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2012-01-24 16:23)
标签:

it

分类: 技术

OrcK 语言是一种尝试,我现在正在尝试新的语言。

新的语言是 ASM 和 LISP 的混合物。

例:

(call (cd $root '' system out println) ('hello world'))

 

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

it

分类: 技术

25号那天,FS2内存文件系统完成,测试了。

今天添加了push pop cd等几个函数,封装成dll,在VS60下运行成功,但是在devcpp上怎么也通不过编译,直到现在还没闹清是怎么回事。

无奈,只得在文档中写上“VS60中测试通过”,在devcpp上我就不管了。

对本系统感兴趣的可以回帖。

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2011-12-19 21:43)
标签:

it

分类: 杂谈

把OrcK实现成一个API或许更有市场,如此来说,用C语言比较好,因为速度快。
把OrcK定位到AI,速度将是第二位的,那么,用Java比较好,因为库类多。
把OrcK实现成带AI的API?用C还是Java?
另外,如何扩展?API需要扩展,AI也需要扩展。

 

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

it

分类: 技术

搜索类型为string的变量的名字,把它们的值打印出来,用正则表达式是这样写的:

 

root =~ m( (<) var ($1) type.string(#0) )

foreach $x ($1){

    print var.$x.value

}

 

(<)  左空环视,用来替代锚点^

($1) 命名捕捉,捕捉内容存到$1中

(#0) 有0个子结点,即对应结点没有子结点

foreach $x ($1)  $变量为结点变量,不区分单数、复数

 

(未完、待续)

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

编程语言

it

分类: 技术

OrcK语言包括语言层和实现层。语言层是各种字面替换,实现层是实际的代码。已经实现的OrcK语言可以作为语言层,正在完成的FS2可以作为实现层的载体。由代码print:a**b生成Lisp代码(print (pow a b))生成对应的FS2原语,形成一棵树。

 

基本思路就是这样。例子包括两个,一个是print var:hello.value另一个是调用Perl语言的先out再system的例子。

 

按照最初的设计,内核应该不会算术运算,因为是纯符号逻辑,而数学运算是复杂的符号逻辑,应该等到以后再实现。那么当务之急是什么呢?应该是实现记忆,把代码和数据和程序都记忆下来,这是最重要的。至于数学运算、文本处理那些东西都是已经成形了的东西,可以从其他语言中借来。

 

所以,程序包括语言层和实现层,这没的说。还包括外部程序,例如“计算器”程序、“正则表达式”程序等等,用来完成不同的任务。而OrcK语言的核心只是用来记忆,并且用记忆组织程序的各个模块。

 

 

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2011-11-10 20:32)
标签:

it

分类: 技术

把函数复制到需要它的地方,修改一下,然后运行。

(Copy-Modify-Run)

既然数据可以MOV来MOV去,为什么代码不行呢?调用函数时的参数列表,返回值,返回地址

都是对函数或函数所处环境的修改。如:r=fun(a,b)可以写成

copy this,fun
set {ret-addr},next
set {ret-value},r
set {para1},a
set {para2},b
goto this

fun:...
    set {ret-value},...
    goto {ret-addr}

返回值和返回地址都可以解释成参数,参数可以解释成对函数体的修改,就是CMR中的M。

 

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

it

分类: 技术

结点是文件系统中的文件和文件夹。

△模块内编译,模块外解释,用一段文字描述一个模块。模块内编程,用C就不错,模块间编程,可以使用Basic,描述模块的功能,推荐使用OrcK。

模块应该是域,域是结点的集合,结点构成图,如果直接在结点上编程,就能避开词法分析和语法分析,这么做的代价是程序异常难懂。以前的说法是“在树上编程”,这么说容易引起误解,让人们认为程序员都是属猴子的,不太雅观。所以改变了说法:在结点上编程。这么一来,表达更加确切,因为结点可以构成图,而树只是图的一个子集。

人工智能应该是解释的,这么做主要是为了实现运行时修改代码。而如果全是解释的,那效率又难以保证,所以选择了“模块内编译,模块外解释”这种做法。

△修改代码,然后执行

cout<<'input a number:'
cin>>this.for.%1
goto this.for
for(i=0;i<%1;i++){
 cout<<'hello'<<endl;
}

△灵活的函数调用

i.asnumber=5 --> fun_0037(i,5)

 

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2011-11-02 19:32)
标签:

it

终于可以把我开发的两个作品合二为一了。基于文件系统的编程语言,这是搞程序设计、人工智能等的必不可少的工具。外国有Ruby on Rails,我这里有OrcK on FS2,我本想写作OrcK @ FS2的,可是它可能会被误以为是个邮箱,所以就没这么写。FS2不是别的,是一个文件系统,OrcK是一种编程语言。不过设想中的OrcK是一种解释型的语言,传统的OrcK是一种翻译语言,借用C++的编译器。新的设想中,OrcK应该可以在运行时修改自己。因为代码和数据一样,都是结点,结点即传统文件系统中的文件或文件夹。既然文件可以修改,那么结点也可以执行创建、修改、删除等操作。既然代码和数据都是结点,那么修改代码也是理所当然的了。修改数据大家并不陌生,但是在运行时修改代码,然后再运行,不仅你没尝试过,我也没有。我以前只是使用Perl编过一个脚本,生成另一个程序,然后执行,用print和system命令完成的。现在的OrcK语言依然需要解释器,把程序一行一行地解释执行,其间修改一下子也是大势所趋。

 

关于变量和函数的共同点,我想它们都是一种替换,是一种域。A=3中,把A替换成3不言而喻。在fun(3,4)中,除了要替换代码,还要处理参数列表,复杂一些。如果只是这点区

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
  

新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

新浪公司 版权所有