序
前几天,我把软件工程领域的著作《大教堂与集市》看完了,一直在思考怎么写读书笔记的时候,关于GPT-4横空出世的消息铺天盖地。当我真正的体验过了自动生成代码和图片的时候,一种莫名的恐惧感占据着我的大脑,整天都像掉了魂似的。
玩泥巴与通天塔–《大教堂与集市》
如果把时间倒退300年,听到蒸汽机轰鸣的人们,是恐惧?激动?还是无动于衷?只有很小一部人认识到,这昭示着人类进入了一个崭新的赛道。几十年后,人们才意识到,工作被机器抢了,于是第一次出现了人类仇视机器的情绪,不少人还参与了砸毁机器的运动。
正如经济学家阿瑟说的那样,技术形态与经济结构相互形塑,技术推动着经济结构变革,经济结构放大了技术的力量,我认为GPT-x的产生就是这股力量,不亚于18世纪英国的蒸汽机对人类经济社会的影响。
大教堂,集市
或许是攻读软件工程的缘故,我对科学、技术与工程的界限还是有一定的认识的,也能理解计算机和软件之间的异同。正因为如此,我对自己的专业领域很有要求,不论自己身处何方,读研究生还是一线研发,亦或是工程的甲方。
简单的来说,编译原理是科学,python的编译解释器是技术,至于集成的PyCharm就是一个工程了。
计算机工程,泛指的是基于计算机硬件和软件协同工作系统的研发或集成,能够提供特定的功能,完成特定的操作。
软件工程,指的是基于某一个确定目标的项目,如同通过技术和管理的手段保证项目能保质保量的如期交付。
这本软件工程的著作,当然讲述的就是如何能交付更有质量的软件产品。大教堂和集市,就是两个非常精辟的隐喻,像操作系统这般巨大的系统,到底是像建造大教堂那样需要天才的设计师、专门的建筑团队与工匠、专门的神职人员组成大规模的团队,还是由像普通市场那样由一些精明的小贩和摊主来搞定的呢?大部分人绝对不会看好如集市一般闹腾的团队,这样的人怎么可能建造出一座雄伟得像一德路圣心大教堂那样的建筑呢?
此言非也!在linux出现之前,unix就是巴黎圣母院这样雄伟的建筑,由计算机硬件制造商雇了一大堆天才设计师和有绝活的手艺人造出来的,使用者只能用,好不好用说了都不算。Linux的是一个不被看好的产物,早发布、常发布、委托所有能委托的事,专家们都觉得这么混乱的一个状态,不会有什么传世之物产生。
Linux的出现,使得这个神话增添了很多神秘的色彩,除了windows、mac os和一小部分unix以外,占据着服务器和桌面电脑操作系统大量份额的就是不同发行版的Linux,并且此外世界还没有出现第二个能和linux匹敌的操作系统。
集市一般的店主,其实说的是散布在各个公司各个行业的卓越程序员,他们之所以卓越,是因为他们有“惰性”:
- 他们不会从头开始写程序,而是会从一个部分可行的方案上建设;
- 他们并不把手上的软件当做差事,而是满足个人在某个方面的需要;
- 有共同需要的用户会变成潜在的开发合作者,会让代码质量有显著的提升,让排错变得更高效。
hacker
Linux的作者Linus是一位天才,是一位工程实施上的天才,他具备一种避免bug和防范开发走入死胡同的第六感,而且有一种能发现从A点到B点最省力路径的真本事。设计上的天才,是计算机科学的天才;工程实施的天才,是软件工程的天才;他们有着天壤之别,设计上的天才往往做不来工程上的事情。
大教堂模式和集市模式最大的区别在于:
- 在大教堂的建筑者看来,bug是棘手的,难以发现的、隐藏在深处的,要经过几个月的全心投入和仔细检查,才能有信心说已经剔除了所有错误;然而,发布间隔越长,倘若发布的版本不完美,人们的失望就会变得不可避免
- 集市模式中,上千名合作开发者热切专研每个新发布版本的情况下,可以假定bug是浅显易找的,至少很快变得浅显易找;频繁的升级补丁会让人对产品的质量更放心
在一个软件项目的项目经理,能识别出他人是否有优秀的创意,远比自己是否拥有卓越的原创设计能力要来的重要。
反观在整个中文社群,在整个政务信息化的开发领域,我们依然还在大教堂的模式,毕竟我们优秀的工程师还不算多,而且并没有被善意的对待,他们往往被KPI的考核压得喘不过气来。如果一个整体的生态环境,没有足够多的卓越的工程师散布在各个行业和各个公司,是不会出现这种集市的模式的。垄断在一定程度上,会买断并扼杀卓越工程师们的创意和能力。
hacker不是一个贬义词,但是在中文翻译中,往往带上了不太好的色彩,对应上了那些非法入侵和非法盗取信息的技术者,其实那些人是cracker。Hacker是一种具有特定审美和美学追求的人:设计优美的软件并让它运行。没有这种特质的人,并不是hacker,因为写软件和共享出来,都为了满足这种审美。
逻辑引擎
集市的开发模式,就是我们口中常提到的开源社区(open source)。从这些年的行业发展来看,闭源开发还能获得长足优势的企业当属苹果、微软和谷歌。然而,微软也极力的拥抱开源社区,最成功的莫过于收购了Github和投资OpenAI;谷歌在核心业务上闭源,但绝对也是开源社区的有力推动者,最成功的莫过于Android系统的推出。有这么一个趋势,开源开发团队在生产力上会远远超过同等规模与技能的闭源程序员团体,毕竟在开源社区,贡献代码和程序的人都是受人尊敬的,不像在公司里总会收到各种不和谐的反馈。
我应该算是国内比较早接触到开源理念的那一批人,但是如果自己没有一定的代码写作和工程能力,是玩不转开源软件的。毕竟只学会写代码的码农,考量软件架构、设计理念以及通过工程能力进一步验证各种功能机制,不是短时间能学会的。接触开源的这20年,让我明白到一点,大部分受用户认可的开源软件,比大部分的同样功能的闭源软件好多了,工作期间和我对接技术的公司和厂家,我一直都对他们能否玩得转开源软件存疑,毕竟他们的程序质量真的不可恭维。
我一直在努力并希望,将开源软件引入政务信息化的领域,除了得有DevOps的过程模式以外,模型引擎和业务功能分开或许是一个很好的选择。毕竟如果软件编写得当,商业知识、内部逻辑是不会在代码中体现的,可以由模型或者描述语言表达,然后由业务逻辑引擎执行实现,安全的要求和开放的源码之间都可以获得一个平衡。
副机长
随着GPT-x的快速演化,文案、图片和脚手架代码都会被快速高质量的生成,这是一个信息化新时代的序幕。机器开始替代人类一定思考完成工作的时代到来了,最开始两次的工业革命提升了人类使用能源的能力,并给人类提供了许多看得见的蛮力;计算机的诞生,开始通过计算以看不见的方式完成人类交给的许多可重复的任务,其实也是一种“体力活”。GPT-x解决了一定程度的需要知识积累的“体力活”,从普通的蛮力进化到了具有一定认知的巧力。
最近听到了一个观点,觉得很吓人,但同时又觉得很有道理。GPT-x比实习生靠谱多了,还便宜,这就意味着那些普通的文案、插画以及初级代码框架并不需要普通实习生的参与了,除非这些实习生已经掌握了相当的文字功底、思维分析能力、快速绘画能力以及能做代码评审。这种实习生,对于正式员工来说,只有编制的区别,没有能力上的区别。但是,像我们刚步入社会的时候,没有宽容的环境,我们的能力怎么能成长呢?这仿佛是一先有鸡还是先有蛋的哲学悖论,我开始感受到深深的恐惧。
毕竟Office已经集成了“Co-Pilot”(副机长)的功能,很多体力活已经不需要人工参与了;很多辅助编程的插件和软件已经可以完成完整的功能强大的代码生成了,以前我可能要写一天才完成的功能,现在或许只需要两个小时。
时代在变化,如果我们不热情拥抱,而是惧怕和抗拒,那和当年砸机器的工人有什么区别呢?只是我们国内的很多计算中心提供的算力,和人家比起来像是“一个在玩泥巴,一个在建通天塔”。这种失望和无力感,让我真的很难过。我们都还没有进入“集市”的模式,现在就出现了“副机长”,如果还不调整,我们在数字化和信息化上的差距会被迅速的拉大,数字化的鸿沟正以我们难以想象的速度在增大。
就深度学习和大规模神经网络而言,我们国内总是在买显卡、搭服务器,运行一些pytorch和tenserflow的代码,然后就可以提出不少高引用的论文了。何曾见过国内的Hacker们,自己搭建一个高效的计算框架,在我们自己的硬件条件下?这种自娱自乐的AI泡沫,面对真实的GPT-x是不堪一击的。一堆会写TF和PT代码的毕业生,跑些玩泥巴一样的学习模型,到底有什么用?
缺乏对未来的想象和期望,缺乏对人类福祉的正确认识,只想挣钱不想为人类事业添砖加瓦,这种技术是无用的。
结语
看到ChatGPT,我不由得想起《星际迷航》中的控制飞船的AI,更有卡拉克《2001太空漫游》笔下的HAL,《流浪地球》的MOSS,它们接受船长和船员的指令,辅助完成工作,并能和人正常对话,这真是一件让人激动的事情。
摩托罗拉说手机的发明为了致敬《星际迷航》的远距离通信,苹果说发明ipad是为了致敬《星际迷航》的控制平板,我不仅想我们国内有几个人喜欢《星际迷航》呢?