什么叫做算法的?

2017-03-03

  我毕业的时候,很多同学,对于技术路线有简单的分类,如搞上层的WEB,搞底层的有做算法的。这是一个很模糊的概念。我当初以为熟读《算法导论》并把业务用里面的算法实现出来的职位就是做算法的,可笑不是!我没有搞过竞赛,在学校的时候视野也窄。以为,程序员靠着一门语言学精通了就可以是高手。我的例子也可以说明,好的学校是多么的重要。很幸运,我不断的利用业余时间学习,不断的朝着深入技术的方向,有趣的方向前进着,见识到了我两三年前不曾想到的世界。
  刚进入团队的时候,并没有什么具体的活儿,就是学习OpenGL红宝书并参看CAD系统的代码,理解架构。现在团队还没有完全建立起来,干活儿的只有几个人,还有学生帮着干活儿。一周多以后,我就接到了一个任务,帮着渲染族的同学做一个工具,是他们在实现一篇衣服渲染的BRDF算法的论文时,需要这么一个工具。在我工作以来,这就是我想要的,不想只能利用他人写的框架、库,离了它们就无法工作,想要深入的去搞技术,搞算法,我也终于接触到了这个工作,这也算一个进步吧。读英文的paper倒是没有什么难度的,只是对上面的数学模型和公式不熟悉,也不知道如何使用算法来计算微积分。还好,我还有时间去学习。我选择了Python来做这个工具,工具本身要做的计算并不难,几个公式而已,只是一个简单的功能:从算法生成的图片读数据,需要使用界面来直观的显示,帮助我们检验算法的正确性。我还给paper的作者写email询问算法的数据是如何处理的,但人家没有鸟我。
   14年年底及年后那段时间在读三角化的一个paper,和Triangulation这个很小的三角化库是相关的。说是paper,但是跟一本书差不多。有七十多面,部分是和这个库的算法相关的。我们的CAD程序需要从绘制的边框来生成任意分辨率的三角化网格,用这些mesh来渲染、模拟,来模拟真实的衣服。这对我来讲是非常好的机会,反正有时间,我可以熟悉底层的功能是如何通过算法来实现的。这篇paper里设计到了不少计算几何方面的知识,我这才知道人家机械专业的研究生才是专门搞这个研究的。很人家相比,我怎么感觉人家才更像是程序员呢!唉。我读这篇paper很长时间,都没有很好的理解算法。感觉自己的数学技能并不扎实,现在根本不可能去实现什么算法,能够读懂别人的算法就足够了。我生怕自己的接受能力不够好,理解的不够快,不能很快的化所学为工作。一段时间后,我就接到了别的任务,这个工作就暂时放下了。负责人说这是我们团队人人读需要了解的基础算法,但并不是需要人人都会。我才稍微放松了一些。我需要更多的时间。我只是想做这方面的事情而已,我相信自己将来一定可以做到的。直接读paper有难度,那就先把教科书这个难度的算法都实现一遍(这不也是我13年不敢做的事情嘛),一步一步的来。
  从15年搬到天目山路这边办公区以来,我们的布料模拟团队研发力量逐渐强盛起来了,渲染研发组也是如此。他们的日常任务就是调查领域最新的研究成果,向一些教授咨询问题,从国际期刊上寻找各种论文,理解并使用代码把论文中的数学模型实现出来。所以,所谓做“算法的”,并不是很多学生心中想的那样,这个岗位的灵活性更高,可能从各个专业来人都有,尤其以物理、数学,机械方面的多,而且,做算法的的岗位,大抵需要硕士以上的学历,要求名校。很多深入研究岗位只要博士。工作内容也和《算法导论》没什么关系,这本书是每个普通程序员都要学会的。
  想写这篇文章,是因为三年前我从HDF离职,想要见识不一样的世界,今天总算是能够做一个总结了。我做到了,但是,做的还不够好,不够快。未来有无数的可能性,我还可以去尝试。

如果有任何意见,欢迎留言讨论。


[ 主页 ]
COMMENTS
POST A COMMENT

(optional)



(optional)