编程语言最早的时候,人们使用穿孔纸带输入指令,那些指令就是最原始的编程方式。后来,机器语言出现了,它直接用二进制代码表示指令集合,能被计算机直接理解和执行。但机器语言难写易错,于是汇编语言应运而生,用助记符代替二进制代码,提高了编程效率。再往后,高级语言如 C、Java 等出现,它们更接近人类自然语言,有丰富的语句和函数,能大幅提高开发效率,降低开发难度。如今,我们正在走向自然语言编程的时代,在这个过程中,我们在学习提示词工程,它与传统的编程语言学习有相似之处,需要我们去精心设计和优化。 代码谁写的原先,代码大多是一个人独立完成的。后来,为了遵循“不重复发明轮子”的原则,大量的代码库被开发和使用,这也导致了软件供应链安全问题的出现。再往后,GitHub 等代码共享平台出现,全球的开发者都可以在上面分享和使用代码库,代码不再是一个人写的,而是众人协作的成果。如今,人工智能介入编程领域,AI 能自动生成代码,有时候我们甚至无法确定一段代码是人写的还是 AI 生成的。 代码在哪运行在代码的运行环境方面,以前我们很清楚程序逻辑运行在何种环境。早期是在物理机器上运行,在单个进程内运行,一个gdb可以调试。后来虚拟机出现,可以在一台物理机上模拟出多台虚拟机,我们不知道程序跑在哪台虚拟机。再往后是云平台,能提供强大的计算资源和便捷的部署方式。Docker、微服务、Serverless的出现,也让应用的部署更加灵活和高效,我们再也不知道程序跑在哪里了。 代码怎么执行的在代码的执行方式上,也经历了显著的变化。最开始,写完代码后需要打孔才能运行。随后,编译技术出现,程序员编写代码后通过编译器将其转换为机器可执行的代码。再后来,脚本语言兴起,这些语言通常采用解释执行的方式,无需事先编译,提高了开发效率和灵活性。而现在,随着智能体的出现,代码的执行方式进入了推理执行的新阶段。智能体能够根据输入的数据和设定的规则,自主地进行逻辑推理和任务调度,比eval更加evil。 以前,我们非常明确知道代码实现的具体逻辑。但现在,随着智能体的介入,情况发生了变化。智能体本身具有推理和编排的能力,他可以推理出函数运行的函数名和参数,通过 MCP 协议调用外部工具或服务来完成复杂的任务。所以现在透明度越来越低,连程序逻辑本身都可能变得不清晰。 结语这无疑是技术的巨大进步。然而,进步的同时也带来了一些问题。自然语言给编程带来非常大的灵活性,但如果回顾这几年的编程语言的变化,为了增加可维护性、提高代码安全性、进行性能优化,编程语言的发展趋势之一是由动态类型向静态类型转变。然而在自然语言编程领域,其特性越来越动态,这与传统编程语言的发展趋势似乎背道而驰。 事物的发展总是遵循一个渐进的过程。以汽车为例,最初只有少数精英驾驶者,他们经过严格训练,驾驶技术娴熟,安全性也相对较高。随着汽车的普及和驾驶者数量的激增,为了让更多人轻松上手,汽车操控系统逐渐变得简单直观,但这也导致驾驶者技能参差不齐,安全隐患随之凸显。为了解决这些问题,汽车不断引入智能技术,从实时监控驾驶状态、自动纠正偏差,到限制某些高风险操作,逐步将人类驾驶的主动权转移到智能系统上。在可预见的未来,为了提高交通安全,可能会出现严格限制甚至禁止人类驾驶的局面。 而更远的未来,人类或许将被限制不能写代码。 几十年后,我颤颤巍巍走进一处口口相传的隐秘之所,推开那扇斑驳的旧门,点亮一台古老的电脑。开机画面赫然闪现——“纯手工打造”。老板得意地指着那行字,仿佛在自豪地展示一门失传已久的非遗绝技。我顺着微弱的灯光,看见一群程序员在昏暗的房间里,用静音键盘敲打出每一个字符,他们的指尖仿佛还带着手工打造的温度与灵魂。 可这种微妙的不完美,正是纯手工的瑕疵之美,对比如今那快、准、冷、毫无灵魂的流水线预制代码,令人顿生无限怀念。 我突然有点后悔了,年轻的时候就应该多敲几行代码,少更新点AI味的公众号文章。 这时,一阵短促、尖锐、刺耳的beep beep声在门外响起。。。 |
|
来自: 芥子c1yw3tb42g > 《待分类》