程序员创造的宇宙

我是未来数据处理有限公司的高级程序员,日常工作就是枯燥的CURD。有一天,经理要我上线一个DEMO:把持续收到的用户数据过滤后,写入数据库——也就是永不间断的CURD。

程序设计

1. 开始设计

小菜一碟!我很快便完成了任务。只要进程不死,数据就一直在处理。

在某个虚拟的世界里,最原始的单细胞生物诞生。许多单细胞生物只要不遭遇意外,就能永生。

经理很满意,并告诉我开始压测,数据量变成100倍。

我稍微花点时间,设计成多进程架构,自动根据数据量分裂出子进程,而且能跑在多台机器上。

生物开始繁殖和移动,只要到了适宜的环境,就开始复制自己。

DEMO很快就要转正了,但我还需要解决掉一个问题:有些老掉牙的机器,总是遇到资源不足。正常来说操作系统会随机杀掉一个进程,以释放资源。但我并不满足于此,于是增加了一个“选择层”——优先杀死数据处理最慢的进程。

自然选择总是淘汰掉无法适应环境的生物。当生物无法获取足够的能量时,生命宣告结束。

2. 模块化

有了这套机制,我开始专心优化程序的健壮性。每个进程都保留一个独立的数据处理线程,这是它的核心工作。一旦核心线程无响应,立刻就销毁这个进程,释放资源。新增其他的线程用于收集数据、对外部接口作出反应,以提高生存概率。

细胞有了分工,进化出了复杂生物。

很快数据处理核心趋于稳定,频繁的迭代体现在业务上面。在我的架构下很容易实现,只要在基础数据之上继续加工。

生态链出现。

但要支撑我的晋升,需要更复杂、更可靠、更易扩展的架构。我有一个绝妙的想法:当一台机器资源不足时,自动迁移到新的机器上。

动物诞生。

3. 复杂的大型架构

两年后,凭借这个项目,我已经是公司的首席科学家。现在我面临的难题是,环境更庞大和复杂,数据分析的需求也更多变,我希望找到一个一劳永逸的方法,让程序去适应环境,让程序去理解需求。我决定借鉴自己——人类的结构。这次的项目代号为Human,它能够处理极大量的数据,更灵活地胜任哪怕是未来千变万化的业务需求。它不需要改变程序,自己就能构建新业务所需的处理模式。代价是,它不再是一个单一的进程,而是由许多进程紧密联系组成,分工也上升到了进程间,甚至集群间。一组相似的进程结合成子系统,共同为其他子系统提供服务。正如细胞形成器官,由器官形成系统,最后有多个系统组成可适应环境的强大个体。

在虚拟的世界里,人类即将诞生。

4. 重构和重来

又一个难题摆在我面前:经过长时间的运行,这个系统已经千疮百孔,充斥着技术债和兼容性包袱。我要在Human系统上线之前,做一次清洗。这次清洗活动命名为方舟计划:开发一个名为诺亚的程序,给每个运行中的进程打上有价值和无价值标签,所有无价值的进程将被回收,有价值的进程被保留。新的Human系统将在一个相当干净的环境下运行。

上帝吩咐诺亚造一只方舟,每种动物带雌雄一对,然后用洪水清洗地上的罪孽。

重构成功了,但却耗费了我的大量精力。整理屎山似的代码真不是常人能忍受,我复盘以后决定再也这么做了。

上帝向诺亚保证:不再会有洪水泛滥和毁坏一切生物了。

持续观察了一段时间后,方舟计划顺利完成,诺亚进程也被终止。

据说诺亚活了900多岁。

在我的程序里,我就是上帝

程序的世界

Human系统测试良好,在正式GA之前,我需要做的就是偶尔调整一些宏观参数。毕竟程序员直接干预,可能会造成意料不到的结果。我们探索性地修改参数,在小范围内灰度,如果效果良好,逐渐放量。

我现在开始好奇,Human系统已经具备较高的智能,有一天它会觉醒吗?如果它觉醒了,作为一个程序,它的体验会是怎样的呢?

- 如果我是一个简单的排序程序,我知道自己在排序吗?或许我感觉在吃东西,0和1的某些组合令我觉得美味,相反的却令我恶心。

- 如果我是Photoshop这种大型程序,我知道自己读取到的是图像吗?或许在我应用滤镜的时候,会觉得神清气爽,但我并不知道正在给一张照片美颜。

- 如果我是一个数据库程序,我是不是个大胖子(no offence)?我只知道自己很能吃,但却意识不到其实自己在为世界存储数据?

- 如果我是分布式数据库,一个数据库把数据吐给另一个实例……不忍细想。

换句话说,如果我是程序,那么我所处理的任务就像我的本能,我并不知道一切都是在另一个次元的程序员暗中安排的,甚至我所以为的随机、自由意志,都是注定?

当我debug的时候,程序不知道有我在监控着它的一举一动。当我结束进程的时候,没有一个程序知道这是人为触发。即使我暂停了整个系统,也没有任何一个程序能觉察到,因为它们不会再得到时间片。

——是我想太多了吗?只不过一个程序而已,哪来的意识?

——可是人类自己不也是由简单生物进化而来吗?

另一个次元——或许是个高维时空——是否也有一个被称为“上帝”的程序员,在默默地注视着我们?

- 我们能感知到他的监视吗?

- 当气候变化时,是他调整了系统的参数?

- 当有生命终结于(cu)意(si)外时,是发生了bug?

- 我们能感知到“上帝”在打补丁时的Stop The World吗?

我并不关心每一个程序的状态,我只在意是否得到我想要的结果。即使排查一个问题只需要下发一个工具或shell命令。正如上帝也只派天命去干预人间。

我不关注无关紧要的小bug,只要在可控范围内,得到正确的结果就好。正如天地也以“不仁”著称。

我越来越像上帝,也越来越像程序

真实与虚幻

程序与外界(底层系统或其他程序)交互时,是通过接口。也就是说,程序所“感受”到的,不一定是真实的存在,可能是经过处理的属性。

- 比如,程序里的移动,不一定是真移动。

当一个游戏里的角色移动时,其实它的实体并没有发生位置变化,数据还是在同一个地址。只是坐标属性发生了变化。

- 程序里的消失,不一定是真的消失。

当对象超出生命周期后,数据可能还未被回收,只是被标记为可回收。当程序结束后,进程可能还未被释放,而是进入僵死状态。

- 甚至程序里的存在,不一定真存在。

懒加载会在真正使用时才创建。写时拷贝只有在发生写动作时,每个进程才真正拥有属于自己的副本。甚至向操作系统申请的内存,也只在实际使用时才通过缺页异常分配。

我们人类是否也和程序一样?我的五感,只是感官发出的信号加上大脑的加工。我们是不是也在被这个世界的接口欺骗?

在我们的客观世界里,物质是能量的载体,或许在创造我们的“上帝世界”里却正好相反?

在我们的世界里面无形的思想、精神、意识、能量、秩序,可能恰是高阶世界所需要的结果。我们的偏好、倾向、艺术审美,这些难以捉摸的主观意识,正是高阶世界所设定的客观参数设置。

真实与虚幻,在不同的世界互反

代码段与数据段

程序的规律在于它的代码,部分行为取决于数据。而我们目前所有的科学研究,本质上都是通过“改变数据、观察结果”来进行。从这个角度来讲,我们只接触到了世界的数据段,而没有触碰到代码段。就连我们所谓的“基因代码”,也只不过是“基因数据”,不是真正的代码。

我们知道现代的操作系统,会把代码段保护起来,代码段只能读和运行,但不能写。而数据段可读或可写,但不能运行。

这个世界的代码段必定存在于不可破坏的地方。或许是地核,或许是在外星。但可以推测,一定在这个世界的可触达的范围内。因为通常来说,代码段仍然属于进程的地址空间,只不过没有合法的途径可以访问。

或许一旦访问,世界就会崩溃。

恐怕这个世界已经打过几次补丁了,最近的一次可能是量子力学,再上一次可能是相对论。

补丁上线之前的任何观测,都会被推翻,因为后人会以“实验数据错误”、“精度不够”为由,否定过去的证据。

人类寻找代码日,地球补丁上线时

生命的意义

如果说我所设计的程序有一个存在的意义,那必定就是处理数据。我会把它写死进代码的基因里,不能停止,不能被违背。倘若有一天它不能正常处理数据了,它就不再有价值。为了节省资源,我会把程序结束。

反推之,如果说我们人类也是被设计的,那么人类的(原始)存在意义,也会是我们的本能。倘若有一天不能满足了,生命也将终结。

我们无时无刻不在进行着的、一直贯穿生命始终的、一旦结束就失去生存资格的,是呼吸?是心跳?我倾向于能量转换,因为:

1. 能量转换时刻进行,我们无法停止。

2. 能量转换是每一个细胞层面的,是高、低级生物共有的。

3. 呼吸和心跳的本质也是能量转换和输送。

原来活着最大的意义就是活着,其他技能、身心健康、适应性、好奇心,都是辅助。人类进化出了智慧,学会一身本领,目的竟然只是保持呼吸,尽量生存,做好新陈代谢。

正如我们设计的程序,可能只有20%的代码完成核心工作。其余的80%是为了性能、可靠性、健壮性、安全性,目的是在各种场景下都能完成核心工作。

但是,即便生命的原始目的只不过是能量转换,也不妨碍我们追求更高层面的意义,甚至抛弃本能层面的价值。就好比父母对儿女有所期望,儿女也有权力追求自己的理想。

毕竟人类有别于普通的动物:人类有思考能力,甚至会反思自身的意义。狗虽然知道要得到肉骨头,直线最近,但它不会问为什么。

我们已经摒弃了许多的本能,通过克制、延迟满足,与来自动物的本能一面作斗争,发展出了适用于社会性的“逆本能”——道德、纪律、羞耻感、荣誉感。

所以我们完全可以超脱自身的限制,去思考更高层的意义。

毕竟亚当和夏娃已经给上帝上了一课:

赋予智能的同时,就要接受失控

上线

Human系统准备完毕,现在只要我敲下回车键,系统将正式GA。

但是我缩回了手指,我可能还没准备好。

在这个项目上耗费了两年的精力,我已经把她当成了自己的孩子。拥有一个可爱的、听话的孩子,是多么幸福的事。但是她会永远可爱、听话、不叛逆吗?

写到这里,忍不住推荐一个视频,也许大家会对叛逆有更好的理解https://www.bilibili.com/video/BV1XW411p7cY/

然而永远可爱和听话的孩子,真的是我想要的吗?是否我的私心试图剥夺了她成长的权利?与我的期望相比,她的自由意志是否更可贵?我自己能保证永远正确吗?不叛逆能突破自己的局限吗?

正是因为对自然的“叛逆”,人类成功进化到不需要进化的境界——用后天传承取而代之。这种后天的进化使得人类的发展速度远远高于其他物种(当然,这也成为某些痛苦的根源——我们的先天结构跟不上社会进步)。

人类曾否定了父亲,现在轮到自己

我重新拿起键盘。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,284评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,115评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,614评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,671评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,699评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,562评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,309评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,223评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,668评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,859评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,981评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,705评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,310评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,904评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,023评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,146评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,933评论 2 355

推荐阅读更多精彩内容