<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Dao Script道程序語(yǔ)言

          聯(lián)合創(chuàng)作 · 2023-09-27 23:53

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

          瀏覽 21
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  免费观看美女裸体网站 | 一级黄理论片 | 欧美日韩小电影 | 男人的天堂一区 | 午夜精品久久99热蜜桃剧情介绍 |