星期日, 3月 11, 2007

可憐的Javascript妹妹啊... 我來聲援妳了~~

""" 不要相信任何失去熱情的人跟你說程式語言不重要,
程式語言只是工具... 不要為了程式語言而戰...
那些人都已經失去戰場跟舞台, 早已不在第一線上了...
遺棄舞台的人, 舞台也終將遺棄他."""

-- by 戰の使徒 使徒提姆


網路上的資訊經常錯誤百出,
老實說我已經見怪不怪了,
由於我很懶惰而且還有其他想作的事情要作,
所以通常我都是扮演跳過之後順便恭維兩句:
"您真內行..." 等等無恥獻媚的鄉愿之徒.

不過阿西摩這篇標題跟文章都讓我看起來就像是
""" Javascript鳥腳本語言 才不是 太陽微電子工業語言 aka. Java宇宙大無敵語言"""
可以說統合了一般非javascript工程師對Javascript天大的誤解之集精華大成.
由於這種百年難得一見的落井下石機會實在難得,
所以基於Python傳教士捨己為人路見不平拔刀相助的仁人理念,
不得不好好的落井下石一番.

雖然說我們Python星球跟Ruby Perl幫的仁人善士早已把這篇批鬥的體無完膚,
卻遲遲不見追Javascript妹幫的js仔出來踢館,
基於前人造出井就是要拿來落井下石的偉大抱負,
我發現我還是得站出來為javascript妹辯護兩句.

我們先來看看阿西摩同學怎麼說的, 阿西摩先引用了wikipedia,


JavaScript並非Java
JavaScript是由網景通訊公司(Netscape)最初在它的Navigator 2.0產品上設計並實現的
,原名LiveScript,除了句法上有一些相似之處以及都能夠提供網頁中的可執行內容以外,
JavaScript和Java是完全不相干的。

JavaScript並不簡單
實際上儘管JavaScript是作為一種給非程式設計師提供的腳本語言而不是給程式設計師提供
的程式語言來推廣和宣傳的,但是 JavaScript是一門具有非常豐富特性的程式語言,和其他所有
的語言一樣複雜或者更複雜,你需要對JavaScript有紮實的理解才能用 JavaScript執行比較複雜
的任務。

原文出處: Wikipedia - JavaScript


然後得到了一個精彩的結論: """所以阿西摩要大喊 JavaScript ≠ Java ,更重要的原因是 JavaScript "充其量""不過是"一種 Script language,中文翻譯為[腳本語言]"""

各位, Wikipedia寫了老大的字:

"但是 JavaScript是一門具有非常豐富特性的程式語言,和其他所有的語言一樣複雜或者更複雜,你需要對JavaScript有紮實的理解才能用 JavaScript執行比較複雜的任務。" ,

這麼清楚的解釋,
阿西摩同學卻得到了"充其量"跟"不過是"這種不能算結論的結論.
我不禁苦嘆: "教育",您怎麼了? Wikipedia是這樣引用的嗎?
那我下次引用漢摩拉比法典說Java充其量是巴比倫人不用的語言好了. :P

再來阿西摩同學又引用了Wikipedia,
得到了一個有趣的結論: Java屬於工業編程語言.
這點各大中文部落格一兩個月前都已經戰到出火了,
當然我也不得不順便在此宣布Python是帥哥正妹跟華夏無敵高手才會用的語言.

好了, 看了這麼一堆狗屁的東西,相信大家一定都頭暈了。好吧,使徒提姆現在就用自己的解釋來說 JavaScript ≠ Java ... 我讀起來阿西摩大概就是這麼說的.

好了, 基本的狗屁都過去了, 來看看太陽微電子學派的六大錯誤論點吧:

1. 阿西摩:"""JavaScript 只要有一個網頁跟有支援 JavaScript 的瀏覽器才可以執行."""

喔喔... 是這樣喔...沒看過SpiderMonkey也看過Rhino吧?
Rhino還是用太陽微電子語言寫的呢.

接下來阿西摩同學還說了(至少我讀起來是這樣)
"""只要程式內沒有使用什麼特殊平台的 library ... (跨平台) ... 都不會有太大的問題"""

這句話要好好練習練習, 升官發財就靠這句了.

2. 阿西摩:"""最原始的 JavaScript 能操作跟執行的範圍相當有限,比方說,你如果要讀取本機端的檔案,比就必須搭配 JavaScript extension 還有 ActiveX 之類的附註程式才有可能達稱。而 Java 可以輕鬆的使用 Java 原本的 package 去讀取檔案,更改檔案。"""

拿木瓜比菜瓜... 不如說Java還有咖啡可以喝好了... 照樣造句也可以來一句:
"Java要搭配Java程式庫跟瀏覽器的plugin才能XX OO YY,能操作跟執行的範圍相當有限"

看官, 了解了嗎, 欲加之罪何患無詞? :P

3. 阿西摩:"""而比起 JavaScript,Java語言,有自己的標準,架構,平台,而且複雜度高上太多太多了,所能應用的範圍更是會把 JavaScript 巴到連渣都不剩!"""

是是是... 阿西摩說的好... Javascript渣都不見了... Java還剩很多... (渣?...)

Javascript標準,架構,平台樣樣不缺, 至於語言的特性跟範圍,

Joel Spolsky去年發表了一篇"""Can Your Programming Language Do This?""",裡面的例子就是採用Javascript, 順便又替早就人人喊打的java又多踢了兩腳.

是的, 妳還可以仔細閱讀...

"JavaScript:
The World's Most Misunderstood Programming Language"


The JavaScript knowledge gap

稍微多瞭解一下知識.

不過說到要比複雜度, 不知道Levels of JavaScript Knowledge您是第幾層?

"""I would even go so far as to say that the fact that Java is not hard enough is a feature, not a bug, but it does have this one problem.""" Joel Spolsky這麼說.

但是隱藏在這後面, 最可怕的媚俗誤解並不是上面我提的這些, 
是居然用語言的複雜度來論斷一個語言.
也就是說一個語言只要搞得很複雜然後說自己很嚴謹就突然變的了不起了起來.
當年C++派人士這樣對待Java先鋒們(我是很敬佩這群先鋒的, 至少人家敢挑戰權威)
現在他們的徒子徒孫好的不學又學到這招打壓的威權思想,
不知道該作何感想. 只能說歷史一直重演.
不如所有人都去學機器語言算了. 反正一切都是0跟1嗎. :P

4. 阿西摩:"""JavaScript 是一種非常不嚴謹的腳本語言。在 JavaScript 裡面,變數全部都用 var 宣告,如果你這樣在 Java 裡面寫程式,我跟你保證,Java compiler 會不斷的,一直的給你[舉紅牌]!"""

非常明顯的錯誤加上完全莫名其妙的結論跟推理過程.
阿西摩說: "在 JavaScript 裡面,變數全部都用 var 宣告"...
這完全是錯誤的資訊,
var不是一種變數的宣告,
var是表示這個變數是local variable, 是一種scope的概念.
不論有沒有var都是個變數, var只是一個scope修飾子,
而javascript的variable scoping rule是implicit global scope,
講的這樣囉哩囉唆, 還看起來太專業了所以妳不知道嗎?
喔 那JavaScript 是一種非常不嚴謹的腳本語言到底是怎麼得來的結論?
要戰動態型別嗎? 那我看這篇文章可以自動加個八千行了, 別了吧...XD

阿西摩:"""如果你這樣在 Java 裡面寫程式,我跟你保證,Java compiler 會不斷的,一直的給你[舉紅牌]!"""

喔如果妳在javascript裡寫java樣子的程式, java script debugger也會不斷的給妳舉紅牌 還按到妳手酸為止耶...

嚴謹不是java能規定的. 嚴謹主要還是來自於Programmer的撰寫習慣跟對程式碼的尊重. Period.

5. 阿西摩:"""我可以用 Java 語言,在 Java Server Page (JSP)上動態產生 JavaScript 語言,並且執行,而你想要用 JavaScript 去寫 Java語言!? 嗯,還是不要沒事找自己麻煩的好!"""

降子啊... 我又想照樣造句了耶, Javascript還可以動態產生Javascript呢... 妳如果想用java語言去產生java語言,, 恩... 還是不要沒事找自己麻煩的好...

反正這種句子隨便怎麼造再給個論斷 聽起來都言之成理,

還不過就是市場機制驅使不少人有了一種java的優越感罷了.

錢跟價值突然就等價了起來.

javascript的原罪就在於太簡單就能學,

一堆人隨便剪剪貼貼就以為會了,

加上不長進的公司又沒啥高深的需求,

當然領的錢就少.

不過放心吧,

照ajax被一群工程師惡搞的趨勢來看,

搞不好以後會變的很難又亂七八糟的.

(當然啦 還是會有一股清流的... 不過清流一般來說都只能在山裡隱居 沒辦法成為主流的)

反正就暫時隨便阿西摩說吧, 搞不好哪天就會突然為了錢想學個什麼ajax起來,

到時搞不好javascript又什麼都好了... XD

6. 阿西摩:"""總之,JavaScript ≠ Java 你是要我說多少次才會聽懂啦!"""

我聽懂了... 可是我覺得錯誤百出ㄟ... XD

再來呢, 阿西摩同學又示範了Helloworld這個艱難的程式用兩個語言撰寫之後,

又發現自己的Java專業被人家當作"Javascript"這種"""垃圾"""看待...

各位... 到底是誰得了便宜還賣乖? 寫兩個helloworld就得出了後面這個結論,

"""因為 Java 背後的專業性,應用範圍,
絕對不是 JavaScript 那種 SCRIPT 語言可以比較的!"""

公理自在人心,
妳覺得, 被人以錯誤的理由跟藉口(其實只是不滿Javascript跟Java名字像而已,就像路上遇到一個跟你撞衫的傢伙不爽就砍他兩刀)打了一巴掌又踢了一腳, 是不是不值得生氣?

我充分能理解阿西摩這篇文章那幾十篇留言的心情,
不理解這種心情的人想必是還沒瞭解被他人輕視的感覺的,
想當年, 我也被論文口試的教授說:"為什麼用這種全天下只有妳會的語言(python)
為什麼不用Matlab?"
我也只是乖乖的摸著鼻子而已.
出了社會有時使用Python也常被冷嘲熱諷,
所以為了真正的程式之道忍辱負重還要被踢上兩腳. 其實我已經習慣了.

但是各位, 我為Javascript妹妹抱不平啊.......!!!
(我這個人, 看到正妹就是心地好+憐香惜玉...XD)

不過阿西摩妳也不用氣餒,
阿西摩的文章也沒有說自己的文章是什麼阿西摩十誡,
頂多只是宣導了錯誤的東西罷了,
所以雖然阿西摩的文章錯誤百出,
雖然我講的話向來很直,
但是文章是文章, 人是人,
文章即使再怎麼差勁, 人是會進步的,
俗話說的好, 不打不相識,
相信經過眾人的洗鍊之後, 還是會有所成長的!

希望阿西摩以後能發表值得嘉獎的文章,
這樣我也不用花一兩個小時來打一篇廢話這麼多,又不怎麼中肯
還把我整年戰文的Quota都用完的文章了.

ps: 各位居然能撐到這邊看到這裡的看官,
這篇主要還是屬於麻辣Humor類,
也就是消遣人當娛樂的類型,
看過吳X憲的節目吧?,
如果有人因為我的狗屁廢話生氣上火了那就不好了,
因為我還是會繼續消遣下去的 .

請仔細看我的右下方特別聲明喔, 我是自High派的. XD

ps2:

Javascript妹妹, 我這麼熱情的聲援妳, 請妳愛我吧!! (趁亂告白篇)

阿阿不行不行, 我已經有Python了, 雖然難過, 我們的相遇實在是個錯誤, 還是分手吧... XD

3 則留言:

yungyuc 提到...

有 JavaScript 娘的話我想要看!

何岳峰 hoamon 提到...

我的論文是用 matlab 寫的。不過,我的指導教授開始要我把重心放在 Python 上了。

使徒提姆 !? 提到...

yungyuc: Javascript 娘沒有 犀牛好幾隻 XD

hoamon: 有前途!