2

出于很多原因, 我在线下的生活其实挺无聊, 偶尔逛逛公园, 就这样了.
所以更多的时间我还是在网上用文字和人打交道, 微博啦, Twitter 啦,
当然现在图片渐渐多了起来, 从买了 Pad 以后, 视频也多了起来.
以前的我, 相对于同龄人来说也是苍白的, 苍白到再学校里只概念图书馆.
有了电脑以后另说. 总之我生活的环境不是很有文化底蕴跟层次感的.
所以也不信教, 学校里教科学, 就信科学了, 即便没几乎研究物理和数学.

所以理解这个社会的角度, 有很大的差别. 我并不是先认识世界的.
我是先认识到了网络怎样运作, 学了很久怎样写程序构造程序,
用程序能拼凑出一个比较复杂的前端的应用, 只是我后端很粗浅,
但大致上我逐渐在理解从 CPU 内存到上层 MVC 架构, 中间各种套路.
所以我会觉得世界就是一个机器, 别人说世界是模拟的, 我也很好接受.
所有一切都基于最基础的逻辑规律演化而成, 我也还能接受.
这感觉就像看着浩瀚的网络, 说这是人类写的, 或者说是机器运行的, 都一样.

然而人类相比计算机来说, 虽然精致, 但也缺失了很多很多东西,
比如很有趣的例子, 好多次微博上, 设置内部分享, 有人聊递归做事情的问题,
因为递归太厉害, 原来问题的重点反而没有优先搞定, 钻进了牛角尖里.
计算机也有这个问题的, 会被分配到一个任务, 然后执行, 分成更多任务.
但是, 计算机是不同的, 人们设计了算法, 任务不会一直占用资源,
一段时间后, 任务会挂起, 然后分配给其他任务运行, 然后再回来,
也就是说, 当计算机存在问题, 我们会涉及更优异的算法去解决,
当人脑当中存在问题的时候, 我们往往无计可施, 只能指望人们自律.

同样知识的传播也是一个问题, 难题, 困扰人类从最初到现在.
我们都知道计算机拷贝数据很快, 就是下载程序下载数据嘛,
可是比如说要教另一个人下围棋, 哪有那么简单, 而且怎么也快不起来.
人类大脑存储知识的结构并不见得优异, 会模糊, 会遗忘,
从前也许不会觉得怎么差, 但是现在被计算机对比着, 就是越来越差了.
我们拿着自己的特征跟计算机去做对比, 望洋兴叹, 原来还能这样!
一个争强好胜的人, 肯定是不乐意自己充当这样一个愚蠢的角色的.

再说协作这个事情, 计算机也有一些模型, 比如 Actor 和 CSP,
当不同的进程之间存在数据的依赖阻塞了任务, 如何能高效,
计算机当中设计了信箱/管道/队列, 多种多样的数据结构,
以便一个进程能停下, 同时把任务可靠地传递给下一个工作流程,
而不同的进程将数据本身作为协议和接口, 明确接下来的任务,
就这样上千个程序连接在一起, 就像自动化工厂里的机器人.
而人类能做到这样的效率么, 我在网上可没有见过这样的例子.

在这同时, 机器逐渐成为了人们生活当中必不可少的组成部分,
电话电视交通工具这样的传输媒介自不用说, 特别是互联网,
当微博上出现一个热点话题的时候, 往往就开始了病毒式传播的过程,
一个人就像是连接在互联网上的一台肉鸡, 自然而然地被感染,
或者准确说来是一个新闻事件, 每个人都会下载下来作为自己的谈资.
对, 我想说就像是一台机器一样, 只不过这台机器有着很多的奇怪现象.
但是想象一下, 就像 Google 期待的那样, 人们不要思考有 Google 就好了,
把机器当做一个大脑, 人就是一个缓存, 这难道不是很可能的一种未来吗?

我想说的是, 人就像是机器, 或者也很像我们自己写出来的程序,
只是人类更加复杂, 复杂到自己无法理解, 也就是一台复杂到无法理解的机器,
但是那些基本的规则它依然遵守, 只是说有时候呈现出一些随机性罢了,
比如说依赖关系, 依然存在吧, 一个新想法会依赖已有知识, 肯定吧,
几乎没有事情能脱离其原因而出现, 就算是人们的创意或者灵感,
只是这么多年了我们觉得是人类的伟大创造, 心理上不觉得是机械的规则,
而且, 这些机器进一步组成更大的尺度上的机器, 就像是社会学现象一样.
到了这里也许人们看待问题的角度都会有差别, 但我这样说, 就像是集群那样.

比如一个技术社区当中的信息流动, 信息来源, 信息传递者, 受众,
每个单元, 会被创造着尽可能传播和散开, 目标是能被接收到,
受众, 或者说小白开发者, 在实际遇到技术问题需要信息时, 努力会去寻找,
不管他是阅读博客, 看微博, 刷 Google, 怎样获取的信息, 最终获取了,
而传递者在其中而找到属于自己的位置. 我想说的是, 整个就像是程序,
最终的开发者, 就像是求值器, 而获取信息就像是惰性计算,
惰性计算最终会分解到单元, 或者数据源头, 给出一个答案, 然后传播,
而这中间为了性能, 也会做严格求值, 提前提供好数据, 以便快速有答案.

当一个社区的运转开始启动之后, 就像是公司或者国家, 分化出不同的角色的需要,
有的人生产知识, 有的人传播, 有的人消费知识从而创造其他领域的价值,
而且越是为了效率, 这种分工越发明确, 就像在程序里拆分文件似的,
其实不拆分文件也无所谓, 机器也能运行, 但是拆分文件开发效率更高,
除了文件, 还要拆分出各种不同的架构分层, 还要做隔离和防护, 甚至优化,
原本或许只是以为学一门技术做点小事, 但事情就不是那么简单,
大量同时进行的任务, 需要管理, 需要确定智能, 需要约定和规章等等.
它慢慢就变成了像是机器一样运转, 每个人要充当其中的几个齿轮或者螺丝钉.

而一个技术社区到这种程度, 怎样的规划, 就和写程序设计架构有点相似了,
要弄明白设置怎样的结构, 为了会遇到怎样的场景, 然后被迫进行怎样的演化,
于是要优先做好取舍, 尽量保证变化来临时能坚持住怎样的架构模式,
再就是部署实施具体的代码和方案, 开始运行, 一点点排除掉 bug.
这大概不是问题的全部, 但是从设计程序的角度去思考, 是自然而然的一种可能,
所有的人, 就像是数据, 函数, 甚至进程, 他们会相互作用, 但存在规律,
而基于底层规律足够的可靠性, 我们一层一层建造出高楼大厦.
同时, 为了提高效率, 我们不得不去认识规律, 尊重规律, 甚至滥用规律.

从另一个角度也反映出来, 即便做程序员, 也不是擅长写代码这一件事就够了,
如果一辈子只是写代码, 也许. 但是要承载作为社区当中不同的角色, 还要很多,
比如前面说的信息来源, 首先需要有生产信息的能力, 同时保证信息的可靠性,
而其基础, 一方面是研究领域早先的知识积累, 另一方面是实践的反馈,
基于这些开发打磨好信息之后, 还要适当地发散出信息, 一遍准确无误,
然后是传递者对信息进行解读, 衍生, 以便能够更加广泛地覆盖到更多人.
整个过程, 标准化, 文档写作, 站点设计, 渠道推广, 都需要以外的技能.
甚至现在演讲还是程序员圈子一个不大不小的技能点, 才能存成传播的可靠性.

记得罗振宇曾经给一个规律, 新的领域不适合文人开辟, 却需要文人来完善.
编程渐渐体现出来了, 起初只需要一些人探索, 但要广泛传播, 需要很多,
需要大量的语言, 文字, 甚至与演讲, 视频创作, 界面设计人员的协助.
也就是说, 为了把技术社区搞好, 我们需要的不仅仅是程序员,
那些具备表达, 表演, 各种技能的人, 会逐渐进入程序员社区这个无聊的地方,
整个社区需要各种各样的螺丝钉和齿轮, 很可能就会空缺大量这样的位置.
当具备了这些, 技术社区本身甚至能进入到更大的体量, 更不一样的发展方式.
而这从国外的技术社区复杂的多样的形态当中, 可以看到一些样子.

把话题绕回来, 也就是说, 编程领域一些的知识点, 在具体生活也适用,
复杂的程序的运转需要一些内在结构来支撑, 而人类的团体也同样是,
当我们吐槽人们做事缓慢, 亟需改进时, 就像我们改进程序效率的做法类似,
就像程序应该分化职能, 制定流水线一样, 真实的任务也有这样的构造.
在生活当中, 因素复杂, 难以辨认. 然而程序作为一个模型, 却清晰得多.
换一个角度说, 人们总结生活得出规律的做法, 跟分析代码得出结论差不太多.
因此学好程序, 反过来让世界变得更美好, 这种想法还是有点现实意义的.


题叶
17.3k 声望2.6k 粉丝

Calcit 语言作者