摘譯 CoffeeScript 維基百科:
CoffeeScript 是用 ruby 寫的一種 Javascript 程式碼產生器。其中採用了 Ruby 與 Python
(比如 indent 取代大括號) 兩種程式語言的特性來簡化撰寫 Javascript 的語法,另外也
增加陣列轉換 (Array Comprehension)與正規表示(Pattern Matching) 的擴充語法。
使用 CoffeeScript 的好處是可以用更簡潔的程式碼,達到原本用 Javascript 寫出的
同樣功能,而不影響到執行期效能。Javascript 之父 Brendan Eich 表示 CoffeeScript
也影響到他對 Javascript 語言將來的發展規劃。
Ruby on Rails 預計在 3.1 版將會支援 CoffeeScript 。
CoffeeScript 可以在瀏灠器直接執行或透過 Node.js (Server side 執行的 Javascript 程式
,event driven I/O framework for V8 Javascript engie on Unix)執行。
讀完維基百科後,可以繼續看 PragProg Magazine 的 CoffeeScript 五項改進:
一、變數宣告依所在的 namespace 為全域或區域變數,不再因為宣告變數忘記加
var 而覆蓋已經宣告過的全域變數。CoffeeScript 也會將變數限定在單一檔案的匿名
函式中。
二、ajax call 中的 this 在 CoffeeScript 中同樣指到目前 context 的物件,this 關鍵字
也可以用符號 @ 代替
三、CoffeeScript 繼承 ruby 慣例將函式最後的 expression 自動當函式返回值,也可
以在變數賦值的語法 a = 後加上 '->' 自動將 a 由變數改為函式
四、CoffeeScript 在迴圈中使用 do 關鍵字,可以更容易為迴圈加入需取值的函式。
五、提供語法蜜糖,讓程式碼更簡潔
另外據說現在 GitHub 的開放源碼存量已經超過 SourceForge,再來是 Google Code
第四是微軟的 CodePlex,另外還有支援 Mercurial distributed version control system (DVCS)
的 BitBucket 可以參考。
CoffeeScript 官網
CoffeeScript@Gihub
A CoffeeScript Intervension
2011年6月4日 星期六
2009年7月3日 星期五
2009年1月20日 星期二
程式設計的文藝復興
翻譯自:AppTrain: Renaissance Programming
這是一個關於採用 Ruby on Rails, PHP, MATLAB, 以及
4) 共同設計
建構一個可用的軟體應用程式需要持續的設計。專案中所有
這是一個關於採用 Ruby on Rails, PHP, MATLAB, 以及
限制寫出產品所需要的程式。猶如文藝復興時期的建築師般
,程式設計師知道設計寫作程式的重點,就是在於產出程式
程式設計開發環境。我們團隊中的 Jim 是一位優秀的 PHP
程式設計師。我們要如何在同一個網站中讓 PHP 跟 Ruby
共存?
1) 釐清責任區分
專案計劃中每位開發者都要達成特定的功能目標。完成這些
1) 釐清責任區分
專案計劃中每位開發者都要達成特定的功能目標。完成這些
功能性目標的程式語言只是輔助工具。即使是一家小公司,
使用多種工具完成目標也是很常見的。比如 Rob 是 MATLAB
專家,所有運算集中的程式碼都是使用 MATLAB 完成。架構
網頁前端的程式語言則是 PHP。這方面我們交給 Jim 完成
。Ruby 在整個計劃中則是隨處可見的,因為他的高藕合特性
幾乎可以運用在任何需要系統整合的專案中。我的主要責任
是從多個來源蒐集資料,組織好資料後再傳送到有 MATLAB
後端運算的 PHP 網站上。
2) 聚集類似的目標與工作任務(內聚)
軟體開發稱這個動作為內聚 cohesion. 本專案中的 Rake 任
2) 聚集類似的目標與工作任務(內聚)
軟體開發稱這個動作為內聚 cohesion. 本專案中的 Rake 任
務是到網頁上蒐集公開的網頁資料,所需要找的是同一款電
玩遊戲的所有相關網頁資料。剛好我最近都在研究相關的
議題,這正好在工作中派上用場。
3) 保持元件獨立
在專案中我們除了前端 PHP 及其相關的 MATLAB 模組,也
3) 保持元件獨立
在專案中我們除了前端 PHP 及其相關的 MATLAB 模組,也
架構另一個 Rails 內部網站,兩個網站雖然互相溝通但實作
上相互獨立,我們稱為 low coupling, 如此一來我們兩邊元
件開發可以同時進行而不造成相互等待的時間浪費,也不會
產生過於複雜的溝通系統。
4) 共同設計
建構一個可用的軟體應用程式需要持續的設計。專案中所有
成員都共同參與設計的工作。我們會把重要的觀念放到線上
領域知識字典,並隨著設計過程增加到網站上。這讓我們對
同樣的概念有相同的詞彙,增加溝通效率。保有共同詞彙讓
我們在開發程式的命名上也更有共識,最後呈現給使用者的
介面也會更一致。
5) 不要重造車輪
Don't Repeat Yourself, DRY 原則。The Pragmatic Programmer
裡面寫著:
在同一系統內,每個知識必須要有單一、明確、權威的表示
5) 不要重造車輪
Don't Repeat Yourself, DRY 原則。The Pragmatic Programmer
裡面寫著:
在同一系統內,每個知識必須要有單一、明確、權威的表示
方式。
當資料在資料庫之間傳遞時,必須由具權威代表的資料庫傳
當資料在資料庫之間傳遞時,必須由具權威代表的資料庫傳
遞到備份資料庫中。我們系統中的權威資料庫是存放在
Rails 框架構成的網站,所有在 Rails 對資料庫做的修改都
會連帶修改其他的備份資料庫中。固定資料傳遞的方向是為
了避免網站架構變得太複雜難以維護。除了在程式碼中保持
DRY 原則外,整個系統架構上都要記得同樣的 DRY 原則。
6) 持續的溝通
沒有位在同一辦公室的共同開發者,更是需要積極主動的
6) 持續的溝通
沒有位在同一辦公室的共同開發者,更是需要積極主動的
溝通。在這個專案中我們每週有兩次共同電話會議。在一星
期的開始我們會討論計劃、策略、戰術,以及任務、與遇到
的問題。一星期結束時則是每個人各自簡報的會議。如此就
算有人太忙碌,或是在旅行中,也都至少可以參與到一次的
每週會議。我們私底下也是會常常溝通,從討論複雜的程式
設計議題,到補修統計學,或是共同慶祝喜愛的橄欖球隊
神經生成科學 Neurogenesis。與一般坊間聽到的剛好相反,
我們的腦細胞在進入成年以後仍然不斷地產出與生長。在這
個專案中我們接觸到越多陌生的開發環境與工具,就讓我們
心智成長、心靈更加開放。
當 Rob 需要網路上的橄欖球統計資料時,我們利用 Rake 進
當 Rob 需要網路上的橄欖球統計資料時,我們利用 Rake 進
行這項工作,並將資料送到 Google Spreadsheet API。另一個
Rake 針對連結到這個 Spreadsheet 的 PHP 網頁進行更新連
結到新 Spreadsheet。
我們系統中已經整合許多不同系統與環境,如果要再新增其
我們系統中已經整合許多不同系統與環境,如果要再新增其
他系統也是輕而易舉。注意我前面提到的這些工具,都是專
案成員共同開發,因此我們同時也都在不同的開發環境中一
起成長精進。
在開發網站時,我也會考慮都用 Rails 或是 PHP 進行開發
在開發網站時,我也會考慮都用 Rails 或是 PHP 進行開發
比較好?結果發現將每個工具用在他最適切的使用需求上才
是最好的做法。
這讓我想到文藝復興時代的藝術建築創作,一個熟練多種不
同開發環境與工具的程式設計師。就我個人來說也彷彿經歷
一場文藝復興時期的成長,除了使用的工具與開發環境外,
Labels:
文藝復興,
程式設計,
Google Docs API,
kpozsports,
MATLAB,
PHP,
Programming,
Renaissance,
Ruby,
Ruby on Rails
訂閱:
文章 (Atom)