2020年12月7日,由腾讯游戏学院举办的第四届腾讯游戏开发者大会(Tencent Game Developers Conference,简称TGDC)于线上举行。来自重庆帕斯亚科技的CTO谢怡欣先生,分享了他对于向量化编程的一些看法。以下是分享视频和文字实录:
大家好,我是来自重庆帕斯亚科技的谢怡欣。
首先,我想向大家简单介绍一下我的经历。之前我在加拿大温哥华工作了几年,是Offworld Industries的一个高级程序员,参与制作了一款射击游戏《Squad》。我还做过一个手游,叫《Lionheart Tactics》。现在我在重庆帕斯亚科技担任技术负责,帕斯亚科技是2011年成立的,我们专注于高创意度的沙盒独立游戏。我先后参与开发了《星球探险家》、《波西亚时光》和《超级巴基球》这些作品。
在演讲开始之前,我想先给大家看一个视频。大概在2016年的时候,我在Youtube上看到的这个视频,来自于一个叫Mike Acton的程序员。他在视频里面就讲述了一个他称之为面向数据编程的概念。当时我看到那个视频是非常的不自在,因为2016年的话,应该是属于我刚熟悉面向对象编程的阶段。当时他说的那些东西,基本上就是说你学的那些东西,基本都是“垃圾”,都没什么意义。这确实很难让别人接受。但是我在潜意识当中,却又觉得这个人说的话,某些观点是挺有意义的。我接下来要跟大家分享的视频,就是他做技术分享之后的问答环节。我们可以看到一个比较年长的业界人士,对他分享观点的一些质问。结果Mike Acton就直接把话给他怼回去了。请先看一下这个视频:
确实态度不算特别的友好。一个很偶然的机会,我和一个做HR的小伙伴,就聊到了这个事情。我和她一起看了这个视频,她就提出一个观点,就是这个穿橘黄色衣服的Mike Acton,他的姿态是比较有攻击性的。就是他很喜欢把手举到肩膀以上,这样的话实际上是给观众一个信息,就是我说的东西,或者是我的地位比你们要高。可能这也是我当时听到他说的话,觉得难以接受的原因之一。当然,如果说有机会Mike Acton能看到我今天的演讲的话,我想说我肯定不会有任何的不敬,我非常欣赏和佩服您的才华和知识。
这里有另外一个链接,这个链接就是很早以前微软一个写Windows的程序员他的一个抱怨。他就是讲Windows为什么比其他的操作系统慢。他说因为Windows程序实际上是由于商业化开发,然后迭代了很多很多次,真正写了很多代码的那些程序员,可能早就被类似亚马逊和谷歌这些公司挖走了。剩下的一些程序员,都是相对来说没那么多经验,改代码也不知道从何下手的。
从项目管理的角度说,实际上做代码清理是不产生任何价值的。如果是增加新的功能,那就是增加它的价值。但如果只是清理代码,可能就不会被你的领导所器重。然后说一下面向对象编程。在我看来,根据程序员自身的水平,他对于这种编程的理解是相差比较大的。就算是很高级很有经验的程序员,他对面向对象编程的一些设计模式,也会有一些细微的差别。在经过多次修改之后,肯定也都会产生刚才那个程序员抱怨的那种大片大片的死代码。但是你又不是很敢删,我相信很多在座的程序员都有过这样的经历。
此外,面向对象编程实际上对缓存是很不友好的,但是这一部分资料网上有很多,我就不再赘述了。还有一个点是,我不知道大家有没有发现,现在主流的游戏软件、游戏程序或者说应用程序,都只是用了一到两个线程,很少有多线程能得到充分利用的。现在大多数的中高端硬件,都是支持十个以上的线程,而向量化编程的话,实际上是可以充分利用这些计算资源的。
接下来,我想说一下为什么需要了解向量化编程。在我看来,向量化编程实际上是提高程序员的内力。内力是什么东西?就比如说张无忌他的内功深厚,他学了九阳神功之后,感觉他学其他的武功都很快,基本上就是信手拈来。如果你作为一个程序员,有很强的内功的话,那你要学那些比如说游戏客户端、服务器、全栈工程师,包括多线程编程什么的,都会变得很容易。我觉得至少从我一段时间的学习经历来看的话,我觉得真的是有这种效果的。
还有一点,简单说一下。向量化编程实际上是简化了多线程加锁的逻辑,基本上是没有什么锁的。或者说,锁这个概念已经从框架层就给你模糊掉了,你是基本用不到这种东西的,所以说是一个很好的简化。文章来源:《电脑编程技巧与维护》 网址: http://www.dnbcjqywh.cn/zonghexinwen/2021/0320/818.html
电脑编程技巧与维护投稿 | 电脑编程技巧与维护编辑部| 电脑编程技巧与维护版面费 | 电脑编程技巧与维护论文发表 | 电脑编程技巧与维护最新目录
Copyright © 2018 《电脑编程技巧与维护》杂志社 版权所有
投稿电话: 投稿邮箱: