Dao Script- 道程序语言
道(Dao)语言是一个轻量级、支持可选类型申明的程序语言。它支持很多高级特性,对基于多核的并行编程有很好的支持。它的C编程接口简单易用,方便嵌入或扩展。
主要特性:
支持可选类型标注,类型推导和静态检查; 支持基于类和接口的面向对象编程; 支持代码块方法(替代函数式方法); 对并行编程有内置的原生支持; 有并行的基于垃圾回收的内存管理; 支持带类型检查的协程; 支持闭包,匿名函数和类; 有类BNF语法宏系统; 设计和实现为基于寄存器的虚拟机; 使用跨平台的标准C实现; 有简单易用的C编程接口,方便嵌入或扩展; 有基于LLVM的及时编译器; 有基于Clang的自动封装工具; 使用简化的BSD许可发布。
示例代码:
# 类型别名:type Address = tuple# 带有显示参数类型的函数:routine Rout( name : string, index = 123 ) => int { io.writeln( name, index ) return 123 }Rout( 'abc' )class InheritanceBase{ var address : Address = ( 123, 'Main St' )}class MixinBase { var name = 'Joe' }# 定义一个包含MixinBase,并继承InheritanceBase的类:class Klass ( MixinBase ) : InheritanceBase{ static state : enum = $off}someone = Klass()# 闭包:closure = routine( x ){ io.writeln( x ) } for( i = 1 : 5 ) defer { closure( i ) }routine Producer( chan : mt::channel ){ for( index = 1 : 10 ) chan.send( index ) chan.cap(0)}routine Consumer( chan : mt::channel ){ while(1){ data = chan.receive() if( data.status == $finished ) break }}chan = mt::channel(2)Producer( chan ) !! # 开始生产者tasklet;Consumer( chan ) !! # 开始消费者tasklet;# 并行的代码块方法:mt::apply( [1.0:100], 4 ){[x] log(x) }
在线体验:http://daoscript.org/demo.html
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
暂时没有评论,来抢沙发吧~