數據科學家告訴你哪些計算機科學書籍是你應該看的
人們常說數據科學建立在三大支柱上:領域專業知識,統計數據和編程。RStudio的***科學家,開發30多個R包的Hadley Wickham推薦了5本他認為***的關于計算機科學基礎的書籍
以下為fivebooks.com的Edouard Mathieu對數據科學家Hadley Wickham的訪談內容。
Edouard Mathieu:首先讓我們來談談你的數據科學和計算機科學之旅。今天,你是RStudio的***科學家,也是數據科學界備受尊敬的人物。然而,你最初的背景是人類生物學和統計學。是什么讓你選擇這條路?你是如何從一個程序員開始的,并開始參與數據科學的?
Hadley Wickham:這是一個不斷改變的過程,一開始,我是從新西蘭的高中升入一個醫學院校,一年之后意識到我不想成為一名醫生。我決定回到高中時真正喜歡的東西,那就是編程和數學。我很早就開始編程; 我父親有一臺工作電腦,所以我就利用它探索Word,Excel和Access等東西,編寫小程序和宏。在高中也曾為別人編寫數據庫,并學習了一些PHP來創建網站。
所以在我攻讀統計學和計算機科學學位時,就已經對編程有所了解,大學是在奧克蘭大學,這是R編程語言的發源地;幾乎每個人都在使用它,作為一名學生,我不得不用它來做統計。我發現它非常有趣,于是攻讀了統計學博士學位
Edouard Mathieu:在我們深入研究并討論這些書籍之前,您對學習數據科學時采用的編程語言有何看法?顯然,你***的貢獻是在是在R語言,不過你也參與了其他的項目,這些項目你嘗試將R和Python結合起來,而且許多底層代碼是使用C++,一個數據科學家如果想要有一個扎實的計算機科學基礎,你認為除了R語言還應該學習哪一種通用語言。
Hadley Wickham:這是個有趣的問題。C++對我來說是一個非常重要的工具,我工作的目標是編寫C++代碼,不過從事數據科學不必這樣做了。實際上,如果你從事數據科學的工作,那么SQL的基礎知識是非常重要的,同時你還應該具備R和Python的知識,許多數據科學團隊都使用它們,***擅長其中一種。
下面開始詳細了解下書籍
1、《計算機程序的構造和解釋》
麻省理工已經不再使用這本書來教計算機科學導論了,用Python替代Scheme,而Scheme是這本書使用的語言,這背后的原因可能是這個世界上已經不需要那么多的計算機科學家,簡單來說,如今更需要的是知道如何使用編程語言并能夠將它用于實踐的工程師。
但這本書對于具備高級工程語言經驗的人來說用處很大,如VBA、PHP和R它們是非常好的編程語言,但許多計算機科學家都對他們表示不屑,本書向你展示了語言如何構建,這本書***的價值在于他能給你創造編程語言的信心和知識。
還有另一本書也值得一提,《Concepts, Techniques, and Models of Computer Programming》,它比《計算機程序的構造和解釋》更復雜一些,解釋了編程語言是如何與計算機模型組合到一起的。
2、《算法設計手冊》
這本書揭密了算法的設計與分析,以簡單易懂的寫作風格,介紹了各種算法技術,著重強調了算法分析,全書包括兩大部分,“技術”部分介紹了設計和分析計算機算法的各種方法,“資源”部分給出了大量的參考資源,以及算法實現的各種資源。
3、《程序員修煉之道》
這本書是關于軟件開發工藝,并兼顧了如何編寫良好代碼的書籍,顧名思義,這是一本非常實用的書籍,至少對于我這樣的一名軟件工程師來說真的有幫助,它能幫助你編寫出高質量的代碼,這是我們很少會在大學教育中談到的事,更不用說統計學家了,這本書的目標是幫助你將想法轉變成代碼,并和大家分享
4、《編寫可讀代碼的藝術》
編寫可讀代碼的問題不在于識別問題,而是在于你能夠判斷一段代碼是否是可讀的,以及知道如何讓它變得更好,軟件開發社區經常用“爛”這個詞來形容爛代碼,我喜歡這本書的***原因在于它提供了一系列的技巧來幫助你避免寫出爛代碼。
5、《Style: Lessons in Clarity and Grace 》
有時候看到某個句子或者某段話,會認為它寫的不好或者沒有意義,這本書給了我一些工具來分析一篇文章,并找出它不好的原因。其實這對編程也是有所幫助的,很顯然,編程就是你在和計算機交流,而且你還是在和其他人交流,你沒法編寫一個單元測試來測試人們對你代碼的理解程度。
關于Hadley Wickham
RStudio的***科學家,萊斯大學的助理教授,資深R社區成員,已開發了30多個R包。因在數據處理和可視化開發工具方面的卓越貢獻,獲得專為統計計算而設立的約翰·錢伯斯獎。