天天看點

專訪李偉:這麼多程式設計語言,為什麼我選擇了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++模闆元程式設計實戰》

李偉 著

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

專訪李偉:這麼多程式設計語言,為什麼我選擇了C++?
邀請10名好友關注異步圖書10天,即可免費獲得異步新書。
專訪李偉:這麼多程式設計語言,為什麼我選擇了C++?
專訪李偉:這麼多程式設計語言,為什麼我選擇了C++?

長按二維碼,可以關注我們喲

每天與你分享IT好文。

點選閱讀原文,購買

C++模闆元程式設計實戰

閱讀原文

繼續閱讀