專訪前C#編譯器組首席工程師Eric Lippert

>>>  技術話題—商業文明的嶄新時代  >>> 簡體     傳統

Eric Lippert是前微軟C#編譯器團隊的首席開發師,從1996年起一直在微軟開發部門任職,協助設計并實現VBScript、JScript、JScript .NET、Windows Script Host、Visual Studio Tools for Office 和 C#。同時,他也是C#語言設計團隊的成員之一。


本文是一篇fogcreek網站對Eric Lippert的專訪,以下為采訪摘譯:


原文鏈接:dev.life – Interview with Eric Lippert


今天我們的嘉賓是Eric Lippert,Coverity的軟件架構師,此前在微軟C#編譯器團隊首席開發師,也是C#語言設計團隊的成員之一。幾個主要的編程著作:Essential C# 和 Visual Basic .NET Code Security Handbook ,在他的博客上有很多關于編程的文章,也常出沒于 StackOverflow。


你是如何進入軟件開發行業的?


Eric Lippert:我六七歲時在學校圖書館接觸到了Commodore PETs,PET有專門的校園版,而且還附帶 Waterloo BASIC 芯片。

起初,我放學后就會去玩Dam Buster,而且還玩到很晚,但我很快意識到可以編寫自己的東西。我有一本可用來練習BASIC的書,所以我就在家里的圖紙上寫代碼,然后在放學后去輸入并看是否能運行——讓一個火箭飛行在屏幕上。我小學圖書館的管理員允許我晚歸,以及借閱一些關于編程和數學的書籍。后來我在LinkedIn聯系到她,談起過往的日子每每都很感動和暖心。


我十歲時,在別人的程序中發現了人生中的第一個bug。我的小學老師有一個數學閃存卡程序,有時候會輸出錯誤的答案,老師問我看能不能解決這個問題。其實,這對于我是極大的挑戰,心想這必然是一個極其復雜的程序,但我認為我需要去找到錯誤所在,至于是否真正意義上的理解是另外一回事。所以我開始讀程序的每一行代碼,并獨立測試。我已經忘記了那個bug的具體細節了,但和這個類似:

1230 IF X > 10 THEN PRINT (X – 10) * Z

1240 IF Y > 10 THEN PRINT (X – 10) * Z


第二行出現了錯誤,X本應是Y。在現代的編程環境中,有人會認為這是由于復制粘貼產生的錯誤,可那個年代的編輯器是沒有這個功能的,必然是誰在編寫代碼時分心所導致的。


我大概在1983年得到了我的第一臺電腦——Commodore 64,在這里也要感謝我那偉大的媽媽。


我最值得驕傲的一個程序就是一個書籍數據庫,讓我可以追蹤、管理我的書,那時我十一歲。之后,我還做了個比較靚的窗口管理器,可以在屏幕上實現打開、關閉窗口。


我沒有接受過正式的編程訓練,只是偶爾會去學校董事會建立的計算機實驗室。即使到了高中,更多的也是自學。在高中暑假我去WATCOM(因編輯器和數據庫出名)做實習生,他們教我用C語言編程、如何使用調試器、如何建立一個有限狀態機……等到我拿到學位后還在WATCOM工作過一段時間。


我在University of Waterloo取得了雙學位:應用數學和計算機科學,盡管其中的計算機科學和計算機編程區別還比較大。


你目前在做什么?


Eric Lippert:我是一名軟件工程師,在Coverity從事C#代碼分析,也就是Synopsys的新部門。而Coverity是做代碼審查和檢測軟件的公司,比如找出C、C++、Java 和C#代碼中的缺陷。


我一天的工作需要做的事情很多,包括一些管理方面的事情:review bug報告、測試案例和代碼等。我雖然不需要寫大量的代碼,但也有一些自己編程任務。與此同時,我還需要指導我的同事,他們是在Unix上寫C ++的好手,可這與Windows上寫C#有著很大的不同,我要給他們分析“The Microsoft Way Of Thinking”與他們過去做法的不同。


我還有一些其它工作外的技術活動,例如Mark和我在編寫C# 6.0的著作,其次是在O’Reilly上錄制編程教學視頻。


你在編程時才最開心嗎?


Eric Lippert:我建議很多程序員在開始的時候,先去感受找出bug的喜悅,而不應該第一時間去編碼。我從來都不知道快樂的源泉是什么,可至少我在調試我構建的代碼時是開心的,經過一次又一次的調試讓程序運行起來。


對于這個問題,首先我很享受編碼,其次樂于通過構建subsystems 來解決一些問題。在Roslyn項目(微軟公司開源的 .NET 編譯器)工作時,需要重寫C# 和 VB編譯器,且很多工作始于一張白紙。


你的開發環境是是怎樣的?


Eric Lippert:Coverity是一家有Unix的背景的公司,很多情況下都默認Unix開發環境,而我一直是在Windows設備上開發,所以使用Cygwin(小型的UNIX模擬環境)來獲得基于UNIX的開發環境。我同事一直用的都是Ubuntu,只是在測試時用Windows。當然,對于那些基于C#的產品,我還是使用了Visual Studio 2013 。

我使用的工具是ProcMon,在許多開發者的工具盒中應該是沒有的。

另外,我在自己的小世界里編程時,音樂少不了,小清新居多,根據心情會聽這些人的歌曲或這些歌:Stacey Kent、Glenn Gould、Goldberg Variations、Diana Kral、Philip Glass、Daft Punk、Pink Floyd、Sondheim musicals……

我有個怪癖,如果不使用Visual Studio,我就會用1990年版WATCOM VI。


你最喜歡什么開發書籍?


Eric Lippert:你采訪過Jared ,他現在微軟做我以前的工作,他推薦的兩本書很不錯:《The Pragmatic Programmer 》和《Purely Functional Data Structures》。

我順著再推薦一本書就是《The C# Programming Language》。


編寫技術圖書是我的一個愛好,對于最喜歡的書籍,只要是我編寫或者參與編寫的我都愛,最最喜歡就是 Jon Skeet的書《C# In Depth》,因為這本書你幾乎發現不到什么錯誤。很多讓我推薦書籍,我通常處理這本還有就是《Essential C#》,只選其一的話肯定是前者。


你目前最想嘗試的技術是什么?


Eric Lippert:我昨天和Jon吃晚飯時,聊了很多Docker,在這方面沒什么經驗,會抽空去好好了解下。


不寫代碼時你喜歡做什么?

Eric Lippert:Ricky Jay在電影《Spanish Prisoner 》(西班牙囚徒)中有段話非常好:

where he says that when your hobbies interfere with your work, that’s great, but when they interfere with each other, you’ve got a big problem. Boy, do I know all about that.

我的愛好:

  • 編寫書和錄制視頻,但都與C#有關

  • 寫博客

  • 帆船

  • 修葺108歲的靠房子

  • 做木工,對做家居等很有興趣

  • 在后院自己鑄造金屬工具

  • 彈鋼琴

  • 在StackOverflow上回答問題

愛好很多,我喜歡讓自己忙碌起來。


你會給剛進入開發領域的年輕人什么建議?


如果時光能夠倒流,我會對年輕時的自己說:認認真真地去學習 Commodore 64 匯編程序,因為我很恐懼匯編語言,至今我讀機器語言的能力還是很弱。

 

對于如今的年輕人,請你們從今天開始好好學習計算機編程,這可以讓你學會如何寫清楚非代碼文檔。一個好的開發者,寫正確的代碼是遠遠不夠的,你還需要去教會別人如何使用它,并相信別人所做的一些改變和創新。


另外,溝通是關鍵。


話說回來,對于年輕人最實際的建議就是,找一些小的主題,盡可能的了解使用者的需求,并清楚、準確地寫下來,或者針對小主題中出現的問題給出有說服力的回應。很快你就會成為這個主題領域的專家,自然而然地你也就會學到很多東西。


原文地址:http://geek.csdn.net/news/detail/30879




dotNET跨平臺 2015-08-23 08:48:45

[新一篇] Linux應用環境實戰系列階段性總結

[舊一篇] 如何成為一名專家級的程序員
回頂部
寫評論


評論集


暫無評論。

稱謂:

内容:

驗證:


返回列表