2013年2月28日 星期四

古馬雅文明出土的科幻石板

雖然2012年已過,馬雅預言的世界末日也沒來,但是回頭看看這些墨西哥出土的古文物也挺有趣的

2013年2月21日 星期四

詩經是甲骨金文程式碼?!孔子是編程祖師爺?!

Jimmy's papa最近一直注意某個宗教國學網,它提到古代經文書寫在竹簡上,如同現代程式設計師使用程式碼編輯器一般,可以很便利的執行Insert/Replace/Paste等編輯動作

甚至詩經裡某些看似單純描寫景物的詩句,經過象形化為甲骨金文,其實是變數宣告或引用(include)其他竹簡的段落的關鍵字(keyword)

初看這些論點會覺得超級話唬爛,小時候看一些國學大師在話玄學的書中,常常提到河圖洛書八卦是古代先秦文化裡多了不起的科技成就,但除了拿來算命外我卻看不到有何實際應用

不過,自從Jimmy's papa學過符式(Forth)程式語言一段時間後,深信只要有張桌面大的紙,邊邊畫上兩個堆疊陣列(大小應該不會超過20格),其餘的空白處規劃為字典表格,符式程式高手不需借助電腦便能人工紙筆演算起程式

所以,詩經是甲骨金文程式碼,我覺得不無可能,那麼,將周朝的三千多首詩,刪除整理為碼書詩三百還附上Package name,帶領儒團周遊列國的孔夫子是編程祖師爺,我也不覺得訝異

現在,Jimmy's papa每看到易經的六爻的變化順序,就越看越像符式的堆疊(Stack),呵呵!!!

2013年2月18日 星期一

Smalltalk是個好東西,可惜它不說中文

Jimmy's papa好久沒碰Smalltalk or Pharo,換句目前比較流行的清宮劇說法,就是許久沒翻它們的牌子了,已打入冷宮久矣

回想當初放棄的理由之一,應該是Smalltalk or Pharo這些洋妞打從DNA裡不支持Unicode,凡是寫入程式的中文字串或中文註解,編譯後一律成亂碼, 想要叫它們秀幾個漢字,總要用上間接迂迴的手段,曠日費時,雖然生命應該浪費在美好的事物上(我指的是Smalltalk的物件導向觀念及開發環境),但是說不了中文,有文化上的代溝,在漢字流行的地區終究不能天長地久

不過,或許情況有變,改天回頭研究看看

2013年2月8日 星期五

Javascript如何做中文排序

用javascript寫中文排序時,使用localeCompare()是無意義的,因為每個漢字Unicode是由8個字元組成,而單一字元並無可供排序的資訊

解決之道,便是到Unihan統漢字資料庫(http://www.unicode.org/charts/unihan.html),下載整個資料庫轉入自家的資料庫,然後寫Server端程式查詢筆劃數欄位資料,供Client端AJAX取用

或是直接用善心網友提供測試的Chinese Character Web API(http://ccdb.hemiola.com/)

底下是Jimmy's papa做的小實驗

意同淵民

《意同淵民》,有人問Jimmy's papa這句不知出自哪個典故的古文該如何解釋,我查了一下"象形字典"及其他網站,大致的古字義是...

意--心的聲音
同--統一節奏的協力工作
淵--深潭,也引申為人或物聚集處,古刑罰亦稱淵
民--瞑盲奴隸


翻成白話文大概是..

心跳的聲音同步共振著身處深淵受刑的瞑盲奴隸們


2013年2月6日 星期三

[Forth.js]浮泡排序中文程式碼

Bubble-sort是學資料結構或演算法時,授課老師常會給的家庭作業之一,拿來練習寫符式中文程式碼
寄件者 圖片
寄件者 圖片
這是Jimmy's papa參考的Javascript程式碼
function bubbleSort(arr){
  var i=arr.length, j;
  var exchangVal;
  while(i>0){
    for(j=0;j<i-1;j++){
      if(arr[j]>arr[j+1]){
        exchangVal = arr[j];
        arr[j]=arr[j+1];
        arr[j+1]=exchangVal;
      }
    }
    i--;
  }
  return arr;
}


可將底下的符式程式碼貼到forthjs.appspot.com測測看
封 貢冊 993 , 566 , 885 , 333 , 788 , 111 ,

造詞 示列 { 陣列 陣列長 }   
 陣列長 0  
 週而
  陣列 i 加 汲 .
 復始
矣

造詞 浮泡排序 { 陣列 陣列長 }
 籌 目前位置 陣列長 給 目前位置
 起
 目前位置 
 若然
   目前位置  0 
   週而
     陣列 i 加 汲  陣列 i 加一 加 汲 雙複 大於
     若真
      換 陣列 i 加一 加 滯 陣列 i 加 滯 
     然後
   復始
   目前位置 減一 給 目前位置 
   陣列 陣列長 示列 
   跳行
 重蹈
矣
 .( 原順序--> ) 貢冊 6 示列 跳行 跳行  .( 排序... ) 跳行
 貢冊 6 浮泡排序