Tuesday, November 30, 2010

Transcendental number


says 將 超越數 帶入任何整數係數的方程式,皆不為零!


says π 是人類發現最早、歷史最久的超越數!



wonders 不管是幾次方程式,代入超越數就是不為零!非得留下個什麼?
says √2、√3、、 無理數,雖然無理但是不夠超越! XD
says 虛數 √-1 也是代數數,不夠超越! XDD

shares 所有超越數構成的集是一個不可數集。這暗示超越數遠多於代數數。可是,現今發現的超越數極少,甚至连\pi + e\, 是不是超越数也不知道,因為要證明一個數是超越數或代數數是十分困難的。
thinks 可能比有理+無理、實數+虛數的代數數還多,卻是極難發現,並加以證明。超越數混雜在有理無理、真假虛實的噪音中,低調地存在?
feels 搞數學的人也是粉浪漫的! <333

Tuesday, November 23, 2010

who is watching watchmen?



shares 守護者,創作者為編劇艾倫·摩爾。故事發生於架空歷史中,此時的美國正與蘇聯逼近無可挽回的核子戰爭中,自發性的扮裝執法者已被法律明文禁止,絕大部份的扮裝超級英雄若不是已退隱就是替政府工作。


feels watchmen 翻譯成「守護者」?私以為:「監護者」或許更貼切。不管是冷硬科幻,還是浪漫喜劇,好看的元素永遠都是人性。

says 幾個場景很有超現實的達利風。電影版 2:45,先前看過 TS 版,覺得不怎樣。BD ultimate cut 卻長達 3:35,增加了不少橋段呀!大推! <3


Watchmen - The Comedian and Dr. Manhattan in Vietnam
watchmen 越戰場景採用華格納的配樂,應該是抄自**現代啟示錄**

Apocalypse Now..Ride Of The Valkyries

卡波拉的越戰英雄陷落在叢林深處發瘋。 錶人的曼哈頓不但打贏了越戰,還讓尼克森當了第三任的米國總統,權力只低於上帝。 XDD


asks who is watching watchmen?

was 一邊閱讀 Turing 的停机问题,The Halting Problem,一邊無方向、無目的地思考ing.. 忽然聯想到 watchmen 這部電影隱藏了數學問題! (woot)

says 很多人都拿 pixar 的超人特攻隊跟 watchmen 比較。雖然都是以超級英雄的末路作為素材,watchmen 卻有更深刻的哲學思考。


shares Godel 最知名的「不完備定理」:設S為一包含算術系統的公理系統,若 S 相容(consistent,即不自我矛盾), 則 S 不完備(即在 S 中有些敘述為真,卻無法由 S 的公理推導出來)。


shares 哥德尔定理指出,数论的无矛盾公理化的所有陈述中必定包含着不可判定的命题。当时世界正处于发展电子计算机的前沿。~与哥德尔的数学成果相对应,图林在计算机科学理论中指出了,即使可以设想的最有效的计算机也存在着无法弥补的漏洞。后来人们发现这个结论与哥德尔定理是等价的。于是哥德尔理论的影响便超出数学的疆域而扩展到人工智能及思维的研究。 GEB,一条永恒的金带

says watchmen 的出身各異,但是都在 playing God 扶弱除惡。超級英雄還是無法完全與人性剝離,甚至濫用自己的能力成為加害者。

asks 黑幫、邪惡勢力、獨裁政權、、watchmen 監護使之不為惡,但誰來 watch watchmen 呢?

shares 罗素悖论用形象的语言来描述,一位理发师声称,他给所有不给自己理发的人理发。那么这个人是否给自己理发呢?如果他给自己理发,就违背了自己的声明。如果他不给自己理发,也没有兑现自己的诺言。用集合论的述语来说,罗索悖论就是定义这样一个集合A,它由所有不属于A的元素a组成。那么A是否属于它本身呢?如果A不属于A,那么按照集合A的定义,它就属于A。如果A属于A,那么按照定义它就是不属于A的元素。

thinks who is watching watchmen? 用羅素的說法,watchmen 給人家剃頭,誰來剃 watchmen 的頭呢?

wonders Alan Moore 在 watchmen 中,不但使用羅素悖論提出質疑,也嘗試提出自己的答案?!

shares 康托尔、哥德尔、图灵——永恒的金色对角线

停机问题 不存在这样一个程序(算法),它能够计算任何程序(算法)在给定输入上是否会结束(停机)。

那么,如何来证明这个停机问题呢?反证。假设我们某一天真做出了这么一个极度聪明的万能算法(就叫God_algo吧),你只要给它一段程序(二进制描述),再给它这段程序的输入,它就能告诉你这段程序在这个输入上会不会结束(停机),我们来编写一下我们的这个算法吧:

bool God_algo(char* program, char* input)
{
if ( halts on program )
return true;
else
return false;
}

这里我们假设if的判断语句里面是你天才思考的结晶,它能够像上帝一样洞察一切程序的宿命。现在,我们从这个God_algo出发导出一个新的算法:

bool Satan_algo(char* program)
{
if( God_algo(program, program) ){
while(1); // loop forever!
return false; // can never get here!
}
else
return true;
}

正如它的名字所暗示的那样,这个算法便是一切邪恶的根源了。当我们把这个算法运用到它自身身上时,会发生什么呢?

Satan_algo(Satan_algo);

我们来分析一下这行简单的调用:

显然,Satan_algo(Satan_algo)这个调用要么能够运行结束返回(停机),要么不能返回(loop forever)。

如果它能够结束,那么Santa_algo算法里面的那个if判断就会成立(因为God_algo(Santa_algo,Santa_algo)将会返回true),从而程序便进入那个包含一个无穷循环while(1);的if分支,于是这个Satan_algo(Satan_algo)调用便永远不会返回(结束)了。

而如果Satan_algo(Satan_algo)不能结束(停机)呢,则if判断就会失败,从而选择另一个if分支并返回true,即Satan_algo(Satan_algo)又能够返回(停机)。

总之,我们有:

Satan_algo(Satan_algo)能够停机=> 它不能停机
Satan_algo(Satan_algo)不能停机=> 它能够停机

所以它停也不是,不停也不是。左右矛盾。

于是,我们的假设,即 God_algo() 算法的存在性便不成立了。正如拉格朗日所说:“陛下,我们不需要(上帝)这个假设”[4]。

thinks 跟停機問題一樣,如果上帝是可以被測試的,撒旦會不擇手段地鑽法律漏洞,必定引起善惡是非的悖論!?

says 笑匠, Comedian, 是一個典型。曼哈頓,Dr. Manhattan 又是典型的另一端。其他 super heroes 則在中間擺蕩。故事在懸疑中進行,最終真相大白,一切都是 Ozymandias 的陰謀。


says Manhattan 為了避免人類因為核戰毀滅自己,選擇升級當上帝,不甘真相被隱藏的 Rorschach 則被悲劇性終結。


Dr. Manhattan There Is No God

says 很有意思的結局!當上帝是孤獨的,但是人類需要一個無法測度的上帝,才會彼此相親相愛,愛護地球! XD






extended reading: 盗梦空间科普札记







Monday, November 22, 2010

why C++?


因為某些說不清楚的原因,我又開始 study 討厭的 C++

shares 为什么C++?如果效率是人们使用C++的唯一理由,那么为啥不直接用C呢?C被认为比C++效率更高~有很多人更加倾向于用C,最大的理由就是C++实在是太难用对了。甚至Linus也这么想:C++ is a horrible language.

Linus Torvalds:
In other words, the only way to do good, efficient, and system-level and
portable C++ ends up to limit yourself to all the things that are
basically available in C. And limiting your project to C means that people
don't screw that up, and also means that you get a lot of programmers that
do actually understand low-level issues and don't screw things up with any
idiotic "object model" crap.

feels Linus 的說法非常毒辣!刀刀見骨! XDD

shares BS: KISS并不等同于“原始”;KISS意味着用最适合的工具来做事情,这里“最合适”的意思是~工具能够帮你以尽量直接简洁的方式来表达思想,同时又不降低代码的可读性,另外还保持代码容易理解。

shares BS: 有时KISS也是建立在抽象上的。我觉得Matthew Wilson在他新书《Extended STL,卷1》的序言中对此做了很好的阐释。他写了2段代码,一段用C,另一段用C++:

// in C
DIR*  dir = opendir(".");
if (NULL != dir) {
struct dirent*  de;
for(; NULL != (de = readdir(dir)); ) {
struct stat st;
if ( 0 == stat(de->d_name, &st) &&
S_IFREG == (st.st_mode & S_IFMT)) {
remove(de->d_name);
}
}
closedir(dir);
}


// in C++
readdir_sequence entries(".", readdir_sequence::files);
std::for_each(entries.begin(), entries.end(), ::remove);

// In C++09 更简单:
std::for_each(readdir_sequence(".", readdir_sequence::files), ::remove);


says 仔細比對了兩段代碼,C++ 使用了比較少的字數,不像原味的 C 那麼冗長,但也更 cryptic 難以理解。

thinks 如果一段敘述是隱晦的、難以解析的,除了像符咒一樣照著套用之外,該如何重新組合創造出不一樣的用法? 

shares BS: 因为有如此众多方便的C++库,我觉得有充分的理由在这些领域中使用C++——你可以在编码时仅使用C++中的C核心(以任何你喜欢的方式来KISS),同时还能用强大的C++库(比如STL容器、算法和即将到来的tr1/tr2组件)。

feels BS 跳過大家對 C++語法矯枉過正的批評,引導到 C++ 的 class/template library 很強大,可以簡化程式?

feels 我不知道 tr1/tr2,也不清楚 C++0x 的具體內容。不過可以感覺到 BS 把希望壓寶在即將到來的新玩意。。。

shares 電影矽谷海盜,有段名場面:



**Jobs**: We're better than you are! We have better stuff.
**Gates**: You don't get it, Steve. That doesn't matter!

says C++ 在地球上出現超過三十年了,不停修補也就罷了,把重點從 language 本身移轉到 library,光環褪盡也是剛好! XD