作为一名软件开发者,有幸站在了AI时代的风口浪尖。在这篇博客中,我将分享我的个人看法,一起走向AI时代软件开发新范式。
首先,我们要明确软件开发活动产生的各种制品,都是人类知识的载体,也是人类文明的高级形式。
• 各种文档、数据文件、图表(Diagram) 、XML、Schema、Table …. 都是人类语言的一种表达形式。
• 计算机编程语言(Programming Language),是人类最“讲究”的语言,它有着最严密的逻辑、规则、思维,但同时又不失人类语言的“艺术性。
综上所述,编程语言废话较少,精华压缩,是非常适合LLM训练的数据。那LLM时代会带来哪些改变、哪些不变呢?
AGI时代的曙光
Gen AI (Generative AI)时代的到来让软件开发的范式正在发生翻天覆地的变化。
GPT( Generative Pre-trained Transformer )生成式预训练模型,通过无监督学习的方式对海量人类自然语言语料库来进行大语言模型训练(LLM,Large Language Model),同时采用人类反馈的强化学习( RLHF) 来调教。由于其强大的智能生成能力,被公认为开创了全新的AIG( Generative AI) 时代,大大加快了通用AI的道路。
传统的开发模式,倾向于描述性、确定性计算,而大模型时代倾向于对话式、概率性计算。
编程范式的转变
软件领域凡是由人参与的“经验性活动”,即软件工程,需要各种“语言”进行沟通、协调、传授…… 大模型会驱动剧烈的改变。
• 需求分析
• 软件设计
• 代码编写
• 开发者测试、代码评审
• 重构、Clean Code
• 缺陷调试
• …
传统程序设计 =算法 +数据结构
AIG 程序设计=模型+Prompt(提示)+Fine-Tune(精调)
在AIG时代,编程不再只是算法和数据结构的简单组合。模型、提示(Prompt)和精调(Fine-Tune)成为了新的编程三要素。这让我意识到,作为开发者,我们需要掌握新的技能,比如Prompt的设计和Fine-Tune的技巧。
不变的地方
关于业务场景需求分析与设计,这块LLM不会改变,仍旧需要以人为主;其次,软件领域人类积累的客观性的“定律”,大模型不会改变。如
• 计算机体系结构
• 操作系统
• 计算机网络
• 算法、数据结构
• 编译器、编程语言
• 软件设计模式与架构
自动化开发的五个级别
李建忠博士提出的“自动驾驶开发”模型,让我对软件开发的自动化有了更清晰的认识。从L0到L5,每个级别都代表了软件开发自动化的不同阶段。这不仅是一种技术的进步,更是一种思维的转变。
因此,原先的计算机编程会逐步过渡到自然语言编程的阶段,即:
- 自然语言逐步成为软件编程的主要方式。
- Prompt 技能和模式成为高级软件工程师的必修课。
- Fine-Tune 成为系统工程师的关键招式,高级语言下沉,类似今天的汇编语言,是底层工程师的秘笈。
CHATGPT在软件开发中的应用
CHATGPT作为Gen AI时代的代表,其在软件开发中的出色表现。无论从编码开发到缺陷修复,还是从代码重构到开发者测试,CHATGPT都能提供强大的支持。这让我觉得未来的软件开发是否将更多地依赖于这些智能工具。
软件开发的未来趋势
随着AIG时代的到来,软件团队的模型也在发生变化。新的职业角色,如LLM系统工程师、LLM模型研发工程师和LLM Master,正在成为软件开发的中坚力量。作为开发者,我们需要不断学习和适应新的职业角色和技能要求。
大模型定制开发与培训
在AIG时代,大模型的定制开发和培训变得尤为重要。从OpenAI public API到Azure OpenAI Service,再到各种开源大模型的定制,这些都是我们作为开发者需要掌握的新技能。同时,Prompt Design、Fine-Tune、Embedding等技能的培训,也成为了我们提升自身能力的必经之路。
结语
面向AI时代的软件开发新范式,不仅仅是技术的革新,更是对软件开发思维和方法的一次深刻反思。作为开发者,只要我们不断学习和适应,就能在AI时代中找到自己的位置,创造出更加智能、高效和创新的软件。