專訪除錯專家張銀奎:讀古籍、作古詩的“別緻”技術人(圖靈訪談)

劉敏ituring發表於2016-06-22

張銀奎

Intel 英特爾軟體架構師,系統除錯專家

畢業於上海交通大學資訊與控制工程系,長期從事軟體開發和研究工作,對 IA-32 架構、作業系統核心、驅動程式、尤其是軟體除錯有較深入研究。從2005年開始公開講授“Windows核心及高階除錯”課程,曾在微軟的Webcast 和各種技術會議上做過《Windows Vista核心演進》《除錯之劍》(2008年中國軟體技術大會)《感受和思考偵錯程式的威力》(CSDN SD2.0大會)《Windows啟動過程》《如何診斷和除錯藍屏錯誤》《Windows體系結構——從作業系統的角度》(以上三個講座都是微軟 “深入研究Windows內部原理系列”的一部分)等。

著有《軟體除錯》《格蠹彙編》,擔任雜誌《程式設計師》中“除錯之劍”的專欄作者,建立高階除錯網站(ADVDBG.ORG)。

翻譯(合譯)作品有《觀止——微軟建立NT和未來的奪命狂奔》《資料探勘原理》《機器學習》《人工智慧:複雜問題求解的結構和策略》等。

專訪除錯專家張銀奎:讀古籍、作古詩的“別緻”技術人(圖靈訪談)

個人情況

非常感謝您能接受圖靈的訪談。作為軟體除錯方面的專家,您從什麼時候開始對軟體開發和研究產生興趣的?

讀高中時,我第一次接觸到計算機,學習了一點點BASIC語言程式設計。1992年上大學後,我開始比較多的接觸計算機,並系統地學習程式設計。那時候,計算機還沒有普及,大家只能到學校的計算機房上機練習。通常,我先把程式碼寫在本子上,到了機房後再輸入到電腦裡編譯執行。剛開始學習程式設計時,遇到過很多困難,有些概念也搞不清楚。於是,我經常跑到圖書館翻閱相關的圖書或者到昂立書店買些計算機方面的書。大約到了大二下學期,我和幾個同學合夥買了一臺個人電腦—486。記得當時花了9000多元,在華山路的一家店裡買的,最後叫車才運回學校。於是我有了更多的上機練習機會,開始寫各種各樣的程式,有時也編寫一些比較複雜的程式,比如DOS作業系統中的TSR程式。就這樣,我便逐漸喜歡上了程式設計這件事。

根據多年的研究和實踐,請您總結下自己除錯軟體的方式,或者說,對抗瑕疵軟體採取的步驟?能否向讀者介紹幾種對抗問題軟體的高效工具?

軟體的問題五花八門,除錯軟體的方式也有很多種。通常,應該根據問題的特徵選擇合適的方式。比如看原始碼、查日誌等。我最喜歡用的方式還是使用偵錯程式,用的最多的有WinDBG和GDB。有時,我也會用一些系統分析工具,比如VTUNE、WPT等。

據瞭解,您將在7月23-24日參加由麥思博主辦的上海MPD軟體工作坊進行技術分享, 能否簡要介紹下此次的分享主題?

我一直堅持技術路線,幾乎每天都寫程式碼和除錯。軟體的技術變化很快,如何能不被淘汰呢?我的方法是持續專研軟體產業中那些“永恆”的難題。在相對穩定的“戰地”上開闢道路、建立領地。軟體瑕疵是個永恆的難題,我在這方面投入了很多時間,探索出了一套以偵錯程式為核心的方法。與瑕疵和除錯相關的另一個永恆難題就是軟體的安全性。安全漏洞,可以說是一種特別的瑕疵。發現和研究安全漏洞離不開除錯方法。最近幾年,我的大部分時間都花在軟體安全和滲透測試上,在這次的上海MPD上,我會分享《針對WEB應用的滲透測試工具和測試方法》

在軟體領域,您最崇拜哪些人,他們對您的幫助、影響很大?

我很崇拜David Cutler ——全世界公認的Windows NT之父,我們現在最常用的從XP開始直到Win7全部都是NT的核心,只是版本號不一樣

作為NT核心的主要締造者,David在NT核心中設計的很多機制,比如兩輪異常分發,以及非常易於除錯的資源鎖,都是我非常欣賞的。他的編碼風格和軟體價值觀對我影響很大。

除了技術領域,我瞭解到,您還特別崇拜人文領域的孔孟、朱子。可以給我們分享一些先哲們對您影響最深的思想嗎?

是的,我很喜歡讀《論語》,裡面站著一個活生生的孔子。他喜歡讀書育人,真誠不虛偽。我也的確很喜歡讀朱熹的書,比如《朱子語類》和《四書集註》。我喜歡朱熹總結出的“格物”思想,到現實中去,學習具體的人情物理,不抽象不空洞,很適合科學研究。

相當一部分技術工作者,或者擴充套件至大部分當代人都有點“實用主義”,他們很少涉略古籍,更沒有閒情賦詩。您如何看待這種現象?或者說,古籍和古詩給您帶來了哪些體驗?

這個話題好大。黃永玉先生在他的長篇自傳體小說《無愁河的浪蕩漢子》裡曾說過,“要做一個有情致的人”。這句話很合我意。不管平凡還是偉大,要做一個別致有趣的人。技術的東西很呆板,過分拘泥就會變得乏味無趣。讀古籍卻可以穿越時空,思接千載,體味古人的喜怒哀樂,學習他們的智慧,感悟他們的情懷。

著書與寫作

enter image description here enter image description here

您寫的兩本書《軟體除錯》《格蠹彙編》,受到了讀者的一致好評。兩本書的側重點有哪些不同?《格蠹彙編》的案例來自哪裡?

兩本書都是關於軟體和除錯的,探討的角度不同,前者以理論為導向,後者是“以案說法”。用宋儒的“理一分殊”思想來解說,前者是那“一理”,後者是“散為萬物”。《格蠹彙編》中的案例都是我自己親歷的,也可以說,它們是我堅持奮戰在軟體開發第一線的收穫。

建立高階除錯網站(ADVDBG.ORG)的初衷是什麼?經營網站的過程帶給您哪些專業方面的提升和生活方面的體驗?有沒有想過讓網站走入商業模式?

建立高階除錯網站的時候,目的很單純,就是想借用這個平臺,分享除錯方面的知識,結識同好。十幾年過去了,通過網站我確實結識了很多好朋友。豐富網站內容的過程,也促使我養成多讀、多寫的習慣。把點點滴滴的讀書體會寫成文章,對於寫書也是有幫助的。

我沒有想過把網站進行商業化處理,也不喜歡網頁上的漫天廣告,特別討厭那些飄呀飄的“東西”,所以高階除錯網站從沒有釋出過商業廣告,十幾年下來,一直堅持技術交流、知識共享。

如何做到本職工作和業餘寫作、網站建立兩不耽誤的?有什麼高效能習慣分享給大家?

這沒有什麼竅門,只是少把時間用在其它方面。

前人之鑑,後人之師

回顧自己學習軟體除錯的過程,自己走過哪些彎路,遇到過哪些困難?如何解決的?

我始終覺得有時花點笨力氣、稍微繞一點遠或者走一點彎路也不是什麼壞事情。所以我不在意自己在技術方面走過的彎路,記不住了。

對於有志進入軟體除錯領域的青年人,有哪些推薦的書籍?有哪些建議?

除錯是一門以實踐為主的技術,多動手操作是關鍵。建議大家先學一點基本的用法,然後就開始實踐,遇到問題後再找書或者找資料看。可以選幾個《格蠹彙編》中的案例,邊讀邊做,逐步入門後可以結合自己工作中遇到的實際問題來檢驗自己的水平,發現差距再學習。如此往復,“今日既格得一物,明日又格得一物,工夫更不住地做。如左腳進得一步,右腳又進一步;右腳進得一步,左腳又進,接續不已,自然貫通。”(朱熹語)

再次感謝張銀奎老師,花費寶貴的時間,接受圖靈的訪談!

更多精彩,加入圖靈訪談微信!

相關文章