URN Logo
UNIX Resources » Linux » China Linux Forum » Python 编 程 » 2 » 道(Dao)语言1.0Beta版发布!
announcement 声明: 本页内容为中国Linux论坛的内容镜像,文章的版权以及其他所有的相关权利属于中国Linux论坛和相应文章的作者,如果转载,请注明文章来源及相关版权信息。
Resources
China Linux Forum(finished)
Linux Forum(finished)
FreeBSD China(finished)
linuxforum.net
  业界新闻与评论
  自由软件杂谈
  IT 人生
  Linux软件快递
  翻译作坊
  Linux图书与评论
  GNU Emacs/XEmacs
  Linux 中文环境和中文化
  Linux桌面与办公软件
  Linux 多媒体与娱乐版
  自由之窗Mozilla
  笔记本电脑上的Linux
  Gentoo
  Debian 一族
  网络管理技术
  Linux 安装与入门
  WEB服务器和FTP服务器
  域名服务器和邮件服务器
  Linux防火墙和代理服务器应用
  文件及打印服务器
  技术培训与认证
  Linux内核技术
  Linux 嵌入技术
  Linux设备驱动程序
  Linux 集群技术
  LINUX平台数据库
  系统和网络安全
  CPU 与 编译器
  系统计算研究所专栏
  Linux下的GUI软件开发
  C/C++编程版
  PHP 技 术
  Java&jsp技术
  Shell编程技术
  Perl 编 程
  Python 编 程
  XML/Web Service 技术
  永远的Unix
  FreeBSD世界
   
道(Dao)语言1.0Beta版发布!
Author: phunyx    Posted: 2006-11-20 19:19    Length: 4,808 byte(s)
[Original] [Print] [Top]
大家好,

经过几个月的努力,我已经完成道语言虚拟机的开发,并作为1.0beta版发布。
这次发布的虚拟机包括了所有我计划的特性,更重要的是虚拟机的实现已由
C++转变为纯C语言实现。作为结果, 虚拟机的二进制代码已变得很小巧
(编译为可执行文件250KB,编译为动态连接库300KB, linux/gcc4),
虚拟机的运行效率也进一步提高了一些。在由C++实现到C语言实现的转变中,
道虚拟机的结构也有了些调整,使得嵌入与扩展它更方便,事实上,现在
道语言内部库函数的调用机制跟外部扩展函数的调用机制已变得完全一致。
另外,为了让用户可以放心地将道虚拟机嵌入到自己的程序,从这次发布起
采用GLPL( GNU Lesser General Public Licence )许可协议.
道虚拟机可以在windows和linux上编译和运行,不过到目前为止,大部分开发与
测试都是在linux上完成的。还是象以前一样,道语言文档还很不完善,
扩展模块也不够丰富。这将是后续工作的重点。

为了方便道语言网站和文档的更新,以及用户群的扩大,我用道语言开发了
个新网站程序,包含了一个简单的论坛和WIKI。网站的所有页面将以WIKI页面的
形式存在,整站使用同一个数据库,方便了网站的维护。
目前,比较粗糙的文档就可以在这里找到:
http://www.xdao.org/daoweb.dao?page=document。

===================
新增或改变的特性:
===================

-----
多行注释<<< ... >>> 改为了 #{ ... #}, 无须在行首使用;

-----
内置函数被放入到相应的库里。基本库包括:stdlib, stdio, math, reflect,
coroutine, thread等;内置函数 xyz(...) 的使用变为 abc.xyz(...), 这里abc是相应的库;
为了输入方便,同时也提高运行效率,也可这样用:
xyz = abc.xyz;
xyz(...);

-----
给基本数据类型如字符串,列表,哈希表等增加不少成员方法。

-----
比特运算|, &, ^, ~, <<, >>;

-----
可指定变量的数据类型, 不同数据类型间的赋值将报错(运行时):
a : 1; # a 是数字, 不编译出虚拟指令
a := 1; # a 是数字, 编译出赋值指令
:, 或 := 右端必须是常数!这种语法的使用主要是为了与指定函数参数类型的语法一致。
目前还不支持同时指定多个变量的类型,将来肯定会的,不过还未想好使用何种语法,谁有好的建议,
我将乐意接受。

-----
数据类型的指定也可用于类成员, 而且 a := 1 将同时指定该成员的缺省值;

-----
支持通过枚举生成类实例/对象, 如:
class MyNumber
my value := 0;
end

num1 = MyNumber{ 123 };

num2 = MyNumber {
value @= 456; # 可指定需要枚举初始化的成员名
};

对于子类的枚举实例化,如果不指定成员名字,要特别小心成员的枚举顺序。

-----
多维列表或数组的创建:
由:
list = { 2, 3 } : 100;
array = [ 2, 3 ] : 100; # 2 X 3 矩阵
改为:
list = 100 <@> { 2, 3 };
array = 100 <@> [ 2, 3 ];

更改的原因主要是有朋友觉得从前的语法语义含糊。我把现在的操作符<@>叫做元素排列操作符(arrange operator),
A<@>B, 如果B是列表,这个操作符将产生一个新的列表,其形状由B指定,含A或A的拷贝为元素;
如果B是数值数组,它将产生一个具有相应形状的多维数组,另若A也是一数值数组,产生的数组将包含多个与A
相同的子数组.如上例中array行是将100排成2X3矩阵并赋与array。

-----
增加了类似Lua中的coroutine;

-----
从前的sort(),apply(),noapply()分别实现为列表和数值数组的成员方法,语法上有所变动:
从前:
sort( list, @0 < @1, n );
现在:
list.sort( @{ @0 < @1 }, n );
从前:
apply( array[ 1:5, : ], @0 + @1 * @2 );
现在:
array.apply( @{ @0 + @1 * @2 }, { 1:5, : } );
作为参数的表达式需要放在 @{ } 中, 这样的好处是简化了编译,并且表达是也可作为参数传递给C扩展函数.

===================
扩展模块
===================
新的可用模块:
- DaoCGI: CGI网页编程;
- DaoFastCGI: FastCGI网页编程;允许道虚拟机作为FastCGI服务程序;
- DaoSqlite: Sqlite3数据库;对于某些网站lighttpd+sqlite+dao应该是个不错的选择,
因为它们都被设计的小巧高效。
- DaoOpenGL: 3D图形库;支持到DaoOpenGL1.1,包括GLU;
- SDL: Single DirectMedia Layer库, 部分完成。
- Camellia: 图形处理,部分完成。
以前实现的模块DaoMySQL, DaoBLAS 和 DaoPython尚未根据此版本虚拟机更新。

联系:
傅利民, phoolimin[AT]gmail[DOT]com
[Original] [Print] [Top]
« Previous thread
zope里面怎么把上传的文件保存到指定的文件夹下
Python 编 程
2
Next thread »
寻求好的方法
     

Copyright © 2007 UNIX Resources Network, All Rights Reserved.      About URN | Privacy & Legal | Help | Contact us
备案序号: 京ICP备05006143    webmaster: webmaster@unixresources.net
This page created on 2008-07-17 04:10:51, cost 0.039239883422852 ms.