婆罗门
精华
|
战斗力 鹅
|
回帖 0
注册时间 2016-3-16
|
本帖最后由 Lunamos 于 2020-3-14 18:17 编辑
你说的不叫“造轮子”,你说的叫“要不要发展基础技术或者基础科学”,这是两码事。
这两个概念其实很容易区分,但你故意把它们混为一谈了。
任何层次的事情,都有任何层次之下的轮子,每个人都在用。
如果你做游戏,那当然也很好,那么你写游戏的轮子就是别人做好的引擎工具链,比如渲染器就是其中一个。
如果你的目标是做渲染器,那当然也很好。你的轮子就是别人做好的Rasterization API,计算材质Graph的包,光线追踪的引擎
如果你要做光线追踪,那当然也很好,你的轮子就是空间搜索树的快速建立,光线几何的快速求交,不同的搜索光线空间MC积分的方法。
如果你要做光线几何的快速求交,那当然也很好,你的轮子就是AVX,CUDA,就是那些快速求交算法本身的改进空间
如果你要做支持AVX、CUDA的SIMD硬件,那当然也很好,你的轮子就是Cadence, Synopsys的工具,定义好工艺的IP
……
这件事可以一直列下去。关键在于,你的目的是什么。
你要去做CPU,所以你去做CPU了,这不叫造轮子。
你要去写游戏引擎,所以你去写游戏引擎了,这不叫造轮子。
你要去证明哥德巴赫猜想,所以你去学数论了,这不叫造轮子。
这都是他们的目标,他们要做的就是这件事本身。
原因或许有很多,比如个人爱好,比如技术封锁,比如好奇心,比如工业界的工作,比如学校里的学习……这都是毫无问题的。
什么叫造轮子?
你要去做游戏,所以你去写CPU了,这叫造轮子。
你要去做网站,所以你去写服务器操作系统了,这叫造轮子。
不知道逻辑清晰了没有?
只要轮子满足需求,就不要去造它。这不是什么难以理解的事情,更不是什么“国人鼓吹”,这是普世适用的真理,也是所有工程师都在用的现实准则。比如你所提到的“人类的科技知识就是不断的踩在前人的肩膀上”,指的无非也就是这件事。别人将其他应用层的轮子抽象成为可以直接调用的工具,就是为了让你能把你这个层次的事情做到最好。
当然这也不是提倡不求甚解,如果你发现了解更多会有助于你项目本身进展的时候,自然会去了解底层的东西,而不是一开始就转移火力,递归学习。同时,了解更多是为了“不重复发明轮子”。这里注意了,“不重复发明轮子”和“不造轮子”是两件事。前者的意思是避免思而不学,导致重复发明,避免浪费智力。后者的意思是利用抽象和复用减少工作量,目的是避免浪费劳动。
为什么不提倡“造轮子”呢?它的危害在于,你很容易因为无法完成自己的目标而丧失动力和斗志,最终一事无成。我相信吃过递归学习亏的人不少。从零开始学别人已经造过,而且比你这个新手造得好得多的轮子的造法,想要达到工业级强度的时候,恐怕已经须发花白——与此同时,别人的游戏已经Release了二三十款,或许成为了GDC终生成就级别的游戏制作人。归根结底,你到底想做什么事,有没有做到呢?时常回想初心吧。 |
|