第11章 白子说话

看着剩下的110粉丝值,有些心疼。

早知道给其它的属性加点去了。

稍等,为什么昨天还只是一百多,一个晚上就变成了一千多了?

程砚舟昨天熬夜答题的数量和粉丝值有些对不上呀。

登录论坛一看,关于扒一扒真实水平的帖子盖了一千多楼,自己帮助过的粉丝和人吵得不可开交。

刚开始还能够保持讲道理,后面就很纯粹地变成了互相揭短谩骂。

自己的粉丝只是编程水平差一些,大口水战似乎并不怕。

一场小规模的战斗,让自己增加了那么多粉丝值,尤其是资深粉丝,一下从原来3个变成了15个。

原来的3个,两个是爸妈,另一个是崇拜他的小学妹,均属于自发性关注。

而新增的 12个资深粉丝,则是在论坛论战的外力刺激下,从普通粉丝晋升而来。

程砚舟摸摸下巴,这就是传说中的提炼粉丝?

普通粉丝关注但是互动低频,对程砚舟的认同停留在表面。但是争论打破了这种沉默的状态,毕竟高高在上的高级用户一上来就是AOE伤害,有点脾气的都得问候几句他的亲戚们。

反正都是网络论坛,谁也不知道谁,who怕 who啊?

于是在外力的催化下,一部分的普通粉丝就进化成了高互动、强认同,愿意为了维护偶像参与讨论甚至是论战,成为了粉丝当中的核心。

程砚舟总结了一下:

1、情感共鸣:「技术普惠」立场戳中新手痛点,引发「被理解」的共鸣;

2、群体归属感:参与论战让粉丝产生「我们 vs他们」的阵营意识,强化忠诚;

3、沉没成本效应:投入时间精力论战,潜意识中提升对程砚舟的价值认可。

嗯~有点意思。

程砚舟重新开了个帖子:技术普惠不是情怀,是我们的来处

谢邀,人在学校,刚下床。

昨夜的争论已知,今天就和大家聊聊技术门槛。

论坛里关于新手区答题的争论挺热闹,有人说「高手就该攻坚」,有人说「新手需要灯塔」。

一是技术普惠不是向下兼容,是向上溯源。总有人把帮新手和水平有限划等号,好像蹲下来帮人系鞋带,就站不直身子摘苹果了。但别忘了,我们每个人都穿过开裆裤。

你觉得指针不难,是因为有人曾给你画过内存图;

你觉得多线程简单,是因为有人替你踩过竞态的坑;

你觉得架构设计信手拈来,是因为有人把自己撞得头破血流后,写下了那本《架构整洁之道》。

技术的传承从来不是金字塔顶的俯视,而是登山者之间的绳索。

我始终相信:能把复杂问题简单化的人,才是真正的高手;能让新手看懂的代码,才是好代码的最高标准。

二是互联网早期的浪漫,不该死在孤傲。论坛刚兴起时,最让人感动的不是某篇技术神文,而是那些笨拙的互助。

有人用 Word画流程图教新手理解递归;有人把自己的面试题拆解成「每日一题」,每天零点准时更新;甚至有人为了帮网友找一个冷门库,翻遍了整个SourceForge的存档。

那时候没有技术鄙视链,只有你问我答的热乎劲儿。现在我们有了更华丽的框架、更强大的工具,却丢了那份怕后来者走弯路的热乎心。这不是进步,是忘本。

第三,the last but not least。我注意到有“朋友“说,程砚舟只敢在新手区混。

不知道怎么滴,有些想笑。如果你觉得新手问题太简单,欢迎把你眼里的难题砸过来。

写完,程砚舟又通读一遍。

第一点是驳斥,代表当事人给自己的粉丝以支持。第二点是团结能团结的人,每一个高手都是从新手过度,争取一部分中间团体。至于第三天,就是程砚舟想出来的大招。

想要让粉丝值增加,就得树立一个“敌人”,只要程砚舟带着粉丝们赢得一个有一个胜利,那么这些技术粉绝对会更加仰慕他。

帖子一发布,很快坚定支持者编程小哭包就登场了、

编程小哭包:「看完大神的帖子直接泪目!我被求助帖嘲讽得想哭,全是说这么简单都不会,让我不要学编程了,我才接触没多久,是大神给了我走下去的信心。」

「那些嘲笑的人,大概早就忘了自己第一次写代码时,连标点符号都要对着书抄的样子。」

「虽然我更爱看大神撕算法,但不得不说——程砚舟做的事,填补了论坛基础区的真空。就像食堂不能只有山珍海味,也得有碗热汤面。」

「平日干得最多的就是复制黏贴,抄的不都是一些大佬的贡献,到头来放下筷子就骂娘,不孝子。」

「技术鄙视链确实存在,但攻击愿意教新手的人,本身就是一种狭隘。我不做技术保姆,但尊重做这件事的人——毕竟,谁没当过菜鸡?」

互联网最初的时候,是一个理想社会——开放、自由、共享且免费,简直是人类之光的行业和领域。

从Linux系统到维基百科,从免费邮箱到开源社区,那时的硅谷还叫“车库创业园“,小马靠卖 OICQ头像挂件谋生,小扎在宿舍写代码时,或许真的相信“连接全人类“是比盈利更重要的事。

而随着巨头们的逐渐确定,尤其是经融危机后,理想主义时代正在被流量和资本肢解qj,互联网的精神感觉死掉了,成为一种种可悲的商业模式。

其实也没多久,经历过前一世代的人只是老了,还没死呢。

“代码猎鹰”一看风向不对,顿时有些慌了,本来想要潜水装死,谁知道程砚舟的粉丝得势不饶人。

没多久,他就在论坛甩出一道题:「设计一个数据结构,支持 O (1)时间插入、删除、查询,以及获取随机元素,且所有操作平均时间复杂度稳定。」

配图是只戴着墨镜的企鹅,配文:「听说程大神擅长新手题,这道入门级算法题,敢接吗?」

楼下的小黑子们立刻沸腾:

「猎鹰这是拿出了看家本领了呀。」

「这都是竞赛题了,猎鹰你有点为难“大神”了,呵呵~」

「程砚舟要是能够解出来,我就把电脑吃了!」

「……」

白子沉默了。

没有人去嘲笑骗吃骗喝的行为。

基础不牢,地动山摇,新手村还没出,遇到这种小boss的题目

程砚舟的回复带着代码片段空降评论区:

「用哈希表+动态数组实现。哈希表:存储元素值到数组索引的映射,支持 O (1)的插入、删除和查询操作。动态数组:按索引存储元素,支持 O (1)的随机访问。删除元素时,将数组末尾元素移至待删位置,再删除末尾元素,避免数组整体移动。」

后面附上了示例代码。

代码猎鹰沉默三分钟,甩出一句:

「这题是竞赛题,你肯定是抄过来的!」

程砚舟秒回:「你别整3岁滴,有能耐你整4岁的。」

白子说话:

「说背答案的,有本事把解题思路也抄过来?」

「我刚用 Python跑了测试用例,真的全过!」

「我就说大神很厉害的。」

「……」

屏幕前的代码猎鹰有点蒙蔽,程砚舟怎么能答题那么快?

他还没想出办法,就看到程砚舟跟帖。

「你非要不服气的话,我还有第二钟解法」

代码猎鹰「不可能,绝对不可能!」

「利用有序列表+二分插入维持顺序,用集合存储重复值的多个索引。删除时直接弹出集合中的任意索引,通过交换最后元素减少移位成本。虽然平均时间复杂度仍为 O (1),但牺牲了部分空间换灵活性——适合需要频繁插入重复元素的场景。」

代码猎鹰盯着代码抓耳挠腮,只好把问题私信给论坛认识的一个青华姚班的大神俞化成。

半小时后,对方回复:「这解法……有点野啊。」

接下就看到俞化成回复道:「用bisect.insort实现有序插入,利用 Python内置模块的底层优化,比手动维护数组快 30%。用集合存储重复值索引,删除时随机弹出(pop())保证均摊 O (1),比遍历集合找最小索引聪明。」

「他这个思路在于依赖 Python列表的动态扩容机制,以及bisect模块的 C语言底层实现,严格来说不算「纯算法」解法,更像「语言特性+算法」的杂交产物。」

「这是哪个人想出来的?」

俞化成生出了点想要结识的想法。

代码猎鹰陷入了沉默。

战报会说谎,战线不会,代码猎鹰的沉默震耳欲聋。

装死,就代表程砚舟的第二种解法是正确的。

白子接着说话:

「以前觉得程大神是新手保姆,现在发现人家是算法扫地僧——平时蹲在新手区教乘法口诀,关键时刻能徒手解微分方程。」

「真正的高手,不是能解多难的题,而是能让新手相信自己也能解题。」

程砚舟看着系统里飘过一堆的粉丝+1+1+1,乐呵呵地收获着粉丝值。

抽奖亏了1000,得抓点紧赚回来。

由远及近,有一群牲口奔跑的嘈杂。

顾明一把推开门:“起来了呀?姜老师还问你病怎么样了,我说还需要休息休息,你别可穿帮了。”

程砚舟从床上窜下来:“行!请你吃饭。”

刚到门口的两个牲口一听有人请吃饭,立马来了精神。

陆衍生:“老二,我也帮你作证的!”

肖渊跟着点点头:“辅导员也问我了,我很坚定地附和了!”

程砚舟笑了笑:“晚上一起去!”

普通粉丝+1

普通粉丝+1

玛德,果然是舍友,光想着当爹,除非请吃饭才能得到点粉丝值。

“老二发财了呀!”陆衍生喜笑颜开。

“咳咳~”程砚舟装腔作势起来:“刚才在外面我不怪你,现在该叫我什么?”

熟悉的古惑仔味道。

“二哥!”小机灵鬼肖渊很机灵。

油滑的陆衍生纠正道:“公若不弃,愿拜为义父!”

程砚舟想到的则是97古惑仔之战无不胜中蒋天生的一句经典:“做大事,要成功,三个条件:第一,钞票,第二,钞票,第三,还是钞票。”