September 30, 2006
書目 - 2006 年第三季
第三季讀書的量較大,一方面是因為七月份休假的充裕時間,另一方面是因為常常居家養病,或多或少讓我對醫療、心靈探索的書籍產生興趣。今年的目標之一是研究寧漢分裂與中國共產黨初期的社會運動與城鄉發展方針,順道找了些資料參考。以下是第三季的書目:
由 jserv 發表於
12:06 AM
|
迴響 (0)
September 27, 2006
shellcode 的變化
之前的 blog [
SM 版 Hello World] 提過一種「奇計淫巧」,展示 self-modifying code 與 shellcode,在網友迴響的部份,連 CIH 前輩都來指教了,真有股壓力,那個例子實在舉得不好,我還在想該用什麼更好的方式闡述。昨晚又一個失眠的夜,玩起 shellcode,思考可能的變形,以下是個展示性的 C++ 程式碼:
struct T {
int _, __, ___, ____, _____, ______, _______, ________, _________;
T() : _(0x0a767268),
__(0x6a2d6800),
___(0xe1896573),
____(0x4b8),
_____(0x1bb00),
______(0x07ba0000),
_______(0xcd000000),
________(0x08c48380),
_________(0x909090c3) {}
} main;
編譯方式為:
gcc -g -Wall -x c++ -o hello hello.c
似乎沒有奇特之處,頂多就是 main 宣告的方式,與看似嚇人的註解 (對應的 x86 機械碼),一旦程式碼執行後,應該不會有任何輸出。不過,若在 x86/IA32 Linux 上執行,卻會有特別的反應,跑起來看看:
$ ./hello
-jserv
出現小弟回信時,常用的信尾簽名,但是,這到底怎麼一回事呢?用 objdump 來觀察:
objdump -S -C hello | grep -A 36 "<T::T()>:"
08048384 <T::T()>:
8048384: 55 push %ebp
8048385: 89 e5 mov %esp,%ebp
8048387: 8b 45 08 mov 0x8(%ebp),%eax
804838a: c7 00 68 72 76 0a movl $0xa767268,(%eax)
8048390: 8b 45 08 mov 0x8(%ebp),%eax
8048393: c7 40 04 00 68 2d 6a movl $0x6a2d6800,0x4(%eax)
804839a: 8b 55 08 mov 0x8(%ebp),%edx
804839d: b8 73 65 89 e1 mov $0xe1896573,%eax
80483a2: 89 42 08 mov %eax,0x8(%edx)
80483a5: 8b 45 08 mov 0x8(%ebp),%eax
80483a8: c7 40 0c b8 04 00 00 movl $0x4b8,0xc(%eax)
80483af: 8b 45 08 mov 0x8(%ebp),%eax
80483b2: c7 40 10 00 bb 01 00 movl $0x1bb00,0x10(%eax)
80483b9: 8b 45 08 mov 0x8(%ebp),%eax
80483bc: c7 40 14 00 00 ba 07 movl $0x7ba0000,0x14(%eax)
80483c3: 8b 55 08 mov 0x8(%ebp),%edx
80483c6: b8 00 00 00 cd mov $0xcd000000,%eax
80483cb: 89 42 18 mov %eax,0x18(%edx)
80483ce: 8b 45 08 mov 0x8(%ebp),%eax
80483d1: c7 40 1c 80 83 c4 08 movl $0x8c48380,0x1c(%eax)
80483d8: 8b 55 08 mov 0x8(%ebp),%edx
80483db: b8 c3 90 90 90 mov $0x909090c3,%eax
80483e0: 89 42 20 mov %eax,0x20(%edx)
80483e3: 5d pop %ebp
80483e4: c3 ret
80483e5: 90 nop
80483e6: 90 nop
80483e7: 90 nop
80483e8: 90 nop
80483e9: 90 nop
80483ea: 90 nop
80483eb: 90 nop
80483ec: 90 nop
80483ed: 90 nop
80483ee: 90 nop
80483ef: 90 nop
在解說之前,咱們看看剛剛的輸出:
$ echo "-jserv" | hexdump
0000000 6a2d 6573 7672 000a
所以上述的 C++ 程式碼就是利用 x86 stack 的特性,反序寫入 machine code 的 HEX 表示到變數 (member data) 中,後面預留的 0x90 即 x86 NOP 指令 (No Operation) 是用以 padding。C++ constructor 在 GCC 的布局下,透過 __static_initialization_and_destruction_0 這個 routine 來被呼叫以完成必要的初始化動作。扣除 "6a2d 6573 7672 000a" 這個 HEX 序列後,可以發現,剩下的 machine code HEX 其實就是 OP code,而且巧妙的連續排列著。
這個實驗告訴我們,shellcode 還有許多變形的機會,而且這類特別的 startup code 可作為 stub,混淆 Debugger 或者是 software tracing 的執行流程。嗯,或許可拿來當「深入淺出 Hello World」Part II 的展示範例,體驗「Orz Programming 2.0」予人的挫折感。
由 jserv 發表於
02:11 PM
|
迴響 (1)
September 23, 2006
E/OS LX - 多重 API 支援的作業系統
[
E/OS LX] 是個特別的作業系統,在 [
About EOS] 提到:
E/OS is a open source iniciative for have a operating system like BeOS system, with diferents servers and clients, with a very fast interface like MacOSX, and Be Apis, for have compatibility with BeOS systems. And have diferents drivers for run other types of arquitectures (windows, os2 warp, msdos, linux, freebsd and darwin)
想法就是建立類似 BeOS 的一套多媒體作業系統,並且提供多種 API / system call 的相容性,目前的設計來說,是架構於 Linux kernel,並在其上劃分多個 server,比方說 GUI server 與 Emulation layer。BeOS 對於 [
E/OS LX] 的中心思想影響很大,並且在 API 的部份也朝著符合其相容性而發展 (可參考 [
Open Standards BeOS-compatible Operating Systems]),也整合了 [
WINE] 的 Win32 API 模擬技術,所以可執行部份 Win32 application。最新的版本是 0.28,以 GNU GPL v2 授權方式發行,我做了一份 [
E/OS i386 qemu image] (bzip2 壓縮,40 Mb),解開後執行其中任何一個 shell script 即可 (差別在於顯示解析度),以下是執行畫面:

很有意思,竟然可以跑 Win32 notepad.exe,而桌面系統 (衍生自 [
EDE]) 看起來還不錯,甚至也可運作 OpenGL 程式。
由 jserv 發表於
02:58 AM
|
迴響 (1)
September 19, 2006
Zeta 虛擬平台與 GNU/Linux
[
Zeta] 是個虛擬平台,有自己的 CPU、instruction set,以及 MMU、週邊硬體等,並且移植了眾多 GNU Project 的成果,如 binutils、GCC,與 glibc,連 Linux kernel 也慢慢移植上去了。目前 [
Zeta] 的釋出版本是 0.5,提供一系列模擬環境與 regression test 程式,以下是 Linux kernel 2.6.17 運作於 [
Zeta] 虛擬硬體平台的畫面:

雖然還不是很完整,但看得出大致的硬體架構算是堪用了,由於設計上儘可能保持簡單,很適合作為教學與實驗環境,體驗 cross-compilation / cross-development,或者作為 instruction scheduling 的測試環境。
取得 Subversion 開發版本:
http://svn.freehackers.org/orzel/zeta/trunk zeta-trunk
依照官方網頁 [
Zeta - Quick Start] 可逐步建構所需之軟體,在 Linux 編譯前,請執行 "ln -s /usr/bin/make gmake",並將 gmake 置放於 $PATH 中,另外需要先行安裝 [
ccache] 與 qt4 的開發套件。
由 jserv 發表於
09:53 PM
|
迴響 (1)
"Kernel Modules and Device Drivers" 免費文件下載

在 LinuxDevices.com 瞥見新聞 [
Embedded Linux book sample chapter available],提到 Doug Abbott 大作《
Linux for Embedded and Real-Time Applications 2/e》開放第七章內容下載,而恰好就是許多開發者會感興趣的〈Kernel Modules and Device Drivers〉,下載資訊:

這個章節難度不高,也僅用 "Hello World" 等級的 Linux kernel module 作探討,不過整個流程交代很清楚,不失入門參考所用。
由 jserv 發表於
10:29 AM
|
迴響 (0)
September 18, 2006
用 C++ template meta-programming 寫九九乘法程式
話說之前寫了一篇 blog [
以 C++ template meta-programming 來實現 Sieve of Eratosthenes],因為工作與最近參與的計畫都只用到 C / Assembly,所以儘管給了「令人驚艷的優雅」這般評註,就一直沒放在心上。不過,[
Palatis] 很認真地玩了 C++ 這個高階機制,並寫了一個九九乘法表輸出的程式作為印證,詳情可見 [
測試編譯器功力的九九乘法表原始碼],想像一下原本簡單的「九九乘法」,硬是被擴充成「九九神功」時,還真令人吃不消 :-)
由 jserv 發表於
11:19 PM
|
迴響 (0)
Tkhtml 與 hv3
[
TkHTML] 是個老字號的 Tcl/Tk HTML widget,支援 HTML 4.01、XHTML 1.1,以及 CSS 2.1 等規格,著名的 [
BrowseX] 就是 [
TkHTML] 在基礎上做了許多擴充與改進,儘管後者的發展已趨緩,但 [
TkHTML] 仍在許多志願者的投入下,持續維護著,並保持輕量級的 footprint。[
hv3] 則是 [
TkHTML] 的小型 web browser 參考實做,主要用以驗證功能,官方網頁透過 [
TclKit] 提供 Linux 與 Win32 的 pre-built binaries,解開後直接就可執行,以下是執行的畫面:

透過 Xft 作字型描繪,看來中文輸出沒有太大的問題,而搭配 Tcl/Tk 8.5-cvs 若干 XIM 的修正,應該也能支援中文輸入。
由 jserv 發表於
12:23 PM
|
迴響 (2)
September 17, 2006
vdswitcher - X Window 的桌面工作區切換程式
最近 (又) 開始寫新的 Window Manager,主要是搭配 PCMan 的最新力作 [
PCManFM],作為輕量級的桌面系統,基本的功能特徵列表如下:
- Xft for font rendering
- support StartupNotification
- multiple workspace
- Implement some EWMH / ICCCM 2.0
- Theme support (very limitted but just working)
- Dedicated to PCManFM
運作畫面如下:

因為這次要作 free / open source 的版本 (之前的創作仍未公開,待新書出現時才會提供 source code),所以寫 code 時謹慎許多,也考量到後續的維護,所以試著作針對 X11 window manager 的 Unit Test 工具,其中 workspace / virtual desktop 的支援是很重要的項目,FreeDesktop 在 [
Extended Window Manager Hints] 做了明確的規範,主要是以下這兩個 WM hints:
- _NET_CURRENT_DESKTOP
- _NET_NUMBER_OF_DESKTOPS
在之前的 blog [
wmctrl - 對符合 EWMH 的 WM 傳送命令] 提供了一個比較有彈性的作法,但是對一般使用者來說,要跟一堆專有名詞打交道,還是倍感生澀,所以我試著作個小程式,名為 vdswitcher,可 [
在此取得],授權方式為 GNU GPL。
vdswitcher 的使用方式很簡單,執行時不加參數,可獲得目前 Window Manager 所支援 Workspace/Desktop 的數量,類似以下輸出:
$ ./vdswitcher
Workspace count = 4, current: #0
如上所見,支援了四個 workspace,而目前位於第一個 (index = 0),倘若我們想切換到第四個 workspace (index = 3),就執行:
$ ./vdswitcher 3
Workspace count = 4, current: #0
Let's switch to workspace #3
當指令執行後,window manager 就立刻切換到指定的 workspace 了,程式碼很簡單,也加入一些註解,對 WM hints 有興趣的朋友可作為參考。
由 jserv 發表於
10:52 PM
|
迴響 (0)
September 11, 2006
SCIM 輸入法架構簡要分析
對岸的 [
absurd] 對 [
SCIM 輸入法架構] 做了簡要的分析,可參考 [
SCIM輸入法架構分析(上)] 與 [
SCIM輸入法架構分析(下)],探討了 SCIM 以下組合元件:
- 配置模塊(Config)
- 輸入法前端模塊(FrontEnd)
- 輸入法引擎模塊(IMEngine)
- 進程間通信模塊(IPC)
- 輸入法Panel
- 輸入法Helper
並提供相關的 UML 圖解,除此之外,因為 SCIM 在設計時即考量到手寫輸入這類複雜的處理,在第二部份也針對這個議題,探討 SCIM 個別元件間的互動,相當引人入勝,篇幅不長但深入,推薦閱讀。
由 jserv 發表於
09:38 PM
|
迴響 (2)
測試 drivel
[
drivel] 是個 GNOME 介面的 blog 寫作軟體,支援 LiveJournal、Blogger、MovableType、Advogato,以及 Atom 系統 (如 WordPress 與 Drupal),Debian 已有收錄,請見 [
packages: drivel],以下是運作中的畫面:

這個 blog entry 就是嘗試以 [
drivel] 離線編輯後,透過 XML-RPC 發佈到伺服器上 (MovableType 2.6)。
由 jserv 發表於
03:39 PM
|
迴響 (1)
September 10, 2006
HEMiDEMi 共享書籤
之前已經從許多網友的 blog 或討論耳聞 [
HEMiDEMi 共享書籤],而這個 blog 的連線紀錄也不時會出現來自 HEMiDEMi 的 link,下午因為外頭滂沱大雨無法出門的我,就玩起這個服務了。[
HEMiDEMi 共享書籤] 設計非常用心,無論是視覺呈現,或者是細部的提示訊息,很容易上手,陸續加了幾個項目到 [
jserv的書籤]。
我想分享的 bookmark 應該不會包含 Java VM 相關的資料,因為之前已在 [
Kaffe::Links] 花了一段時間整理 (就當作是 Developer 的特權吧),其他哲學類、藝文類、數學類,以及跟電腦技術相關的項目,有空再慢慢放進去 (當然得過濾一下 Japanese Girl 一類的 "well-known bookmark")。
由 jserv 發表於
09:59 PM
|
迴響 (0)
September 09, 2006
科技、人文,與反省
「當人文超越了科技,我們的夢想才能駕馭未來」
上週一傍晚到某公司處理公務時,突然惦記著這句話,乍看字面的意思,實在無法理解前後的因果關係,不過如今似乎有了新的體驗。最近除了忙著公司的研發工作,也張羅自己的實驗室,並進行一些尚未公開的計畫,雖然表面上來說,生活看來很充實,不僅符合自我「燃燒生命」的期許,也多少在人生規劃前進幾步,然而,心靈卻不由自主失落著。
幾天前,Chia-Mei 問及我對人類發明電腦的看法,當時心中只有個簡單的想法:「渺小芥微如我者,表達愚見有何意義呢?」,不過儘管如此,我還是心虛地回覆幾句。在我的看法,這是正面的,電腦的出現不全然是電子機械的突破,更是思維的轉變,這正是二十世紀開始,科技革命的基礎。1956 年,Dartmouth College 的 John McCarthy 與當時的精英份子在研討會上提出「人工智慧」的新觀點,這五十年間,雖然無法達到昔日科幻小說作家筆下「駭人聽聞」的發展,但至少今日可見之處,舉凡工業控制、生物探測、礦產物種分析、資料檢索、... 等,學習人工智慧除了一系列數學基礎外,就是得學會「說話」,也就是學會用更完備、嚴謹,以及多元的方式表達,這也是人工智慧在電腦科學領域中獨樹一格的原因:為此,得走出邏輯電路的象牙塔,轉而將電腦「連接」至心理學、語言學、生物學、遺傳學、哲學、神經醫學、... 等領域,才能獲得指引,獲得技術突破的契機。
人工智慧,無疑是高科技的呈現,也因為這個領域是如此深遠廣泛,曾為此沈迷愛戀的我,終日思索卻不得解,遂轉往哲學角度,尋覓另一個切入點。拜讀《莊子》的〈齊物論〉,深刻感受著透過對話而揭櫫的莊子哲學原理,正如王應麟所說的:「莊子齊物論,非欲齊物也,蓋謂:物論之難齊也。」,唯有逃出「物」之形貌,接下來我們才得以進一步思考。寰宇萬物看似千差萬別,歸根究底來說,卻是齊一的,此乃「齊物」,而反觀思想雖具歧異性,但萬物既得齊一,思想又將如何?回頭讀原文:
以指喻指之非指,不若以非指喻指之非指也。以馬喻馬之非馬,不若以非馬喻馬之非馬也。天地一指也,萬物一馬也。
可乎可,不可乎不可。道行之而成,物謂之而然。惡乎然,然於然。惡乎不然,不然於不然。物固有所然,物固有所可。無物不然,無物不可。故為是舉莛與楹,厲與西施,恢恑憰怪,道通為一。
就邏輯的角度來說,不僅強度不夠,也令人對字面迷惘,處於「異」與「同」模糊夾擊的我們,陷入這短短餘字所構成的泥淖,然玄理的真諦就是深入的邏輯與哲學思考,而非侷限於字面意義,再回頭研究電腦科學,其間的異同卻顯出不言而喻的清晰程度。以《純粹理性批判》著作揚名的 Immanuel Kant,因應讀者批評種種晦澀難懂的陳述與言語,推出《未來形而上學導論》(原名:《任何一種能夠作為科學出現的未來形而上學導論》),試圖以通俗而簡潔的文句來闡述《純粹理性批判》一書的基本概念,但仍是一種「天書」。我舉這個例子,並非說明小眾哲學家的優越與自成一格,相反地,我們發現儘管哲學家試圖建立大量思考並立書予以永續化,但難逃其本質上的障礙:語言。
語言分析哲學派的 Ludwig Wittgenstein 針對此一致命傷,提出新的論點,主張哲學的本質就是語言。在他的看法,語言用以表達人類思想,奠定文明的基礎,這文明也包含了哲學的成份,是此,哲學的本質只能在語言中尋找。Ludwig Wittgenstein 的主要著作《邏輯哲學論》和《哲學研究》,試圖消除傳統形而上學的唯一本質,也開拓哲學的新方向,爾後影響了電腦科學的發展。《邏輯哲學論》挑戰了古典哲學,讓哲學成為語言問題,也就是「解構」,而《哲學研究》則是「解構後的建構」,再度探討哲學的本質。(19) 三零年代,Gödel 提出的 incomplete theorem 更對邏輯、數學和計算的能力極限做了非常重要的詮釋,這是哲學中的數學、數學中的哲學。我們身處既是悲觀又是樂觀的環境中,這些手頭的智慧「工具」,被證實能力是有限的,儘管「工具」本身帶來極大的技術突破,複雜的 formal systems,在 incomplete theorem 來說,勢必會伴隨一些無法斷論的 propositions。人工智慧之父 -- Alan Turing -- 創立的 computation theory 交錯在這一系列基礎上,建構於計算機、程式結構性,以及 formal 的演繹中,最後,一個簡單卻影響深遠的模型 -- Turing machine -- 被提出,直接對應到人工智慧的領域,接著,全數無數的研究者與工程人員相繼投入,這個思維的轉變,讓知識回到其本質,也就是說,我們才得以踏在「知識的本質」基礎上,充分作累積,因而逐步邁入頂峰,但正如 Turing 的名言所說:"Can machine think?",頂峰到底在哪?我們並不知悉。除了 Halting problem,還有什麼盲點?
回到 Chia-Mei 提出的問題,「電腦」本身絕不只是機械,更非「工具」,就科技的角度來說,背後的理論與實務經驗,才是整個人類歷史的革命與驅力。身處二十一世紀的我們,回頭看看原始的機械計算器,也就是十七世紀 Pascal 設計的精巧機械,該裝置透過一堆設計得宜的齒輪,透過人力運轉,正確完成加法與乘法運算,在當時來說,是很驚人的成果。而只過了幾百年,也就是人類歷史中比例微乎其微的小間隔,今日我們身邊有無數的 microprocessor,光是所謂的「計算機」,複雜度就難以與 Pascal 設計的機械衡量,甚至,周遭還不乏具備人工智慧的裝置與系統,還有人憂心忡忡地幻想這些機器反過來奴役人類的一日,但是,還在幾年以前,我們還天真地認為那是醜陋且怪異的機械罷了。在回覆 Chia-Mei 的訊息中,我提到史上第一部可變程式的電子計算機 ENIAC,以及冷戰時期美蘇科技競賽帶動的蓬勃發展,有意思的是,這些時期的電腦科技發展,扣除戶政統計系統與商務應用,絕大多數就針對軍事科技,反戰的我,又怎以正面視之?這是一種矛盾。
英國大文豪 Charles John Huffam Dickens 在《雙城記》的扉頁中,寫下知名開場白:
「那是最好的時代,也是最壞的時代;是智慧的時代,也是愚蠢的時代;
是信仰的時代,也是懷疑的時代;是光明的季節,也是黑暗的季節;
是充滿希望的春天,也是令人絕望的冬天。我們的前途擁有一切,我們的前途一無所有;
我們正走向天堂,我們也走向地獄。」
簡單來說,善與惡、光明與黑暗,只是一念之間,而 Allen Newell 表示:「科學的面目隨科學家凝煉自然的現象而顯露,科學只能發現不能創造。」,科技本身沒有所謂是非善惡,罪惡並非源自科技,但罪惡將透過科技而彰顯。蘇格拉底說過,未經反省的人生是不值得活的,是否我們可斷言:倘若沒有罪惡,那麼世界也將失去美麗?屢見不鮮的犬儒主義告訴我們什麼呢?在這些思想完備、充滿爭論的體系中,是否就是所謂的人文,倘若如此,是否只是語言的迷失?我用不負責任的問句帶過內心的焦慮與疏離。潘朵拉的盒子,既存希望,也有貪婪,一旦人類打開潘朵拉的盒子,除了依賴人類的智慧外,也難以論斷其後果。
文化趨勢之產生,在於滿足了人心的某種需要,也反應了某種渴望。當今可見科學主義與人文主義兩種思潮的對立,前者追求客觀性、科學性和真理性的科學精神,一言以蔽之就是「真」,而後者強調追求人的自由,重新評估與定義人的價值與精神追求,也就是「美」與「善」。這兩者看似對立,其實彼此的交互作用是如此頻繁地進行著,就如 Wilhelm Windelband 提及人文主義對近代自然科學產生的影響,給予這樣的評論:
「人文主義哲學運動內在的推動力也就是對嶄新的世界知識的迫切需求,這種需求最後在自然科學的建立和自然科學按原則而擴展的過程中得到了實現。但是此事發生的方式和賴以完成的思想形式,在所有重要觀點上,都表現出依賴於由於吸收了希臘哲學而產生的刺激因素。近代自然科學是人文主義的女兒」
莊子與柏拉圖在其思想體系中,不約而同指出「人是萬物的尺度」的概念,思想本質上是超越時空限制的,特別是一個文化體系建立後,更能以直接與間接方式傳遞與演化。追求「真」的科學本質上是個悲劇,好似包容江河的大海,是偉大的,因為四處漂浮著舟楫船帆的殘骸;好似挑戰世界第一高峰的攀頂紀錄,是崇高的,因為在白雪皚皚之下掩蓋著無數犧牲者的前仆後繼;好似人類工藝科學頂峰的登月計畫,是悲壯的,因為有無數的探測飛行員的殞落。科學的偉大讓這些過去的「不可能」成為「可能」,野心與企圖心驅使這一切的變化,儘管生命殞落於這探索的歷程中,但也唯有這些悲劇、悲壯,彰顯了人類史上新的輝煌,就這樣的觀點來說,「科學」與「人文」其實是一體的兩面。人類的發展是多個維度的,回首短暫的人類文明史,我們實在沒有在任何時期如當下一般,傾心反省作為萬物尺度的自身。
開創古典物理巔峰的 Issac Newton,透過其提出的萬有引力公式,成功解釋在他之前兩大運作學分支:Kepler 對星體的三大運動定律與 Galileo Galilei 對自由落體提出的運動模型,最後這些重大突破集結於《自然哲學的數學原理》(Mathmatical Principles of Natural Philosophy, 1687),這也使得人們逐漸產生如此的想法:科學是可以解釋一切的力量,於是便興起了科學主義思潮,此思潮日以繼夜湧入人類文明的各個角落,此刻,自然科學早已走出試管、燒杯、煉丹房或者其他傳統的科學實驗與計算演繹的範疇,自然科學的態度與核心概念迅速融入新興的社會科學與人文科學範疇,重現古希臘時期的文化資產中最寶貴的項目,即「求知精神」,這也是人文主義的精髓。
建構科技廣廈的同時,人文的殿堂也悄然而生,只是,當科學家與工程師為著科技廣廈的設計或內部規劃細節絞盡腦汁時,是否留意到人文的殿堂是否有足夠的根基,對任何一種科技亦然,我們可利用科學的利刃披荊斬棘,也可被濫用,徒留後世無限的遺憾,試看,近五十年內綠色環保運動的再度覺醒,不啻是對昔日一味「唯科學主義」(Scientism) 與功利主義所釀成後果的反思嗎?若說科學本身存有「傲慢與偏見」的原罪,又過於偏頗,英國知名經濟學家和政治哲學家、以堅持自由市場資本主義、反對社會主義、凱恩斯主義和集體主義而著稱的 Friedrich August von Hayek,大力的批評所謂的科學萬能主義,也就是將科學研究方式強加於社會科學的研究領域上,導致在實踐上產生相反的結果。通常這牽涉到在哲學上強行要求明確驗證,錯誤地認為所有科學解釋都可以簡單的用二維的線形圖表進行。他也指出,大多數科學都牽涉到複雜的模型與表徵,而經濟學和非設計秩序的複雜性則有如達爾文的生物學理論般,強加科學研究方式只會造成錯誤的結果。
換言之,Friedrich August von Hayek 的矛頭並非指向科學家抑或科學本身,而是指向那些認為科學可以解決一切問題的人。這論點筆尖觸及至計劃經濟與市場經濟的對立關係,而計劃經濟提出的本意,則是基於科學考量,認定任何訴諸科學技術的途徑,可經由歷史之必然性,對過往與來日旁敲側擊,最後這個「康莊大道」可指引所有人類邁向新的紀元,然而,就我們所見,這樣由「唯科學主義」出發的種種措施,往往淪為千萬人聽任於寡頭統治的後果,號稱「萬物之靈」的人類,早已在二十世紀就領教過了。科技廣廈中除了成千上萬鑽動的人群外,或許還有人文,但是人們用什麼語言交談呢?人類用什麼途徑在爭奪利益呢?人類用什麼方式與大自然協調呢?倘若如 Ludwig Wittgenstein 所言,哲學的本質就是語言,那麼當下人類的確使用「科技」作為共通的語言,這樣一來,為了更大的利益基礎,這些人們以如此的共通語言建構著巴別塔 (Tower of Babel),聯合起來興建可直通天堂的高塔,就人類輝煌的成就,又有誰能阻止這狂妄的舉動呢?是的,看起來人類即將再將許多「不可能」的夢想逐一實現,只是,人類心靈最終的歸宿又該在哪?又該建構在什麼的基礎之上?
科學,以及人類的一切其他知識的最終目標,應以能人類謀幸福,並不傷害人類為前提。發展電腦並非一日一夕的工程,相反地,可說是人類科技在這短暫的數十年密集累積且相互激盪的燦爛火花。早在技術成型之前,許多科幻作家則以機械人或人工智慧為主題,撰寫了一系列知名的著作,當然,其中不乏有誇大想像之處,但平心而論,這些著作何嘗不是 George Orwell 經典著作《動物農莊》的翻版?《動物農莊》所揭發的,不若書名給予人生機蓬勃的聯想,相反地,是駭人的殘暴、諷刺的政治革命、寡頭領導與獨占、人類與後繼貪婪者的咎由自取、... 等令人不得不痛定思痛的議題,原本是 George Orwell 用以諷刺蘇俄的社會主義政權,但,小說深刻描繪掌權者因享受權力而腐化的情形,又何止出現在共產注意制度中呢?權力令人腐化,動物農莊的情節也每每出現於我們身邊,反過來觀察我們對於科技的濫用,豈非《動物農莊》最生動地再詮釋呢?
我們要擔心的問題,不再是表面上人類設計的機器人是否會因為具備高度人工智慧而群起反抗 (關於這點,有很多技術與道德為主題的期刊與專文在探討,我不想觸及「可能性」分析而失焦),相反地,人類是否會成為種種罪惡的暴君呢?回到電腦科學的理論,Gödel 提出的 incomplete theorem 已經對邏輯、數學和計算的能力極限做了詮釋,在這個基礎下,我們可想見無法如上個世紀知名數學家 David Hilbert 對種種理論基礎抱持過於樂觀的看法,必須以更大的勇氣,艱困地與真理搏鬥,然而,很顯然地,人類的慾望沒有公式,甚至沒有可表示的描述方式,可援以預估風險因子。如果不看資訊科技,其他科技的進展更令人有這樣的感觸,特別是已邁入基因科技時代的我們,1997 年 Ian Wilmut 教授領導蘇格蘭研究中心同仁締造複製羊 - 桃莉 - 的新紀錄後,西元 2002 年時,前後耗資二十億美金的人類基因組計畫也告完成,人類基因圖譜定序邁入新紀元,即使對生物科技沒有太大認知的人們,多少也感受到生物基因科技的壓迫與快速發展,是此,這十幾年內關於道德、醫療,以及科技的爭論紛擾,沒有停歇的一日。
Aldous L. Huxley 的經典著作《美麗新世界》揭示著有一日,人類將扮演著造物者的角色,擁有強大的能力得以全面改造大自然與人類生命的構成,科技發展本身沒有錯誤,但是人類的傲慢逐步走上取代造物者的崇高地位,將主宰這一切的生滅消長,是否會釀造毀滅的危機,我們不得而知,但光看日益嚴重的環境污染,與以指數暴增的失控局面,種種警訊,逼迫我們去思考。道德與人文,或許是最後一道防線,當口口聲聲「追求更美好人生」的唯科學主義已然促成徹底的物化與崩解,唯有人文與自身最高的道德要求,才得以消弭因貪嗔癡、無法抗拒權力與利慾所造成之生命本質的隕落,或許,屆時批判與反思才是創造宇宙繼起生命的至善。若要驅使「當人文超越了科技,我們的夢想才能駕馭未來」陳述成立,或許還得加入道德與大智慧的前設。
群 於台北內湖瑞光路
由 jserv 發表於
09:09 PM
|
迴響 (2)