个人觉得,AI本质就是一种工具,是一种新的生产工具,拒绝新鲜事物,本身就是脱离时代发展的表现,我们人类之所以不断进步,就是比动物更会使用工具,使用新工具,提高生产效率。

AI编程有很多优点,如提高编程的效率,提高编程的准确性等等。

一是提升编程的效率

  • 快速代码生成功能:能够快速生成模板代码、重复性高的代码(如CRUD操作)、单元测试、配置文件等,节省大量敲键盘的时间。
  • 代码补全查错功能:强大的上下文感知补全查错功能,能预测一整行或一整段代码,显著加快编码速度。

二是强大的知识库和信息检索

  • 解答具体问题:无需离开IDE去搜索引擎查找某个特定函数的用法或某个错误的解决方案,可以直接询问AI,它能提供针对性的代码片段和解释。
  • 跨领域知识:开发者不熟悉的领域(如正则表达式、复杂的SQL查询),AI可以快速提供可靠且正确的解决方案。

三是辅助代码理解和调试

  • 解释代码:可以将一段复杂的、难以理解的代码丢给AI,让它用自然语言解释其功能。
  • 调试和错误修复:将错误信息或异常堆栈跟踪提供给AI,它通常能快速定位问题并提出修复建议。
  • 代码重构和优化:可以要求AI对代码进行重构,使其更简洁、高效,或符合某种设计模式。

四是降低入门门槛

  • 对于编程新手,AI是一个非常有耐心的“导师”,可以解答基础问题并提供示例,帮助克服初期的学习曲线。

  • 快速学习新语言/框架:可以要求AI生成某个框架(如React、Spring Boot)的示例代码,帮助开发者快速上手。

当然,AI编程也存在天然的缺点:容易让人变得懒惰,工程师长期使用AI编程,技能水平会下降;AI编程可能因为被喂了不良的数据,输出错误的编程;缺乏人情味,AI味过重。

一是“幻觉”与正确性问题

  • AI可能会生成语法正确但逻辑错误、甚至完全虚构的代码(尤其是使用不存在的API或库时)。开发者必须具备足够的能力去审查和验证AI生成的代码,否则会引入严重的bug。

二是可能导致思维惰性和技能退化

  • 过度依赖AI可能导致开发者不再去深入思考底层原理、算法和设计模式。就像过度依赖计算器会影响心算能力一样,长期下去可能会削弱独立解决问题和架构设计的能力。

三是安全与版权风险

  • AI模型的训练数据可能包含有安全漏洞的代码或不规范的实现,这些可能会被模仿和重现。
  • 生成的代码可能无意中抄袭了训练数据中的受版权保护的代码,带来法律风险。

四是上下文限制,需要大量人工优化调整

  • AI对当前项目的完整上下文理解有限(尤其是大型项目),它生成的代码可能不符合项目的特定架构、规范或约定,需要人工进行大量调整。

二、“古法”人工编程 (Traditional Manual Programming)

指开发者主要依靠自身知识、经验、搜索引擎(如Google、Stack Overflow)和官方文档来编写代码的传统方式。

优点:

一是深刻的理解与控制力

  • 开发者对每一行代码的目的和实现都了如指掌。这种深度参与确保了代码的质量、可预测性和可维护性。
  • 对系统架构、算法选择和性能优化有完全的掌控,能做出最符合项目长期利益的决策。

二是扎实的技能培养与知识积累

  • 通过自己解决问题、查阅文档、阅读源码,开发者能建立起坚实而系统的知识体系,这种学习过程是不可替代的。
  • 培养了强大的调试能力、问题分解能力和抽象思维能力。

三是更高的可靠性与安全性

  • 代码经过人的大脑深思熟虑,通常更可靠。开发者会考虑边界条件、异常处理和潜在的安全威胁,这种批判性思维是AI目前不具备的。
  • 避免了AI“幻觉”带来的未知风险。

四是更好的架构与设计

  • 设计和构建一个复杂系统的整体架构需要高度的抽象、规划和创造性思维,这是当前AI难以胜任的。人类开发者更能把握宏观的软件设计原则。

“古法”编程的缺点也很显著:

一是效率相对较低

  • 编写重复性代码、查找文档、调试复杂问题会耗费大量时间,项目开发周期较长。当然,大神不在这个讨论范围。

二是知识面限制

  • 开发者的能力受限于其个人经验和知识广度。遇到不熟悉的领域或新技术时,学习成本和试错成本较高。

三是容易陷入思维定式

  • 开发者可能会习惯于自己熟悉的解决方案,而忽略了更优、更现代的实现方式。

四是体力与脑力消耗大

  • 需要高度集中注意力,长时间编码容易导致疲劳,增加出错几率。

五是目前的技术,PLCDCS的编程AI还不是很完善

特别是PLC的图形化编程(FBD)无法用AI替代,当前的AI发展阶段,无法实现FBD的编程,很遗憾。作为自动化工程师,我是非常期待图形化编程的AI出现,以提高我们的工作效率。

结论:AI编程不是“古法”人工编程的取代,而是进化

AI编程不是来取代程序员的,而是来取代不使用AI的程序员的。

最理想的模式是“人机协同”:

  • 让AI做它最擅长的的事:充当一个超级助手、一个高级自动补全工具、一个知识库,处理重复性高、探索性的任务,极大提升开发效率。
  • 让人做最擅长的的事:进行系统架构设计、做出关键决策、深入思考复杂逻辑、审查和验证AI输出的代码,并承担最终的责任。

未来的优秀开发者,将是那些能充分利用AI增强自身能力,同时保持深刻技术理解和批判性思维的人。AI是强大的杠杆,但挥舞杠杆的力量和方向,始终掌握在人的手中。