我之前多次说过,编程可能是受这一波生成式人工智能浪潮影响最大的。
原因有两点,首先编程语言不像自然语言那么“模糊”,编程用的编程语言是高度形式化的,每一门编程语言都可以用一套BNF来精确地描述,程序员写的代码,只要不符合这套描述,编译或者运行时一定会被发现。所以AI来生成代码确实很合适。
其次,市面上很多软件都是开源的,免费的,并且大都集中存储在一个地方,用来训练人工智能再合适不过了。
去年3月AI火了以后,我们发现AI其实没法写一个前后连贯,包括各色人物,不断制造悬念,不断翻转的小说。但是一旦进入编程领域,只要给它清晰的、明确的模块级需求,AI是很强的。
很多程序员都反映,AI对效率的提升是巨大的,一年半过去了,如果你还没有利用这个工具,可能要反思一下了。
比如之前我介绍过的秘塔AI搜索(https://metaso.cn/), 它针对编程类问题,表现就非常优秀。
我给他提了一个工作中常见的问题:“编写一个函数来检查一段文本中的括号是否正确匹配”。
可以看出,秘塔AI搜索不但给出了全网的搜索结果,告诉我们说要用“栈”这个数据结构,还写出了代码,解释了代码,给出了测试用例。
更牛的是,它这里有个“运行”的按钮:
可以直接把测试用例和代码给运行了!
这个功能太好了,不用再把生成的代码复制到IDE中去运行了,极大地节省了时间。
再来一个需求:“写一个Python函数,给定一个年份,返回这一年所有星期天的日期”:
依然可以直接运行,丝滑无比,可见只要你把小块儿的需求描述清楚,秘塔AI搜索绝对能成为你日常开发中的好帮手。
没有程序员能一下子写出完美无缺的程序,时不时就会出现一些小错误、异常啥的。有时候,一个小小的问题就能把程序员卡住半天。
秘塔AI搜索不仅仅可以写代码,更可以帮助程序员来调试程序,分析异常。
比如,学Java的很可能会写出这样的代码:
List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
list.add("D");
for (String item : list) {
System.out.println(item);
if(item.equals("B")){
list.remove(item);
}
}
这样的代码在运行时就会抛出这样的异常:
Exception in thread "main" java.util.ConcurrentModificationException
at java.base/java.util.ArrayList$Itr.checkForComodification(ArrayList.java:1043)
at java.base/java.util.ArrayList$Itr.next(ArrayList.java:997)
at Main.main(Main.java:10)
新手一看就犯晕了:代码很正常啊,没毛病啊,为什么有这么一个古怪的异常?
把代码和异常一并抛给秘塔AI搜索,它立刻就给出了出错的原因:
这段代码抛出ConcurrentModificationException异常,是因为在迭代过程中修改了集合。解决方法是使用迭代器的remove方法或者在单线程环境中使用Java 8引入的removeIf方法。
代码也给你修改好了,Java代码也可以直接运行,结果也是正确的,这效率真是杠杠的!
秘塔AI搜索对于小白学习编程来说,也是一件很好的武器,在学习中无论遇到任何问题,都可以“扔”给它。
比如我在学习Python日期相关的东西,想把一个用字符串表达的日期加上几天,返回新的日期,这该怎么办呢?
秘塔AI搜索告诉我,可以使用datetime把字符串日期变成对象,然后用timedelta表示要添加的天数,两者相加就搞定了。
然后给出了一个案例,2023-01-01加上5天,点击“运行”按钮,返回2023-01-06,一目了然。
秘塔AI搜索这次对编程类领域做了重大升级,它不仅仅可以给你找到资料,更是能帮助你写出代码,直接运行。开发中遇到任何Bug错误,把错误信息发给它,它就可以帮助你迅速地定位问题。此外它还是你学习编程的好助手,有任何问题都可以帮你搜索解答。
不止是程序员,任何人群使用秘塔AI搜索,都可以让工作和学习的效率极大提升,完全免费,真的很良心!强烈建议大家都来试一试:https://metaso.cn/