以下為本站文章分類清單

  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 有新的面貌問世,會是什麼樣貌?改天我又突發奇想時,再跟各位報告了!

 

以下為文章回應區

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

How do you treat Achilles tendonitis?   2017/8/21 下午 01:32:00

You really make it seem so easy with your presentation however
I to find this matter to be really one thing which I believe I
might by no means understand. It kind of feels too complicated and very large for me.
I am taking a look ahead to your subsequent submit,
I will attempt to get the hold of it!

anitrasuyama.hatenablog.com   2017/8/12 下午 04:24:00

First off I would like to say terrific blog!
I had a quick question in which I'd like to ask if you do not mind.
I was interested to find out how you center
yourself and clear your mind before writing. I have
had a difficult time clearing my mind in getting my ideas out.
I truly do take pleasure in writing but it just seems like the
first 10 to 15 minutes are wasted simply just trying to figure
out how to begin. Any suggestions or tips? Appreciate it!

What is a heel lift?   2017/8/4 上午 11:48:00

I enjoy looking through a post that will make people
think. Also, many thanks for allowing for me to comment!

What do you do for Achilles tendonitis?   2017/7/31 上午 11:10:00

Link exchange is nothing else but it is simply placing the
other person's web site link on your page at suitable place and other person will also do
similar in support of you.

http://maurinekirscht.hatenablog.com/   2017/7/31 上午 02:32:00

Hello there! I just want to give you a huge thumbs up for your great info you have got right here on this post.

I will be coming back to your site for more soon.

What causes painful Achilles tendon?   2017/7/28 上午 12:19:00

My partner and I absolutely love your blog and find the majority of your post's
to be just what I'm looking for. Does one offer guest writers to write content available
for you? I wouldn't mind writing a post or elaborating on most of the subjects you write regarding here.
Again, awesome web log!

foot pain in the arch   2017/7/4 上午 05:13:00

These are truly great ideas in on the topic of blogging.
You have touched some pleasant factors here. Any way keep up wrinting.

foot pain during running   2017/7/3 下午 08:12:00

As the admin of this web site is working, no question very soon it will be famous,
due to its feature contents.

foot pain ball   2017/7/2 下午 01:15:00

These are truly great ideas in on the topic of blogging.
You have touched some pleasant factors here. Any way keep up wrinting.

foot pain in the arch   2017/6/21 下午 04:46:00

Glad to be one of several visitants on this amazing web site :D.

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的東西就好了....

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