極簡化

極簡化（另称縮小化），在程式語言  (尤其是 JavaScript) 的範疇裡，指的是在不影響功能的情況下，移除所有非功能性必要之原始碼字元（如：空白、換行、註解、以及些許的區塊辦識子），因為雖然它們有助於提昇原始碼的易讀性，但在實際運行時卻不是必要的部份。

極簡化後的原始碼特別對於在網路上傳送的直譯式語言（例： Javascript）有所助益，因為經過極簡化之後，需要傳輸的資料減少了，大幅減少了傳輸所需的時間以及頻寬；極簡化後的原始碼也可以被當作一種代碼混淆的結果，使人不易閱讀或使用，但只需依靠原始碼美化器便可以把結構整理出來；極簡化和常見的数据压缩也有所不同，因為極簡化的原始碼並不需要經過解壓縮的過程便可以閱讀或執行。

另外，極簡化同時也是一種程式設計師文化：例如在 Perl 的圈子裡，Perl Golf 活動的目標正是追求盡可能的極簡化。

 範例 
舉以下的 JavaScript 為例子var array = [];
for (var i = 0; i < 20; i++) {
  array[i] = i;
}與下面極簡化後的原始碼等價for(var a=[i=0];++i<20;a[i]=i);

 歷史 
2003年，Douglas Crockford 發表了 JSMin 工具，這個版本只移除原始碼中的註解以及空白字元。推出不久後，就由 YUI Compressor 接著發展。

2009年，Google 公開了它們的 Closure Toolkit，當中包括 Closure Compiler，一個能產出原始碼對照表的簡化器，以及一個稱為 Closure Inspector 的 Firefox 外掛。

2010年，Mihai Bazon 發表 UglifyJS；2012年發表重新改寫的 UglifyJS2，以便加入原始碼對照表支援。

 原始碼對照表 
原始碼對照表在原始碼和極簡化後的程式碼中建立所需的對應，如此一來在除錯工具中，極簡化後的原始碼看起來就像是原本的原始碼一樣。

這個對照表的格式，最早是由 Joseph Schorr 作為 Closure Inspector 極簡化計畫裡的一個部份定立的。後續的第二、三版，更進一步減小的對照表的檔案大小。

參考資料

 參見 
複製保護 
逆向工程

外部連結
 極簡化 - ProgWiki 

Category:原始碼