why技术

不得不说,字节这个产品确实是懂程序员的。

你好呀,我是歪歪。

最近深度体验了一波 MarsCode AI 编程助手,使用下来的感受就是标题说的这句:不得不说,字节这个产品确实是懂程序员的,用起来非常趁手。

根据官方介绍 MarsCode 是基于字节跳动豆包大模型打造的智能编程助手,将代码理解、生成、优化、推荐、补全、审查等多维能力融为一体,无缝嵌入研发流程的各个环节,帮助开发者提升代码开发质量和效率。

歪师傅体验了之后,表示:官方说的没毛病,也想带大家来体验一下 MarsCode AI 编程助手的强大之处。

相信我,它绝对能进入到你的“编程武器库”中,而且是重量级武器。

插件安装

首先,我们把 MarsCode AI 这个插件装上。

在装插件之前,最重要的一步,如果你还没注册过,需要先点击下方链接免费注册:

https://sourl.cn/Dy4WCg

安装插件非常简单,在 IDEA 里面安装,就按照下面这三步操作就行:

Image

在 VSCode 里面安装就按照下面这个操作:

Image

AI 问答功能

因为它是以 IDEA 的插件的形式存在的,完美和 IDEA 融合在一起。

所以我直接在 IDEA 里面使用它就行了。

Image

我想要用它模拟一下“比赛”的场景。

我之前写过的《The One Billion Row Challenge》,十亿行挑战,不知道大家是否还有印象。

反正当时给我看震惊了,甚至让我一度怀疑:他们写的 Java 和我会的 Java 是同一个 Java 吗?

待大家回顾一下,赛题的一句话就能说清楚,你只需要看懂这个文件就行了:

Image

文件的每一行记录的是一个气象站的温度值,气象站和温度分号分隔,温度值只会保留一位小数。

参赛者只需要解析这个文件,然后并计算出每个气象站的最小、最大和平均温度,最后按照字典序的格式输出就行了。

需求非常明确、简单,对不对?

这有啥好挑战的呢?

难点在于出题人给出的这个文件有十亿行数据。

当时我看到这个赛题的是,我也是很感兴趣,也去 github 上拉了一下项目,想要自己写写,挑战一下。

但是当我把项目拉到本地,用 IDEA 打开之后,我的兴趣突然减少了很多。

因为当真的需要在 IDEA 里面写代码的时候,又觉得无从下手。

当时就在想,这个时候要是有人能给我点思路就好了。

可惜当时没有这些编程助手,至少没还没接触到。

现在不一样了,我之所以迫不及待的装好这个 MarsCode AI 编程助手,就是想场景再现,让它给我思路的。

所以,我自己把赛题喂给了它。

为了一步步的引导它,我是这样问的,先隐藏了“十亿行”这个核心条件:

Image

而且注意我框起来的部分:DeepSeek R1。

其实它目前有三个模型可以使用:

Image

但是我直接无脑使用“DeepSeek R1”,真的是开箱即用,不需要任何配置,而且给到的响应非常迅速,丝滑感十足。

你来感受一下这个响应速度,反正我是非常满意了:

Image

这个是它输出的思考过程:

Image

这个思考的过程,就是我想要找的“解题思路”。

这是一个非常常规的思考,符合绝大部分程序员正常思维。

考虑到了怎么解析文件、用什么数据结构、异常处理、字符串解析等等情况。

输出的代码能满足我们的需求,就不逐行解析了,这一份代码是绝大多数朋友,慢慢思路,边摸鱼边写也能写出来的。

代码结构大致分为:读取文件,逐行处理,存储统计信息,排序站名,输出结果。

Image

MarsCode AI 还梳理出了关键实现要点:

Image

前面只是开胃小菜,接下来该给它上点强度了:

Image

还是来感受一下它的丝滑:

Image

这一次的思考过程中就有很多能帮助我们打开思路的地方了,比如它提到的:

并行处理、高效的 IO、线程安全的数据结构、分片处理、减少锁竞争、合并局部结果等。可能需要使用 Fork/Join 框架,或者并行流,或者手动分片和多线程来处理。

Image

通过这一系列的优化策略:

Image

按照这一套下来,性能和第一版比起来就好多了。

而让我惊喜的是 MarsCode AI 还给出了 JVM 参数建议:

Image

而这个点往往是大家容易忽略的一个点。

虽然它给出的参数不一定是最合理的,但是这不重要,重要的是它引导你往这个方向思考一下。

到这里基本上大家能想到的常规手段 MarsCode AI 都提到了,但是这个场景不一样啊。

这个是性能比赛,所以肯定还需要“更变态”的优化手段。

所以我继续追问了 MarsCode AI:还不够快,还有其他优化手段吗?

到这里,它终于输出了我想要的东西:

Image

把优化点单独列出一下:

Image

每一个优化点背后都有非常多的知识点。

当 MarsCode AI 给出一个优化点,而你对其不了解的时候,这就体现出了编程助手的好处了:

MarsCode AI 给你指了一条路,这条路按照你自己的知识沉淀,你想不出来。但是现在它给你指出来了,你知道应该往这个方向走。只要你走了,你知识的边界就拓宽了。

我觉得这是 MarsCode AI 带给我最有价值的地方。

而对于 MarsCode AI 来说,除了前面演示的“问答功能”外,在我们当前这个场景下,它还有一个对我来说非常有用的功能,就是代码解释:

Image

比赛完了之后,当然要看看排名靠前的大佬们的代码了。

那些大佬的代码,我常常用“变态”来形容。因为他们通常为了性能,很大程度上的牺牲了可读性,让人一时间很难看懂代码的意图。

但是 MarsCode AI 不是人,它是 AI,这些“变态”的代码它看起来就像是母语一样亲切。

比如“十亿行挑战”最终排名第一的代码:

https://github.com/gunnarmorling/1brc/blob/main/src/main/java/dev/morling/onebrc/CalculateAverage_thomaswue.java

他的代码里面还是有非常多的“骚操作”,太多针对性的优化,导致代码可读性非常差,虽然他的代码加上注释一共也才 400 多行,然而我确实是看不懂。

比如其中有这样一段:

Image

我知道这段代码很厉害,但是我就是不知道它到底是在干啥。

怎么办?

问 MarsCode AI 啊,代码解释功能用起来:

Image

先每一行给你安排个注释,让你知道每一行的意图是什么。

接着再给你解释一波核心原理:

Image

然后分析一下性能优势到底在哪:

Image

最后给你一个直观且震撼的数据层面的对比:

Image

400 倍的性能提升,谁看不迷糊?

你再想想,MarsCode AI 这类“变态”的代码都能看懂,我们日常写的业务代码就更不在话下了。

直接解决了我们去接手别人代码、去看陌生代码时的困难。

这波,字节确实是懂程序员的。

羡慕你们

我知道我的读者中还有很多在读大学的。

说真的,我羡慕你们,你们现在身处 AI 时代的浪潮之中,各个头部大公司给你提供了各种各样的编程助手。

歪师傅读大学的时候,在学习的过程中,总是会遇到各种各样的问题,但是不知道该去问谁。

一般也会用“不求甚解”来安慰自己,但实际上,有的问题就是应该在当时搞明白,否则会给后面的学习路上埋坑。

而现在 MarsCode AI 补上了“不知道该去问谁”这个空缺。

还有前面举到的性能比赛的案例,我强烈建议大家多去了解这一类信息,特别是在读大学生,参加过知名的性能比赛,甚至不需要取得优异的成绩,在简历上都是非常加分的。

不要怕没有思路,不要怕写不出代码,完全可以通过 MarsCode AI 问答的功能,开拓自己的解题思路,打破思维定式和思维僵局。

总之,还是那句话,鼓励大家拥抱 AI,去体验 MarsCode,去把它当做自己的生产力工具:

https://sourl.cn/Dy4WCg

就像我文章开头说的,它绝对能以重量级武器的身份,进入到你的“编程武器库”中去。

点击下方的阅读原文,也可直达 MarsCode 官网哦。