- 《编译原理》
- 《链接、装载与库》
- 《Mathematics for 3D Game Programming and Computer Graphics》
- GPU PRO 1-4 选择感兴趣的章节
最近又开始写代码了,之前在上个公司那叫一个安逸啊,整天就看看CE代码,看看书,久而久之,对代码的驾驭能力越来越弱。程序的功底还是写出来的,这个和绘画、玩乐器是一样的道理。一方面需要理论的支撑,临摹别人的技艺,一方面需要不断练习、思考。老练的高手干活就是他根本不认为他在干活,那些思维、动作完全就像是自动化的。另外底层知识永远是重要的,就好比你都不会走路就想要跑,必然摔死,死的很惨。
还有一点小感触,越来越感觉单元测试的重要。并不是说测试必须由测试人员去做,一个程序员自己写完某个功能,自己就得对接口功能进行测试,还需要测试输入边界的情况。这并不需要花费多少时间,功能都是你写的,你自己用一下,写几行测试代码,对之后的功能就可以心安理得地去做,因为不用担心测试过的模块污染之后做的模块。
还有一点小小感触,就是庞大的商业代码不需要花费太多精力去看,你想去琢磨每个模块的代码,根本就看不完。优秀的代码是用来参考的,好比你写文章要引用经典的句子一样。这种庞大的代码看地越多,自己就越写不像代码,总想把自己的代码往那种复杂的结构上靠,但往往简单的结构就可以解决很多问题,用简单的结构解决复杂问题往往就是需要自己独立思考,多实践才能信手拈来的。
还有一点小小小感触,程序员往往喜欢写自己的东西,也有很多人喜欢重造车轮。不过自己造车轮,造个一次就够了,自己写个基础库,想造轮子时就往里加,以后要用到这些基础库时就可以直接用了,不用再重复造啊造。。。我之前就二逼兮兮地反复在造轮子,真是浪费时间。