rawa99999 发表于 2009-11-12 01:19

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

开源文本编辑器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 编辑 ]

bigrat023 发表于 2009-11-12 09:40

可惜 zimbu.org 访问不了

prolj 发表于 2009-11-12 17:47

# Zimbu example program: Unix style "echo"
#
# Copyright 2009 Bram Moolenaar
# Licensed under the Apache License, Version 2.0.See the LICENSE file or
# obtain a copy at: http://www.apache.org/licenses/LICENSE-2.0

MAIN()
bool    writeNewline = TRUE
stringsep = ""
bool    didFirst
FOR arg IN ARG.getAll()
    IF !didFirst && arg == "-n"
      writeNewline = FALSE
    ELSE
      IO.write(sep .. arg)
      sep = " "
    }
    didFirst = TRUE
}
IF writeNewline
    IO.write("\n")
}
}
读入这段代码,生成AST,然后在由AST输出不怎么可阅读的C代码,就是一脚本。
页: [1]
查看完整版本: 叹,本来是离开本版,但是按奈不住看到Zimbu的兴奋,希望你别错过,一个新玩意!