Thursday, October 28, 2010

[網摘] High Scalable Architecture

底下只是一些資料收集,都是關於"High Scalable Architecture"的一些研究和實作。

Saturday, October 23, 2010

悖論與Halting Problem

悖論是指某些奇特的推論。這些推論的假設和邏輯看似合理,但卻帶出明顯地不可接受的結論。(思方網) 
用邏輯的語言來說,悖論就是若假設命題A為真,經過一系列合理的推導,最終卻得到命題A為假的結論。

Halting Problem就是悖論的一個例子。Halting Problem是說是否可以寫一支程式,用來檢查任何一個程式是否會在有限的時間內結束。最後的結論是不可能存在這樣的一支程式,證明的方式正是利用悖論中的矛盾。

推導過程很簡單,首先假設這支程式已經存在,我們命名為H(M, w),M為任一支被檢查的程式,w為M的輸入參數。為了方便說明,我把H(M, w)表示成為虛擬碼。

Function H(M, w)
{
  if M(w) halts
    return true
  else
    return false
}

現在有趣的來了。如果H(M, w)真的存在,我們當然可以"Reuse"他去寫其他的程式。例如說,我可以寫一個P(K),虛擬碼如下:

Function P(K)
{
  if H(K, K) == true
    loop
  else
    return
}

這個P(K)是一個有可能會陷入無窮迴圈的程式。
然後,讓我們來考慮把P當做P(K)的參數,也就是P(P)事情會怎麼發展。

Case I: 如果P(P)會進入無窮迴圈,那H(P, P)就會傳回false,然後P(P)就會立刻結束(return)。

Case II: 如果P(P)會立刻結束,那H(P, P)就會回傳true,然後P(P)就會進入無窮迴圈。

嘿嘿,無論是哪一種Case,得出來的結論都自相矛盾。
因此,H(M, w)存在的命題必為假。也就是說,H(M, w)是不可能存在。


* * * * * * * *

這個證明的歷史可以追朔到Alan Turning在1937年發表的論文:"On Computable Numbers With an Application to the Entscheidungsproblem"。原始論文是用Universal Turing Machine來證明。

Friday, August 27, 2010

今日隨筆

今天在幫朋友看一個電腦的問題,過程中發現很多使用者介面設計的想法:
  • 介面的文字要明確之外,還要白話。像是UAC視窗,剛從XP時代升級上來的使用者,會因為UAC被嚇到。另一種想法就是要有足夠的教育訊息(第一次發生UAC的時候可能要有一段簡易的Tutorial。)
  • 使用者完成他的目的後,介面一定要有明確的訊息去告訴使用者目前已經完成。有些程式是Console模式,執行完就消失,使用者完全不知道是做完了沒。
  • 初階的使用者更需要準確的指示讓他們Steps by Steps完成一件事情,如果提供一些模糊的指示只會讓他們更害怕去操作。(像是Screen Shot比文字描述更容易讓初階使用者接受)

Sunday, March 14, 2010

《書籍》理性市場的神話

More about 理性市場的神話︰華爾街追求的風險、報酬與妄想

最近閱讀的經濟書籍當中,最想推薦的大概就是這本了。內容涵蓋範圍很廣,作者明快的敘述了20世紀的華爾街與學術界在經濟學和財務學上的互動。

從前都是單獨閱讀大師的著作,多少會被作者的思維帶著走。不過從歷史的角度來閱讀,多了比較,也多了一些批判。如果有看過裡面提到的一些書籍,我想更會有把事情串起來的感覺。

題外話,好像電腦科學從二戰之後也已經快要步入百年歷史,不知道有沒有類似的書籍也可以來讓讀者過癮一下呢。