我正在参加「豆包MarsCode初体验」征文活动
# 豆包MarsCode体验官-{玩转AI}开启智能编程之旅
25号看到活动趁着还热乎快速加入,奖励的小鸭子真可爱啊,重在参与555我就以小白的角度来体验一下豆包MarsCode吧。
AI发展的时代,豆包MarsCode的诞生带来了新的技术追求和用户需求。作为一名体验官,有幸参加本次活动,现在就开启我的旅程吧。
- 先来介绍一下本次的主角:
豆包MarsCode
豆包MarsCode是基于字节跳动豆包大模型打造的的开发工具,豆包大模型的相关应用包括豆包APP,它在苹果App Store和各大安卓应用市场的AIGC类应用中下载量排名第一。
作为豆包代码模型的具体应用, 豆包MarsCode是将代码理解、生成、优化、推荐、补全、审查等多维能力融为一体的工具,豆包 MarsCode IDE 内置了 AI 助手,提供多种语言框架模版将为开发者提供更加快捷便利的项目开发服务。
我会从多个维度进行评估
-
关于启动速度
本次测试是基于网页端,在本地网速正常的情况下,豆包MarsCode的页面打开很流畅,响应时间很短,创建新项目大约在3-4s。
-
关于稳定性
稳定性良好,在连续使用过程中没有出现网页崩溃现象。
-
需求分析
云端IDE
对于我这个小白用户来讲,最开始吸引我的是云端IDE随时随地开发的标语,真的不想大夏天背着几公斤重的笔记本到处跑,虽然很有助于减肥::>_<::。
不受本地资源限制
弹性的云端资源对项目开发能力支持,不用担心本地计算机的问题,很方便。
AI 编程助手
自己摸索中的小白很喜欢这个功能,代码补全可以节省很多重复工作的力气,代码注释可以让小白更加理解这段代码的意义和养成注释的好习惯,代码解释随时为小白补充新的知识。
顺便夸夸UI组的设计同学,这界面真干净好看,非常喜欢。
- 体验项目用例
26号截止时间紧的小白决定写一个贪吃蛇的项目来看看测试运行效果吧,大部分被自动补全了,那就把大致思路和部分实际运用效果写出来吧,有机会再尝试Github导入功能,咳咳经典永不过时。。。
- 项目模板创建 登陆账号后创建新项目,选择Java对应模版,输入项目名称Snake并填写项目描述后点击创建。
初始化项目后,进入工作空间。文件导览区域有官方写好的README.md文件,对小白很友好,介绍栏还用了更加经典的Hello World项目模板做示范介绍。
- 更改包名为SNAKE,创建主类SnakeGame,用于创建游戏窗口初始化。 创建一个Snake类,管理蛇的长度。 创建一个Node类,表示蛇的节点。 创建一个Food类,随机生成食物。
3. 使用Swing库创建图形用户界面,JFrame是Java编程语言中用于创建图形用户界面(GUI)的一个类,它属于Swing图形用户界面工具包的一部分,Swing提供一套丰富的组件构建图形用户界面。 增加一个initPanel方法,初始化界面。设置窗体大小位置等。
- Node横纵坐标确定位置,蛇和食物都可以用节点,再创建一个随机生成位置的方法,Snake类选择使用LinkedList,可以高效插入删除操作,建立一个构造方法初始化蛇,创建多个节点作为初始长度。在主类中定义一个Snake成员变量和Food成员变量。在paint方法中添加绘制网格、蛇、食物。
当我绘制好网格后,想要运行看看效果的时候,意外发生了,AI助手告诉我:如果你的程序实际上不需要图形界面,你可以重构代码,移除对 JFrame 的依赖,这样就不会有图形初始化的问题。 在有图形环境的机器上运行
最简单的解决办法是将程序移到有图形环境的机器上运行,比如你的本地桌面。 一个小白此时悄悄的碎了。。。
ok按照AI助手的说法,我打开本地电脑,开始将豆包MarsCode当作辅助继续进行编写,写好的代码最后将在eclipse上运行。
- 在Snake类中定义一个枚举类型Direction,并定义一个Direction的成员变量和move方法。
css
public enum Direction {
UP,DOWN,LEFT,RIGHT
}
*** *** ***
...
if(isLiving){
Node head = body.getFirst();
switch (direction){
case UP:
// 在当前蛇头的位置向上移动一格,并将新的位置添加到蛇身列表的头部
body.addFirst(new Node(head.getX(),head.getY()-1));
break;
case DOWN:
// 在当前蛇头的位置向下移动一格,并将新的位置添加到蛇身列表的头部
body.addFirst(new Node(head.getX(),head.getY()+1));
break;
case LEFT:
// 在当前蛇头的位置向左移动一格,并将新的位置添加到蛇身列表的头部
body.addFirst(new Node(head.getX()-1,head.getY()));
break;
case RIGHT:
// 在当前蛇头的位置向右移动一格,并将新的位置添加到蛇身列表的头部
body.addFirst(new Node(head.getX()+1,head.getY()));
break;
body.removeLast();
...
- 在主类中创建定时器,定时重绘界面。
``
scss
...
timer=new Timer();
//初始化定时器
/**
* 初始化计时器,用于控制蛇的移动及食物的随机生成
*/
TimerTask timerTask=new TimerTask() {
@Override
public void run() {
snake.move();
Node head = snake.getBody().getFirst();
if(head.getX()==food.getX()&&head.getY()==food.getY()){
snake.eat(food);
food.random();
}
//重绘游戏棋盘
jPanel.repaint();
}
};
timer.scheduleAtFixedRate(timerTask,0,100);
}
...
`
-
在Snake类中增加eat方法。定时器调用eat方法。
-
在主类添加键盘监听。
-
添加边界判定。
- 最终运行效果
-
体验总结
豆包MarsCode的代码补全功能真的好便利啊,节省了很多时间;还可以分区域测试,很便捷;代码注释也很简明准确,编写体验感非常舒适;开发过程中出现了的问题AI会自动分析开发者意图并将修改前和修改后分别用红色、绿色的模块进行区分,真的很喜欢这种设计,以前写完要分别看两个区块看着看着就串行了;对于不懂的调用方法AI助手也给出了详细的教学,小白解惑学习神器之一;运行速度比本地快,整体体验很好。
再说一说还可以改进的地方吧,现在单个豆包账户项目创建数量上限量为10个,不知道是暂时10个还是之后还会有新的变化,可以再增加一些上限数量,开发语言多项目多的大佬可能不够使用;使用AI助手的时候需要定位到开启的代码否则无法识别,可以增加一条使用说明来说明这种情况;其他便捷的工具很好,也可以增加一个能选择关闭的开关,编程时每个人的需求都不一样,如果能多一种选择也很好;这次开发到一半运行才发现不支持JFrame,迫不得已又转回到了本地完全将豆包MarsCode变成辅助工具,不知道有没有大佬知道这种情况该怎么解决。
总的来说,豆包MarsCode在这个领域表现的十分出色,达到了心理预期,是现代软件开发的优秀助手,技术创新与突破的勇敢尝试,为开发者带来了新的开发体验,期待豆包MarsCode在AI领域和云端IDE上有更多的创新,未来能带给开发者们更多惊喜。