你還不夠了解的5個指令碼語言

evget發表於2015-01-15

  從作業系統到基本應用,從遊戲到Web頁面,指令碼語言無處不在。指令碼語言讓忙碌的開發人員不再迴圈在"編譯-測試-校訂"週期裡。有了指令碼語言,開發者只需要"編輯-執行"。

  你可能熟知 Perl, Python, VBA, JavaScript...今天,我們要來談談另外5個指令碼語言,雖然你可能還不夠熟悉,不過他值得一看。

  Wren

  Wren是一個基於類的併發開源指令碼語言,有5000行左右c寫成,前遊戲開發者Bob Nystrom(《the Games Programming Pattern》作者)完成了他。 Wren 致力於通過基於類的架構改善Lua指令碼語言。體積小速度快,有簡單的C API,少於10個函式呼叫(需要 C99 編譯器)。Wren指令碼語言是Wren虛擬機器編譯成位元組碼。

class Wren {
 
flyTo(city) {
 
IO.print(“Flying to “, city)
 
}
 
}

  Candle

  CandleScript由一個叫Henry Luo的開發者開發,致力於處理任何分層資料。它將標記資料作為一個內建的資料型別並提供處理能力。

  由於Candle是函數語言程式設計,包括程式式程式設計,所以可以提供控制流語句。表示式也是函式式的。

<!--?csp1.0?-->
 
function main() {
 
let var = 123;
 
"Outer var: " {var} <br>
 
<div>
 
let var = 345;
 
"Inner var: " {var} <br>
 
</div>
 
}

  Fancy

  Fancy靈感來自Ruby,Christopher Bertels開發。是物件之間的訊息傳送系統,與Objective-C 或 Smalltalk 相似,操作很簡單。下面是計算斐波納契數的示例:

class Fixnum {
 
def fib {
 
match self {
 
case 0 -> 0
 
case 1 -> 1
 
case _ -> self – 1 fib + (self – 2 fib)
 
}
 
}
 
}
 
15 times: |x| {
 
x fib println
 
}

  Pikt

  由 Robert Osterlund開發,Pikt為Problem Informant/Killer Tool的首字母縮寫。是Linux和Unix系統的監視設定管理軟體。程式碼。下面是一個指令碼示例,寫出crontab的變化:

crontab_change(u)
 
init
 
status =piktstatus
 
level =piktlevel
 
task "Report changes in (u) crontabs"
 
input proc "if [ -e =hstdir/log/(u).crontab.bak ];
 
then =diff =hstdir/log/(u).crontab.bak =hstdir/log/(u).crontab
 
else =cat =hstdir/log/(u).crontab 2>/dev/null; fi"
 
begin
 
doexec wait "=crontab -u (u) -l > =hstdir/log/(u).crontab"
 
rule
 
output mail $inlin
 
end
 
doexec wait "=mv =hstdir/log/(u).crontab =hstdir/log/(u).crontab.bak"

  PPL

  PPL是JVM的跨平臺語言,生成.jar或.class檔案。有Christian Neumanns開發,致力於提高java null安全性和穩定性。編譯器檢null pointer錯誤並將其標記為編譯錯誤標記。其他的特性還有:Design by Contract、整合單元測試、預設不可變隊形、靜態型別等。這些功能都意味著在編譯時間中檢測更多錯誤。

  他下面的示例顯示了一個簡單的輸入/輸出,包括整合單元測試:

command double_string
 
in string type:string end
 
out result type:string end
 
script
 
o_result = i_string & i_string // simply return twice the input string
 
end
 
test // start of test script
 
script
 
test "a" // call co_double_string with i_string = "a"
 
verify v_result =v "aa" // verify result is "aa"
 
test "foo"
 
verify result =v "foofoo"
 
end
 
end
 
end
 
end

相關文章