深入DLR語言 IronJS

2021-09-06 05:32:29 字數 626 閱讀 4174

ironjs是dlr上的ecmascript 3.0實現。其作者fredrik holmström最近在i-programmer的訪談上深入討論在dlr上做語言實現的各種細節。

fredrik特別強調dlr為他省下了很大的工作量:

dlr自帶了很多好東西。

語言互操作是其中之一。dlr本身**的堅實可靠。輸出il等很大比例的設施它都幫你準備好了。

fredrik指出dlr有兩種用法,一種是通過特殊的binder類/物件來關聯操作,另一種是把dlr當作il生成器和編譯工具,然後自行做繫結。前一種速度較慢,ironjs用的是後一種方案。根據去年的基準測試報告,速度已經超過ie8的引擎。

自己做binding的***,是犧牲了與其他dlr語言互操作的天然能力。

ironjs的解析器當前用f#寫成,而核心執行時是用c#寫的。為了提公升速度,fredrik計畫在下一版本中將所有的f#**替換為c#。他又在和scott hanselmann進行的訪談中提到,ironjs既然建立在clr之上,撞上效能牆只是遲早問題,無法跟原生**的v8相比。

如果你想在dlr上實現自己的語言,閱讀文件是個好的開始。「iron」系列語言的源**也是很好的閱讀材料,如ironpython或者ironruby。

深入c語言 儲存型別

了解計算機的都知道記憶體有很多種,比如暫存器,記憶體,記憶體中又有很多段,段,資料段,堆疊等等與程式設計相關的,資料段還可以細分,初始化的,未初始化的,唯讀的等等。所以乙個變數,可以在多種地方儲存。變數的儲存型別就是告訴變數儲存在哪些地方的,雖然這麼說不太嚴謹,因為有暫存器型別的導致的,但是可以這麼...

go語言切片深入講解

package main import fmt func change s int func main change slice fmt.println slice 我們先來看一下結果 我們可以看到切片當作函式引數的時候呼叫之後值確實改變了,這也間接的可以認為切片是位址傳遞,但是我們想要了解的更深入...

深入了解C語言

文章內容如下 首先,我們先來看下面這個經典的 int main 從這段 裡你看到了什麼問題?我們都知道,這段程式裡少了乙個 include 還少了乙個return 0 的返回語句。不過,讓我們來深入的學習一下,這段 在c 下無法編譯,因為c 需要明確宣告函式 這段 在c的編譯器下會編譯通過,因為在編...