内容简介:程序员所积累的编程知识在十年后将有多少变得没用?
为什么知乎上有 8个人邀请,你们都觉得我很老了么?我还很年轻,悄悄的告诉你们,姚老师比我老,你们该去邀请他。
以前学了现在没用的技术,有很多,越数越伤心,还是回忆下 2007年的事情吧:
10年前
1. 业余在玩 Flash 游戏开发,当时页游还没有火,我觉得是个机会,市面上很多页游都是八位机的水平,估计他们以前都没什么游戏开发经验,所以大家都持怀疑态度,我想看看 Flash 的 2D 效果能做到什么程度,于是花了了两周时间做了 Flash 下的第一个小游戏:Flash Game – Final Weapon 。。。
嗯,模仿 PopCap 的 heavy weapon 加了些有趣的元素,比当时所有市面上的 Flash 游戏效果都好一大截,至今为止,仍然有很多市面上的 Flash 游戏没达到这个 Demo 的效果。
2. 带领一只六人团队开发 XBox 360 的预研项目,把公司一套 3D引擎移植到 XDK 的 D3D9下面,D3D8 到9 跨度很大,废了比较多的时间,觉得 D3D9 才是未来。当时 360 的性能并没有说的那么好,单核性能差不多只能到我笔记本单核的 50% 左右,但是它有六个核,和原有引擎的单线程体系差别比较大,因此性能十分堪忧,这个坑填了很久。原有引擎很多基于 SSE 的运算代码全部不能使用了,花了不少时间改写成为 PowerPC 的 AltiVec 指令,最终才将整个引擎终于在 360 上从 “不能用” 变为 “能够一用” 了。当时写了篇关于 360 的优化文章:PowerPC 汇编入门与优化 。
3. 研究游戏同步技术,当时国内没人觉得游戏还有 “同步” 问题,没有任何参考资料,2007年游戏市场上清一色的 MMORPG 游戏,大家觉得只有做 MMO才是挣钱的。我看当时网游里 95% 的 RPG游戏,在对比单机游戏上只有 39%的 RPG比例,觉得十分不合理,玩家迟早要厌烦,RPG垄断的局面必然被打破。但是传统 RPG那一套在快速动作游戏上基本没法行得通。我不断的抓包,推敲模拟传统局域网游戏和国外快速动作游戏的同步方式,写了篇文章:《帧锁定同步算法》配合之前写的《网络游戏同步法则》以及《影子跟随算法》,基本上从两个方向讨论游戏同步的两大核心方法:帧同步和状态同步(客户端预测插值)。
4. 学习策划知识,翻译 MUD之父 Richard Bartle 的《MUD玩家分类理论》,当时游戏“成就系统” 在国外刚刚兴起,国内游戏还没有这个东西,觉得十分不错,我又翻译了 《成就系统最佳实践》。
5. 弄 server 内存分配优化,参考 kernel 的 slab 内存分配算法,于是优化并重新设计了一套 slabtree 分配算法,给服务端整体内存分配性能提升了一倍,不再受运行时间和碎片的影响 。大致原理见:如何设计内存池? – 知乎
10年后:
1. Flash 基本挂掉了,没人再提了,不过如今页游还是在发展,只是远没当初那么火爆,当年学习 Flash 的 程序员 都纷纷 cocos 和 u3d了,现在做页游想招聘一个 Flash 程序员更是难上加难,不过 Flash 的 API 我觉得设计的真的很漂亮,我见过 2D 引擎里比较上乘的接口设计了,今天很多用 H5封装的游戏引擎,比如白鹭引擎,没事扫了一眼,他们从对象树到 API名称,还是再模仿 Flash 的接口,可见影响力有多大。
2. 360也挂掉了,当年游戏机清一色的 PowerPC (主机)和 mips(掌机,PSP)架构,如今换成了 x86(主机)和 arm(掌机)结构了。D3D9 也早已被淘汰。
3. 同步技术到今天都还在很多讨论,作为研究的比较早的人,我的三篇文章曾经帮助了不少游戏解决他们的同步技术。《街机三国》的制作人跟我说,当时做 DEMO就是卡在同步上,后来看到了我的 《帧锁定同步法》解决了《街机三国》的同步问题,最终项目得以立项,然后他们就发财了,我得到一句真诚的 “感谢”。听说《王者荣耀》也还在用基于 “帧同步” 的改良方式。
4. 当年花过好几年的时间学习策划知识,业余也喜欢自己兼任策划和程序做些小游戏,但如今成就系统早已不是什么新东西,巴图的理论也出现了更为科学先进的玩家分类方法的论文,加上 2009 年以后我就不做游戏了,这些知识基本也就白费了。
5. 后来发现和 tcmalloc 很像,用了 7年这套代码,比 libc 自带的 malloc 强太多了,一路都是最好用的内存分配算法,后来我自己忙其他项目懒得添加新特性和继续优化就换成 jemalloc 了。当年 “内存分配” 这个技术,但凡有点经验的人,都会来两手,也是比较关键的模块之一,如今好玩看看就行,自己重新实现边际效用太低。
总结
总结下,翻翻历史,以前学过现在没用的技术实在是一大把,我承认技术是有 “道” 和 “术” 的区别,我写了十多年代码的时候以为 “术” 容易淘汰,而只有 “道” 就能长存,一旦掌握了恒久不变的道,就可以以不变应万变;而又写了十多年代码以后发现从更长的尺度上来看,并没有一成不变的东西。
道法精深,短期是可以帮助你尽快的掌握运用新的 “术” 但是随着具体实践的不断发展,人类认识世界的范围逐步扩大,理论体系这个上层建筑的 “道” 也需要不断修正,推陈出新,适应新的实际情况。
早期基于的端游开发经验,帮我在 Flash 平台上可以更短的时间内掌握要点,并做出超过同期水平的东西。手游兴起后,我虽然没趟这滩浑水了,但看到很多第一批成功的团队,也都是早年在端游或者页游上有经验的人。
另一层面上,道也不是一成不变的:以前积累的各种单核技术下的 “道”,碰到 360 这种 6核cpu,每个核都不行的体系,基本全废了;以前写代码,每一行我都想追求极致性能的做法,后面变得没那么重要了;内存分配算法,在某一阶段内自己可以做到领先,但不能持续了解最新相关方法,不持续迭代,兴趣转移了,隔段时间也就被 jemalloc 超过了,所以也并无一成不变的算法。
总之,基本原理要掌握,不能成天只搞具体技术忽视理论提高;也不能痴迷纯粹的 “理论”,还是要勇于实践掌握新进的 “术” 才能更好的迭代进化你自己的 “道”,否则空有理论,只能坐而论道了。这不,我一把年纪了,最近几个月还在玩 beautifulsoup4 做爬虫呢。
并没有什么 “一成不变” 的 “基本原理” 可以让你学一次就吃一辈子的。
钱学森不是说过么,脱离工程的理论,是没有价值的。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 90% 的程序员,都没用过多线程和锁,怎么成为架构师?
- 可怕,原来 HTTPS 也没用
- 抓包神器:tcpdump! 我还真没用过
- 校招面试心得看得再多也没用
- 应用层加密普及后,网络层压缩就没用了
- [译] 求你不要再写没用的提交信息了
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Design and Analysis of Distributed Algorithms (Wiley Series on P
Nicola Santoro / Wiley-Interscience / 2006-10-27 / USD 140.95
This text is based on a simple and fully reactive computational model that allows for intuitive comprehension and logical designs. The principles and techniques presented can be applied to any distrib......一起来看看 《Design and Analysis of Distributed Algorithms (Wiley Series on P》 这本书的介绍吧!