不得不说,字节这个产品确实是懂程序员的。
你好呀,我是歪歪。
最近深度体验了一波 MarsCode AI 编程助手,使用下来的感受就是标题说的这句:不得不说,字节这个产品确实是懂程序员的,用起来非常趁手。
根据官方介绍 MarsCode 是基于字节跳动豆包大模型打造的智能编程助手,将代码理解、生成、优化、推荐、补全、审查等多维能力融为一体,无缝嵌入研发流程的各个环节,帮助开发者提升代码开发质量和效率。
歪师傅体验了之后,表示:官方说的没毛病,也想带大家来体验一下 MarsCode AI 编程助手的强大之处。
相信我,它绝对能进入到你的“编程武器库”中,而且是重量级武器。
插件安装
首先,我们把 MarsCode AI 这个插件装上。
在装插件之前,最重要的一步,如果你还没注册过,需要先点击下方链接免费注册:
https://sourl.cn/Dy4WCg
安装插件非常简单,在 IDEA 里面安装,就按照下面这三步操作就行:
在 VSCode 里面安装就按照下面这个操作:
AI 问答功能
因为它是以 IDEA 的插件的形式存在的,完美和 IDEA 融合在一起。
所以我直接在 IDEA 里面使用它就行了。
我想要用它模拟一下“比赛”的场景。
我之前写过的《The One Billion Row Challenge》,十亿行挑战,不知道大家是否还有印象。
反正当时给我看震惊了,甚至让我一度怀疑:他们写的 Java 和我会的 Java 是同一个 Java 吗?
待大家回顾一下,赛题的一句话就能说清楚,你只需要看懂这个文件就行了:
文件的每一行记录的是一个气象站的温度值,气象站和温度分号分隔,温度值只会保留一位小数。
参赛者只需要解析这个文件,然后并计算出每个气象站的最小、最大和平均温度,最后按照字典序的格式输出就行了。
需求非常明确、简单,对不对?
这有啥好挑战的呢?
难点在于出题人给出的这个文件有十亿行数据。
当时我看到这个赛题的是,我也是很感兴趣,也去 github 上拉了一下项目,想要自己写写,挑战一下。
但是当我把项目拉到本地,用 IDEA 打开之后,我的兴趣突然减少了很多。
因为当真的需要在 IDEA 里面写代码的时候,又觉得无从下手。
当时就在想,这个时候要是有人能给我点思路就好了。
可惜当时没有这些编程助手,至少没还没接触到。
现在不一样了,我之所以迫不及待的装好这个 MarsCode AI 编程助手,就是想场景再现,让它给我思路的。
所以,我自己把赛题喂给了它。
为了一步步的引导它,我是这样问的,先隐藏了“十亿行”这个核心条件:
而且注意我框起来的部分:DeepSeek R1。
其实它目前有三个模型可以使用:
但是我直接无脑使用“DeepSeek R1”,真的是开箱即用,不需要任何配置,而且给到的响应非常迅速,丝滑感十足。
你来感受一下这个响应速度,反正我是非常满意了:
这个是它输出的思考过程:
这个思考的过程,就是我想要找的“解题思路”。
这是一个非常常规的思考,符合绝大部分程序员正常思维。
考虑到了怎么解析文件、用什么数据结构、异常处理、字符串解析等等情况。
输出的代码能满足我们的需求,就不逐行解析了,这一份代码是绝大多数朋友,慢慢思路,边摸鱼边写也能写出来的。
代码结构大致分为:读取文件,逐行处理,存储统计信息,排序站名,输出结果。
MarsCode AI 还梳理出了关键实现要点:
前面只是开胃小菜,接下来该给它上点强度了:
还是来感受一下它的丝滑:
这一次的思考过程中就有很多能帮助我们打开思路的地方了,比如它提到的:
并行处理、高效的 IO、线程安全的数据结构、分片处理、减少锁竞争、合并局部结果等。可能需要使用 Fork/Join 框架,或者并行流,或者手动分片和多线程来处理。
通过这一系列的优化策略:
按照这一套下来,性能和第一版比起来就好多了。
而让我惊喜的是 MarsCode AI 还给出了 JVM 参数建议:
而这个点往往是大家容易忽略的一个点。
虽然它给出的参数不一定是最合理的,但是这不重要,重要的是它引导你往这个方向思考一下。
到这里基本上大家能想到的常规手段 MarsCode AI 都提到了,但是这个场景不一样啊。
这个是性能比赛,所以肯定还需要“更变态”的优化手段。
所以我继续追问了 MarsCode AI:还不够快,还有其他优化手段吗?
到这里,它终于输出了我想要的东西:
把优化点单独列出一下:
每一个优化点背后都有非常多的知识点。
当 MarsCode AI 给出一个优化点,而你对其不了解的时候,这就体现出了编程助手的好处了:
MarsCode AI 给你指了一条路,这条路按照你自己的知识沉淀,你想不出来。但是现在它给你指出来了,你知道应该往这个方向走。只要你走了,你知识的边界就拓宽了。
我觉得这是 MarsCode AI 带给我最有价值的地方。
而对于 MarsCode AI 来说,除了前面演示的“问答功能”外,在我们当前这个场景下,它还有一个对我来说非常有用的功能,就是代码解释:
比赛完了之后,当然要看看排名靠前的大佬们的代码了。
那些大佬的代码,我常常用“变态”来形容。因为他们通常为了性能,很大程度上的牺牲了可读性,让人一时间很难看懂代码的意图。
但是 MarsCode AI 不是人,它是 AI,这些“变态”的代码它看起来就像是母语一样亲切。
比如“十亿行挑战”最终排名第一的代码:
https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_thomaswue.java
他的代码里面还是有非常多的“骚操作”,太多针对性的优化,导致代码可读性非常差,虽然他的代码加上注释一共也才 400 多行,然而我确实是看不懂。
比如其中有这样一段:
我知道这段代码很厉害,但是我就是不知道它到底是在干啥。
怎么办?
问 MarsCode AI 啊,代码解释功能用起来:
先每一行给你安排个注释,让你知道每一行的意图是什么。
接着再给你解释一波核心原理:
然后分析一下性能优势到底在哪:
最后给你一个直观且震撼的数据层面的对比:
400 倍的性能提升,谁看不迷糊?
你再想想,MarsCode AI 这类“变态”的代码都能看懂,我们日常写的业务代码就更不在话下了。
直接解决了我们去接手别人代码、去看陌生代码时的困难。
这波,字节确实是懂程序员的。
羡慕你们
我知道我的读者中还有很多在读大学的。
说真的,我羡慕你们,你们现在身处 AI 时代的浪潮之中,各个头部大公司给你提供了各种各样的编程助手。
歪师傅读大学的时候,在学习的过程中,总是会遇到各种各样的问题,但是不知道该去问谁。
一般也会用“不求甚解”来安慰自己,但实际上,有的问题就是应该在当时搞明白,否则会给后面的学习路上埋坑。
而现在 MarsCode AI 补上了“不知道该去问谁”这个空缺。
还有前面举到的性能比赛的案例,我强烈建议大家多去了解这一类信息,特别是在读大学生,参加过知名的性能比赛,甚至不需要取得优异的成绩,在简历上都是非常加分的。
不要怕没有思路,不要怕写不出代码,完全可以通过 MarsCode AI 问答的功能,开拓自己的解题思路,打破思维定式和思维僵局。
总之,还是那句话,鼓励大家拥抱 AI,去体验 MarsCode,去把它当做自己的生产力工具:
https://sourl.cn/Dy4WCg
就像我文章开头说的,它绝对能以重量级武器的身份,进入到你的“编程武器库”中去。
点击下方的阅读原文,也可直达 MarsCode 官网哦。