写年终总结前,照例翻了一下今年以来的blog, 意外的发现2019去年的年终总结同样拖到很晚。不过今年之所以拖这么晚,大部分原因是今年特别冷。坐到电脑前只顾着瑟瑟发抖了,哪还有心情写年终总结。
翻了一下去年的目标:
- 《概率论及其应用·卷1》
- 《具体数学》
- 《计算机程序设计艺术》
- 重新温习一下以往学习过的知识,看看能不能再次打破一下这几年形成的思维定式
总的来讲 有部分完成。
《概率论及其应用·卷1》看了一大半,该看正态分布了,不过现在应该差不多忘光了。
《具体数学》似乎没什么进展
《计算机程序设计艺术》看到卷2的线性同余随机算法推导,其直接产物就是我认为游戏宝箱概率垫刀的根本问题就是因为所有人共用的一个线性同余序列,虽然最终所有人的统计概率都相同,但是理论上短期内对每个人进行分析会有概率分布不均的问题
对于第四点,我刷了2个月的leetcode, 动态规划似乎有部分突破,但是依然没能显著打破思维定式
再说说计划外的收获。
性能篇:
将时间拉回到刚毕业时,那时写代码主要是应用软件,主要考虑的是可扩展性可维护性,很少去考虑代码的性能问题,一般不写过于脑残的代码,几乎也不会碰到过性能问题(当然代码量少也是一方面,我记得当年离职前统计整个软件的代码量也才2W+行不到)。
随着后来转行去做游戏服务器开发后,可能是动则过千人的并发量,让我对性能产生了恐惧,也有可能是《计算机程序设计艺术》计算指令周期的方式让我产生了错误的心理暗示。总之,我后面写代码慢慢变得总是性能至上。甚至在写C语言代码时都会心里粗略估算编译器的优化程度,cache的命中率等。
事实上这种错误行为让我付出的惨痛的代价,我为了能够获取理论上的最高性能,经常会写出很Trick的代码,而这些代码经常会漏掉一些边界,却又不是所有边界。以致于很多bug逃逸到了线上, 当然我可以说是测试力度的不够。但是从内心来讲,我认为这和我写代码的trade-off有很大关系。
再后来新写的代码时,我都尽量强迫自己在做优化之前,先估算一下可能的数量级再决定优化不优化。
当然想做到这个并不容易,我总是不自觉的想使用复杂的方案以期望获得更好的性能,甚至潜意识就将简洁的方案给否掉了。这真的很难!有时我就在想,我转了一圈其实我要的不过就是更好的模块化设计,这跟我刚毕业时没有什么两样,那我这7年是否是绕了一个大圈,我现在还没有答案。‘看山是山’和‘看山是山’到底有什么区别?也许惟一的区别就是,我知道理论上可以有更高的性能,但是我就是不用。
渲染篇:
这绝对是一个值得一提的大事,我从2015年就在折腾学习渲染,但是一直就不得其门而入,在2018年时总于算是找了一个门缝,然而虽然我经过了训练,但是我发现我连拍着胸口说我了解渲染的资格都没有。
渲染这个事让我在2020年一个很偶然的机会找到了入门的大门(《GAMES101 现在计算机图形学计入门课程》),我现在已经可以挺起胸口自信的说我渲染入门了。对光栅化,光线追踪,PBR,微表面这些名词再也不是望而生畏了。
最后:
2021照例延续2020的作来继续下去,我对这些基础学科很有信心。
《概率论及其应用·卷1》
《具体数学》
《计算机程序设计艺术》
继续深入学习计算机图形学(听说《GAMES202 高质量实时渲染》马上要开了)