这篇短文是我最近一些想法的总合与扩展,这几天看到 Copilot X 感觉非常的惊艳,所以想和大家讨论关于 Ai 对未来编程的一些改变。许多观点只是一个大概的逻辑,希望能和大家一起讨论。
我前几天在写 Flutter ,其中把数据类转换成 json 。我抄了一段
factory HistoryPomodoro.fromJson(Map<String, dynamic> json) => HistoryPomodoro(
DateTime.parse(json["startTime"]),
DateTime.parse(json["endTime"]),
json["time"],
json["note"],
json["status"],
);
// a function toJson covert itself all the data to json
Map<String, dynamic> toJson() => {
"startTime": startTime.toIso8601String(),
"endTime": endTime.toIso8601String(),
"time": time,
"note": note,
"status": status,
};
这种写法确实让我觉得太奇怪了,居然要把属性成员名与 json 字段名一一对应。这也太累了吧。我之前在写其它语言中从来没有这种体验。但是我想或者是因为 Dart 中没有 Java 的反射机制这样导致的。
这是 Dart 语言的缺陷,但是在 Ai 的帮助下,我可以快速的生成这些代码,其实写起来并不累。也就是 AI 弥补了语言本身的缺陷。 过去程序员写 C++时需要进行内存管理会有很重的心智负担。所以人们创造像 Java 之类的语言来降低人们的心智担负。但是随着未来 AI 的发展,由 AI 来生产安全的代码。会不会让 C++这种效率更高的语言渐渐被使用的更多。甚至汇编语言。
Flutter 、Electron 给大家带来许多生产力的提升,只要编写一次代码就能在不同平台上运行。但是用起来并没有 Native 应用舒服。随着 AI 的发展,编写代码的更加的容易,编写应用的成本更低。写不同平台的 Native 应用的成本也会降低,那么 Native 应用是否有可能更也会有更多起来。
平时我们常常要求代码的可读性、就算降低一点性能也是可以接受了。像最近的 Copilot X 甚至可以帮人们重构现有代码。我认为未来会有一些代码是完全由 AI 编写的,维护也是由 AI 维护。比如假设一个函数做了 xxx 功能,然后公司要求加个 yyy 功能。程序员可以直接让 AI 进行重写这个函数。这些代码可能可读性很低,但是 AI 能看的懂也能继续在上面加功能。这些代码没有什么设计模式、也没有什么开闭原则,但是因为没有这些抽象反而运行效率更高。
1
wanguorui123 2023-03-26 20:36:07 +08:00
AI 能做:
1 、自动代码补全 2 、做辅助测试 3 、代码规范检查 4 、一些简单的逻辑 AI 可以实现 AI 暂时不能做的: 1 、复杂的业务逻辑,比如:写复杂的算法,组件、架构设计等 2 、业务功能组合对接还是需要人来完成 3 、功能测试 4 、产品设计 短时间 AI 还不太能替代程序员,毕竟 AI 还不具备认知提升能力和判断力 |
2
sampeng 2023-03-26 22:46:59 +08:00
想多了。。AI 写的代码,只能是简单的,稍微复杂点。他就抓瞎。尤其是大量用第三方库的时候。
现在我发现一个最严重的问题,版本问题。现在的资料是停留在 21 年的。chatgpt 不知道最新版本的。。我已经踩两次坑了。感觉还是不能这么用 2 。。IT 是一年一个变化。 |
3
Exp 2023-03-26 23:48:46 +08:00
再进一步,以后会不会发展成:AI 直接生成可执行二进制文件,程序员的作用是提出功能需求和测试用例限定执行程序的运行结果和安全边界就可以了?
|
4
EscYezi 2023-03-27 01:26:22 +08:00 via Android
因为 flutter 中禁用了 dart 的反射才会需要这样写。可以考虑用类似 json_serializable 这样的库自动生成 fromJson 和 toJson 方法,多亏了 build runner ,还能做到监听对实体类的修改自动生成新的。
话说回来即使 ai 写代码,代码可读性还是需要的,得让 ai 学会如何组织代码,将代码写的精炼,不然时间久了代码行数爆炸,ai 自己分析起来也会越来越困难(也更容易出错) |