2013工作總結與2014工作計劃(程式設計方面)

IceCrystals發表於2014-01-01

這一年就這麼過去了。。。總覺得應該寫個總結來記錄和反思一下。
在程式設計學習方面: 
    已經在程式設計道路上走了一年半了,買了大概50本技術書籍(TAT省吃儉用2000多啊。。。),看完了大概20來本,大概10來本看了幾遍。深入學習了C++,入門了C#,入門了演算法,入門了作業系統,入門了編譯原理。雖然感覺自己學的挺多,但是暴露出來的問題依然很多。
    1.即使是看了幾遍的內容,依然還是會忘記,應該沒事多多溫習自己看多那些東西,例如當初物件模型可是看了三四遍,這塊抽象基類的記憶體模型以及混合抽象基類,虛基類,虛擬函式表,多重繼承後的這些東西的記憶體模型以及編譯器的處理依然不清晰。在溫習舊知識這塊,我做的還是太爛。。。
    2.對於需要工程實踐的內容,不能僅僅滿足於看過了,看過了還是會忘記,例如effective STL ,exception系列,effective系列,都是出於工程實踐的經驗總結,顯然我目前的閱讀方式不適合太好的吸收書中的內容,特別對於那些C++的坑,沒有太過深刻的理解,後面應該這些書多次重新看,深入思考,寫部落格記錄。
    3.對於完全是工程實踐的設計原則與設計哲學。。。這塊還是學的不是怎麼好。。可能是因為自己沒有太多大工程來實踐吧,還是需要一個比較大一點的工程,可以讓我把我學的所有知識都運用起來,這樣可能就會有更深的理解,像C++的API設計,大話設計模式,這一塊沒有寫上1W上以上程式碼的大工程的錘鍊,就不要談什麼設計模式。。。。目前這塊做的還太弱了。
    4.在下半學期,對於程式設計的學習比前一年感覺少多了,一方面是我學的深入以後差不多目前是個緩慢增長期,設計原則,架構,作業系統,編譯原理,都不是說學習了立即就可以看到效果的東西。而且這些書本身難度也比較大,所以進度就比上學期感覺慢很多了。當然這是客觀上,就主觀上,這學期懈怠了很多,一方面11月份以前工作事情多的一比,我要處理,另一方面11月份以後雖然工作那邊不忙了,但是我個人卻有點懶了。。。除了看書基本沒敲太多程式碼。簡單說是沒敲難度太高,太深入某一個方面的程式碼。對一些新東西的學習也沒深入到專業程度。這一塊做的不好,後面肯定要改,就1年半就要工作了- -再不好好幹就晚了!
在大型專案和工程方面 :
    5.在大型專案和工程方面,我個人覺得以後我能自豪寫入簡歷的專案的雛形,大概就是暑假開始修煉的ZTL標準模板庫還有C++正則引擎。但是目前問題還是很多
    在ZTL標準模板庫方面:
    1.目前還是太弱了,只是提供了記憶體池,型別萃取器,vector,list,map,hash_map,deque,智慧指標,這些的實現,但是這些遠遠不夠,這不過是最基本的罷了
    2.在架構上還有些問題。當初寫的時候編譯器是VS2010,對於C++11支援不完整,有些東西的寫的很醜陋,另一方面,因為個人對於大型專案的掌控力不足,在架構的適用性上API的設計上還是有些問題,這一塊肯定要重寫的,目前寫的最多也就玩具DEMO罷了。
    3.對於寫出的標準庫容器沒有撰寫XML偵錯程式支援檔案。所以除錯的時候很蛋疼。另外沒有考慮多執行緒環境的互斥與鎖,在多執行緒環境下也沒有提供基本的保證,對於異常安全也沒有都提供保證。
    4.改進:重寫ZTL,支援bind,function,那些常用容器,通用演算法,智慧指標,將boost的好用小部件和stl的好用部分整合過來。
    5.需要加上技能點,ZTL寫的太爛的一個很大的原因就是我C++技能點沒有加滿,對於模板超程式設計和模板技巧掌握不足,對於預處理期超程式設計也沒有涉足。所以在程式碼可以實現的能力上完全不能和STL還有Boost抗衡。所以新的一年裡需要新技能get。將這塊知識補足。
    在正則引擎方面:
    1.這個東西在網上找不到太多資料- -找到的都是簡單的一比的那種,和我想做的完全不一樣,想做只能去看別人的原始碼或者自己思考,所以這塊做起來特別蛋疼,我已經寫到了第四版了,但是問題依然很多。
    2.一個是引擎能力不足,目前還不能支援.NET正則引擎的全部功能,平衡組,附加選項,編譯執行選項這些都沒有實現,我希望能做出一個C++版的.NET正則引擎。這塊後面還要繼續研究如何去實現
    3.一個是重寫次數太多,已經第四版了,前幾次的重寫都是因為我想加入更多新功能的時候,發現自己的引擎的架構已經沒法改了。。。每一次都是寫著寫著發現又悲劇了,只能重寫了。對架構這塊的能力還是太弱了。。不過這玩意往後寫壓根就沒有教程去學,多摔倒幾次也屬於正常現象。
    4.一個問題是沒有用CodeGen的思想。重寫了4次了,每次寫都有一種感覺,特別是第三版和第四版,總感覺可以用自動化生成的方式去生成它.我寫的時候就經常是把enmu的標籤複製到notepad++之後直接用正則替換就快速生成大量框架程式碼。然後再手寫一部分,但是手寫的這塊也是有很多重複或者相似的內容,這塊我還是要構思一下,在第五版的正則引擎中加入Codegen的程式碼生成工具。手寫那些冗餘程式碼實在無聊。
    5.還有一個問題是沒有用單元測試和自動化測試工具,一個合格的程式設計師的標誌是能公開的,持續的,維護自己的作品,但是不用測試如何能去維護- -在第五版的引擎編寫中,要參考軟體工程的開發流程,做好規劃,Code,稽核,測試,修改這一系列的流程。沒有大量的測試,寫出的程式碼的維護水平就是不可維護。這塊做的還是太爛了。
 
    6.目前技能水平還是太爛還有更多技能需要get,目前我的編譯原理知識只是皮毛,正則引擎這塊作深入了也沒啥教程,沒有堅實的技術基礎去探索如何實現上下文無關文法的正則引擎,還是太吃力的了,還是需要get更多新技能,不然工作還是不好開展,希望寒假能真的將這個正則引擎第五版做完。
    6.專案還是不夠大,第四版的正則引擎也不過4000+行程式碼,離VCZH聚聚說的用1W+行程式碼的大工程能來練習設計模式這塊還差的太多,就算只有4000行,我發現我對於這塊程式碼的控制力也不足,寫上一個月到後期的時候對於前期實現的一些細節,也不是那麼清晰記得和實現了。這塊還是個問題,對於這塊的解決只能通過更加詳細的設計文件和清晰的思考來解決了,其實這塊也說明了問題,我沒有對引擎設計都思考的非常清晰,對於如何實現都思考的非常深刻就開工,返工重寫什麼的也是必然的,這一塊在下一版的正則引擎上一定要改進。
在下一步想學的技術和想做的工程方面:
工程方面:
    1.繼續去完善我的ZTL庫和正則引擎,希望寒假能夠搞定正則引擎吧.
    2.寒假之後繼續去實現我的ZTL,比起vczh菊苣的輪子,太弱了
    3.寒假後開始用C#寫個文字編輯器
想學的技術:
    1.寒假時候繼續每天2小時的haskell英文資料學習.
    2.寒假繼續學習編譯原理和C++的模板和模板超程式設計知識.
    3.溫習之前學的種種知識,用部落格或者印象筆記總結一下.
寒假之後到年底暫時還沒有太多規劃吧,大體上一個是haskell入門,C++技能點點滿.C#相關WCF WPF技能點點滿.C#的文字編輯器完成,參
Sublime和VAX,對能對C++的模板有智慧提示和補全.
     4.希望能心想事成吧.繼續努力! :)向一流程式設計師進發!

  歡迎大家給我一些寶貴的意見與建議:)

相關文章