VirtualBox

This is a file from the Wikimedia Commons.
This is a file from the Wikimedia Commons.

Oracle VM VirtualBox (formerly Sun VirtualBox, Sun xVM VirtualBox and innotek VirtualBox) is a virtualization software package for x86 and AMD64/Intel64-based computers from Oracle Corporation as part of its family of virtualization products. It was created by innotek GmbH, purchased in 2008 by Sun Microsystems, and now developed by Oracle. It is installed on an existing host operating system as an application; this host application allows additional guest operating systems, each known as a Guest OS, to be loaded and run, each with its own virtual environment.

— Wikipedia on VirtualBox

2014.05.06 Tuesday ACHK

Backward compatibility, 5

To enjoy the past without limiting your life progress, install the past as virtual machines in the present. 

— Me@2013-02-24 2:50 am

The attraction of virtualizing older operating systems is that it throws off the eternal yoke of backwards compatibility. Instead of bending over backwards to make sure you never break any old APIs, you can build new systems free of the contortions and compromises inherent in guaranteeing that new versions of the operating system never break old applications.

— Has The Virtualization Future Arrived?

— April 26, 2009

— Coding Horror

— by Jeff Atwood

You cannot start a new chapter of your life if you keep re-reading the last one.

The past is a good place to visit but a bad place to stay.

2013.03.01 Friday (c) All rights reserved by ACHK

SICM, 3.2

這段改編自 2010 年 4 月 3 日的對話。

《SICM》(Structure and Interpretation of Classical Mechanics)中的編程語言,除了 Scheme 的本體外,還會用到作者特製的力學程式庫 Scmutils。而這個程式庫(library)卻只有 Linux 的版本,不能安裝在 Windows 之中。那導致我要特意在我的 Windows 中,先裝一個 virtual machine(虛擬機器),從而在那個虛擬機器之上,再安裝一個 Linux 作業系統。

閱讀《SICM》,除了間接令我,發現「時間」的定義外,還令我第一次接觸「virtual machine」這個概念。兩者各自都是,我個人智力發展的一個里程碑。

— Me@2012.12.25

2012.12.25 Tuesday (c) All rights reserved by ACHK

善利用愚蠢 1.2

這段改編自 2010 年 3 月 20 日的對話。

Stupidity is like nuclear power; it can be used for good or evil.

– Dilbert

(安:那樣,即是愚蠢的人當中,有一部分你無論多麼用心教導,也不會變成賢智的人。那怎麼辦?)

愚蠢人士當中,有機會變成賢智人士的,我簡稱為「向智人士」;而沒有機會的,我則簡稱為「不智人士」。面對「不智人士」,很多時也沒有所謂「怎麼辦」。「面對」「不智人士」的最佳方法是,令到自己毋須面對他們。例如,如果你是一間公司的老闆或者高層管理人員,你的其中一個責任,就是避免聘請到「不智人士」。

(安:但是,有些情況下,無可避免要和「不智人士」相處。那又怎麼辦呢?)

你可以試試 copyleft 了「不智人士」的愚蠢。這裡「copyleft」的意思是,把原本有害的東西,透過新奇的用法,轉化成有益的東西。我會把「copyleft」翻譯成「反利用」,或者「幽默利用」。

例如,你有一個學生不智。他的不智之處,在於人云亦云,不肯有自己的思想,獨立思考。你多次告誡他,老師的話未必正確,所以只能作為參考,不能作為金科玉律。但是,他屢勸不改。那樣,你可以思考一下,怎樣可以善加利用,他這個「人云亦云」的缺點,令到他會長期做利人利己的事。

例如,你可以對他下達指令:對人要有禮貌。由於他「人云亦云」,他自然不會有任何哲學的考慮:「為什麼對人要有禮貌呢?」他只會盲從附和。那樣,他自此一生人,也會對人有禮貌。結果,「人云亦云」在這方面,反而對他有利。

— Me@2012.07.12 

2012.07.12 Thursday (c) All rights reserved by ACHK

善利用愚蠢 1.1

這段改編自 2010 年 3 月 20 日的對話。

(安:愚蠢的人,有沒有機會變成不愚蠢的人?)

這個問題很空泛,因為你沒有指明「哪」一個愚蠢人士。我只能說,有些愚蠢人士可以進化成聰明人士,有些不可以。

比喻說,如果你問,不漂亮的人,有沒有機會變成漂亮的人呢?我會答,有時可以,有時不可以。例如,如果一個人不漂亮的主因是髮型不好,他只要改善髮型,方可變成漂亮的人。又例如,如果一個人不漂亮的主因是心腸惡毒,導致面目可憎,他的樣子大概不可救藥。

(安:那樣,即是愚蠢的人當中,有一部分你無論多麼用心教導,也不會變成賢智的人。那怎麼辦?)

愚蠢人士當中,有機會變成賢智人士的,我簡稱為「向智人士」;而沒有機會的,我則簡稱為「不智人士」。面對「不智人士」,很多時也沒有所謂「怎麼辦」。「面對」「不智人士」的最佳方法是,令到自己毋須面對他們。例如,如果你是一間公司的老闆或者高層管理人員,你的其中一個責任,就是避免聘請到「不智人士」。

— Me@2012.07.10 

2012.07.10 Tuesday (c) All rights reserved by ACHK

默契 2

人格堤壩 6

這段改編自 2010 年 3 月 20 日的對話。

沒有必要的話,就不要和不誠實的人相處。你是沒有辦法,和不誠實的人建立「默契」的。簡單而言,「默契」建基於「信任」。沒有「信任」,就沒有可能有「默契」。複雜而言,說謊的人(甲)會發放假訊息,導致你腦海中「虛擬的甲」,永遠和「真實的甲」有天壤之別。那樣,從你的角度看,甲是不可預測的。換句話說,無論相處多久,你和甲也沒有可能有「默契」。

你可以有辦法,分辨到「誠實人士」和「說謊人士」。但是,你是沒有辦法,分辨到「間中說謊人士」和「時常說謊人士」,除非你句句鑑證。換而言之,你永遠不會知道,「表面的甲」和「真正的甲」相差有多大。當你以為甲只是想「謀財」時,他的真正目的,可能是想「害命」。

— Me@2012.05.05 

2012.05.05 Saturday (c) All rights reserved by ACHK

默契

這段改編自 2010 年 3 月 20 日的對話。

現時的「大眾教育」模式是,在同一時間,一位教師對著一大班學生講課。那樣的教育成效,通常也不大。試想想,即使只對著一個人說話,要保證聽方明白,沒有誤解,就已經相當困難。

「對話」其實是一個互相 Model(建構思想模型)的過程。你我對話時,我是根據你的說話,推斷你的 思考結構 和 心理狀態 大概怎樣,從而將你的「思想模型」,安裝在我腦海中的一個「虛擬機器」之中。簡單一點講,我的腦海之中,會有一個「虛擬的你」,反之亦然。那樣,我就可以估計,下一句說話,應該對你講什麼。

隨著你我對話句子數目的增加,我腦中「虛擬的你」,就會越來越接近真實的你。而我所選擇的說話,亦會越來越令你共鳴。換句話說,你最終也會明白,我究竟在講什麼。

當我心中「虛擬的你」,非常接近真實的你,而你心中「虛擬的我」,又十分接近我的真身時,你我就為之「有默契」。

— Me@2012.05.03 

2012.05.03 Friday (c) All rights reserved by ACHK

明不明白, 2.2

這段改編自 2010 年 3 月 20 日的對話。

很大程度上,所謂「明白」,就是「找到一個適合自己的比喻」。所以,很大程度上,所謂「教學」,就是「利用比喻」,把新知識,轉化成聽眾的舊知識。如果你有才能,把天馬行空、無法感受到的事物,表達成直接具體、切身感受到的東西的話,你就為之有教學的天份。

空間比喻:

事實:原子核的半徑,只有整個原子的十萬分之一。原子核的體積,只有整個原子的 10^15 分之一。

教學:如果一個原子核的大小等於一粒塵埃,一個原子的大小就等於一間房子。

時間比喻:

事實:地球的年齡,是四十六億。

教學:有文字記載的歷史,大概由六千年前開始。先把這個數字,乘以一千。然後,把你得到的數字,再乘以一千。那就相當於地球的年齡。

— Me@2012.03.15

2012.03.15 Thursday (c) All rights reserved by ACHK

明不明白, 2.1

這段改編自 2010 年 3 月 20 日的對話。

我以前提過,有一本書叫做「I am a Strange Loop」。書內研究的其中一個要點是,怎樣才為之「明白」?

作者發現,在很大程度上,「明白」就是「比喻」。

(安:什麼意思?)

你試想想,我們學習新東西時,在什麼情況下,才有「明白」的感覺呢?

第一種情況是,把新東西表達成舊東西。例如,「3 乘以 2」為什麼會等如「6」呢?

那是因為「乘」的意思是,把同一個數,加很多次:

3 x 2 = 3 + 3 = 6

第二種情況是,把新東西反覆背誦和運用,令到自己對它熟練到,成為一個習慣為止。那樣,即使沒有任何實質的理解,你也會有「明白」的幻覺。例如,小時候你背誦了「乘數表」,所以你覺得自己明白,為何「九八七十二」。

9 x 8 = 72

但是,你之所以「明白」,並不是因為,你曾經把「9 x 8」化成加數,真正如實地運算「9 + 9 + 9 + 9 + 9 + 9 + 9 + 9」。

第三種情況是,把新東西類比成熟悉的事物。例如,如果你教一個小孩「物質是由粒子組成的」,他可能會一頭霧水。要他「明白」的話,你可以試試這樣說:

物質,是由一些超微小的彈珠(波子)組成的。那些超微小的彈珠,叫做「粒子」。

(安:第三種情況,可以看成第一種的一個特例,因為它都是把未知的東西,翻譯成已知的事物。)

可以這樣說。但是,第一種中的翻譯,是「解釋」;而第三種的,是「比喻」。或者我這樣分比較好:

第一種「明白」,是通過「解釋」而得來的。

第二種是通過「熟習」。

第三種是用「比喻」。

我現在想集中討論的,是第三種情況。

— Me@2012.03.13

2012.03.13 Tuesday (c) All rights reserved by ACHK

Windows API

Windows API itself is a virtual machine.

Windows API abstracts the hardware away from the application programs.

With Windows API, a programmer does not need to care exactly which hardware the computer is based on.

— Me@2011.02.25

2011.02.26 Saturday (c) All rights reserved by ACHK

蜘蛛絲 4

X-Men 2

This file is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported license.

你試試觀察這些商業戰爭,你會發現很有趣。參戰各方,原本生存於互不相干的勢力範圍。第一方在水星、第二方在冥王星、第三方在祝融星 … 例如: Amazon(網上書店)的根據地是「網絡銷售圖書」市場;Apple 的根據地是「高檔電腦」市場;Microsoft 的根據地是「作業系統程式」市場;Google 的根據地是「網絡搜尋器」市場;Nokia 的根據地是「流動電話」市場。

但是,不知怎樣,它們加入了同一堆戰團。Amazon 透過它在「網上書店」的優勢,推出「電子圖書閱讀機 Amazon Kindle」;Apple 透過它在「iPod(隨身音樂播放器)」的優勢,推出「流動智能電話 iPhone」,與 Nokia 一較高下;Google 透過它在「網絡搜尋器」的優勢,推出 Google Phone,與 Apple iPhone 一決雌雄;Apple 透過它在 iPhone 的優勢,推出「平板電腦 iPad」,與 Amazon Kindle 高手過招。

— Me@2010.11.03

There’s an old story about the person who wished his computer were as easy to use as his telephone. That wish has come true, since I no longer know how to use my telephone.

— Bjarne Stroustrup

2010.11.03 Wednesday (c) All rights reserved by ACHK

Copyleft 5.4

問題是,如何將自己編寫的程式作品,發表成「自由軟件」呢?

即使直接「釋放」了自己軟件作品的版權,容許別人任意複製,都不能保證該作品永久是「自由軟件」。你自己沒有保留版權的話,心地不好的人就可以把你的程式修改一點,然後宣稱「版權所有」,從而限制其他人複製。

所以,Richard Stallman 決定保留自己作品的 copyright(版權),不直接「釋放」。取而代之,他用一種很特別的 copyright,名叫「copyleft」。他發表自己的電腦程式時,都是用「copyleft」這種版權。一個程式用「copyleft」版權的話,即是作者容許用家任意複製該程式。作者甚至提供了程式的 source code(源程式碼),讓用家修改該程式。改進了程式後,除了自己使用外,用家還可以把新版本再發表,甚至售予其他人。Copyleft 唯一的「限制」是,「再發表」的程式,一定要是用 copyleft 本身作為版權。這個「限制」,保證了「自由軟件」永久是「自由軟件」。

注意,字面上,copyleft(著佐權)好像是 copyright(著作權)的相反。實際上,copyleft 是 copyright 的一種。

原本,Richard Stallman 不滿現存的 software copyright(軟件版權)制度。但是,他卻發明了 copyleft 來推廣「自由軟件」。他就好像在 copyright 制度上,安裝了一個 virtual machine(虛擬機器)– copyleft,用來制衡 copyright 本身。或者說,copyleft 的存在,是為了彌補 copyright 制度的不足。

Copyleft 的確切執行,建基於完善的 copyright 制度。當一個地方的著作權(copyright)制度還未成熟時,著佐權(copyleft)不能有效發展。

— Me@2010.10.19

2010.10.19 Tuesday (c) All rights reserved by ACHK

Copyleft 5.3

This file is licensed under the Creative Commons Attribution-Share Alike 3.0 Unported license.

他創立了 Free Software Foundation(自由軟件基金會)和啟動了 GNU Project(GNU 項目)。Free Software Foundation 的存在目的,是製作各式各樣的電腦程式,然後將其發表成「自由軟件」。而眾多種類的程式之中,最關鍵的是 Operating System(作業系統程式),所以,GNU Project 的目標是,編寫一個 Free Operating System(自由的作業系統程式)。「Free」的意思是指「自由」。「自由」的意思是,用家買了該個程式後,可以自由複製,甚至複製給朋友使用。

「Free」這個英文字有兩個可能的意思。一個是指「自由」;另一個是指「免費」。在 GNU Project 開始時,Richard Stallman 還沒有分清楚這兩個意思。後來,他再三強調,「Free Software」的意思是指「自由軟件」,不是指「免費軟件」。「自由軟件」是否「免費」,並不是他直接關心的事情。他指出,程式員都可以靠售賣「自由軟件」為生。重點是,不應限制買家如何利用、修改 和 複製 買回來的程式。

問題是,如何將自己編寫的程式作品,發表成「自由軟件」呢?

即使直接「釋放」了自己軟件作品的版權,容許別人任意複製,都不能保證該作品永久是「自由軟件」。你自己沒有保留版權的話,心地不好的人就可以把你的程式修改一點,然後宣稱「版權所有」,從而限制其他人複製。

— Me@2010.10.16

2010.10.16 Saturday (c) All rights reserved by ACHK

Copyleft 5.2

另外,「Copyleft」都是運用了「Virtual Machine」概念。還有,更「驚嚇」的是,「Copyleft」其實一個完美的「Virtual Machine」。你記不記得「Copyleft」的原意是什麼?

(安:「Copyleft」的原意是,令到電腦程式免費?)

不是。完全不是這個意思。

Richard Stallman 覺得電腦程式應該給人互相複製。「電腦程式」的本質就是「極容易複製」,因為「複製程式」的成本近乎是零。Richard Stallman 覺得,既然是這樣,我們就不單不應該阻止電腦程式用家複製程式,而且還應該鼓勵,以推動人類電腦知識的傳播和發展。

我有沒有講過 Richard Stallman 的故事?

(安:沒有詳細講。)

有關 Richard Stallman 的詳細生平事跡,你可以參閱《維基百科全書》。我現在只講一些重點。Richard Stallman 不喜歡現在的 software(電腦軟件/程式)的 copyright(版權)制度,因為 copyright 禁止用家之間互相複製程式。但是,要以一人之力,一下子改變現時的 software copyright 制度,又沒有什麼可能。所以,Richard Stallman 採取了以下的策略。

他創立了 Free Software Foundation(自由軟件基金會)和啟動了 GNU Project(GNU 項目)。GNU Project 的目標是,編寫一個 Free Operating System(自由的「作業系統程式」)。

— Me@2010.10.14

2010.10.14 Thursday (c) All rights reserved by ACHK