以下為本站文章分類清單

  1. AJAXspacer
  2. ASPspacer
  3. CSSspacer
  4. Javascriptspacer
  5. Windows 應用程式spacer
  6. 網頁設計
  7. 評論、短文、雜文spacer
  8. 版主spacer
  9. 最新回應spacer

以下為本頁本文內容

JavaScript 的未來?

9/17 08' icon

要談 JavaScript,你一定要知道 Brendan Eich (布蘭登 艾奇) 就是 JavaScript 的發明人!

2008年的秋天,隨著 Google Chrome 和 FireFox 3.1 alpha 相繼推出,JavaScript 繼在 Google Map 應用上獲得成功之後,又再度受到極大重視。尤其是宣稱在 2008 年年底要正式釋出的 FireFox 3.1 對 JavaScript 演譯加入了新的利器,使得 JavaScript 在執行上更有效率,根據 Brendan Eich 的說法,效率提升了 83%!

於是,我很好奇的是:那 JavaScript 的未來會是如何?

以下純粹個人觀點,歡迎討論與指正。

如果要我來談 JavaScript 的未來,不知怎麼著,我腦子裡第一個想到的居然是 DOS!這裡的 DOS 是 Disk Operation System,不是駭客的攻擊手法 Denial of Service (DoS) 。

Disk Operation System (DOS) 跳過這段

為什麼會想到 DOS 呢?如果你不清楚 DOS 的內容或演進,那就聽我碎碎唸一下:DOS 雖然不是史上最優良的產品,但如果要說流通性,恐怕也無人能出其右,DOS 的中文叫作「磁碟作業系統」,主要功用是在硬體和使用者之間建立溝通管道,例如可以進出磁碟機、可以送出訊號到印表機等等。這些基本服務稱為「插斷 (Interrupt)」,簡稱 INT,以編號替代,例如 INT 13 是用來進行各式和磁碟相關的服務,INT 7 則是和印表機溝通介面,INT 2F 則是常駐程式服務。

這些服務,經過開發人員編寫成程式,組合在一起,就變成了 DOS。而所謂的「開機」,就是一連串硬體啟動,載入這些基本服務,最後再把控制權交給使用者。因此稱為「磁碟作業系統 (Disk Operation System)」,事實上稱為「作業環境」或許更合適。

所以,DOS 不單單是軟體而已,是和硬體結合在一起的程式,如果把 MS-DOS 放到早期的蘋果電腦中,MS-DOS 完全不能理解蘋果電腦的硬體,當然沒有任何作用,近年來,Mac 硬體上也能安裝 Windows 作業系統,主要就是由於硬體部份改用 Intel 代工。

開放架構

DOS 有一個很大的致命傷,然而也是最大優點,可以稱為開放架構 (也就是 config.sys 中記載的內容),事實上,DOS 提供的功能少得可憐,怎麼說?看名稱就知道了!磁碟作業系統嘛,就搞搞和軟碟、硬碟的溝通而已。那你會問:鍵盤怎麼辦?滑鼠怎麼辦?螢幕怎麼辦?是的,你問到重點了,的確不知道怎麼辦,所以,這時在硬體和軟體之間,規劃出一個所謂的開放架構,就是把 DOS 是怎麼和硬體溝通的細節公佈出來,那麼其他的硬體開發商就能按這個遊戲規則,開發出硬體,並提供適當的使用 DOS 基本服務的軟體來操控這個硬體,這就是驅動程式 (Driver)了。所以你可以在主機板上看到很多插槽,硬體廠商開發出硬體後,設計一塊「介面卡」插入主機板的插槽,再透過驅動程式使這個硬體能和主機溝通,如此就成了一個可用的硬體,例如螢幕!

正因為如此,電腦開始變得萬能了,太多協力廠商在這個架構上開發軟硬體,這樣子的概念,後來也導入了遊戲設備,如任天堂、Play Station、XBOX等。

離題了!老卜!

是的,差點離題了。那為什麼我會把 JavaScript 的未來和 DOS 聯想在一起呢?理由很簡單,JavaScript 的主要宿主是瀏覽器,只要瀏覽器對 JavaScript 的支援度夠,執行效能好,那 JavaScript 未來的發展就是無窮想象空間,為什麼呢?因為我在瀏覽器上也看到了「開放架構」的影子!

第一代瀏覽器,像 WWW,是純文字瀏覽器,據說雛型是來自 NASA 為了和太空站中的太空人溝通,是不是真的如此,就不得而知,但進入到學術用途後,開始有許多人構思更豐富的功能,例如可以主動要求資料、例如除了文字還可以看到圖片等等。

當有了文字和圖片,接下來就要有聲音了,有了聲音,就要有影像了,而各種所謂的多媒體,要如何在瀏覽器中播放呢?一樣,由多媒體開發商推出如同驅動程式的軟體,一般則稱為「外掛程式」。

外掛程式
FireFox 的外掛程式清單

有了外掛程式,網頁內容變得豐富了,網路基本建設的普及與精進,使得透過網路來溝通的速度更快,這意味著網頁裡可以嵌入更多「體積」更大的內容。這些形形色色的外掛,各自為政,各有自己獨立操作原則,只要作好外掛程式交給瀏覽器就好了,但,這有什麼前途?設計人員為什麼要用、要學這麼多不同外掛?

操控中介

如果瀏覽器是 DOS,那外掛程式就如同介面卡了,要完美結合,還少了驅動程式,現在是各家介面卡自己開發驅動程式,那有沒有可能,只要把開發細節公佈出來,讓不同開發人員自由發揮,會不會有無限的可能?

我舉個例子好了,一個 Gif 動畫,不管你用什麼程式設計完成,總之是幾個圖片不停播放,造成動畫效果。那麼,有沒有別的辦法完成?當然有,用 Flash 吧!好,Flash 就是一個外掛,但你要學會先!Sliverlight 也是一個外掛,但你也要學會先。你打算學幾種?但,不就是幾張圖片換來換去而已嗎?能不能用 JavaScript 加上 png 圖片完成沒有鋸齒又平滑的動畫?像底下的例子,點進去看,這是純 JavaScript 完成的!

image menu
Image Menu

Framework

這道理就很簡單了,如果你熟 JavaScript 時,Flash 本身就是一個外掛,把 ActionScript 當作是某一種 JavaScript Framework 那就沒有什麼學習障礙。同樣的,把 DOM 也看成外掛好了,那有沒有 DOM 的 Framework ?當然有,還一大堆吶!像 prototype、jQuery 等都是 (如果 DOM 真的是個外掛,那就太好了,就不會有不同瀏覽器不相容的問題了!)。

基於這個想法,未來,或許有新的影片格式,開發商只要開發影片的基本規格就好 (甚至不用開發商,讓 W3C 去忙吧!),然後把控制的細節以 Framework 的方式釋出,那也不用送後製加工了,自己就可以透過中介來進行影片後製。假想的操作程序,可能是由一份 xml 來記錄組成影片的圖檔,甚至給個指定資料夾就可以了,再加上聲音,然後在 HTML 中由 JavaScript 負責來組合,實際透過瀏覽器播放時,是邊下載圖片和聲音,邊加入後製項目,例如漸變、淡出等。這時,開發商或規格製訂單位,只要提供一個負責解譯指令的外掛就可以了,那用什麼技術能最快普及?當然是 JavaScript 了!為什麼?JavaScript 本來就很普及了啊!

看瀏覽器臉色

然而,這一切的致命傷仍然是瀏覽器,瀏覽器如果不能安裝外掛,一切免談,就好像主機板沒有了擴充槽一樣,又或是像網路 ATM 只提供 ActiveX 外掛一樣。另一方面,若瀏覽器執行 JavaScript 的速度太慢,那一切再好也大打折扣,例如前面舉例的 Image Menu 好了,誰都不能忍受執行的遲滯!如果再讓你看到下面畫面,就不僅僅是殺風景而已了!

stop js

所以瀏覽器對 JavaScript 的執行效率將會主導這一切未來的可能性!

是致命傷也是機會

JavaScript 是直譯式語言,也就是看到了再解譯成可執行碼,這時取決於下載速度,要花多少時間才能把 JavaScript 碼下載完,另外則是瀏覽器解譯這些 JavaScript 的功力如何,暫時排除設計不良的因素,在這種運作前提下,理論上,解譯的速度有個上限,那麼走到這裡,不就死路一條?

對於這點,我個人到是很樂觀,隨便舉個想法:一份網頁文件下載要 10 秒,之後解譯要花 1 秒,如果分成 10 段來下載,再加上解譯,就只要 2 秒,如果瀏覽器能力夠強,不是不能達成。再例如,一份網頁文件,可以在其中的 JavaScript 加上註記,例如:

<script type="text/javascript" src="xxx.js" update="2008/9/17"></script>

update 只是一個假想,用來標記這份 JavaScript 要不要重新下載,如果不用,是不是可以直接由快取中抓出進行解譯?(事實上現在的瀏覽器對於 JavaScript 連結檔中的小變動,也不會立即更新) 肯定速度快多了。

那 JavaScript 有沒有可能有編譯器 (Compiler)?甚至整份網頁文件下載後編譯成二進位留底,如此一來,開啟網頁就像執行內部的應用程式,只要下載填充網頁內容的資料就可以了,那速度也就能再提升!

這些構思,或許在未來可能成形,瀏覽器變成作業系統、外掛是介面卡,用 JavaScript 開發驅動程式,網頁變成應用程式,目前的不斷因 AJAX 受惠的 WEB AP 加更跨出一大步!這時誰還計較用的是 Windows XP 或 Ubuntu 呢?

這麼說起來,網頁開發人員除了要專精 JavaScript 外,應該還要學學資料結構 (Data Structure) 把程式流程好好練一練,那你學過 Bubble Sort、Quick Sort 沒?

擴充-開放架構的最好朋友

如果我是瀏覽器開發商,我一定開發 IE Based 的瀏覽器,理由很簡單,有太多可以加強的地方,可以很容易製作出和 IE 有明顯區隔的產品。反之,如果開發以 Gecko 為核心的瀏覽器,就是效能、效能、效能一種議題而已,因為像 FireFox、Flock 這類瀏覽器,有上千種擴充功能可以使用!如果一個瀏覽器要包山包海涵蓋所有功能,就沒有效能了!

例如 FireFox 上的 FireNes 可以讓你回味上百種 SEGA 電玩、Picture Lens (Cooliris) 則可以在瀏覽某些網路相簿時,把瀏覽器變成幻燈片播放器。

cooliris
在 FireFox 上用 Picture Lens 瀏覽網路相簿

如果你認為,這和 JavasScript 無關,別急,現在要進入主題,在眾多擴充中,Greasemonkey 是個強而有力的擴充 ,如果瀏覽器是個作業系統,那 Greasemonkey 就算個常駐程式了,隨時為你服務,例如:(以下節錄自 wiki 對 Greasemonkey 說明,原文請參考這裡)

使用者群已發展下列的腳本:

(以上節錄自 wiki 對 Greasemonkey 說明,原文請參考這裡)

講簡單點,你如果覺得某個網站功能不好,甚至畫面不美,沒關係,有能力的話自己改,不會改也沒問題,如果這個網站熱門,自然有高手早早寫好可用,例如你有沒有在玩 ikariam 呢?就有不少好用外掛,例如:

ikariam

這些由各方高手開發的 script 由 userscripts.org 在管理,內容呢?JavaScript!這就像專業汽車改裝公司一樣,誰說 CIVIC 不能變 Frerrari?

待解決的問題

很謝謝你耐心看到這裡,通常我發表文章不會太長,當天寫,當天發表,但這篇寫了幾天了,都看到這裡,再繼續下去吧!

待解決的問題首要的就是安全性,通常一個好用的東西都是雙面刃,不少網頁病毒就是透過 JavaScript 來達成任務,在一味求快、強大之餘,勢必會有些犧牲或遺漏,例如不良 script,但這個問題我個人還比較不擔心!

真正擔心的是:對的事,不一定能做!

這麼下去,既得利益者的反彈才是阻擾新規格發表的主因。例如,2009 年起,所有在台灣販售的香煙,必需在煙盒上印各種警示圖片,例如一整塊肺變黑這種,而且規定面積大小,全球已經有不少國家開始進行,但美國缺席,為什麼呢?因為煙商在美國國內的勢力太大!

類似的情況,不禁讓我聯想到 ECMAScript 4 的夭折和 JavaScript 2 的胎死腹中,是不是有些人為操控?當然,我並非指 ECMAScript 4 一定是個好物,只不過很直觀的,版本演進必有其必要,要嘛修正錯誤,要嘛提供新功能。如果 ECMAScript 4 是死在分贓不均的桌面上,屆時,各家瀏覽器為了強化自身功能,是不是又會回到 1998 年的瀏覽器大戰?那苦的又是設計師了!

根據莫爾定律,或許 18 個月後,JavaScript 有新的面貌問世,會是什麼樣貌?改天我又突發奇想時,再跟各位報告了!

 

以下為文章回應區

同意轉載,不過麻煩看一下轉載需知

http://adrienmccaie.wordpress.com   2017/5/21 上午 11:18:00

Wow! This blog looks exactly like my old one! It's on a
entirely different topic but it has pretty much the same page layout and design. Wonderful choice of
colors!

manicure   2017/5/4 上午 04:14:00

Having read this I thought it was rather enlightening.
I appreciate you taking the time and energy to put this information together.
I once again find myself personally spending a significant amount
of time both reading and posting comments. But so what, it was still worth it!

manicure   2017/5/4 上午 02:28:00

I'll immediately grab your rss feed as I can not in finding your email subscription link
or e-newsletter service. Do you've any? Please allow
me know so that I may just subscribe. Thanks.

BHW   2017/4/15 下午 07:27:00

I know this web site offers quality depending articles or reviews
and extra stuff, is there any other website which provides these
kinds of stuff in quality?

make   2011/3/28 下午 11:59:00

^^~好文章 ...^^

+_+   2010/9/7 下午 08:21:00

看 JavaScript 的起起落落,沒想到它才是最強的!
Perl, Python, Ruby, JavaScript 呵呵,強哪!

JOY   2010/3/13 下午 10:41:00

只能說 傑克 真是太神奇了...

卜維丰   2009/8/18 下午 05:57:00

waru, 我想, 書裡已經把 Javascript 的架構說明的很清楚, 物件-方法(屬性) 這樣的關係搞懂, 即便連 AS 都能通

waru   2009/8/17 下午 12:02:00

您好:
請問一下Acrobat可以支援Javascrip撰讀這本書應該會讓我可以有更進一了解吧!(已經努的在K書中)

hanson   2009/7/19 下午 02:56:00

很精闢的分析...

詹姆屎   2009/5/5 下午 03:58:00

我曾一度以為,java script是一個過渡性的語言
卻沒想到日漸壯大,並不是我小看java script,而是沒有想到,其他語言竟然沒有一個可以超越他
再強的.Net Framework竟然也仰賴java script才能完整

早知道當年就繼續研究這個不需要complier的東西就好了....

給個回應
姓名:
佈落格網址:
  如果您是要發問問題, 最好有個問題測試的網址, 這樣比較容易找到您問題所在, 謝謝
內容: