程序员有个著名的笑话,这么说的: “老公,晚上回来买一个西瓜,如果看到西红柿,就买两个。”晚上,老公买了两个西瓜回来,老婆问为什么,老公说,“因为看到了西红柿。”
程序员看到了一定会心一笑,甚至认真的人还会辩解说完全没有什么问题,认为这是对于语言严谨的追求。不管两个西瓜吃不吃的完,没了西红柿怎么炒鸡蛋,至少我们可以看到,深入编程到了一定的程度,思维确实会发生不小的变化。
这种差异的本质来自于何处呢?来自于交流对象的变化。编程,本质上就是与机器交流。交流程度越深,思维方式就越会向交流对象靠近。就像跟东北人混熟了性格感觉也更豪爽一些,跟台湾同胞话说多了也变得更加萌萌的那样。
21世纪与其说是生物的世纪,不如说是机器的世纪。机器与算法已经占据了我们生活的方方面面。我们信息换获取来源不再来自于人工编辑的报纸,而是来自于搜索和推荐系统。我们购物的渠道也从线下的人工商店转换成了线上的自助服务。当人类社会积累的知识和行为都变成数据,慢慢地积累在一台台服务器上,能够与机器熟练交流的人,就是掌握先进生产力的人,就是能够引领时代潮流的人。而与机器交流的语言,就是编程,就是写代码。
机器与人类是有极大的不同的。首先一条,就是精确,无歧义。计算机都低到上都是有明确而简单的规则组成的,比如现代计算机的冯诺依曼体系,其背后就是图灵机。图灵机的原理并不复杂,但是表达能力却极强。
因为精确,所以与机器交流的语言,也容不得半点的错误。所有与机器的语言表达,都是直面上的意思,也没有意会一说。说清楚了,才会得到想要的结果,而如果得到的结果不如预期,那一定是没有说清楚,代码写错了。
所以程序员也往往有这些特质,比如沟通的时候特别注重语言本身的意思,而会淡化情绪、表达方式、上下文情景等这些超出文本本身的内容。
比如小姑娘在大热天逛了一下午街,虽然买买买很开心,但大汗淋漓,有些疲乏又有些劳累,于是撒娇似地说了一句“逛街好累啊”,期待着他能元气满满地接一句“那我们去吃好吃的吧!”然后两人满血复活,还能看个电影什么的。
在他的心中可能就只听到了一种抱怨“逛街好累啊”,然后自然而然地提出“那就别逛了,我们回家吧”。这样有些扫兴,但又无可奈何的建议。这些小情绪一旦超出了文本本身,可能就不会被注意到的。
还有一种特质,就是程序员喜欢自省。程序本身是精确的,如果得到的结果不是预期,那一定是自己写错了。写程序的一半时间都在 debug,而 debug 的时候内心满满的都是 “我哪里又错了”,“卧槽,这么SB的错误我都没注意到。” 这种长时间自我反思的状态,也会影响到生活,改变工作以外的思维方式。
人类的思维模式可能比较神秘,但机器的思维模式是清晰的,比如常见语言结构包括变量、循环、函数等等,与人类完全不同。因此,与机器对话,需要把人类的需求,转换成机器可以理解的这些结构,中间的转换很多时候并不容易。人类话语中的小小的变动,都会导致最后编程实现的巨大不同。
所以跟程序员说话的时候,很多时候他们眉头紧锁,一言不发,死死地盯着你,你不要紧张,他们可能只是神情专注地思考,语言背后的每一点意思,反复权衡不同的实现方式,来确保这些需求可以实现。甚至还有有些神经质地追问微小的细节,比如经常是什么频率,马上究竟是要多快,很大的流量到底是多大。需求表达的越精确,就越有助于编程实现。
因为这些思维上的差异,不少人都觉得编程很难学。这个小码哥也同意,思考方式的改变往往是最难的改变,甚至需要多年的培养。小码哥从初中开始参加 NOIP 这样的竞赛,经过高中,大学,研究生,甚至工作了几年,才慢慢感觉自己进入了大门。现在的小朋友们想要入门就幸福的多,有大量课程与培训可以引导。
但是,小码哥认为,虽然培养兴趣重要,但竞赛的存在也功不可没。因为竞赛,有了明确的解决问题的目标,而且一步一步越来越难,循序渐进,能在积累知识的过程中获得超越别人与自己的成就感,让自己真正进入领域。像优必选这样的机器人创造企业,也会推出《铁甲小雄心》这样的机器人综艺,也会发起全球青少年机器人挑战赛,这超过了一般教育机构,提供寓教于乐和寓教以赛的方式,通过提供统一的竞技平台,更能让小朋友们通团体竞技和趣味赛事等形式激发科技创新精神, 检验创意搭建、逻辑编程、运动控制、团队协作等方面的学习成效,收获技能和心理的成长。
21世纪机器的世纪。编程就是与机器沟通的方式,是获取知识的必备技能。小朋友们早日探索,就能早日接受这种不同的思维方式,离未来也就更近一些。
记得点击「在看」,然后转给你身边的朋友们。