免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2622 | 回复: 2
打印 上一主题 下一主题

叹,本来是离开本版,但是按奈不住看到Zimbu的兴奋,希望你别错过,一个新玩意! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-12 01:19 |只看该作者 |倒序浏览
开源文本编辑器Vim的作者Bram Moolenaar推出了新的编程语言Zimbu,一种不拐弯抹角直截了当的实验性编程语言。Moolenaar表示Zimbu集现有语言的优点于一身,同时避开它们的不足。Zimbu代码清晰易读,使用范围广泛既能写OS kernel,又能写脚本,还能写大的GUI程序,可以编译和运行在几乎所有系统上。

Zimbu源代码下载

本人下载参看了部分语法并试用了本语言,数据类型,请看:
STANDARD TYPES                                                                           
string            currently like char * in C, will be something else           
int                32 bit integer                                                                 
bool              TRUE or FALSE                                                           
status            FAIL or OK                                                                  
list<Type>        ordered list of items                                                   
dict<Type, Type>  dictionary                                                              
IO.File           file for reading and writing                                            
IO.Stat           file status info
Func<Type>(Type, Type) func      # reference to function               
Proc(Type, Type) proc            # reference to procedure
r = func(arg, arg)               # call function by reference
proc(arg, arg)                   # call procedure by reference

编译器比较高级,生成ANSI C 源代码,然后由GCC编译链接为可执行程序,也可以解释执行扩展名为zu的源程序,因该是内建一个函数集而不是虚拟机来解释执行脚本,这样做执行速度很快,基本类型还没有加入浮点数类型,list中可以使用浮点数类型,不知道是没有完善,还是设计如此,需要仔细看源码才能了解,可以使用class,可以使用继承。语言本身很简单,实现简洁,尤其令人称奇的是函数式虚拟机(用函数执行代码将结果返回)这种新玩意(可能是我孤陋寡闻,PHP、perl早期版本可能也是这种方法包括perl5,perl6是寄存器虚拟机),无疑可以编写脚本式的OS,如果我的猜测正确,这将是除堆栈虚拟机、寄存器虚拟机以外的静态的函数虚拟机,高速执行无状态,研究一下吧。

[ 本帖最后由 rawa99999 于 2009-11-12 01:24 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-11-12 09:40 |只看该作者
可惜 zimbu.org 访问不了

论坛徽章:
0
3 [报告]
发表于 2009-11-12 17:47 |只看该作者
  1. # Zimbu example program: Unix style "echo"
  2. #
  3. # Copyright 2009 Bram Moolenaar
  4. # Licensed under the Apache License, Version 2.0.  See the LICENSE file or
  5. # obtain a copy at: [url]http://www.apache.org/licenses/LICENSE-2.0[/url]

  6. MAIN()
  7.   bool    writeNewline = TRUE
  8.   string  sep = ""
  9.   bool    didFirst
  10.   FOR arg IN ARG.getAll()
  11.     IF !didFirst && arg == "-n"
  12.       writeNewline = FALSE
  13.     ELSE
  14.       IO.write(sep .. arg)
  15.       sep = " "
  16.     }
  17.     didFirst = TRUE
  18.   }
  19.   IF writeNewline
  20.     IO.write("\n")
  21.   }
  22. }
复制代码

读入这段代码,生成AST,然后在由AST输出不怎么可阅读的C代码,就是一脚本。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP