2022年转瞬即逝,回顾过去的一年,最深切的感受是:动荡。国际上,漂亮国继续对中国技术封锁,俄乌战争继续在拉锯和焦灼,自然灾害和粮食危机时不时再呲一下獠牙。国内,先是数据回暖,然后是疫情骤变全国物流和制造业遭受巨大损失,最后是 15 万亿存款和疫情放开后消费踌躇不前。
在动荡之下,作为一个软件工程师,从国内大裁员降本增效、硅谷大裁员的示范效应叠加双重打击下,身边的程序员都倍感压力。互联网和平台经济虽已获得国家站台,但市场丧失信心、各种数据下跌,仍是严重刺激着每个参与者,不论是老板、管理人员还是基层员工。
在备受打击和刺激的背景下,技术发展也逐渐陷入停滞,似乎一夜之间大家都抛下技术产品、平台和中台,退回到业务领域积极承接需求,向组织证明自己还是有价值的。NFT 转瞬即逝、3D 和 XR 不温不火、数字人孤独地直播、云计算大幅回撤,除了 AIGC 和 ChatGPT 似乎没有太多新技术或工程实践让人眼前一亮且兴奋。
如果回顾 2022 只说一件事,那我想聊聊 ChatGPT 的使用感受,以及其对我这个程序员所处的软件工程领域会带来什么影响。一家之言,欢迎批评指正。
使用感受
在一番周折后,用朋友在海外的手机号激活了 ChatGPT 的测试资格。(有兴趣的读者可以在淘宝购买测试账号,身边有同事亲测可用)迫不及待的打开聊天窗口,输入了第一个问题:用 Rust 写一个 Web 服务器。
如图 1-1 所示,ChatGPT 在 Rocket 的基础上快速构建了一个示例服务器,除了在 Cargo.toml 里加入对 Rocket 的依赖外,这已经是程序的全部了。接着,我让他基于 Actix-web 再写一下这个例子。
如图 1-2 所示,因为近期使用过这个库,所以对 ChatGPT 写的代码和解释评价很高。但是,因为这些说明和代码或许能够从官方文档里提取,所以,用我自己写的代码考验一下 ChatGPT 的重构能力会怎样呢?
如图 1-3 中 ChatGPT 不仅改写重构了代码,还对修改的地方做出了解释:
- 重构了数据容器
- 移除了调试代码
- 移除了不必要的内存拷贝
如图 1-4 我对代码进行了编译执行,不仅编译执行通过,结果也保持一致。这就有意思了,我是手写了一个卷积运算,这里每一行 Rust 代码和注释都是原创的,甚至代码里为了保持卷积运算的正确我在向量前后用 0 填充缩放,以保证卷积核能够路过被卷积数据的全世界。(后续文章分享这部分内容)事实是:ChatGPT 理解重构的意义、能看懂代码、能正确地改写代码,这就像在面向对象编程里著名的梗:看起来像鸭子、叫起来像鸭子这个对象就是鸭子。用侯世达在《我是个怪圈》一书的风格来说:ChatGPT 已经具备了一小片灵魂。
ChatGPT 的一小片灵魂
之所以说 ChatGPT 已经具备了一小片灵魂,因为,它在像人类一样思考。在重构代码的例子中,对于从未见过的代码可以识别、理解,对于重构的意图有准确的认知,对于代码的修改和输出有精确的结果,这背后的价值就在于其能够完成工作产生价值。而其对价值的追求取决于价值观的判断:什么是好代码?显然,拥有巨大的算力、存储让 ChatGPT 明显优于人类程序员,编程领域知识体系的掌握之全面、系统、精确,辅之以 7x24 小时不眠不休和不会摸鱼,凸显了 ChatGPT 的价值。同时,重构代码的例子让 ChatGPT 看起来“似乎”能够意识到自己在做什么?
诸多哲学研究都在讨论“意识”是怎么产生的,搞 AI 的我也拜读过诸子百家、西方哲学先贤的一些著作,希望找到打开“通用人工智能”的钥匙。在众多讨论中,最发人深省的是“自我意识”是西方的“灵魂”、中国的“心”,这才有宋明理学之争中王阳明提出:心外无物。才有李清照:才下眉头,却上心头。而回到自身,最初接受需求编写代码解决问题,再后来追问写代码的价值和意义,最后,先从心发愿一个原则,再围绕该原则构建一个库、框架、脚手架、技术产品、网络服务等,这个转变过程让我从一个初级程序员逐步走向更高的境界,其内核是“自我意识”的觉醒。
因为测试的时间不长,既看不到源码和模型细节,也看不到训练样本和工程实现,所以,无法度量所谓“一小片”到底有多大?但是,伴随着微软追加的 100 亿美金投资,这“一小片”随着时间推移会变成“一大片”乃至“一整片”或者“一整个”也未可知。作为一个软件工程师,我已经有种和时间赛跑的感觉了。就像 ChatGPT 火了以后,甚嚣尘上的言论都是面向 ChatGPT 编程一样,很多程序员瞬间醒悟:范式转移已经发生。
软件研发的范式转移
連山说他已经在用 ChatGPT 辅助编写 imgcook.com 的插件了,甚至还对 ChatGPT 提供的 iconFont 识别算法进行了一些测试,也比较满意。于是,我把搁置了近一个月的卷积运算代码翻出来,准备让 ChatGPT 帮助我加入快速傅里叶变换算法,也就是图 1-4 里重构后代码执行结果中的 ffconv。快速傅里叶变换卷积就是把时域运算转换为频域运算,借助复平面和采样技术来降低运算量,最后用逆快速傅里叶变换得到卷积结果。
ChatGPT 帮我加入快速傅里叶变换代码的时候,似乎知道了我要用这个算法来加速卷积运算,其保留了原函数的大部分逻辑,引入快速傅里叶变换最流行的库进行了重写,而我的问题仅仅是图所示的那么简单。
从软件工程角度看,这已经是一个比较复杂的算法问题了,因为,如果不了解卷积运算的本质、傅里叶变换的本质、复数和复平面、多项式等知识,根本不可能设计出这种算法。做这件事的起因,是我在网上学习卷积运算的知识后延展阅读获得的一些启发和知识,希望通过写代码来实践,以加深自己的理解。然而,ChatGPT 几乎完美地协助我完成了这项工作。(除了其使用的库比较老旧 rustfft 0.4.0 最新已经更新到 6.1.0)
这极大降低了编写代码的难度,即便因为训练样本的实时性问题造成某些代码需要修改,但其引入快速傅里叶变换的时机和方式,意味着 ChatGPT 完整、精确地重新设计了一个基于快速傅里叶变换的算法,最起码可以把其提供的代码当作伪代码来看,只需要在实现部分稍作调整,就能够完成如此复杂的算法设计和实现工作,这就已经有范式转移的征兆了。
这种范式转移的征兆预示着转变将发生,未来软件研发由人完成的旧范式将被打破,部分乃至完全由 ChatGPT 这种 AI 智能体进行软件研发将变得稀松平常。就像今天拿着手机玩原神,在 2000 年左右简直是天方夜谭,游戏都是端游的天下,移动处理能力和功耗优化,让游戏市场产生了范式转移,暴雪也抛弃粉丝转而做暗黑破坏神不朽了。
范式转移下如何应对
任何变化带来的结果都源自于内心深处的感知、理解和抉择。如果消极看待,内心深处感到焦虑,理解自己的专业技能被取代,抉择赶紧谋取退路,可能难以得到好的结果。如果积极看待,内心深处感到兴奋,理解自己能够有更多时间学习和思考,抉择把重复耗时的工作丢给 AI 去做自己做更有创造力的事情,可能会得到意想不到的收获。
就好像电动机取代内燃机、内燃机取代蒸汽机、蒸汽机取代马匹、马匹取代徒步、直立行走取代爬行一样,只要细心观察就会感受到,这个世界都在向能量消耗更低的方向不断迁移。因此,在社会、产业、行业中才会潜移默化地向着更高效率的方向转变,当万物互联后,庞大的数据、纷繁复杂的通信、密集的运算等,只能依靠 AI 协助才能良好地运作,而人类负责创造、训练和使用 AI 去调度这些资源,不断定义全新的问题用这些资源来解决。
因此,未来学习、研究、思考和定义问题的能力将是重点,学习、理解和掌握 AI 的人将比今天掌握软件研发技能的人更有价值,而今天掌握软件研发技能的人将是第一批彻底理解并真正驾驭 AI 技术的先行者。所以,应对的方法窃以为是借助我们对技术的理解和软件研发技能的基础,从此刻开始投身到 AI 的学习和实践中去,不要再把 AI 当作一个噱头或笑话了。
如果想快速投身到 AI 的学习和实践中去,建议从 TensorFlow、SKLearn、PyTorch 等机器学习框架的官方教程入手,选择一个与自己工作密切相关的领域,跟 AI 相结合进行实践,把机器学习能力当作一个解决问题的手段,反复地学习、实践、总结、反思。
立足当下,很多程序员还桎梏于所谓前端、客户端、服务端、算法、测试开发等具体技术领域,随着范式转移的发生,首先被打破的就是这些领域的边界。之所以这样说,因为随着万物互联、基础设施完善、数字化营销、弹性供应链、柔性制造等产业数字化,软件研发领域要解决的问题会逐渐变得异常复杂,不再是某个技术领域专精就能够解决问题的时代了。放眼国际高科技巨头,其内部只有少数在专业领域深耕的技术工程人员,大部分程序员都是应用开发工程师,在这个技术伴随市场飞速发展数十年的互联网和软件领域,除非底层技术发生革命性变化,否则,很难有大量底层创新的机会。但是,放眼应用领域却因为降本增效、高端制造等需求,存在大量待数字化、网络化、互联化的软件研发需求,这也是为何马化腾不断强调 2B 的重要性,以及张勇躬身入局产业数字化的原因。
所以,未来对复合型人才的需求会不断增加,用于解决复杂问题。所谓复合型人才不仅是跨技术领域,还要能够跨学科、跨行业甚至跨语言文化等,这很难通过一点点看书学习和碎片化的实践来塑造深入且体系化的知识,这也是为何 Notion、语雀、飞书等知识管理产品被看好的原因。但是,最好的知识管理是 AI 领域的知识图谱,是机器学习掌握的海量常识,是通过小模型在特定领域用大量样本获得的系统化知识(谷歌最近打算用海量小模型结合来抗衡 ChatGPT ),能够掌握对 AI 的应用就能够塑造一个更有竞争力的知识体系,我把它称作:CyberThinker,把自己的思想和机器相结合,从而更好地激发自身的创新力、创造力。
小结
如果只是站在程序员的视角看这些问题,总显得有些局气。其实,ChatGPT 的出现、大模型、AIGC 等技术的影响远不止于程序员,就像诸多内容创作者在 AIGC 面前瑟瑟发抖,象棋国手在软件面前就地退役,工厂里进料、生产乃至质检、包装和运输都从打工者换成的智能机器,AI 正在改变着社会的方方面面。
在 Image Net 超过人类识别图片精度后,我曾跟身边的小伙伴儿说:AI 和机器学习很可能是计算机以后对人类社会影响最大的技术创新。也从那时起笃定在智能化领域,先后做了 imgcook.com 图片生成代码、PipCook 前端机器学习框架、DataCook 大数据和样本处理工具、大促产品化用 AI 生成大促会场等技术产品。但是,浸淫在 AI 世界多年,ChatGPT 给我的震撼,不亚于 2009 年在腾讯做可配置的中后台时,一个实习生送我一本《集体智慧的编程》,看后受到协同推荐等算法的震撼。我不禁在聊天窗口打出:tql。
当今世界,地缘政治紧张、经济下行、军事冲突不断,行业也在用裁员、砍业务、攒钱过冬来回应,人民默默把钱存进银行不敢乱花,一切似乎都充满了不确定性。然而,这种不确定性正像暴风雨前的宁静、混沌、黑暗,ChatGPT 则像第一滴落下的雨点,似乎在宣示摧枯拉朽般的疾风骤雨即将来临。我激动地搓搓小手,抬头仰望稀稀拉拉落下的雨点,一点儿打伞的意思都没有,一点儿不慌。
版权声明:内容来源于互联网和用户投稿 如有侵权请联系删除