Dao Script

道程序语言
授权协议 BSD
开发语言 C/C++
所属分类 程序开发、 脚本编程语言
软件类型 开源软件
地区 国产
投 递 者 管梓
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

道(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

  • /********** //変数設定 ***********/ //*************************************** //↓↓↓ ツール使用前に設定してください ↓↓↓ //a5erのパス var a5erPath = './arm.a5er'; //Author var authorName = '稻草人'; //DSN var dsn = 'arm'; //ローカ

  • 1. 引入方式 内嵌式。 在 <script> 标签 <body> <script> alert("hello"); </script> </body> 行内式。 在 HTML 标签的一些属性里直接写 JS 代码 <input type="button" value="按钮" onclick="alert('hello')"> 外部式。 把 JS 写到单独的文件

  • 模型(Model) 模型是MVC中的概念,指的是读取数据和改变数据的操作(业务逻辑)。一开始我们直接把和数据库相关的代码放在模型里(sql直接写在代码中),这样就会导致以后的维护相当麻烦。业务逻辑的修改都需要开发者重新写sql,如果项目需要分库,需要将sql语句抽出来,放到单独的一层。这一层就是DAL(数据访问层)。 持久层(Persistence) 持久层只是一个逻辑概念而已,主要任务是负责把数

  • 一、Regist.jsp(Regist.jsp调用AccountExistsServlet) 1.获取前台传过来的username值,通过input[name=username] 2.将username传递给后台AccountExistsServlet并判断当前用户是否存在(前端把数据提交给后台通过json) 3.后台返回flag,判断好值是否存在给用户一个友好的提示 <%@ page lan

  • java.lang.RuntimeException: org.springframework.dao.DuplicateKeyException: ### Error updating database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Duplicate ent

  • 在springmvc 和 hibernate 整合开发中出现一下错误 Write operations are not allowed in read-only mode (FlushMode.MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnly' marker from transaction de

  • Springboot与mybatis整合 在application.properties文件中 mybatis.type-aliases-package=com.baidu.*.dao Dao层 @Mapper public interface ProvMarkSuppDao { @Select("<script>" + "SELECT " + "

  • DAO:::::DAO实现对数据库的操作. SERVICE::::::Service实现业务逻辑的封装,数据库操作只是业务逻辑的一部分而已。 但是在实际应用中,建议使用Service+DAO,看似麻烦些,但分层能相对清晰一点。 总之,我还是很喜欢把DAO和SERVICE分开的。这样起码以后容易扩展并且看起来逻辑清晰. 看过的一篇帖子说:比如现在用hibernate 以后可能改为jdbc或者其他的也

  • mybatis 映射文件中,if标签判断字符串相等与否 方式一,判断相等【加.toString()转换成字符串】 <if test="remark != null and remark != ''and auditidentified =='2'.toString()"> ,refusalreason=#{remark,jdbcType=VARCHAR} </if> 方式二,判断相等【单引号

  • java单元测试(一):MyBatis实现DAO层的单元测试怎么写? 简介 平时工作中,DAO始终包含了或多或少的逻辑,即使能够通过功能测试来达到测试DAO的目的,但通过单元测试来测试DAO的实现是更有效的做法! 实现 h2作为数据源 我们可能使用MySQL关系型数据库更多一些,但在实现单元测试时,需要一个更加独立的环境,也避免单元测试对实际数据库中的数据造成污染,因此在实现DAO单元测试时,我们

 相关资料
  • 本文向大家介绍程序语言与非程序语言之间的差异,包括了程序语言与非程序语言之间的差异的使用技巧和注意事项,需要的朋友参考一下 在这篇文章中,我们将了解过程语言和非过程语言之间的区别- 程序语言 程序代码以指令序列的形式编写。 用户将指定必须执行的操作以及如何i.e执行的步骤以及逐步执行的过程。 它被认为是命令驱动的语言。 它与机器状态一起工作。 与其他范例相比,它的语义很难理解。 该程序的大小将很大

  • 1. 程序和编程语言 程序(Program)告诉计算机应如何完成一个计算任务,这里的计算可以是数学运算,比如解方程,也可以是符号运算,比如查找和替换文档中的某个单词。从根本上说,计算机是由数字电路组成的运算机器,只能对数字做运算,程序之所以能做符号运算,是因为符号在计算机内部也是用数字表示的。此外,程序还可以处理声音和图像,声音和图像在计算机内部必然也是用数字表示的,这些数字经过专门的硬件设备转换

  • 这本书将教会你使用Rust 编程语言。Rust 是一个系统编程语言,它注重于三个方面:安全,速度和并发性。为了实现这些目标,它没有采用垃圾回收机制(GC)。这让它在其它语言并不擅长的场景中大展身手:嵌入到其它语言中、在特定的时间和空间要求下编程、编写例如设备驱动和操作系统这样的底层代码。

  • 对于一个开发者而言,能够胜任系统中任意一个模块的开发是其核心价值的体现。 对于一个架构师而言,掌握各种语言的优势并可以运用到系统中,由此简化系统的开发,是其架构生涯的第一步。 对于一个开发团队而言,能在短期内开发出用户满意的软件系统是起核心竞争力的体现。 每一个程序员都不能固步自封,要多接触新的行业,新的技术领域,突破自我。

  • 语言处理程序 汇编程序 地址寄存器AR、数据寄存器DR、指令寄存器IR对汇编语言透明的不可见,程序计数器PC可见 算术指令 带符号数左移*2或右移/2 SAL算数左移:把目的操作数的低位向高位移,空出低位补0 SAR算术右移:把目的操作数的高位向低位移,空出高位用最高位(符号位)填补 逻辑指令 用于无符号数*2或/2 SHL逻辑左移:移位后空出位补0 SHR逻辑右移:移位后空出位补0 循环移位指令

  • Tango 是一种跨平台的开放源码D语言软件库。这是一个全面的常用工具库,并得到越来越多的D语言爱好者的喜爱。 下面是一个用来将文件内容一行行输出的代码示例: private import tango.io.Console, tango.io.device.File; private import tango.io.stream.Lines; void main

  • 本书的目标是教你像计算机科学家一样思考。这一思考方式集成了数学、工程以及自然科学的一些最好的特点。像数学家一样,计算机科学家使用形式语言表示思想(具体来说是计算)。像工程师一样,计算机科学家设计东西,将零件组成系统,在各种选择之间寻求平衡。像科学家一样,计算机科学家观察复杂系统的行为,形成假设并且对预测进行检验。 对于计算机科学家,最重要的技能是 解决问题的能力 。解决问题(problem sol

  • 我正在尝试使用动态ChannelHandler管道实现Netty 4. X。正如人们建议的“出于性能考虑,在运行时使用调用而不是管道修改”,我实现了一个Server、一个RouterInoundHander和一个Client来测试这个理论。但它不起作用。这是我的代码 计算机网络服务器 RouterInboundHandler 和客户 如代码所示,在Channel的连接初始化阶段创建了Channel