類似 Lua 的指令碼語言為什麼不用編譯和連線呢?

時間 2021-05-12 01:12:56

1樓:馮東

如其它答案所說,Lua 和很多指令碼語言都是有編譯過程的。但是編譯的時候對 source code 中的 bookkeeping 資訊剝離的並不徹底。不過很多 runtime 用不到的資訊還是會去除掉,比如 local var 和 upval ( 最新官方文件叫 non-local var ) 的名字。

Objective-C是動態語言嗎?為什麼? - Objective-C

至於鏈結這個問題,Lua 和 C/C++ 很不一樣,Lua 的 function 是乙個 value,在 Lua 以及很多指令碼語言裡,value 是沒有名字的,只有在執行時 value 才會賦給某些有類似「名字」的東西,比如在 Lua 裡的 _ENV 表的 field。

C/C++ 的 function 在編譯之後就直接賦予了乙個名字,而這個名字會在 obj/dylib/so 檔案裡存成一張表,linker 或者 dynamic-linker 的作用就是查這張表,把對應的名字在 link/load 的時候聯絡在一起。

Lua 的執行也是類似的查表,但它查的不是檔案中儲存的靜態表,而是在執行時生成的普通的 Lua table。就算你把 Lua 程式碼單獨編譯,然後 dump 成 binary 檔案,這些檔案裡也沒有 C/C++ 那種靜態的 symbol table,而是只有生成普通 Lua table 的程式碼。這就決定 Lua 的 link 和 C/C++ 是不一樣的。

其實就是動態語言有一種 code is linker 的能力。

什麼是指令碼語言?

留白 搬運乙個WIKI的解釋 Ascriptingorscript languageis a programming language for a special run time environment that automates the execution of tasks the tasks...

在不使用Lua等指令碼語言的情況下,PC遊戲是怎麼製作遊戲流程內容的?

有木桑 變化的內容都是配置啊,就像excel那樣弄一堆表,然後通過一些方式讓遊戲去讀取,非數值類的需求會弄個編輯器,比如什麼關卡編輯器 技能編輯器什麼的。最後還是儲存成某些配置檔案。 熊起 DOS時代很多老遊戲 金庸,仙劍,很多日式遊戲 內部實現了一套類似彙編的指令碼語言,或者說叫批處理命令。這些語...

為什麼大家都覺得c 比指令碼語言要難的多?

今天的C 已經是個多重范型程式語言,乙個同時支援過程式 物件導向形式 函式式 泛型形式 元程式設計形式的語言。Effective C 你能找出另外乙個這麼複雜的語言嗎? 如果你語言基礎夠好,學一兩周不就就知道了,實踐出真知。至於985,211。多認識一些那裡出來的人,看看和其他非985,211的在群...