分享

Dao常见问答集 (FAQ)

 quasiceo 2014-01-17

常见问答集 (FAQ)

  1. 道语言开发缘起?
  2. 道语言最独特的特性是什么?
  3. 道语言速度如何?
  4. 道语言的目标应用领域是什么?
  5. 道语言的未来开发计划?

1 道语言开发缘起?

 顶部

大约在2004年五月,因为需要使用Gene Ontology (GO)作一些数据分析, 道语言的作者(傅利民,phoolimin at gmail)使用Perl写了些脚本来解析 GO文件。在使用Perl的过程中,他感觉Perl的语法比较繁琐并且比较容易犯 些意想不到的错误(也可以说陷阱比较多), 后来更进一步发觉Perl对面向对象编程的支持和模块组织方式很不尽人意, 于是对自己是否有能力设计一门更好的脚本语言有了很大的好奇心。 在花了些时间尝试之后,他就被语言设计和实现的挑战性和趣味性所深深的吸引, 并且将语言开发的工作坚持了下来。

在开发过程中,早期版本曾用过不同的名字,刚开始是Yuan,接着用过Tao, 最后决定采用Dao(2005年底)。 不过现在的道语言跟2006年前在设计和实现上有非常大的不同, 可以认为2006之前之后是两种不同的语言。 从2006年初开始,作者对Lua5虚拟机的设计作了些了解, 并且受其影响,决定将道解释器也作为虚拟机实现。 在开发道语言的虚拟机过程中,道语言的语法也有了很大的调整和完善, 最后演变成了现在的样子。

2 道语言最独特的特性是什么?

 顶部

独特性并不是道语言设计的主要目的,并不会为了独特而去添加独特的特性。 道语言主要是作为一门实用程序语言设计的, 其基本目的就是实现简单干净的语法和比较好的运行效率。 同时也尽可能借用其他语言的一些优良特性, 并且实现一些不常见于主流语言的一些重要特性。

当然道语言还是有些独特特性的,如,支持元编程的类BNF形式的宏系统, 使得添加用户定义的语法可象写语法的BNF表示形式一样。 这种类BNF形式宏系统仅见于道语言里。 道还有其他独特的特性,如简单轻量且并行的正则表达式引擎, 异步函数调用和基于Actor模型的分布并行计算模式(实验阶段)等。

道语言也支持些并不是很独特但也并不常见于主流语言的特性, 如可选类型(optional typing)系统,这种类型系统有很多优点, 将来肯定会有越来越多的语言支持这种类型系统。 道语言另一个很重要的特性就是透明的C/C++编程接口, 正因为此接口的透明性,一个可以自动封装C/C++函数库的工具 很快被开发出来了,并且成功地封装不少标准库。 此工具将来可用来封装更多的库。

3 道语言速度如何?

 顶部

一般情况下,道语言的速度是比较快的(当然这里是跟其他脚本语言相比较而言)。 但是在有些情况下,道也会变得比较慢,特别是当程序里有很频繁的函数调用时。 这是因为,道里函数调用要做不少运行时参数类型检查,在这方面道还没作什么优化。 如果程序里没有频繁的函数调用,道应该会比较快。

如果测试那些为 The Computer Language Benchmarks Game 写的例程,应该可以发现,除了 binary_tree meteor regexdna 这几个例子外,道应该是比较快的。 regexdna 比较慢,可能的原因是 道语言的正则表达式匹配引擎需要同时处理多字节字符串(Multi-Bytes String, MBS) 和宽字节字符串(Wide Character String, WCS)。 另外,道解释器的启动也有点慢,不过在大部分情况下,解释器的启动时间 跟程序的总的运行时间相比是可以忽略的,因此这不是问题。

4 道语言的目标应用领域是什么?

 顶部

道语言是作为一门通用语言来设计,并没有特别针对某个特定的应用领域。 不过当初道语言的设计动机之一是为生物信息学提供一门比Perl和R更好用 的程序语言。随着道语言越来越成熟并且功能模块也越来越多, 道语言有希望成为比较适用于生物信息的程序语言之一。 当然,道语言也有潜力应用于其他领域。如果谁有意在自己的领域尝试 使用道并希望的到帮助,请同作者联系。

5 道语言的未来开发计划?

 顶部

  • 语言设计与实现:
    1. 完善道语言的即时编译器;
    2. 实现字节码的储存格式;
    3. 完善基于Actor模式的并行分布计算模式;
  • 模块库和包:
    1. 使DaoDataModel支持其他数据库;
    2. 封装更多的C/C++库;
    3. 基于Qt(或FLTK)的图形用户界面工具箱;
    4. 类Matlab的数据画图函数;
    5. 统计计算模块(可能从R采用一些);
    6. 包含一些标准方法的生物信息模块。
  • 工具:
    1. 完善autobind.dao工具;
    2. 跨平台的道语言图形界面终端开发环境。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多