繁忙的日子彷佛隨着炎炎夏日漸漸遠去,有人忙着放假,有人忙着旅遊,有人忙着補覺……那麼,你的選擇呢?別急着告訴柳貓,請看完後面的內容再告訴我~~程序員
你有兩個選擇:算法
若是你以爲選擇1)更適合你,那麼關掉手機和筆記本吧,真正地放鬆一下!編程
可是若是你傾向於選擇2),那麼這篇文章就是爲你準備的。網絡
有 7 種方法幫助你利用夏天真正提升 C++ 。以後我會給你一些小技巧來幫助你真正實現所選的目標。架構
用 C++ 來建一個你本身的小項目是一個很好的試驗方法,並且能經過這個項目真正理解程序的運行。另外一個優勢在於你能夠徹底自由地決定使用什麼組件。這樣你可以提高這一年沒有權限/時間使用的語言特性和庫組件。編程語言
在我去年的夏季項目中,我實現了一些區間適配器,這讓我學到了超多東西。因此我會把這個項目的細節告訴你,這樣你可以獲得一些靈感來構建你本身的項目:函數
若是你不熟悉 C++ 中的區間(Ranges),請參考《Ranges: the STL to the Next Level》學習
明確理解區間,而區間是當下一個很是流行的 C++ 特性, 練習變參模板(variadic templates)的使用, 初步接觸模板元編程(template metaprogramming), 而且這些都是逐漸才能體會到的。網站
若是你在這種項目上有任何須要幫助的地方,柳貓能幫上忙的地方,能夠私信柳貓,必定竭盡所能~~spa
我會發佈一個 C++ 的書單,可是我如今要給你一個選擇。我認爲做爲一個程序員要讀的第一本書就是 Steve McConnell 的《代碼大全》。儘管這本書不是專一於 C++ 的,可是它把寫好代碼要注意的幾乎全部方面都教給你了。從寫一個 if 語句(沒錯,有好多方法把 if 語句搞砸)到分配類責任,再到代碼審查,《代碼大全》涵蓋了軟件架構的全部方面。在讀完這本書之後你永遠不會還用同樣的方法來編程。
若是你尚未讀過《代碼大全》,你應該去看看 Scott Meyers 的《Effective C++ 》。我建議《Effective C++ 》要讀兩遍。我已經讀過三遍了,可是我想兩遍的效果應該同樣好。儘管這本書是在 C++ 11 以前寫的,可是大部份內容在今天也仍然是有用的。並且《Effective Modern C++ 》涵蓋了C++ 11 和 C++ 14 中的特性,能夠做爲這本書的補充材料。
今年夏天我要看的是 Eric Evans 的著名書籍——《領域驅動設計》(Domain Driven Design)。《領域驅動設計》涵蓋了領域專家和開發人員之間的密集交流,創建領域模型以及在討論模型與代碼時使用同一種語言。
儘管這本書的內容頗有價值,可是讀起來並不容易。我發現一個有用的小技巧:對每一小節先讀第一段,再讀最後一段,最後讀其他部分。這樣你能更好地理解做者的寫做方向,節省時間。
我但願經過顯示代碼中的域,來找到使代碼具備表達性的靈感。固然啦,我會在博客上分享這些靈感的。
這只是一個選擇,我還會作一個更全面的書單。
雖然聽起來很稀奇,可是學習一種新的語言可讓你對你所的專一語言得到更深層次的理解,並且是最有效的方法之一。而且新的語言和你本身使用的語言差異越大,效果越好。
新的觀點認爲,其餘編程語言會讓你對編程有更通常的理解。因爲你太熟悉本身所用的語言,每每會忽略它的特性,而用不一樣的方法解決問題可以使這些特性凸顯出來。即便你不會使用新語言來寫產品代碼,所接觸到的新概念也能爲你提供能夠應用到主語言中的思路。
若是你用的是 C++,那麼我推薦你去學習一下 Haskell 語言。Haskell 是一種函數型編程語言。若是你尚未試用過函數型編程,那麼你能從它的概念中得到啓發,並重新的角度看待 C++,尤爲是 STL。
柳貓已經花了很長時間比較網絡上各類學習 Haskell 的資源,這裏柳貓推薦一個C語言交流羣710520381(推薦碼:柳貓),這裏免費分享更多資料和學習課程,不管是想要接觸編程的小白仍是期待轉行的大牛,都歡迎加入。
一旦你學完這門課程,你能夠在 data61 課程中得到不少 Haskell 的練習,包括填空補充代碼。你可以經過這些練習來整理不尋常的函數型編程的相關知識。
STL 是 C++ 中處理容器和算法的部分。它很強大並且並不難用,卻沒有它應有的名氣。要想掌握 STL 須要有至關的知識積累,可是這是值得的。它是一個神奇的方法,能使你的 C++ 代碼更具備表達性也更健壯。
柳貓正在整理幫你掌握 STL 的資料,叫作 STL 學習資源。尚未完成,若是它完成了,毫無疑問,柳貓會當即更新在交流羣裏,我想足夠讓你在這個夏天的大部分時間都很充實了。
C++ 11,C++ 14 和C++ 17給C++ 和標準庫帶來了不少新的特性。即便你如今,好比今年夏天,沒有在產品代碼中使用它們,它們也都來了。而且你能夠當即把它們應用在你的項目中(看上面的第1條)。
有些特性很好掌握,好比 lambdas。儘管精通 lambda 表達式須要掌握不少細節上的東西,可是學會它們的基礎用法不須要花太多精力。
因此部分特性很好理解,只須要一些好資源和時間來熟悉它們。好比 Scott Meyers 的《Effective Modern C++》(見上面的第2點)涵蓋了 C++ 11和 C++ 14 的大部分特性。
若是你不練習的話,是沒法理解不少特性的。尤爲是變參模板,它是現代標準 C++ 的一個重要特性。上面第一點中的項目和其餘任何包含變參模板的項目均可以做爲練習。
Boost 是設計良好的 C++ 庫的集合,可移植且開源。不少現代 C++ 的特性都源自 Boost。
瞭解 Boost 的內容很重要。有兩個緣由:第一,在代碼中確實須要它們,由於 boost 主要應用於綜合使用;第二,更重要的緣由是即便你在產品代碼中沒有使用 boost,它能夠給你一個通用的精心設計的 API 和 C++ 代碼模型。留心 boost 中的內容能夠給你本身的設計帶來靈感。
學習大量的 boost 庫的一個方法是閱讀 Boris Schäling 的書——《The boost C++ Libraries》。 特別地,它沒有包含 Boost Hana。Boost Hana 是一個流行的現代 C++ 元程序庫。實際上,學習 Boost Hana 能夠做爲今年夏天的一個目標。
各個視頻網站,騰訊,慕課,潭州等等……沒有最多隻有更多,固然,若是你實在是選擇太多沒法決定先看哪一個視頻,也能夠私聊柳貓或者在評論裏留言,柳貓會提供本身的意見幫你決定~~
如今已經有不少事要作啦。一個夏天以內不可能作完這些全部事情。因此你應該選擇其中一部分來作,而且提早定好目標。不要從一件事情跳到另外一件事情上,不然夏天會很快過去並且你也完不成任何一件事。
此外,要想完成你的目標,你須要集中注意力。一個實用的方法是使用番茄工做法,我是用 kanbanflow 來實現的。我如今就在使用這個方法並且結果也不錯。
你的目標是什麼呢?如今就選擇兩個目標吧,寫在評論區或者私發給柳貓,讓柳貓瞭解一下大家的選擇吧~~