一文带你彻底搞清楚通义灵码 2.0 下的 AI 程序员的智能化编码

程序员Feri一名12年+的程序员,做过开发带过团队创过业,擅长Java、鸿蒙、嵌入式、人工智能等开发,专注于程序员成长的那点儿事,希望在成长的路上有你相伴!君志所向,一往无前!


本文就带你体验一下通义灵码整合的deepseek-v3赋能的AI程序员2.0好用不好用!

1.升级通义灵码

升级VsCode的通义灵码,升级到最新版,我这里是使用的是2.1.3

2.切换到AI程序员

记得在底部选择大模型,目前支持2种,分别是qwen-2.5和deepseek-v3,这次我们选择deepseek-v3大模型

3.AI程序员-生成代码

让他开始干活,看看举例真实程序员还有多远?

我们让其使用C语言写一个汉诺塔的实现,具体交互过程如下所示: 问: 帮我用C语言实现汉诺塔 答:

来看看生成完之后的结果:

我们只需要点击接受即可,然后点开自动生成的hanoi.c文件,然后运行测试一下,观察结果是否满足需要。记得先编译一下,然后再运行一下,效果如下所示:

4.AI程序员-解释代码

直接在AI程序员的输入框中,直接告知AI程序员在代码中写出注释,解释下代码,即可

有时,也会发现会比较慢,这个可能就需要等待啦,实在不行,就切换大模型即可,来看看代码解释的效果怎么样?

如果没什么问题,点击接受即可,看看源代码的具体内容:

5.AI程序员-代码修改

我们需要把AI程序员当做1个人来看,这样你在日常使用的时候就很舒服,特别是对于基础代码,AI程序员的能力还都很好用,我们可以使用AI程序员一下修改一下具体的代码。

比如我们这里让AI程序员把输出语句中的英文更改为中文即可。

打开AI程序员,输入一下内容 问题:把输出语句中的英文改为中文

点击接受即可

6.AI程序员-更改bug

还是刚刚的代码,运行之后,出现以下问题,中文乱码了,bug如下所示:

来,把问题交给AI程序员,看看他对于代码bug的处理能力,在AI程序员中输入下面的问题: 问:输出的时候中文乱码了,怎么办

来,再看看效果,点击接受即可:

这次使用通义灵码的AI程序员2.0版本,我发现比之前好用了很多,不仅仅是自然语言理解更好用了,关键是有点程序员的样子啦。

#8.具体完整代码

文末贴出具体的最终的完整代码:

#include <stdio.h>
#include <windows.h> // 添加Windows头文件以使用SetConsoleOutputCP和SetConsoleCP函数
// 汉诺塔递归函数
// n: 盘子的数量
// from: 起始柱
// to: 目标柱
// aux: 辅助柱
void hanoi(int n, char from, char to, char aux) {
    // 如果只有一个盘子,直接移动
    if (n == 1) {
        printf("将盘子 1 从 %c 移动到 %c\n", from, to);
        return;
    }
    // 将 n-1 个盘子从起始柱移动到辅助柱
    hanoi(n - 1, from, aux, to);
    // 将第 n 个盘子从起始柱移动到目标柱
    printf("将盘子 %d 从 %c 移动到 %c\n", n, from, to);
    // 将 n-1 个盘子从辅助柱移动到目标柱
    hanoi(n - 1, aux, to, from);
}
int main() {
    // 设置控制台输入和输出编码为UTF-8
    SetConsoleOutputCP(65001);
    SetConsoleCP(65001);
    // 设置控制台字体为支持UTF-8的字体
    CONSOLE_FONT_INFOEX fontInfo;
    fontInfo.cbSize = sizeof(fontInfo);
    GetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), FALSE, &fontInfo);
    wcscpy(fontInfo.FaceName, L"Consolas");
    SetCurrentConsoleFontEx(GetStdHandle(STD_OUTPUT_HANDLE), FALSE, &fontInfo);

    int n = 3; // 盘子的数量
    // 调用汉诺塔函数,A是起始柱,C是目标柱,B是辅助柱
    hanoi(n, 'A', 'C', 'B');
    return 0;
}

好啦,这篇就到这里啦,关注我,跟着我入门编程啦!

### 红黑树概念 红黑树是一种特殊的二叉搜索树,具有特定的颜色属性来保持树的近似平衡状态。这种特性使得红黑树能够在插入、删除和查找操作上提供较好的时间复杂度[^1]。 #### 性质描述 每棵红黑树都遵循以下五条基本性质: - 每个节点要么是红色,要么是黑色。 - 根节点总是黑色。 - 所有叶子(NIL节点)都是黑色。(注意这里的叶子指的是外部节点) - 如果一个内部节点是红色,则它的两个孩子节点必须是黑色。(即不存在连续两条红线相连的情况) - 对于任意给定的非叶节点,在该节点到其可达叶子的所有路径上的黑色节点数目相同。 这些规则确保了从根到最近叶子的最大距离不会超过最小距离的一倍以上,从而维持了一种较为均衡的状态[^3]。 ### 插入机制解析 当向红黑树中添加新的键值时,默认情况下新加入的节点会被标记成红色以减少违反上述条件的可能性。然而即便如此仍可能出现冲突情况——比如父级也为红色就违背了第四条原则;这时就需要通过一系列调整动作使整棵树恢复合法形态,主要包括颜色翻转以及左旋/右旋两种方式[^2]。 ```c // 定义RBTree结构体表示整个红黑树, Node代表单个节点. typedef struct RBTreeNode { int key; char color; // 'R' or 'B' struct RBTreeNode *left,*right,*parent; }Node; void insertFixup(Node* root, Node* z){ while (z != root && z->parent->color == RED) { ... } } ``` 此段伪代展示了如何处理因插入而导致的不平衡状况的一部分逻辑流程,具体细节取决于实际应用场景下的需求设计。 ### 删除算法概览 移除某个指定元素的过程相对更为复杂一些,除了要考虑常规BST中的前驱后继关系外还需特别关注被删去位置处所遗留下来的空缺是否会引起连锁反应进而影响全局稳定性。为此通常采用替换法先找到合适替代品再做进一步修正工作直至完全消除负面影响为止。 ```c Node* treeMinimum(Node* node){ while(node->left!=NULL)node=node->left; return node; } void deleteFixup(RBTree T, Node x){...} ``` 这里给出了一些辅助函数用于支持完整的删除功能实现,其中`treeMinimum()`用来获取某子树中最左侧的那个节点作为候选接替者之一,“deleteFixup()”则负责后续必要的结构调整任务以确保存储结构依然符合预期标准。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值