最近在学习cuda编程的相关内容,对于CPU(Central Processing Unit–中央处理器)和GPU(Graphic Processing Unit–图像处理器)的内部架构有了一定的了解,学习越深入,越加感觉到这一个个的器件其实就是一个个小型工厂。
以CPU为例,其内部主要包括运算器,控制器,寄存器,总线,类比到我们现实社会中,这不就是工厂里的流水线,管理部门,仓库,以及道路吗?
GPU更狠,为了提高效率,直接把控制器给压缩掉,把多出来的空间都做成运算器,类比到现实社会中,不就是简政放权,提升效率吗?
当然,我这么说可能是因果关系给颠倒了,正确的顺序应该是当初工程师在设计CPU和GPU的时候,其实就是按照我们工厂的运行模式来设计的。
理解了这一点之后,我突然觉得我整个人的思路一下子就开阔了许多。我有段时间一直认为从事管理工作是没有价值和技术含量的,不就是分配任务,发号施令吗?这活谁不会呢?还是技术工作有意义,跟器件芯片电脑打交道,用自己的智慧来编写代码,用代码来解决实际问题。
可是现在我突然认识到,管理工作和技术工作不都是一个工作吗?本质上都是为了解决问题,只不过一个是控制一群人一起来解决问题,而另一个是控制一堆器件或一个芯片来解决问题。
类比于现实世界,在电子的世界里,代码就相当于语言,不同的编程语言就相当于我们不同国家的语言,编写程序就相当于跟芯片进行交流,程序质量高不高就相当于我们的语言水平或者说管理水平的高低,程序效率低下就相当于我们管理的组织臃肿懒散,程序崩溃就相当于我们管理的组织停牌……
我们有时候之所以觉得编程这些工作相比于平时的管理工作很有技术含量,其实只不过是因为我们不会这门语言而已,我们不会编程语言,所以我们没法跟芯片进行交流,相反,我们都会说中文,所以可以正常跟其他人交流,但如果让你去管理一群美国人呢?要是你不会英语,你一样会觉得很难。
编程语言就是我们和芯片交流的方式,它和我们平时所说的中文没有本质区别,只要掌握了编程语言,就懂得了如何和芯片打交道,那么也就知道了如何调用芯片这个小型工厂来生产我们想要的东西了。
管理工作也好,技术工作也罢,本质是都是通过让一群人或物协作解决某一个问题,并且从这个角度来看,管理工作更有难度,因为人的思想是容易波动和脆弱的,同时人的效率和产出也是难以量化的,相反,物的稳定性则强得多。
不管是管理工作还是技术工作,能否做得好本质上还是取决于我们自身,只有我们个人的认知水平够高,我们才能真正协调好人和物,从而发挥出他们真正的效能。
芯片就是工厂,器件就是不会思考的人,人就是会思考的器件,从管理的角度来看,两者没有本质区别,目的都是为了解决问题。