登月程序和可预测性
前些天是登上月球的纪念日,朋友圈常见一篇说登月女程序员的文章,大意是由于在带小孩过程里,考虑到误操作的可能,在代码里增加了防范万一的逻辑--当资源冲突的时候,优先运行关键逻辑,在实际登月的意外状况中起到了作用。
之前写过一篇关于可预测性的随笔,从个人到集体,如果能很好地让自己被别人预测到,那么效率就能提升一个台阶,其重要性超过自己预测别人的能力,因为作为主体的“别人”从数量上远多于“自己”。
我们不妨从这个角度切入登月故事,程序员的思维方式和角色,简单来说就是造物主,如果不从女程序员的、生活实践的假设出发的话,防范意外的逻辑本身是没有什么意义的,换句话说,当遇到真正紧急的情况,人类的自然思维是先做要命的事情,而程序的逻辑仍然是,你之前告诉我要做啥,我就做啥,你没说的,我也不会调整。
因此真正的造物主(如果有的话),是一个考虑得比我们周全的程序员,除了如何从大概率上完成一个事情之外,各种小概率应急情况的应变也都设置好了,“抓大放小“因此是一件自然的事情(因此当我们批评一个人死板的时候,具体又说不出到底哪里不好,可以类比为他的思维方式是一个人类程序员的作品,而不是一个真正造物主的作品)。
我们可以从两个角度来应用这个观点,首先是人。当出现复杂情况时,兜底逻辑是什么?是利己还是利他,是选择牺牲少数还是绝不放弃一个,是讲义气还是讲条文,这些类似三观的东西体现了人根本上的可预测性,互相觉得可预测的人更容易协作。而所谓的专业、所谓的对事不对人,只不过是在一些约定俗成的领域有些共同的三观(比如说,消费者第一,员工第二,投资方第三),方便协同而已。
第二个角度是如何模拟人,现在所谓深度学习也好,信息论也罢,都在还原人脑的工作过程,坦白说越是拆解越觉得真的有造物主,完全无法解释。以一个拟人的互联网产品来说,当出现意外情况的时候,模拟人的真实兜底逻辑,比如要全部删除内容的时候,重复多问几次,这是微观层次,更高的境界是,人类之间不同的三观,复杂情况时如何抉择,也会成为一段兜底逻辑。
例如说是选择牺牲少数还是绝不放弃一个,从程序逻辑来说是一个权重的问题,也就是说,理性思考、量化思考,既是一种让程序具备人类的可预测性的必备前提,也是人类为了用算力提升自己的生产力,而放弃自己一部分天生能力,放大能够用数字表达事物范围的努力。
不过这个事情微妙的地方就在于,现在经过模拟人脑方式计算出的权重,本身是从所谓历史经验的训练集合,根据抽象的统计学来模拟出的数字,我说一句大白话,就是并没有人知道这个权重到底是怎么出来、以及为什么出来的,因为一切的源头就是训练集,训练集为什么是训练集这样,并不是统计学的研究对象。以这样的“根本不知道从哪里来的”逻辑,武装到算力远远超过人类的计算机上,逐步让程序具备接近于真正造物主逻辑的预测和可预测性,这种危险而又莽撞的游戏,想想还真是有意思。