posts - 403, comments - 310, trackbacks - 0, articles - 7
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          這學期想上這門課,純屬娛樂,不準備深入。
          主要還是考慮到有機會和安然小朋友合作一個大程 ;-)

          關于計算機圖形學的學習
          注意:
          本文盡量避免理論化的描述,試圖用最通俗的語言介紹一下計算機圖形學的學習,以及一些參考書目和網絡資源;
          本文不涉及對概念的定義,以免陷入學術討論之中
          本文是作者學習計算機圖形學的體會,如果有不同的意見,請不要攻擊和漫罵

          本文合適的題目應當是:白話說學計算機圖形學?

          1.?引言
          什么是計算機圖形學??本文盡量避免給它做嚴格的定義,但是通常來說,計算機圖形學是數字圖象處理的逆過程,這只是一個不確切的定義,后面我們會看到,實際上,計算機圖形學、數字圖象處理和計算機視覺在很多地方的區別不是非常清晰的,很多概念是相通的。
          計算機圖形學是用計算機來畫東西的學科,數字圖象處理是把外界獲得的圖象用計算機進行處理的學科。在法國,圖形圖象是一門課程。
          如何學習計算機圖形學呢?除了計算機圖形學的基礎知識以外,你還需要有以下的知識,你懂的越多,當然做的越好。
          *?英語,?你一定要把英語學好,如果你想學習計算機圖形學的話,盡量看英文的書籍和資料
          *?數學,?計算機圖形學里面的數學用的比較多,,我們可以列舉一些常用的:
          高等數學,數值分析,微分幾何,拓撲,概率,?插值理論,(偏)微分方程…
          *?物理,?如果你要進行基于物理的建模,一些物理理論是要學習的:
          力學(運動學,動力學,流體力學…),光學,有限元…
          *?編程語言:?C或C++是計算機圖形學最通用的‘普通話’,
          *?數據結構:?你需要數據結構來描述你的圖形對象,除了通用的鏈表、樹等數據結構外,圖形學還有自己特殊的數據結構
          *?其他類別:?有的時候你需要其他學科的知識,根據你的需要去學習吧

          上面列舉的不是你必須學習的東西,而是計算機圖形學可能會用到的東西,一定要記住,不要指望通過一本教材就學會計算機圖形學,它比你想象的要復雜的多。

          2.?圖形學的問題
          每個學科都有自己學科的特定問題,圖形學要解決的是如何畫出圖來,得到需要的效果,當然這是圖形學最大的一個問題。

          在開始學習計算機圖形學的時候,找一本簡單的書看,對計算機圖形學有個大概的認識,你就可以開始圖形學之旅了:

          OpenGL?Programming?Guide:?The?Official?Guide?to?Learning?OpenGL,?Version?1.4,?Fourth?Edition
          OpenGL?SuperBible?(3rd?Edition)?

          是比較好的學習計算機圖形學的入門教材,在練中去學,一開始就去啃

          Foley的
          Computer?Graphics:?Principles?and?Practice,?Second?Edition?in?C?
          不是好主意,會看的一頭霧水,一本什么都講的書的結果往往是什么都沒講清楚。
          當你把OpenGL的基本內容掌握之后,你對圖形學就有了大概的了解了

          那么下面你可以來學習一下計算機圖形學的數據結構和算法,下面的書比較適合
          Joseph?O'Rourke?的Computational?Geometry?in?C,書里面有C的源代碼,講述簡單,清晰,適合程序員學習

          總的來說,計算機圖形學涉及到2大部分:建模和渲染
          2.1建模

          你想畫一個東西,首先要有它的幾何模型,那么這個幾何模型從什么地方來呢?下面的書很不錯的:
          Gerald?Farin?的Curves?and?Surfaces?for?CAGD:?A?Practical?Guide
          這本書就有一點的難度了,呵呵,要努力看啊

          這本書算是CAGD?(計算機輔助幾何設計)的經典圖書,CAGD方面的全貌,還有2本很好的講述曲面的書Bezier和Nurbs的書

          Les?A.?Piegl,?Wayne?Tiller?的The?Nurbs?Book?
          書里面有NURBS曲線、曲面的程序偽代碼,很容易改成C的,書講的通俗、易懂,但是你要有耐心看的:)

          曲線與曲面的數學
          這本書是法國人寫的中文翻譯版,里面還有Bezie本人寫的序J,翻譯的很不錯的,看了你就掌握Bezier曲面技術了


          //另外一些你想知道的事情:其他的造型方式-開始
          注意:在后面會有這樣的章節,標明
          //另外一些你想知道的事情:其他的造型方式-開始
          //另外一些你想知道的事情:其他的造型方式-結束
          里面是我認為的一些高級話題,跳過他們不影響你學習計算機圖形學,但是要學好就要注意了,呵呵
          還有其他的一些造型技術,比如:
          隱式曲面(Implicit?Surface)的造型:
          就是用函數形式為F(?x?,y?,z?)?=?0的曲面進行造型,這樣的造型技術適合描述動物器官一樣的肉乎乎的東西,有2本書推薦大家
          Jules?Bloomenthal編輯的Introduction?to?Implicit?Surfaces,是一本專著,講述了Implicit?Surface建模型(Modeling),面片化(Polygonization),渲染(Rendering)的問題
          Luiz?Velho?的?Implicit?Objects?Computer?Graphics?也是一本專著,講述個更新的一些進展

          細分曲面(Subdivision?Surface)造型
          當用NURBS做造型的時候,曲面拼接是復雜的問題,在動畫的時候,可能產生撕裂或者褶皺,Subdivision?Surface用來解決這個問題
          Joe?Warren的Subdivision?Methods?for?Geometric?Design:?A?Constructive?Approach就是這方面的專著

          從實際物體中得到造型,現在的技術可以用三維掃描儀得到物體表面的點,然后根據這些點把物體的表面計算出來,稱為重建(Reconstruction),因為這些技術之在文章中論述,所以我們省略對它的描述

          //另外一些你想知道的事情:其他的造型方式-結束


          下面還是一個高級話題:)

          //另外一些你想知道的事情:光有造型是不夠的!-開始
          在你的幾何模型做好之后,有一些問題需要對這個模型進一步處理,得到適合的模型,當面片很多的時候,或者模型很復雜的時候,需要對幾何模型進行簡化,才可以滿足一些實時繪制的需要,這個技術叫做層次細節(LOD-Level?of?Detail)。下面的書就是講這個的:
          David?Luebke編著的?Level?of?Detail?for?3D?Graphics
          //另外一些你想知道的事情:光有造型是不夠的!-結束

          2.2渲染
          有了模型,怎么把這個幾何模型畫出來呢?這個步驟就是渲染啦
          如果你看了上面的OpenGL的書,那么你就知道一些渲染的知識了,但是別高興的太早,OpenGL使用的是局部光照模型(Local?Illumination?Model),不要被這個詞嚇住了

          Local?illumination?Model指的是在做渲染的時候只考慮光源和物體之間的相互作用,不考慮物體和物體之間的影響,所以OpenGL不支持陰影,一個(半)透明物體的效果..,這些需要考慮物體之間的影響才可以實現。

          //另外一些你想知道的事情:OpenGL可以實現陰影-開始
          OpenGL本身不支持,但是通過一些方法可以實現的:),用Google搜索一下
          Shadow?Volume,?OpenGL就找到答案啦
          //另外一些你想知道的事情:OpenGL可以實現陰影-結束

          Global?Illumination?Model?這類模型考慮的就比較全啦?,F在關于Global?Illumination的技術有3大類,具體的技術就不在這里介紹了,如果想了解,可以聯系我,大家一起討論:

          光線追蹤(Ray?Tracing)
          關于Ray?Tracing的好書有2本:

          Andrew?Glassner?的An?Introduction?to?Ray?tracing?
          Glasser是圖形界的名人,這本書也是Ray?Tracing的經典

          R.?Keith?Morley,?Peter?Shirley?的Realistic?Ray?Tracing,?Second?Edition
          這本書第一版是偽代碼,第二版是C代碼。它的結構不是很清楚,虎頭蛇尾的感覺。

          輻射度(Radiosity)
          關于Radiosity的好書有4本:
          Michael?Cohen?的Radiosity?and?Realistic?Image?Synthesis?,?Cohen獲得SIGGRAPH?1998計算機圖形學成就獎,他把Radiosity變成實際可用,現在Cohen在MSR圖形::URL::http://research.microsoft.com/~cohen/CohenSmallBW2.jpg

          Francois?X.?Sillion的Radiosity?and?Global?Illumination?,?Sillion是法國人,他的主要研究方向是Radiosity,這本書寫的很不錯的,非常清晰

          Philip?Dutre?的新書Advanced?Global?Illumination?,看起來還不錯,剛拿到手,還沒看,呵呵,所以不好評價

          Ian?Ashdown的Radiosity:?A?Programmer's?Perspective?
          有源代碼的書啊!!?就憑這個,得給5*****

          Photon?mapping
          這個我也不知道怎么翻譯,呵呵。這個技術出現的比較晚,一本好書!
          Henrik?Wann?Jensen的Realistic?Image?Synthesis?Using?Photon?Mapping
          Henrik?Wann?Jensen是Photon?mapping技術的發明者

          3.3這些也是圖形學嗎??圖形和圖象的區別模糊了:(
          除了上面講的‘經典’的計算機圖形學,還有下面的一些東西,它們也叫計算機圖形學嗎?是的?。?!
          3.3.1非真實性圖形學(Non-Photorealistic?Graphics)
          真實性不是計算機圖形學的唯一要求,比如:你給我畫一個卡通效果的圖出來,或者我要用計算機畫水彩畫怎么辦?或者:把圖象用文字拼出來怎么做?,解決這些問題要用到非真實性圖形學,?好書繼續推薦?。。?
          Bruce?Gooch,?Amy?Ashurst?Gooch的?Non-Photorealistic?Rendering?

          3.3.2體圖形學(Volume?Graphics)
          用CT機做很多切片(比如頭骨),那么能通過這些切片得到3D的頭骨嗎?Volume?Graphics就是解決這樣的問題的
          Min?Chen?編著的Volume?Graphics?

          上面的2個圖形學技術就和圖象的界限不明顯了,實際上他們是圖形圖象的綜合


          4?.還有其他的書嗎?
          還有一些好書啊,呵呵,好書看不完的:),繼續放送:

          Graphics?Gems?I?~?V,一大幫子人寫的書,包括研究人員,程序員…
          有計算機圖形學的各種數據結構,編程技巧

          Tomas?Akenine-Moller?等人編著的Real-Time?Rendering?(2nd?Edition)?
          許多最新的計算機圖形學進展

          David?Ebert等人的Texturing?&?Modeling:?A?Procedural?Approach,?Third?Edition?
          講述如何通過程序實現紋理、山、地形等圖形學要素
          F.?Kenton?Musgrave號稱分形狂(Fractal?Mania)
          Ken?Perlin就是Perlin噪聲的發明者,用過3d軟件的人對Perlin?Noise不會陌生的

          關于圖形學的特定對象,有特定的專題圖書,
          Evan?Pipho?Focus?On?3D?Models,對于圖形學的常用模型格式,進行了講解
          Trent?Polack的?Focus?On?3D?Terrain?Programming?,講地形的
          Donald?H.?House?的Cloth?Modeling?and?Animation?,講布料的
          Nik?Lever的Real-time?3D?Character?Animation?with?Visual?C++?,講角色動畫的
          ……

          還有:)
          Richard?Parent的?Computer?Animation:?Algorithms?and?Techniques,當然是講動畫的啦,呵呵。
          David?H.?Eberly的3D?Game?Engine?Design?:?A?Practical?Approach?to?Real-Time?Computer?Graphics?,有代碼的??!呵呵:)

          最后,沒事情的時候,看看下面的書吧
          Alan?H.?Watt,?3D?Computer?Graphics?(3rd?Edition)?

          James?D.?Foley等人的?Computer?Graphics:?Principles?and?Practice?in?C?(2nd?Edition)?,這本圣經沒事的時候再看吧,呵呵

          累了:(?不說了,上面的書差不多了,還有一些shader的書,我不了解,以后會補上的:)

          5.從哪里找到這些書???還有什么資源啊?
          我保證,上面的書在www.amazon.com?都可以買到:)?別打我

          那好,大部分的書在國家圖書館可以復印到,北京的兄弟有福啦,3年前的書借出來復印,1角/頁,但是新書要早圖書館里復印,5~6角/頁,還是比Amazon便宜啊,呵呵。

          不行大家就到國外買,合買吧,還負擔的起。
          我對DirectX不了解,所以沒有涉及關于DirectX的內容:)

          posted @ 2008-02-21 15:46 ZelluX 閱讀(1974) | 評論 (3)編輯 收藏

               摘要: Unix -?semaphore examplehttp://docs.linux.cz/programming/c/unix_examples/semab.htmlCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->/**//*?semabinit.c?...  閱讀全文

          posted @ 2008-02-21 15:13 ZelluX 閱讀(776) | 評論 (0)編輯 收藏

               摘要: ipc/shm.c: sys_shmat 連接共享內存 Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> ...  閱讀全文

          posted @ 2008-02-21 14:10 ZelluX 閱讀(644) | 評論 (0)編輯 收藏

          能用上非盜版的Visual Studio了。。。

          https://downloads.channel8.msdn.com/Default.aspx

          Welcome to Microsoft DreamSpark

          Professional Developer and Designer tools

          Visual Studio 2008 Professional EditionExpression Studio
          Windows Server 2003 Standard EditionXNA Game Studio
          View All Products


          DreamSpark is simple, it's all about giving students Microsoft professional-level developer and design tools at no charge so you can chase your dreams and create the next big breakthrough in technology - or just get a head start on your career.

          Who can get this right now?
          We are kicking this off in 11 countries/regions, giving DreamSpark to millions of students in the United States, the United Kingdom, Canada, China, Germany, France, Finland, Spain, Sweden, Switzerland and Belgium. If you are not residing in one of the countries listed keep checking back, we will be adding more countries throughout the year.

          Does that mean that I might not get in?
          Possibly, if you are not residing in one of the countries listed, not attending an accredited university or not a member of one of the student organizations that we're connected with. But keep checking back, as we're working on adding more ways to verify your student status all the time.

          What do I have to do to get this software? Not much really, just select a product and follow the steps below.

          • Sign In with your Windows Live ID. If you don't have one, go get one here. Pretty basic stuff.

          • Get verified as a student. The system is linked to schools and organizations around the world that can confirm student status. Simply choose your country and school, enter your info and hit submit.

          • Download your products. Now remember these are professional tools. This means they are pretty big files so make sure you have the bandwidth and space to bring them to your machine. We support the latest versions of both Internet Explorer and Firefox for your download.

          posted @ 2008-02-20 00:21 ZelluX 閱讀(423) | 評論 (0)編輯 收藏

          聲嘶力竭 俯視 滲透 渺小感
          單獨放出來聽可能就遠沒那么強烈的效果了

          校內下載連接:http://10.132.141.124/zellux/Llorando.mp3
          Online:http://www.ttt0.com/play/4/4789/ting130532.htm
          Download:http://hiero.ru/david/mp3/Llorando.mp3

          Rebekah Del Rio 《Llorando (Crying)》

          歌詞

          英文版

          posted @ 2008-02-19 23:32 ZelluX 閱讀(636) | 評論 (0)編輯 收藏

          昨天硬是沒找到正確的sys_call_table的地址,原來我之前在虛擬機上裝的ArchLinux是64位的。。
          今天在真機上成功地修改了系統調用表。
          測試環境:ArchLinux 2.6.24

          1. 2.4.20以后的內核出于安全考慮,沒有導出sys_call_table符號,所以要先通過System.map找到sys_call_table的地址
          $ cat /boot/System.map26 | grep sys_call_table
          c0375680 R sys_call_table
          另外也可以用nm工具獲得vmlinux中的所有符號
          $ nm /usr/src/linux-2.6.24-ARCH/vmlinux | grep sys_call_table
          結果一樣

          2. 以添加一個把uid改成root(0)為例,寫一個內核模塊:
          addcall.c

          對應的Makefile:

          3. 使用insmod addcall.ko載入模塊后,用dmesg可以看到the call has been added.
          4. 測試程序
          test.c

          使用gcc -o test test.c編譯

          5. 運行./test,即可看到類似的成功信息:
          Previous uid = 1002
          Current uid = 0

          6. 卸載模塊rmmod addcall,此時再次運行./test就會失敗

          posted @ 2008-02-19 14:55 ZelluX 閱讀(754) | 評論 (0)編輯 收藏

          《邊干邊學》上一個簡單的共享內存的例程:
          主要的API:
          shmget 創建一塊共享內存
          shmat 將一塊已經存在的共享內存映射到一個進程的地址空間
          shmdt 取消一個進程的地址空間中的一塊共享塊的映射
          shmctl 管理共享內存,和ioctl的風格很像

          每一個新創建的共享都由一個shmid_ds{}表示。struct shmid_ds在linux/shm.h中的定義:

          其中存放權限信息的ipc_perm{}的定義為:
          include/linux/ipc.h

          mode為該共享的內存的讀寫權限,和chmod的參數有點像。mode低九位定義了訪問許可,解釋如下:
          0400?用戶可讀? 0200用戶可寫? 0040 組成員可讀? 0020 組成員可寫? 0004 其他用戶可讀??0002 其他用戶可寫
          沒有執行位 0100 0010 和 0001

          ?

          posted @ 2008-02-19 11:30 ZelluX 閱讀(451) | 評論 (0)編輯 收藏

          _syscall 宏:
          最簡單的沒有參數的系統調用的實現:
          /*?XXX?-?_foo?needs?to?be?__foo,?while?__NR_bar?could?be?_NR_bar.?*/
          #define?_syscall0(type,name)?\
          type?name(
          void)?\
          {?\
          long?__res;?\
          __asm__?
          volatile?("int?$0x80"?\
          ????:?
          "=a"?(__res)?\
          ????:?
          "0"?(__NR_##name));?\
          __syscall_return(type,__res);?\
          }

          以getuid()為例,_syscall0(int, getuid)展開后就變成
          int?getuid(void)
          {
          ????
          long?__res;
          ????__asm__?
          volatile("int?$0x80"
          ????????????????????:
          "=a"?(__res)
          ????????????????????:
          "0"??(__NR_getuid));
          ????__syscall_return(
          int,?__res);
          }

          程序把系統調用號__NR_getuid放入eax寄存器,然后調用軟中斷。
          include/asm-i386/hw_irq.h中的定義:
          00025?? #define SYSCALL_VECTOR??0x80;

          arch/i386/kernel/traps.c中把該中斷號綁定到system_call函數:
          00944?? set_system_gate(SYSCALL_VECTOR,&system_call);

          system_call函數在arch/i386/kernel/entry.S中:
          ENTRY(system_call)
          ????pushl?%eax????????????#?save?orig_eax
          ????SAVE_ALL
          ????GET_CURRENT(%ebx)
          ????testb?$0x02
          ,tsk_ptrace(%ebx)????#?PT_TRACESYS
          ????jne?tracesys
          ????cmpl?$(NR_syscalls)
          ,%eax
          ????jae?badsys
          ????call?*SYMBOL_NAME(sys_call_table)(
          ,%eax,4)
          ????movl?%eax
          ,EAX(%esp)????????#?save?the?return?value
          ENTRY(ret_from_sys_call)
          ????cli????????????????#?need_resched?and?signals?atomic?test
          ????cmpl?$
          0,need_resched(%ebx)
          ????jne?reschedule
          ????cmpl?$
          0,sigpending(%ebx)
          ????jne?signal_return
          restore_all:
          ????RESTORE_ALL
          主要步驟:
          1. 保留一份系統調用號的最初拷貝
          2. 保存堆棧環境(SAVE_ALL)
          3. 得到當前task_struct的地址,保存到ebx中
          4. 檢查系統調用號
          5. 根據%eax調用號計算地址,調用相應函數
          6. 在entry.S后面可以看到,
          .data
          ENTRY(sys_call_table)
          ????.long?SYMBOL_NAME(sys_ni_syscall)????/*?
          0??-??old?"setup()"?system?call*/
          ????????
          ????.long?SYMBOL_NAME(sys_getuid16)
          ????.long?SYMBOL_NAME(sys_stime)????????/*?
          25?*/
          ????.long?SYMBOL_NAME(sys_ptrace)
          ????????
          sys_call_table + %eax * 4是sys_getuid16地址,kernel/uid16.c中:
          asmlinkage?long?sys_getuid16(void)
          {
          ????
          return?high2lowuid(current->uid);
          }
          很簡單的處理代碼,返回當前進程的uid。這里asmlinkage修飾符表示函數必須從堆棧中,而不是從寄存器中拿參數(防止gcc用寄存器傳參優化)。
          7. 保存返回值eax到堆棧中的eax
          8. RESTORE_ALL

          另外這里再提一下GET_CURRENT的實現
          #define?GET_CURRENT(reg)?\
          ????movl?$-
          8192,?reg;?\
          ????andl?%esp,?reg
          很巧妙的實現,把棧指針與掩碼-8192做與操作,末尾13位清零,就是當前的進程的task_struct地址了。


          接下來是利用內核模塊動態添加一個系統調用的例程,由于2.4.20以后sys_call_table符號不再被導出了,要獲得這個地址得手動hack。尚未成功,下次回過頭來看看。

          posted @ 2008-02-18 14:35 ZelluX 閱讀(557) | 評論 (4)編輯 收藏

          Mars: A MapReduce Framework on Graphics Processors
          by Bingsheng He @ Hong Kong Univ. of Sci. & Tech. 
              Nage K. Govindaraju @ Microsoft Corp.
              Qiong Luo, Tuyong Wang @ Sina Corp.

          一些重點摘記:
          1. Introduction
          Three challenges in implementing the MapReduce framework on the GPU:
          First, the synchronization overhead in the run-time system of the framework must be low.
          Second, a fine-grained load balancing scheme is required.
          Third, the core tasks of MapReduce, including string processing, file manipulation and concurrent reads and writes, are unconventional to GPUs and must be handled efficiently.
          Each thread is responsible for a Map or a Reduce task with a small number of key/value pairs as input.
          Performance improvement: 1.5-16 times

          2. Priliminary and Related Work
          2.1. Graphics Processors
          It is desirable to schedule the tasks between the CPU and the GPU to fully exploit their computation power.
          Given a kernel program, the occupancy of the GPU is the ratio of active schedule units to the maximum number of schedule units supported on the GPU.
          The GPU has a hardware feature called coalesced access to exploit the spatial locality of memory accesses among threads.

          2.2. GPGPU
          2.3. MapReduce
          Map: (k1, v1) -> (k2, v2)*
          Reduce: (k2, v2*) -> v3*

          3. Design and Immplementation
          3.1. Design Goals
          3.2. System Workflow and Configuration
          3.3. APIs
          3.4. Implementation Techniques
          Based on this compilation information and the total computation resources on the GPU, we set the number of threads per thread group and the number of thread groups to achieve a high occupancy at run time.

          4. Evaluation
          4.1. Experimental Setup


          posted @ 2008-02-15 19:51 ZelluX 閱讀(554) | 評論 (0)編輯 收藏

          作者是豆瓣上的草薰風暖
          http://www.douban.com/people/1299430/

            長大以后,不會僅僅因為文筆而喜歡一個作家,也不會因為情節曲折而喜歡一部書。有一種讀者和作者之間的傳神,我領會為“心跳的合拍”,從字里行間,從遣詞造句,從審美風格,從情感表達,從思維方式……我深信,如果喜歡一本書,必然和這本書的作者在性情上有某種程度的相似或者共鳴。
             
            我不喜歡杜拉斯的語言,只記得她說過的一種偏愛,她說她喜歡只寫過一部作品的作家。我的體會是,我只喜歡至少有過一部作品使我感到“心跳的合拍”的作家。比如陳丹燕,那個被朋友稱之為面目陰暗的女子,卻因為她的一部《女中學生之死》令我堅持喜歡,盡管她后來的上海系列再不能打動我。(可能今天的我再去讀《女》就不會那么感慨,可能。)
             
            相對于歐美小說的敘述筆調,我更能體會和揣摩部分日本小說里的情欲,不是說前者不能明白,只是對后者的玩味更得心應手。比如村上春樹,盡管他的作品除了幽微藍調、內心獨白的風格之外,也透著陰郁潮濕的氣味,我想,恐怕算得上微微一點病態而不至于變態的美感,像爵士樂,村上春樹的抒情深沉而敏感。
             
            是的,安靜下來,你能夠聽到心臟的聲音。聽到一個沉靜又自命不凡的男子從12歲到37歲的心臟的聲音。手邊的這本《國境以南,太陽以西》是很早就借的,在這樣熱的夏天讀起來卻格外喜歡。
             
            這部小說不妨說是一個人的成長史,而里面的每個人,初君,島本,泉,有紀子,也都不能說不是可愛的。
             
            【島本】
             
            兩個12歲的被群體隔膜的獨生子女成為好朋友,那種心靈共振的好朋友。恐怕誰都會覺得那樣一種場景無限美好,兩個孩子坐在一起一下午,聽李斯特的鋼琴,說話。我寧可把他們的交談稱之為說話,說心里想的話,說思考過的話,說簡單又蘊藏真切感受的話。兩個相似的獨生子女,在一起說話,在一起聽話,寧靜的,專注的,不被周圍的人打擾,陪伴彼此安靜的時間和聲音,緩緩的,淡淡的,一點一點的,就像異常漂亮但腿有點跛的島本走路的情狀,耐心而從容。
             
            【初君】
             
            不用說,若有細心人細心觀察,應該不難看出初君是免不了有其自身問題的,然而說到底,世界上又哪里存在沒有其自身問題的少年呢?初君是一個異常孤獨而傲慢的少年,需要和同伴配合的體育項目他無論如何喜歡不來,同他人搶分的競賽也不屑一顧。但也不是徹頭徹尾的孤獨。盡管為數不多,還是交了幾個要好的朋友。假如身邊沒有那樣的朋友,一個人在通過二十歲以前那段不安穩歲月的過程中難免受到更深的傷害。
             
            初君的第一個女朋友泉指出他是一個獨生子,并非說他是被寵壞了的孩子,而是指他有孤獨傾向的個性,很難走出一個人的世界。從某種意義上,島本為了保護自己會使得自己微笑,而初君連隨和的微笑都覺得累贅。
             
            恐怕我們每個人多少都會認同獨生子女有著強烈的自我意識,并略感悲哀我們難以向別人敞開心扉。假如不是通過書,我們不可能分享初君那樣一個獨生子從12歲到37歲內心隱秘的情感和意象,這也是我曾經喜歡陳丹燕《一個女孩》的原因。雖然都不過是孩子,也未嘗不具備某種“思想家”和“藝術家”的潛質。而通過他們的內心獨白,你大概會覺得自己不孤單,甚至連那些白日夢都讓你覺得可親和會心,后來明白,一個孩子苦心經營的白日夢,不外乎是自我中心的或者連接著某個重要的人,不外乎是自己變得不同尋常出色厲害或者沉溺于悲傷慘淡的情境情結中……我不知道有多少人是如此,或者說生活太吵鬧而這些人又隱匿在自我里,所以彼此看不見。 但我想總是有一部分人如此。
             
            國境以南,太陽以西,看見,人生的樣子。時光,是很冷的東西。一個人,一個個人,從遇事不知所措的懦弱的少年走到平和的微笑的知足惜福的也帶一點傷感的中年,盡管途經波濤暗涌,最后仍只剩下沙漠。歲月這東西是要把人變成各種樣子的,有紀子其后遇上了初君,而泉大概誰也沒有遇上。而無論初君說什么,島本都浮現出將所有感情吞噬一盡的迷人微笑看著他,就好像在說“沒關系的,這樣可以的?!薄盎罘至挚偪偅婪ǚN種樣樣,都沒什么大不了的。剩下來的唯獨沙漠,真正活著的只有沙漠?!?
             
            小說里幾乎每個人物的性格都透著一點清冷,讀起來卻有一股溫暖的溫柔的溫情的東西在。也許人是難以活得過分自我的,即使有心也不能。島本的幽微美麗蕩漾著死的氣息,美人對男人有安撫的作用,初君也期待“專為我準備”的一個女子,可惜時間不能挽回,她所要求的全部非死不能成全。有紀子對初君并非完完全全,而他們最終在沙漠里好端端活下去。既非生氣,又不悲傷,有紀子僅僅是將事實作為事實說出口來?!澳愕拇_是個自私自利的人、不地道的人……但這些都不是問題。你肯定什么都不明白。”有紀子是懂得初君的。
             
           ?。ㄟ@不見得是一部多么精彩的書,不過可以從中窺見幾許人性自然,但很令人不爽的一點是,最終作者也不肯告訴我們島本過去究竟有著怎樣的經歷現在有著怎樣的身份?。∷幌胝f就不要賣關子?。。。?
             
            人和人是不同的,有些人是寫字的,有些人是看字的,事實上這兩種人又有相通的潛質,否則不會懂得。世間,一直有像村上春樹,像普魯斯特,像卡夫卡那樣曲徑通幽的靈魂,因而也就一直有讀他們靈魂的人,雖然,藝術氣質永不是生存的主流。

          posted @ 2008-02-14 16:26 ZelluX 閱讀(430) | 評論 (1)編輯 收藏

          僅列出標題
          共39頁: First 上一頁 4 5 6 7 8 9 10 11 12 下一頁 Last 
          主站蜘蛛池模板: 泸溪县| 元朗区| 庆城县| 巴南区| 石首市| 岳池县| 元朗区| 岗巴县| 昆明市| 尤溪县| 永州市| 陈巴尔虎旗| 拉萨市| 灵宝市| 涿州市| 子洲县| 江阴市| 姚安县| 开化县| 榆中县| 桦南县| 金堂县| 邯郸县| 青田县| 九寨沟县| 遂平县| 红桥区| 开鲁县| 屏南县| 霞浦县| 荆门市| 灵宝市| 大冶市| 枞阳县| 白山市| 平陆县| 安康市| 万宁市| 汝城县| 襄垣县| 和田市|