標籤:

如何讓同事學習掌握c++11/14來提高工作效率?


可能還是只能用C++11/14的新特性吸引他們,如auto, lambda帶來的便利性,以及明白std::move, constexpr等帶來的性能提升,用變長模板後大大減少的代碼量等。若還是被同事說這是語法糖,C++03更穩定,然後繼續選擇固步自封的話,還是請拒絕和這樣的同事共事,畢竟我了解到有很大一批的人都有這樣的想法,確實挺無奈的,C++都發展成什麼樣了,編譯器都在用C++11/14來寫了,還這麼不肯接受。


先從語法糖開始:auto、range-based for loop、萬能花括弧

再加入 lambda

然後就看造化了


C++是適合給少數人用的語言,你們錯在把它給所有人用。

做系統的話,核心在於模塊和協議設計,每一個模塊都能很容易的替換,這樣用什麼語言來實現就不重要了。


首先需要明確一個事情,你能用C++11/14/17寫出精鍊優美的代碼並不意味著對於新手而言也可以做得到。可能他們會覺得寧可多花幾百行也要把代碼控制在自己知識能掌握的程度內。注意不是每一個人對新技術都充滿熱情,特別是這種東西會打亂他們自己的節奏時。

如果維護的代碼有重合的話,採用新特徵反而會使得溝通和開發變得困難。所以對於一個團隊來說,選擇合適的工具/語言可能比選擇最新的工具/語言更有利於提高效率和節約成本。團隊決策不能單純地以技術先進與否為唯一標準。

我自己維護的模板庫包含了C++98(高校一般最多教到這裡),和C++11兩個版本,然後封裝成相同的介面。


C++程序員的心智負擔又變重了,大家還是好好商量一下別再改C++項目才是正事。否則這混合了C++ 98 and Boost,C++ 11/14 的代碼。。 以後要給誰維護啊!!!


作為一個程序員,兩年沒學新東西基本就是學不會了,不是個人意願不強就是能力不夠。

現在的C++新特性和大多數學校教的C++已經完全不是一個思路,對於思路已經固化的人來說,很難

另外——我們的學校教材和思路也脫線太久了


像我一樣, 成為有決定權的leader, 然後直接要求即可


決定用c艹就註定你的工作效率高不到哪裡去了,不服來戰。


工作時要看實際情況,學習成本是一方面,另一方面是工具平台兼容,還有維護舊系統都不一樣。

比如VS平台,我做過一個項目,其中部分庫使VS2005編譯,使用VS2017就是不行,這些庫是公司很早的庫,沒有代碼,最後只能用VS2005,VS2005不支持c++11,那還是用C99。

比如你寫個庫應用,用了c++11,這個庫後來被同事使用,因為特殊原因只能用C99,所以上級讓你提供支持的庫,你只能把原來代碼使用C99 重新改一遍。

所以具體工作看實際情況。實際工作中,一些業務技術更需要花時間去學習,c++只是一門語言,能使用完成工作就可以了,所以說新特性是語法糖也不錯。畢竟很多工作用C99就可以完成。

最後還是要學習c++11/14 ,畢竟新的技術遲早要替代舊技術。還有一些好的地方是c11內添加了一些新的函數標準庫,不需要自己在添加一些boost 庫,跨平台也方便些。


這要求就就跟強制叫人新學一門語言類似了

同意花臉巴兒觀點

C++是適合給少數人用的語言

合作是取大家的交集


公司的編譯器年底前要支持C++11,我現在在寫公司內部測試c++11特性的case。過程中發覺,c++11的一些特性確實很便利。但是前幾天跟百度的同學聊天,他說他們那邊做C++開發的還沒有使用C++11新特性,因為他們使用的編譯器好像還不支持。。。


我覺得可以從推廣一門腳步語言開始,perl, python, ruby, lua一類的。學會了新的思考方法之後自然會覺得c++11好用的。如果只會c++03的要和他們解釋lambda幾乎對牛彈琴啊。


鵝廠員工冒個泡。據我了解,公司用新標準的團隊應該非常少,之前也有人在內部社區討論過,反正是沒得到OS團隊的官方支持。要支持新標準,得升編譯器吧,那可不是小事。就算擁抱變化的Ubuntu 14lts的GCC都還是4.8的,怎麼玩


沒什麼好辦法,只能說通領導,辦一些小型的知識介紹會什麼的,說說新特性的各方面的好處。平時email一些有趣的介紹性的好文章給同事們。如果同事們懶得學,那也沒轍。


show them your code.


跨平台工具鏈編譯不過有個卵用..我所在項目中是禁止使用auto foreach等關鍵字的.模板只有leader能少量使用.團隊水平參差不齊,這些東西帶來的麻煩遠大於便利 也可能是我們團隊太low


推薦閱讀:

為什麼大腦不能長時間集中注意力?
BangWork Weekly Issue#00
怎麼集中精力,一天複習完一門專業課?
聽歌學習和工作真的有助於集中注意力及提升效率嗎?

TAG:學習 | 效率 | C | C11 |