我们能够成为钢铁侠吗?
(原文发表于简书:https://www.jianshu.com/p/98c22af58052)
钢铁侠 机器学习 元编程
最近接触到了MacTalk的元编程思想,又看了钢铁侠系列,刚好我在公司的机器学习团队,所以这三方面产生了交织碰撞。
所谓的元编程,就是能够操纵代码的代码。类似于人,能够不断进化。钢铁侠,一个人在有一个想法的情况下,能够通过身边的工具造出一个超出当代的产物,人很厉害,工具也很厉害。(后面还有制造新元素,这个最后再讨论)机器学习,通过数学和工程的方法,让程序能够进行不断迭代,最终成为该领域的专家。
关于机器学习,最出名的例子莫过于谷歌的阿尔法围棋。和这个相比,我更感兴趣目前各大工厂里的机器人。我对机器人不甚了解,但我觉得这些机器人的技术应该不止阿尔法围棋里的机器学习那么简单。在我看来,工厂里的机器人和钢铁侠里的那些机械手臂类似,比如那个有点二的灭火器。
机器人始于机器学习,但是不止于机器学习,它更像一个全新的领域。目前机器学习只适用于特定的比较狭隘的领域,你必须对每个场景进行细分再细分。阿尔法围棋只擅长下围棋。
提到了机械手臂,就想到了元编程。机械手臂就像元编程里的那些“元代码”(暂且这么称呼),能够通过它进行再制造或者再创造。钢铁侠通过那些厉害的工具创造出了钢铁盔甲,工厂通过机械手臂进行生产。我觉得IDE就像那些机械手臂,通过Eclipse写出不同业务场景的代码。突然想到我的领导常说的话,要尽量做工具。
前面提到了钢铁侠发现新元素构造并通过搭建离子对撞机去制造它。想到了最近面试中的一些问题。有时问都了解哪些设计模式,几乎每个人都说了解单例。单例模式算是最简单也是大家听过最多的模式了。大家对单例的理解都大差不差,但是通过代码展现却千差万别:有的人直接说写不出来;有的写出来了,但是构造方法没写,说默认没有构造方法,无法直接new不出来;有的写出来了,让改成线程安全的,于是又卡住了。(现在的程序员都这种水平了?)
总结来说,理论很重要,基础很重要。期待现实中能够见到钢铁侠里的那个灭火器。