Dao Script道程序語(yǔ)言
道(Dao)語(yǔ)言是一個(gè)輕量級(jí)、支持可選類型申明的程序語(yǔ)言。它支持很多高級(jí)特性,對(duì)基于多核的并行編程有很好的支持。它的C編程接口簡(jiǎn)單易用,方便嵌入或擴(kuò)展。
主要特性:
-
支持可選類型標(biāo)注,類型推導(dǎo)和靜態(tài)檢查;
-
支持基于類和接口的面向?qū)ο缶幊蹋?/p>
-
支持代碼塊方法(替代函數(shù)式方法);
-
對(duì)并行編程有內(nèi)置的原生支持;
-
有并行的基于垃圾回收的內(nèi)存管理;
-
支持帶類型檢查的協(xié)程;
-
支持閉包,匿名函數(shù)和類;
-
有類BNF語(yǔ)法宏系統(tǒng);
-
設(shè)計(jì)和實(shí)現(xiàn)為基于寄存器的虛擬機(jī);
-
使用跨平臺(tái)的標(biāo)準(zhǔn)C實(shí)現(xiàn);
-
有簡(jiǎn)單易用的C編程接口,方便嵌入或擴(kuò)展;
-
有基于LLVM的及時(shí)編譯器;
-
有基于Clang的自動(dòng)封裝工具;
-
使用簡(jiǎn)化的BSD許可發(fā)布。
示例代碼:
# 類型別名:
type Address = tuple<number:int,street:string>
# 帶有顯示參數(shù)類型的函數(shù):
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' }
# 定義一個(gè)包含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 ) !! # 開(kāi)始生產(chǎn)者tasklet;
Consumer( chan ) !! # 開(kāi)始消費(fèi)者tasklet;
# 并行的代碼塊方法:
mt::apply( [1.0:100], 4 ){[x] log(x) }
在線體驗(yàn):http://daoscript.org/demo.html
評(píng)論
圖片
表情
