道程序语言 Dao Script

道程序语言 Dao Script

BSD
C/C++ 查看源码»
跨平台
2013-05-29
红薯

道(Dao)语言是一个轻量级、支持可选类型申明的程序语言。它支持很多高级特性,对基于多核的并行编程有很好的支持。它的C编程接口简单易用,方便嵌入或扩展。

主要特性:

  • 支持可选类型标注,类型推导和静态检查;

  • 支持基于类和接口的面向对象编程;

  • 支持代码块方法(替代函数式方法);

  • 对并行编程有内置的原生支持;

  • 有并行的基于垃圾回收的内存管理;

  • 支持带类型检查的协程;

  • 支持闭包,匿名函数和类;

  • 有类BNF语法宏系统;

  • 设计和实现为基于寄存器的虚拟机;

  • 使用跨平台的标准C实现;

  • 有简单易用的C编程接口,方便嵌入或扩展;

  • 有基于LLVM的及时编译器;

  • 有基于Clang的自动封装工具;

  • 使用简化的BSD许可发布。

示例代码:

# 类型别名:
type Address = tuple<number:int,street:string>

# 带有显示参数类型的函数:
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,on> = $off
}
someone = Klass()

# 闭包:
closure = routine( x ){ io.writeln( x ) } 
for( i = 1 : 5 ) defer { closure( i ) }

routine Producer( chan : mt::channel<int> )
{
    for( index = 1 : 10 ) chan.send( index )
    chan.cap(0)
}
routine Consumer( chan : mt::channel<int> )
{
    while(1){
        data = chan.receive()
        if( data.status == $finished ) break
    }
}
chan = mt::channel<int>(2)
Producer( chan ) !!  # 开始生产者tasklet;
Consumer( chan ) !!  # 开始消费者tasklet;

# 并行的代码块方法:
mt::apply( [1.0:100], 4 ){[x] log(x) }

在线体验:http://daoscript.org/demo.html

的码云指数为
超过 的项目
加载中

评论(18)

鉴客
鉴客
又一国产编程语言?? Dao
开源无憾
开源无憾
想起当初非常火的“草泥马”编程语言了 Dao
zhuang
zhuang
挺猛 Dao
luwenhua
luwenhua
硬通货,支持! Dao
菜根乱谭
菜根乱谭
支持国产,但是弱弱的问一句,它的主要特点是什么呢,更适合哪些领域的开发 Dao
Neeke
Neeke
优点是什么?应用场景是什么? Dao
Tocy
Tocy
dao = 倒? Dao
Carols
Carols
支持Dao,不知道Dao有没有Qt的接口 Dao
牛仔豆
牛仔豆
又一个玩具语言? Dao
dfar2008
dfar2008
支持国产语言 Dao

道(Dao)语言 2.0 Beta3 和 DaoStudio 0.5 Beta3 发布了!

道(Dao)语言是一个轻量级、支持类型标注和众多高级特性的程序语言。这次发布的是Dao语言2.0的第三个测试版本。本发布包括了少量新特性和修改,以及大量改进和错误修正。同时发布的DaoStudio...

2014/11/19 21:20

Dao 2.0 Beta2 发布了!

Dao 2.0 Beta2 发布了! 道(Dao)语言是一个轻量级、支持类型标注和众多高级特性的程序语言。这次发布的是Dao语言2.0的第二个测试版本。这个版本在第一个测试版本的基础上有了很大的改进和完善...

2014/08/25 17:30

DaoStudio-0.5-Beta dao-2.0-devel 发布 -轻量级国产编程语言

道(Dao)语言是一个轻量级、支持可选类型申明的程序语言。它支持很多高级特性,对基于多核的并行编程有很好的支持。它的C编程接口简单易用,方便嵌入或扩展。 主要特性: 支持可选类型申明,类...

2014/01/19 21:41

没有更多内容

加载失败,请刷新页面

没有更多内容

5
回答
关于数据库DAO操作和事务

请问一下,比如在一次事务中的一个服务 service: public void serviec(){ for(;;){ dao; } } ...

2017/03/03 15:02
7
回答
dao层try{}catch{}会影响事务的完整性吗
sxgkwei 的回答 2016/09/18 10:14
最佳答案
看你怎么写的代码,并怎么处理的了,一般无脑try{}catch{},并且习惯性Exception,而不是具体哪个类型的Exception时,都会破坏事务(业务逻辑)原子性。 所以,在很多javaer都是混子的团队里(当然很多人也并不精研技术,而是只喜欢吃喝玩乐的混子),做不到要求所有人都谨慎细...
2
回答
java工程两种目录结构的认识

以前工程一般的目录都是 web service dao三层 service 是事物层 现在很多项目工程一般都是四层 web biz service dao...

2016/07/21 11:37
8
回答
关于一段JAVA代码的理解(Spring)

DataCenterService dataCenterService = LocalSpringContext .getBean(DataC...

2015/03/13 08:41
10
回答
在MVC架构中...sql语句放在什么地方?
开源中国董事会主席 的回答 2013/11/18 15:23
最佳答案
引用来自“梅开源”的答案 一般放在dao的实现里 但是这样的确挺恶心的,写sql够恶心的,再加上n个dao接口和dao的实现,绕来绕去 都要付出代价的。 dao 越多,结构越清晰,耦合度越低,写代码就很多,不过很多通用操作可以在dao基类中完成; dao 越少,写的代码就越少,但是很多东西就耦...
2
回答
java osdao(没有spring、jfinal、hibernate强大,简单易学并包含其精华,你值得拥有)

open study dao。 基于java开发的dao层,支持事物,注解,自己实现的连接池 目前只是支持oracle 项目分为: osdao 和osUt...

2013/10/29 18:05
7
回答
dao封装成一个不可以吗?
Inthend 的回答 2013/07/08 23:00
最佳答案
引用来自“Inthend”的答案 最后,我参照mybatis,写了公司自己的mybatis。底层还是spring/dbutil,外层套个dao接口+xml,自己定制,感觉比mybatis灵活很多。 我最后的处理方式。
4
回答
道语言这玩意能干啥啊
HZ先生 的回答 2013/05/30 13:20
最佳答案
白天没吊事,晚上吊没事的干活
2
回答
使用MinGW编译Dao

要用MinGW编译Dao,需要加参数设置CC环境变量,下面这样就可以了: make -f Makefile.daomake mingw CC=gcc 我在...

2013/05/31 09:30

没有更多内容

加载失败,请刷新页面

KgB2B商贸平台商铺相册插件-Hibernate配置代码

KgB2B商贸平台商铺相册插件-Hibernate配置代码,完整版hibernate配置。

2014/03/31 11:31
92
0
一步步重构容器实现Spring框架——解决容器对组件的“侵入式”管理的两种方案--主动查找和控制反转(九)

如何让组件不再依赖容器?这篇 博文主要是通过两种解决方案来解决这个问题,最后对比各自的优缺点。 服务定位器 解决方案之一就是使用服务定位器(Service Locator),我们也可以叫主动查找。...

2018/01/13 18:29
15
0
一步步重构容器实现Spring框架——从一个简单的容器开始(八)

最近一直在和容器打交道,甚至前面的博文,我们也介绍了Spring的IoC的原理以及源码,但是回头看看,duang~ duang~的,还是深了,不够通俗易懂,不够深入浅出。由于以上原因吧,从这篇博客开始...

2018/01/13 18:27
14
0
泛型在Web中的作用

当我们写网页的时候,常常会有多个DAO,我们要写每次都要写好几个DAO,这样会有点麻烦。 那么我们想要的效果是什么呢??只写一个抽象DAO,别的DAO只要继承该抽象DAO,就有对应的方法了。 要...

2018/01/21 16:14
5
0
NO.24 ZenTaoPHP框架提供的DAO功能

禅道并没有试着去实现ORM或者ActiveRecord这样的概念。因为我们相信,框架要留给开发人员足够的自由发挥的空间,而不是所有的都要包办。所以框架里面提供了一个简单方便的数据库访问对象类:...

2012/09/25 16:24
55
0
SeaSar2之系统拦截器-yellowcong

在Seasar2的系统中,给我们提供了不少的拦截器,但是实际上,这些系统提供的拦截器,我们自己用的,比较少,但是S2Dao中的org.seasar.dao.pager.PagerS2DaoInterceptorWrapper,这个拦截器,...

2018/02/02 17:18
42
0
泛型在Web中的作用

当我们写网页的时候,常常会有多个DAO,我们要写每次都要写好几个DAO,这样会有点麻烦。 那么我们想要的效果是什么呢??只写一个抽象DAO,别的DAO只要继承该抽象DAO,就有对应的方法了。 要...

2018/01/21 15:56
5
0
JAVA DAO(Data Access Object)的个人总结

JAVA DAO(Data Access Object)的个人总结

2015/07/22 22:17
349
0

没有更多内容

加载失败,请刷新页面

返回顶部
顶部