身為 Dart 的支持者這真是個最糟糕的消息:
全世界最有錢的公司,擁有最多用戶的瀏覽器平台,它們說 DartVM 進不了 Chrome。
這代表什麼?這代表 web 永遠等同於 js,無人能再改變。我們會再接下來的 20 年繼續使用 js runtime ,沒有選擇的餘地。沒有選擇才是最糟的選擇,Poor web!
不過咧,有時候丟掉一些包袱後才能跳的更高:
Dart 從 Chrome VM 解放了,以後他們的發展不用再顧慮 VM 在 Chrome 下好不好整合,快不快,他們可以專心發展在 server 的效能。而他們今年的目標也確定了,會放在 mobile 上 (在 mobile 上跑 Dart interpreter),如果這方向可行的話,你的 server 端程式可用 Dart 寫,android/iOS 端 app 核心 (非 UI 的程式) 也是用 Dart 寫,依此達到最大的程式共用。
雖然往 mobile 是個可發展的新舞台,但我個人認為 Dart 還是要把 web 做好,該把心力放在與 js 的整合上,最好做到整合其他 js 的工具完全無痛。因為即然 Dart 只是另一個 compile to js 的語言,那表現就要比別的工具更好,不然誰買單呢?至於 Dart 進 mobile 這個方向我個人不是很看好,因為 Dart 進 Android
只是重演一次 DartVM 進 Chrome
而已,之後又會不了了之。
我覺的 JS 本身不錯啊! object model 很單純和簡單。
如果 js 只是寫寫網頁小動畫我就同意,以前只要有 jqeury 大家就很高興了,但漸漸的 jquery 也不夠了。這代表 js 開始要承擔複雜的需求,大型的程式。js 必需要更能應付大程式的負擔才行,語言太簡單只是把責任推給開發者這端而己
果然還是搞錯語言和 framework 或 library 之間的差異。JS 作一個語言,除了 web client side 還有 node.js 等 server side 的 framework。他們都是 javascript,不同的是 API 和 framework 。你說的是,framework 和 library 的不足,而不是語言本身的不足。你之所以覺的 JS 太弱, 是你還沒找到正確或合適的 library。
js 的 library 和 framework 都很完整,比很多語言平台還要活躍,ok ?
js 語言本身問題很多才是問題所在,例如它沒有 class,所以每個 framework 都自己生一個類 class 的概念,然後開發者就要學各式各樣的變型,也不能在 framework 間切換。es6 終於要有官方的 class 解決方案,這總算是走回正路了,但你看這個改變熬多久了的時間?(老實說現在 browser 還是不行,你還是要用 transpiler)
一個小 js 程式當然不需要 class/module 之類的概念,但大型程式就需要了,有沒有 js library 去補這個洞?有啊,而且還很多。而問題就是很多人去補洞,補得方式百百種,到頭來都是開發者買帳,花很多心力去處理這些不相容的問題。如果 js 第一天就有標準 class/module,大家何必這麼辛苦?
如果你覺得現在 es5 語言夠好了,為什麼 TypeScript 的到來大家這麼開心?又為什麼要推下一代的 es6/7?
是你自已說「如果 js 只是寫寫網頁小動畫我就同意,以前只要有 jqeury 大家就很高興了...必需要能應付大程式....」你所 complain 的是「framework 不足...是沒找到正確或合適...」在邏輯上並不等同於「JS 沒有好的 framework 和 library」請勿斷章取義。(不足是指 feature 的不足,並不是指數量的不足。如同「不是語言本身的不足」不是指「數量」)
存在 class 的目的是支援 OO,但 OO 並不是只有一種 approach。我只能說,大部分人都不願去了解 JS 的 approach,才會發明出各式各樣的 class 方法。(但我認同過去沒有 module 是一個嚴重問題)
另外,如果 Dart/Java 是個好語言,是不是也不用出新版了?
FYI http://en.wikipedia.org/wiki/Prototype-based_programming
之前有許多人提出,應該標準化 web bytecode,讓所有語言都可以在 web 上執行。這遠比 Dart VM 有道理多了。但 bytecode 的問題在於 vendor 之間的角力不容易形成共識,我個人完全不看好短時間會達成,事實也是如此。
但 asm.js 似乎提供一個新的途徑。我並不是說 asm.js 該成為 bytecode 的標準。我是指在現有 JS 語法上定義 bytecode 的方式,似乎是不錯的做法。主要好處是,不需要 browser 特別支援就能執行。透過新 bytecode 的發明和使用,在實務的過程中進行比較,似乎比直接定義轉成 native code 的 web bytecode 更容易達成共識。