專訪李偉:這麼多編程語言,為什麼我選擇了C++?

C++是一門被廣泛使用的編程語言。在眾多的C++開發者中,大多數人用面向對象的方式編寫代碼:我們日常接觸的C++項目基本上都是用這種風格組織的;幾乎每一本C++教程都會用絕大部分篇幅來討論面向對象;每位擁有數年C++開發經驗的程序員都會對面向對象有自己的見解。

面向對象在C++的開發圈子裡成了一種主流,以至於在有些人看來,C++與很多編程語言類似,只是一種面向對象的方言而已。

但事實上,C++所支持的不僅是面向對象這一種編程風格。它還支持另一種編程風格:泛型,並由此衍生出一套編程方法,即編譯期計算與元編程

今天有幸邀請到了《C++模板元編程實戰:一個深度學習框架的初步實現》的作者李偉,讓我們聽聽他對C++編程語言的所思所想。

異步社區:可以介紹一下自己嗎?目前正在做哪些事情?

李偉:我2011從學校畢業之後就一直從事軟件開發相關的工作。曾經在百度自然語言處理部機器翻譯組負責線上系統的維護,目前在微軟亞洲工程院從事Being搜索的相關開發。

平時的愛好是讀書,特別是編程相關的書籍。喜歡嘗試新的語言與技術,但對C++編程情有獨鍾。

異步社區:是什麼初衷開始創作《C++模板元編程實戰 一個深度學習框架的初步實現》這本書,寫書帶給您的最大收穫是什麼?

李偉:感覺是心性方面的鍛鍊吧。這本書討論了一項更多來說處於探索階段的技術,可供參考的資料並不多。所以寫作的過程也是一波三折的,經常要把很多內容推翻重寫。中間數次都感覺寫不完了,但最終堅持了下來,感覺整個寫作的過程就是一個自我修煉的過程了。

異步社區:《C++模板元編程實戰:一個深度學習框架的初步實現》您最想將這本書推薦給誰看?

李偉:(1)對C++有一定了解,想進一步提升C++編程能力的讀者。

(2)從事深度學習框架開發相關工作的讀者。對於這部分讀者來說,可以參考一下深入應用模板元編程對框架本身產生的影響。

異步社區:創作《C++模板元編程實戰:一個深度學習框架的初步實現》過程中遇到的最大困難是什麼?

李偉:時間緊迫:這本書本身是對模板元編程技術的一個探索,寫書的同時還涉及到對元編程技術的總結、引入新的技術修改原有框架的設計等等。這些都是利用業餘時間完成的,工作量還是比較大的,總是感覺時間不夠用。

異步社區:您的大學生涯是如何度過的呢?在清華大學您又接觸了怎樣不同的教育呢?

李偉:我的本科、碩士、博士學習分別是在北京工業大學、北京航空航天大學、清華大學3所學校渡過的。在清華大學獲得了博士學位。雖然經歷了三所大學,但其實在每所大學中是生活都是比較規律的:以看書為主(早期還嘗試打遊戲,但由於打得不好,經常被虐,所以也慢慢放棄了)。我的專業是電子工程,但業餘更喜歡看計算機方面的書。在本科時完成了學校組織的計算機輔修,到碩士期間開始使用MFC編寫界面程序,從此開始系統性地使用C++進行程序開發。

我感覺我所就讀過的三所大學都給了我很好的學習環境,都非常好。因此,在清華讀博士期間,談不上接收到了什麼特殊的教育。

反到是因為讀博士,讓我體會到(1)很多事情只有堅持才能有結果;(2)幹完一件事情要寫總結。這些都對後續模板元編程的研究以及這本書的寫作產生了影響。

異步社區:對於進入IT這一行業,學校專業力量是否重要?

李偉:我覺得學校專業力量有一定的作用,但並不起決定作用。重要的還是能否保持一種積極的心態,不斷地學習與實踐。

異步社區:清華大學畢業後您曾先後供職於百度和微軟亞洲工程院,哪一段的工作經歷帶給您的收穫最大?為什麼?

李偉:沒有所謂的最大吧,每一段經歷都有其獨特之處,都是一種閱歷,一種成長。

異步社區:您目前供職於微軟亞洲工程院,您的研究方向是什麼呢?您平常每天都做些什麼?或者說您典型的一天是如何度過的?

李偉:算不上研究方向哈,在微軟每天主要的工作就是編寫代碼,跑一些實驗,嘗試提升系統的速度與效果啥的。每天基本上就是早上坐地鐵到公司,開始幹活,然後回家帶孩子,晚上等孩子睡了後再看一會兒書。可能對於一些人來說,挺無聊的哈。

異步社區:經過這麼多年的工作積累,您對計算機編程的感覺是否還如當年一樣熱衷?如何在繁重的工作壓力下,保持初心呢?

李偉:還是很熱衷的。我並不覺得由於工作壓力大,就無法保持下去。這是一個興趣的問題,找一個感興趣的方向,堅持下來,其實並不是特別困難的一件事哈。

異步社區:針對剛畢業、初入職場的小白,有什麼建議?

李偉:永遠不要停止學習。無論每天的工作量多還是少,總要抽出一些時間來學習。無論是從書本上,還是從視頻上,堅持學習,每天提升一點。只有這樣才不會被社會的進步所淘汰。

異步社區:您是如何平衡工作,寫書,家庭?

李偉:基本上來說,是家庭第一位,工作第二位,學習第三位,寫書第四位哈。對我來說,工作賺錢是為了養家;而學習與寫書是為了更好的工作,以及充實自身。因此大部分事情的優先級也是按照這個順序來排列的。

異步社區:對您工作和生活幫助最大的三本書?一定要推薦的?

李偉:《高效能人士的七個習慣》,《細節決定成敗》(好吧,我承認,書中有很多細節問題),《你自以為的極限,只是別人的起點》

異步社區:模板元編程從來都是C++程序設計中被多數人視為畏途的領域,類型設計本就是具備豐富經驗的工程師才能操刀的活計,您是如何攻克的?

李偉:算不上攻克,因為感興趣,所以一直在看而已。前前後後看了將近小10年,再笨也有點心得哈。

C++模板元編程還是一個發展的領域,我覺得相比面向對象來說,還遠遠算不上成熟,因此也不能說是攻克。就像我在書的後記中提到的,有很多方面都不完美。編程語言是不斷髮展的,而標準對模板元編程的支持還有待提升。但相關的研究與改進可能需要來自不同領域的共同努力(比如有些實驗可能需要改進編譯器才能進行)。

專訪李偉:這麼多編程語言,為什麼我選擇了C++?

《C++模板元編程實戰》

李偉 著

本書將以一個深度學習框架的實現為例,討論如何在一個相對較大的項目中深入應用元編程,為系統性能優化提供了更多的可能。本書分8章,前兩章討論了一些元編程與編譯期計算的基本技術,後面六章則討論了元編程在深度學習框架中的實際應用,涉及到富類型與標籤體系、表達式模板、複雜元函數的編寫等多個主題,詳盡地展示瞭如何將面向對象與元編程相結合以構造複雜系統。


分享到:


相關文章: