2008年6月14日 星期六

大學系所評鑑公布

大學系所評鑑公布
受評學校:中國文化大學
受評系所 通過 待觀察 未通過 評鑑報告下載 備註

動物科學系(大學部) v

PDF下載

土地資源學系(大學部) v

PDF下載

森林暨自然保育學系(大學部) v

PDF下載

生活應用科學系(大學部) v

PDF下載

生活應用科學系(碩士班) v

PDF下載

食品暨保健營養學系(大學部)
v
PDF下載 申覆申請書 申覆意見處理表

新聞學系(大學部) v

PDF下載 申覆申請書 申覆意見處理表

新聞學系(碩士班) v

PDF下載 申覆申請書 申覆意見處理表

廣告學系(大學部) v

PDF下載 申覆申請書 申覆意見處理表

資訊傳播學系(大學部) v

PDF下載

資訊傳播學系(碩士班) v

PDF下載

大眾傳播學系(大學部) v

PDF下載 申覆申請書 申覆意見處理表

法律學系(大學部) v

PDF下載 申覆申請書 申覆意見處理表

法律學系(碩士班) v

PDF下載 申覆申請書 申覆意見處理表

教育學系(大學部) v

PDF下載

心理輔導學系(大學部) v

PDF下載

心理輔導學系(碩士班) v

PDF下載

行政管理學系(大學部)
v
PDF下載 申覆申請書 申覆意見處理表

政治學系(大學部)(共同) v

PDF下載 該系與美國研究所(M)共同評鑑
申覆申請書 申覆意見處理表

政治學系(碩士班)(共同)
v
PDF下載 該所與美國研究所(M)共同評鑑
申覆申請書 申覆意見處理表

政治學系(博士班)(共同)

v PDF下載 該所與美國研究所(M)共同評鑑
申覆申請書 申覆意見處理表

美國研究所(碩士班)(共同)

v PDF下載 該所與政治學系(MD)共同評鑑
申覆申請書 申覆意見處理表

經濟學系(大學部)
v
PDF下載 申覆申請書 申覆意見處理表

經濟學系(碩士班) v

PDF下載 申覆申請書 申覆意見處理表

經濟學系(博士班)
v
PDF下載 申覆申請書 申覆意見處理表

企業管理學系(大學部)(共同) v

PDF下載 該系與國際企業管理研究所(MD)共同評鑑

國際企業管理研究所(碩士班)(共同) v

PDF下載 該所與企業管理學系共同評鑑

國際企業管理研究所(博士班)(共同) v

PDF下載 該所與企業管理學系共同評鑑

資訊管理學系(大學部) v

PDF下載 申覆申請書 申覆意見處理表

資訊管理學系(碩士班) v

PDF下載 申覆申請書 申覆意見處理表

財務金融學系(大學部) v

PDF下載

國際企業管理研究所在職專班(碩士班) v

PDF下載

資訊管理研究所在職專班(碩士班) v

PDF下載

會計學系(大學部) v

PDF下載

會計學系(碩士班) v

PDF下載

國際貿易學系(大學部) v

PDF下載

國際貿易學系(碩士班) v

PDF下載

社會福利學系(大學部)
v
PDF下載 申覆申請書 申覆意見處理表

勞動暨人力資源學系 / 勞動學研究所(大學部)
v
PDF下載

勞動暨人力資源學系 / 勞動學研究所(碩士班)
v
PDF下載

中山學術研究所(碩士班)(共同) v

PDF下載 該所與中國大陸研究所(M)共同評鑑
申覆申請書 申覆意見處理表

中山學術研究所(博士班)(共同) v

PDF下載 該所與中國大陸研究所(M)共同評鑑
申覆申請書 申覆意見處理表

中國大陸研究所(碩士班)(共同)
v
PDF下載 該所與中山學術研究所(MD)共同評鑑
申覆申請書 申覆意見處理表

電機工程學系(大學部) v

PDF下載

機械工程學系(大學部)
v
PDF下載

化學工程學系(大學部)
v
PDF下載 申覆申請書 申覆意見處理表

材料科學與奈米科技研究所(碩士班) v

PDF下載

市政暨環境規劃學系(大學部) v

PDF下載 申覆申請書 申覆意見處理表

市政暨環境規劃學系(碩士班) v

PDF下載 申覆申請書 申覆意見處理表

建築及都市設計學系 / 建築及都市計畫研究所(大學部) v

PDF下載 申覆申請書 申覆意見處理表

建築及都市設計學系 / 建築及都市計畫研究所(碩士班) v

PDF下載 申覆申請書 申覆意見處理表

建築及都市設計學系 / 建築及都市計畫研究所(博士班) v

PDF下載 申覆申請書 申覆意見處理表

景觀學系(大學部) v

PDF下載 申覆申請書 申覆意見處理表

景觀學系(碩士班) v

PDF下載 申覆申請書 申覆意見處理表

紡織工程學系(大學部) v

PDF下載

美術學系(大學部) v

PDF下載 申覆申請書 申覆意見處理表

西洋音樂學系(大學部) v

PDF下載 申覆申請書 申覆意見處理表

中國音樂學系(大學部) v

PDF下載 申覆申請書 申覆意見處理表

戲劇學系(大學部) v

PDF下載

中國戲劇學系(大學部) v

PDF下載 申覆申請書 申覆意見處理表

舞蹈學系(大學部) v

PDF下載

舞蹈學系(碩士班) v

PDF下載

藝術研究所(碩士班)
v
PDF下載 申覆申請書 申覆意見處理表

中國文學系(大學部) v

PDF下載

中國文學系(碩士班) v

PDF下載

中國文學系(博士班) v

PDF下載

日本語文學系(大學部)(共同) v

PDF下載 該系與韓國語文學系(M)共同評鑑
申覆申請書 申覆意見處理表

日本語文學系(碩士班)(共同)
v
PDF下載 該所與韓國語文學系(M)共同評鑑
申覆申請書 申覆意見處理表

韓國語文學系(大學部)(共同) v

PDF下載 該系與日本語文學系(M)共同評鑑
申覆申請書 申覆意見處理表

韓國語文學系(碩士班)(共同) v

PDF下載 該所與日本語文學系(M)共同評鑑
申覆申請書 申覆意見處理表

俄國語文學系(大學部)(共同) v

PDF下載 該系與德國語文學系(M)共同評鑑
申覆申請書 申覆意見處理表

俄國語文學系(碩士班)(共同)
v
PDF下載 該所與德國語文學系(M)共同評鑑
申覆申請書 申覆意見處理表

俄國語文學系(博士班)(共同)
v
PDF下載 該所與德國語文學系(M)共同評鑑
申覆申請書 申覆意見處理表

德國語文學系(大學部)(共同) v

PDF下載 該系與俄國語文學系(MD)共同評鑑
申覆申請書 申覆意見處理表

德國語文學系(碩士班)(共同)
v
PDF下載 該所與俄國語文學系(MD)共同評鑑
申覆申請書 申覆意見處理表

英國語文學系(大學部) v

PDF下載 申覆申請書 申覆意見處理表

英國語文學系(碩士班) v

PDF下載 申覆申請書 申覆意見處理表

法國語文學系(大學部) v

PDF下載

法國語文學系(碩士班) v

PDF下載

史學系(大學部) v

PDF下載 申覆申請書 申覆意見處理表

史學系(碩士班) v

PDF下載 申覆申請書 申覆意見處理表

史學系(博士班) v

PDF下載 申覆申請書 申覆意見處理表

哲學系(大學部)
v
PDF下載 申覆申請書 申覆意見處理表

哲學系(碩士班)
v
PDF下載 申覆申請書 申覆意見處理表

哲學系(博士班)
v
PDF下載 申覆申請書 申覆意見處理表

體育學系(大學部) v

PDF下載

國術學系(大學部) v

PDF下載

運動教練研究所(碩士班) v

PDF下載

運動教練研究所(博士班) v

PDF下載

觀光事業學系(大學部)
v
PDF下載 申覆申請書 申覆意見處理表

觀光事業學系(碩士班) v

PDF下載 申覆申請書 申覆意見處理表

應用數學系(大學部) v

PDF下載

物理學系(大學部) v

PDF下載

地理學系(大學部)(共同) v

PDF下載 該系與大氣科學系(M)地學研究所(D)地質學系共同評鑑

地理學系(碩士班)(共同) v

PDF下載 該所與大氣科學系(M)地學研究所(D)地質學系共同評鑑

大氣科學系(大學部)(共同) v

PDF下載 該系與地理學系(M)地學研究所(D)地質學系共同評鑑

大氣科學系(碩士班)(共同) v

PDF下載 該所與地理學系(M)地學研究所(D)地質學系共同評鑑

地學研究所(博士班)(共同) v

PDF下載 該所與地理學系(M)大氣科學系(M)地質學系共同評鑑
申覆申請書 申覆意見處理表

地質學系(大學部)(共同) v

PDF下載 該系與地理學系(M)大氣科學系(M)地學研究所(D)共同評鑑

資訊科學系(大學部) v

PDF下載

生命科學系(大學部)(共同)
v
PDF下載 該系與生物科技研究所(M)共同評鑑

生物科技研究所(碩士班)(共同) v

PDF下載 該所與生命科學系共同評鑑
申覆申請書 申覆意見處理表

園藝暨生物技術學系(大學部)
v
PDF下載

化學系暨應用化學研究所(M)


化學學門免評

2008年6月13日 星期五

eBay帶頭自宮,「網拍」在美國將成歷史名詞? (Mr. 6)

eBay帶頭自宮,「網拍」在美國將成歷史名詞? (Mr. 6)
知名部落格ReadWriteWeb昨天寫了一篇很有趣的文章

此文章引用了BusinessWeek稱「網拍」已經「瀕臨死亡」,另一個部落客則稱網拍為「短時間的一陣流行」(fad)。eBay自己也透露了兩個對「網拍」極不利的趨勢:

第一、eBay站內「定價商品」的成長率皆高於「拍賣商品」的成長率,已經連續六年。第二、eBay已決定著手加強「定價商品」這部份,畢竟,去年到今年(我上次也寫到),Amazon總營收一共成長37%來到40億美元,eBay則只成長14%來到13億美元,再這樣下去,B2C的Amazon營收很快就要變成C2C的eBay的五倍、六倍、七倍了。eBay並沒想改變成B2C,只想多做一點「定價」的生意,希望能將Amazon的成長,挖一塊給自己。

想想,「拍賣」所碰到的問題,其實和Web 2.0所碰到的問題有點相似。我們大家本來就有看電視的習慣,但,沒有「製作電視節目」的習慣,所以,YouTube想讓我們「大家都可以變成節目製作人」,至少也讓我們「開始觀賞其他平民製作電視節目」,這些都是「全新的體驗」。有些本就想自己做電視節目者,看到YouTube有如「久旱逢干霖」,讓YouTube短時間充滿平民影片並達到可怕觀賞率,但,最終不見得可以順利的靠Web 2.0拉到「全民規模」

也就是說,激速成長過後,可能就停在諸如30%的全民佔有率,剩下70%的,死都不使用


但這力量、這奇蹟,玩一陣子就玩累了。為何玩累?因為這本來就不是全民的習慣。 看看目前我們大家在實體市場購買東西,只有「0%」是從「拍賣」得來的,其實不只0%,但那比率實在太小,怎麼四捨五入都是「零趴」。大家唯一有過的「價 格浮動」的經驗,只有在夜市買東西的時候,但那也不是「拍賣」,只是「講價還價」而已,講完價,喊完話,東西馬上入手,不必等時間。「時間」真是拍賣的殺手, 也是最不合人性的地方,畢竟購物網站的優點,不就是要我們在家就可以「很快的買下」,「很快的到貨」?竟還要等個好幾天,實在很惱人!除此之外,還包括每 個人自己一些不好的經驗,比如說,為了省那一點點錢,競標競得要死,標到手三天後才發現,原來此產品市價早已打3折;有時看到「一元起標」,標下了,沒看 清楚狀況,最後竟要花20元美元運費把它從香港運到美國……。

此時,身為平台的eBay,已經陷入一種「左右兩難」的窘境。

此文章,並列出了年初eBay的內部簡報(真厲害,不知從哪弄來的),指出eBay曾設計一個改站計畫,將「定價」與「拍賣」兩種商品,分成左右兩塊,平行顯示出來。你就會嗅到,eBay一定也已經在思考--

該不該把「拍賣」與「定價」,分割成兩個網站

尤其,文章說到,eBay對這些事或許也不是這麼care,因為它還有另外「二 寶」:PayPal與Skype。前者帶來的營收正以高達34%的年增率成長中,目前Paypal的營收貢獻已佔全公司營收的四分之一。而Skype所帶 來的營收目前雖只佔一點點,但年增率比Paypal還快!也是因為eBay還有「太多條路可走」,反而讓C2C這塊曾經烽火撩原的大市場,出現了一個「十年難得一見」的創業機會

【公告】台積電97年股東常會通過配發3元現金股息及0.05元股票股利 -

【公告】台積電97年股東常會通過配發3元現金股息及0.05元股票股利 -

日期:2008年06月13日

上市公司:台積電 (2330)

主旨:本公司九十七年股東常會通過配發3元現金股息及0.05元股票股利

說明:

1.股東會日期:97/06/13

2.重要決議事項:

本公司今(13)日上午舉行股東常會,會中通過每普通股配發

現金股息3元及股票股利0.05元(即每仟股配發5股)。

本公司發言人何麗梅副總經理表示,今日股東常會同時通過:

承認民國九十六年度營業報告書及財務報表,其中全年合併

營收淨額約為新台幣3,226億元,稅後純益約新台幣1,092億

元,每股盈餘為新台幣4.14元。

3.年度財務報表之承認﹝請輸入是或否﹞:是

小鬼4歲上網、6歲帶手機 OK嗎-Yahoo!奇摩新聞

小鬼4歲上網、6歲帶手機 OK嗎-Yahoo!奇摩新聞

小鬼4歲上網、6歲帶手機 OK嗎

更新日期:2008/06/13 04:33 王嘉源紐約時報十二日報導

大家都曉得,嬰兒先會爬才會走路,先會坐三輪嬰兒車才會騎兩輪腳踏車。然而,小孩幾歲才適合擁有第一支手機、筆記型電腦或上網交友呢?

這些是21世紀為人父母者面臨的新問題,而且毫無前例可循。有些家長很熱中提供小孩新科技。莎曼莎.莫拉說:「我4歲大的小孩會坐就開始上網了,6歲大的小孩則擁有一支iPod,還想要一支手機,雖然我先生和我並不確定他會打給誰。」

另外有些家長,像是育有3名子女的克麗絲汀.喬根森,態度就更審慎。她說:「我並不迷信讓小孩接觸各種新式科技玩意兒,我的小孩為了做作業上網,但電腦是放在我看得見的地方,我對小孩保護到家。」

哪種做法才正確呢?研究顯示,答案是尋找折衷之道。早在微處理器發明之前,瑞士心理學家皮亞傑(Jean Piaget)就透過觀察自己的子女,提出了認知發展的4個階段,他的理論可對父母提供若干指引。

0歲至2歲:處於皮亞傑所謂的「感覺動作期」(sensorimotor),幼兒至少在2歲半之前不能夠使用滑鼠,電子螢幕也無法對腦部帶來多少刺激。對這個年齡層,科技產品必須像busybox工具包一樣運作,以聲光對小孩的行動做出回應。

3歲至5歲:喬治城大學兒童數位媒體中心主任桑德拉.卡維特教授指出:「現在的學齡前兒童在數位世界中成長,目睹父母使用手機和電腦這類科技裝置。他們喜歡玩具手機,把它當成真的一樣。」這種假裝和遊玩的行為是皮亞傑所謂「運思前期」(preoperational)的重要一環,此時小孩首次了解自己可以操控電子螢幕

6歲至11歲:當小孩到了可以騎腳踏車的年齡時,也會具備上網的能力,整個數位世界因而開展。突然間他們迷上了電玩遊戲,上YouTube影 音分享網站看有趣的影片。不過,皮亞傑稱這個階段是「具體運思期」(concrete operations),因為這時小孩仍無法掌握抽象概念。卡維特提醒家長說,這時電子產品應該用來「輔助而非取代真實的體驗」,並鼓勵子女維持活動的平 衡。家長則必須緊盯住電腦螢幕,引導子女瀏覽優質的網站。

12歲(含)以上中學生及高中生開始具備成年人的認知功能,已進入皮亞傑所謂的「形式運思期」(formal operational),能夠同時應付來自手機、MP3機及筆記型電腦的信息流。與朋友連絡是如呼吸一般自然的事,這是無線服務供應商的最愛。

手機對這年齡層的小孩或多或少是必備的,除了提供交友便利之外,手機也可以降低家長對子女行蹤的掛慮,還能透過手機教孩子做功課,要吃飯時也找得到小孩,而在需要薄懲子女時,沒收手機也十分管用。

蔡學鏞【言程序】部落格: 思考函數編程(三)FP is as FP does

蔡學鏞【言程序】部落格: 思考函數編程(三)FP is as FP does

到底FP有哪些常見的特色?阿甘(Forrest Gump)說過「Stupid is as stupid does」。這個句型相當好用,套用到FP,就是「FP is as FP does」。我們可以透過FP作了些什麼(does),來瞭解FP是什麼(is)。


【Higher-Order Functions】某函數如果可以接受函數當作參數,或者以函數為傳出值,我們就稱這樣的函數為「較高次方函數」(Higher-Order Function)。較高次方函數讓程式可以變得相當有彈性,而且寫法比OOP更精簡許多。函數式語言有相當大的威力來自較高次方函數,特別是函數式語言 的程式庫往往會有許多較高次方函數,可以幫助你進行資料處理(例如特殊排序法、資料對應、資料過濾)、事件處理。


【Currying】 程式庫往往將函數定義得比較一般化,具有通用性。這樣的函數,需要傳入比較多的參數。利用Currying的方式,可以定義出「特殊化」的函數,這樣的特 殊化函數將函數的局部參數先指定好,只有剩下一部份參數沒有指定。例如,程式庫有個函數為power(x, y),會計算出x的y次方,那麼我們可用很簡單的語法,定義一個平方函數square(x),事先將參數y指定為2;且定義立方函數cubic(x),事 先將參數y指定為3。當然非函數式語言也做得到這一點,但不可能像函數式語言的語法這麼精簡。


【Lazy Evaluation】表示式的執行可以拖延到真正需要執行時才執行,這就是Lazy Evaluation。好處是可以讓編譯器有最大的優化空間(敘述的次序可以先後調動)、執行時可以符合當時最新的狀況、方便做出更高階的抽象結構、定義 無窮大的資料結構。上述的這些優點,如果不透過Lazy Evaluation,都不太容易做到(甚至不可能做到)。


【Continuations】 利用Continuation,可以將一個函數的傳出值,傳進另一個函數當作傳入值,也可以產生循序執行的效果。利用continuation的方式,可 以讓原本沒有狀態的技術,有了狀態,讓應用更好寫。利用Web原本是無狀態的,如果將Continuation用到Web的開發上,會使得開發變得容易許 多。


【Pattern Matching】模式比對的方式,可以讓系統自動幫我們進行分支(branch),與變數的指定(assignment)。有了模式比對,FP可以降低 依賴(imperative語言的)switch/case與(物件導向語言的)多型,而且寫出來的程式碼也不會像switch/case那樣一大塊。


【Closure】Closure讓函數在離開之後,其context依然保留(而不會像call stack內的frame一樣,被丟棄)。有了Closure,就可以設計「傳出值是函數」的函數。


【List Processing】FP的始祖語言LISP,名稱的意思正是List Processing,目的是要進行方便的List處理(List是資料的集合)。許多函數式語言都有好用的List處理語法(例如List Comprehensions、取出List頭部元素、插入List頭部)與Lisp處理函數(例如map、filter)。


【Meta-Programming】許多FP語言都可以有提供方便的Meta-Programming工具,讓你可以設計自己的DSL,來輔助軟體開發。


並 非所有的函數式語言都具有上述的特色。許多函數編程語言都不是「純的」函數語言,而是混合了相當多的imperative特性。學習函數編程時,如果使用 這些語言,可能比較無法體會到函數編程的意義。我鼓勵大家學習比較純的函數式語言,並多多使用它們的程式庫,這可以讓你對FP有比較深刻的體驗。(全文 完)

蔡學鏞【言程序】部落格: F#:微軟的下一代重量級語言

蔡學鏞【言程序】部落格: F#:微軟的下一代重量級語言
在下一個版本的Visual Studio中,F#將會成為正式的一員,和C#、Visual Basic平起平坐。目前,F#也已經和Visual Studio做了初步的整合。
一個新語言的誕生,自然有它的時代背景,對F#來說,自然是函數式編程(FP,Functional Programming)的因素。我已經在許多文章提到FP對現在IT環境的重要性,請自行上網查詢閱讀這些文章,我不在此重複敘述。
事實上,除了具備FP的能力,F#在Imperative Programming與OOP(物件導向編程)方面的能力,也是不打折的。因此,利用F#寫程式,可以享有高度的自由,想用什麼樣的paradigm, 你可以自己作主。但如果完全不使用FP,那麼使用F#的意義不大,不如回頭使用C#。

雖然F#比其他FP語言(Haskell、Erlang、Common Lisp)似乎更好學(因為語法比較不奇怪),但是一般人要善用F#並不容易,主要是FP的Paradigm和我們慣用的OOP與Imperative Programming不同。因此,熟悉F#的過程中,一開始最好強迫自己只用FP的方式寫F#程式,不要用到OOP和Imperative Programming。

FP編程常用到的技巧包括了下面八點:Higher-Order Function、Currying、Lazy Evaluation、Continuations、Pattern Matching、Closure、List Processing、Meta-Programming。令人驚訝地,F#對這八點的支援都相當不錯。許多FP語言在這些方面可能還比不上F#完整。一 開始寫F#程式,盡量多用這些技巧,寧可矯枉過正,這是學習的必經階段。

OS: 這八點是啥?老實說,我也不清楚。

我認為,想要開始習慣用F#寫FP程式,你可以開始做下面的事:



  1. 將Object為主的程式碼轉回Procedure的方式:將Object化成Record,將Method轉成Function,將this(或self)當作Function的參數,把Function集中放到Module(模組)。

  2. 將程式中用到迴圈的地方,盡量轉成遞迴(Recursion)。先不要管執行效率的問題。

  3. 將程式中用到if/else或switch/case的地方,改用Pattern Matching(模式比對)。

只要做到上述這三件事,你的F#程式會具有濃濃的FP風味。


F#由於是建構在.NET平台上,所以當然和.NET有天衣無縫的整合。事實上,F#所提供的互動式環境,對於學習.NET API來說,是相當不錯的工具,比PowerShell更適合程式員使用。


由於F#的開發相當早(2002年),且F#比較是屬於靜態的語言,而不是動態的語言,所以目前F#並沒有以.NET的DLR(Dynamic Language Runtime)為平台。未來F#會不會搬到DLR上頭?情況還不明朗。


以往用FP開發的系統多以科學和財務為主,現在有了F#和.NET,應該可以為FP打開更廣的應用領域。我相信,漸漸地會有人改用F#寫.NET的各種應用(ASP.NET、GUI、LINQ)。


F# 也是一種Language-Oriented Programming(語言導向編程)的語言。所謂的「語言導向編程」,就是Meta-Programming,也就是「可以建立自己的DSL」。我寫 過一篇關於「GPL & DSL」的文章,但是這篇文章並未得到太多讀者的注意,顯然大家並沒有意識到Meta-Programming的重要性,相當可惜。


GPL與DSL

文 / 蔡學鏞

扔掉浴室裡的瓶瓶罐罐,GPL一瓶抵萬瓶。為什麼我們要推出GPL這麼好的產品?鞏利俯身彎腰,素珠側身插腰,齊聲說道:『因為你值得!』

看了上面這段廣告,如果你是個神智正常的人,應該會啼笑皆非。『GPL是什麼東東呀?這麼神奇!別把我當容易上當的傻B』… 但其實我們都曾經上當過。

GPL (General-Purpose Language,一般用途的語言)是指「可以用在許多開發領域,沒有特定用途」的語言。例如:C、C++、Java、C#、Ruby、Python都算 是GPL。在適合使用GPL的地方使用GPL,當然沒問題;但是在不適合GPL的地方使用它,事情可能一樣可以做得到,只是要花更多精力,事倍功半,且潛 在的問題會更多。

在特定的專業領域(例如GUI、資料庫、Web、統計)使用GPL,不見得很適合。如果在專業領域能改用專為該領域打造 的SPL(Special-Purpose Languag,特殊用途語言),程式會變得相當簡短,且表達力更豐富、生產力更高、也更不容易有bug。許多人也將SPL稱為DSL(Domain- Specific Language),或小語言(little language)。

對於DSL,我們其實並不陌生。SQL就是一種DSL,讓我們和資料庫管理系統(DBMS)進行溝通。SQL有自己的語法,SQL只能用來進行資料庫相關的動作,不能用來寫一般的程式,這就是相當典型的DSL。

除了SQL之外,「小語言」在UNIX上有長遠的歷史,為UNIX環境增添許多吸引力,例如Awk就是UNIX使用者愛用的小語言。近幾年引起大家關注的RoR(Ruby-on-Rails)也是一種DSL。RoR讓你不需要寫很多程式碼,就可以做出網站。

最 近許多XML應用,也都是DSL的表現,例如微軟的XAML、Adobe的MXML。這些XML都是將GPL的物件模型直接對應到XML,並未發揮太多 DSL的優點。而且由於採用「不適合人類編寫」的XML格式,因此最好搭配特別的設計工具(例如GUI設計工具)。我認為,這類XML格式的DSL,只是 一種便宜行事的作法,廠商應該要想辦法設計出更好的DSL。

如何設計出DSL?不同的GPL對此有不同的作法,例如REBOL、Ruby、Common Lisp、Curl、PowerShell、Groovy都號稱讓你可以設計自己的DSL,但是它們對於DSL的支援程度,以及DSL的語法彈性,卻大大地不同。

如 果某GPL允許方便地自訂DSL,我們說這種語言支援meta-programming。即使一個語言沒有支援meta-programming,它依然 可以做出DSL,只是 (1) 會相當辛苦,要自己寫剖析器(parser),或者 (2) 做出來的DSL,彈性相當差。例如:在C++/MFC時代,有所謂的事件發派巨集(event dispatch macro),我也認為它是一種DSL,只是囿於C/C++的巨集威力有限,所以此「事件發派巨集」的彈性相當糟糕。

不要因此對巨集留下不好的印象。許多語言(包括Curl和Common Lisp)的巨集具有很強的DSL功能,可不像C/C++的巨集這麼陽春。

除 了巨集之外,也常見使用外部的語言和工具,來設計DSL。例如ANTLR讓我們用文字描述方式,定義自己的DSL,它會幫我們產生Parser。或者,你 也可以使用微軟推出的DSL工具,以繪圖的方式,描述DSL的語法。外部定義DSL的作法,或許可以產生不同GPL的剖析器。

如果DSL和GPL的資料和程式完全不能流通,那就沒什麼意思了!畢竟開發應用時,我們必須以GPL為主,特殊的地方才用DSL,兩者之間最好沒有隔閡。

所以,某GPL對於DSL的支援良窳,我的三個基本的判斷原則是: (1) 能否輕易地設計DSL (2) 能否設計出有彈性的DSL (3) 能否讓DSL和GPL使用上合為一體。在未來的編程環境,具有良好了DSL支援,絕對是一大加分。

除 了文章一開始的萬用洗髮精之外,瑞士刀也適合用來比喻GPL。瑞士刀有很多功能,但是我想除了馬蓋先之外,我們還是喜歡用各種不同的刀子,去做不同的事。 職場講究專業分工,不同才能的員工各司其所。語言也應該專業分工,別再讓通才語言做專才語言的工作,這才是未來軟體開發該走的路。