Monday, May 30, 2011

無止境的學習 (二)

其實有時候回頭看大學那一段接案時用Visual Studio開發的日子,再看看現在的寫程式的習慣、用的工具、專案的大小,總有種成長很多的感覺。從以前Linux下只會用vim,到現在都用eclipse搞定較大的project,搭配cgdb還有valgrind,其實我覺得比Windows上開發容易多了(雖然之前剛轉到Linux上時花了一陣子適應)。

而一般人剛接觸Linux開發覺得最痛苦的大概就是Makefile了。雖然GNU出了automake,Qt也有qmake,但是我覺得最容易學的大概是cmake了;cmake的語法真的簡單到一個不行,但相對的,也就沒什麼彈性,要寫一些比較複雜的rule就麻煩了;這一點Google SCons倒是做的非常好,畢竟他有Python為基礎,要寫什麼都簡單,但相對的我覺得速度較慢;另外cmake內建支援一堆package,也就是說他事先先幫你把巨集都定好,像是FindCUDA、FindBoost、FindTBB等等,讓開發人員可以很容易的找到某某函式庫的path,然後完成編譯的設定。但是cmake最大的缺點就是語法很不彈性而且很不嚴謹,macro跟function常常會傻傻分不清楚,我覺得cmake的作者肯定沒認真修過compiler或是programming language...

除了軟體之外,這兩年多也學到了一些比較跟硬體有關的技術,主要像是HPC裡常見的GPU還有Infiniband。GPU我想不用多講,從2006年開始玩到現在已經四年半了,中間GPU也經歷過許多代硬體架構的改進,從G80的架構到今天的Fermi,從CUDA 0.2a到4.0b,我覺得GPU這四年真的進化很多;雖然技術不斷的推陳出新,我覺得更重要的是,我開始習慣從更底層去思考系統的運作,不管今天是什麼處理器、什麼assembly、什麼OS、什麼language、什麼compiler,都可以去更深入的思考甚至是最佳化;我覺得這大概是接觸這麼多東西之後最大的收獲吧!

而至於像是Infiniband這種超高速每秒40Gb的網路技術,傳統是用在超級電腦裡的interconnect,但是也慢慢的因為Ethernet的發展緩慢,走入了一般的data center。我們這兩年從什麼都不懂,到完全了解Infiniband的硬體、還有他底層的API還有RDMA的communication model,其實花了很多功夫。在2008年時,我們還完全不知道Infiniband怎麼寫,就先花了二十萬把DDR的switch還有adapter買進來,沒什麼文件,就一本超厚的bible(根本就是他的hardware spec),再加上一支Google來的hello world的測試程式開始,到debug他的driver不能被當shared library載入這種鬼問題,到最後我們丟掉RDMA send/receive模式改用read/write+atomic operation,真的學到很多,過程也蠻有趣的。當初堅持不用MPI這種鬼東西、不走TCP/IP,全部靠libibverbs這個最底層的interface去build我們自己的network engine...現在回頭看,這兩年多來我們還真累積了不少。

剛順手翻了一下大陸很有名的程序員雜誌。這本雜誌我覺得真的是走在時代的尖端,每一期都會探討許多新的技術還有趨勢。像是今年5月這一期,全部都在講cloud computing的技術,光這一點我就真的覺得大陸的programmer是遠比台灣幸福的。我們活在代工王國的世界裡,這些代工廠或是品牌廠,要的就是Android的人才,而且是非常多Android的人才,所以大家都一股腦的去學Android開發,這也造就台灣又繼NB代工大國之後成為手機代工大國,宏達電股價衝上1500;但是相對的,當我們這些軟體人才都為了生計,最後做的都是這些手機廠所謂的"軟硬體整合"的工作的時候,我們怎麼在雲端運算或是網路服務的這些領域與其它國家相比? 也許最終還是落入一個製造業3%~5%的毛利的競爭,大家都做me too的產品,什麼時候才會有真正的innovation? 什麼時候才會有Internet上或軟體上的競爭力? 對現在的台灣來說,實在太遙遠了...好啦離題了,只是突然有感而發而已。我相信台灣有很多很好的軟體人才,也許再過幾年,會有一些突破性的改變,讓台灣的軟實力能登上國際網台吧! 我期許台灣有一天會變成不只是手機/各式各樣3C產品的製造地,我們也可以很大聲的說,我們也是各種Internet服務的集散地、軟體技術的集散地...(待續)

2 Comments:

popcorny said...

從你身上就看到台灣軟體的希望。:DD

阿葉 said...

居家網路工作 只要您會上網 每日在家工作2~4小時
不影響正職工作,多增加一份額外收入
點我免費報名體驗 http://wahez.weebly.com