我想知道是否有可能編寫一個JavaScript程序,並將其編譯並鏈接到可執行文件中?有沒有這樣的事情作爲一個JavaScript編譯器?
如果能的話,是否有可能創建一個libjs,這相當於c/C++世界的libc?不會創建這樣的東西使JavaScript成爲一個完整的語言,然後可以編譯並直接在目標硬件上運行?
如果你有一個JavaScript的編譯器,你不能在javascript中編寫一個新的編譯器嗎?
我想知道是否有可能編寫一個JavaScript程序,並將其編譯並鏈接到可執行文件中?有沒有這樣的事情作爲一個JavaScript編譯器?
如果能的話,是否有可能創建一個libjs,這相當於c/C++世界的libc?不會創建這樣的東西使JavaScript成爲一個完整的語言,然後可以編譯並直接在目標硬件上運行?
如果你有一個JavaScript的編譯器,你不能在javascript中編寫一個新的編譯器嗎?
是的,你可以寫一個js編譯器。不知道這將是多麼受歡迎:
js引擎現在非常快,所以你沒有獲得太多的速度。
這將是特定平臺,或者你將不得不支持多個平臺。不愉快。
它有什麼用?解釋型語言的優點在於它不需要編譯。它縮短了開發週期和構建時間(曾經坐在C程序前面,必須更改整個項目所依賴的文件,並且必須運行並重新運行,需要花費幾分鐘來編譯所有內容?)。
關於你的最後一點,你是對的。如果你是這些編譯器之一,你確實可以在javascript中編寫另一個編譯器。
我認爲這個問題是什麼是可能的一個,因爲從一個完全獨立於設備,實時編譯,動態語言的移動,運行在瀏覽器中一個老式的操作系統特定的,本機應用程序似乎就像是在時間上倒退。然後再次,應用程序在移動和本機桌面應用程序確實訪問真正的文件系統...... –
@Ray,有很多服務器端js的東西,其中包括從文件訪問到數據庫驅動程序的一切,你知道從Java或任何東西其他這樣的服務器/正常技術(除了併發控制,但不影響它是否可以編譯的問題)。 – davin
是的,使用節點。謝謝,不過。 :-) –
是的,你有一些所謂Google Closure Compiler
,但它不是傳統意義上的一個編譯器,它不JavaScript的轉換成機器代碼,但轉化成JavaScript的JavaScript的,但高度優化的JavaScript。它實際上一個優化compiler.Also編譯運行一些測試,以檢測很像工具JSLint
。但谷歌建議使用這個編譯器寫在Closure
庫中的JavaScript像錯別字的錯誤。有關Closure編譯器的更多信息,請參閱this。
但我不認爲編譯客戶端JavaScript到機器代碼是一個好主意,因爲機器代碼是機器相關的,所以然後在您發送JavaScript到客戶端之前,你必須檢測它的操作系統和處理器架構。所以這將變得像在Linux上的firefox的javascipt,在Windows上的firefox的javascipt,在x86上的firefox的javascipt等
我不知道編譯爲可執行文件的Javascript編譯器,但現代瀏覽器JavaScript引擎是JIT編譯器將Javscript直接轉換爲機器語言。然而,Javascript是如此的動態,我不知道如果靜態編譯會有多好。 –
「不會創建像這樣的東西讓JavaScript成爲一種完全成熟的語言」 - JavaScript已經成爲一種完整的語言。 – nnnnnn
@nnnnnn - 真的,我想我是精神疾病一個完全成熟的編譯語言(C/C++),而不是一個完全成熟的解釋語言(JavaScript的/的Perl/Python的/ PHP)。 – Justin808