代码改变世界

2013工作总结与2014工作计划(编程方面)

2014-01-01 21:24  IceCrystals  阅读(1950)  评论(16编辑  收藏  举报

这一年就这么过去了。。。总觉得应该写个总结来记录和反思一下。
在编程学习方面: 
    已经在编程道路上走了一年半了,买了大概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.希望能心想事成吧.继续努力! :)向一流程序员进发!

  欢迎大家给我一些宝贵的意见与建议:)