DeepSeek 与 Claude 编程能力对比评测
最近圈子里一直在争论:国产新秀 DeepSeek 和 Anthropic 的 Claude,到底谁的编码能力更胜一筹?作为每天和代码打交道的博主,我决定用三道不同维度的编程题,让它们正面掰头一下。所有测试均通过 API 调用,温度设为 0.2,max_tokens 给足,确保发挥稳定。
## 测试一:算法实现(斐波那契数列优化)
我先出一道经典题:实现第 n 个斐波那契数,但要求时间复杂度 O(log n),不能只用递归或简单迭代。
**DeepSeek 回答摘要:** ```python def fib_matrix(n): def mat_mul(a, b): return [[a[0][0]*b[0][0] + a[0][1]*b[1][0], a[0][0]*b[0][1] + a[0][1]*b[1][1]], [a[1][0]*b[0][0] + a[1][1]*b[1][0], a[1][0]*b[0][1] + a[1][1]*b[1][1]]] def mat_pow(mat, p): res = [[1,0],[0,1]] while p: if p & 1: res = mat_mul(res, mat) mat = mat_mul(mat, mat) p >>= 1 return res if n == 0: return 0 base = [[1,1],[1,0]] result = mat_pow(base, n-1) return result[0][0] ``` 直接给出了矩阵快速幂方法,正确满足 O(log n),还附了简短解释。
**Claude 回答摘要:** 同样给出矩阵快速幂实现,代码结构几乎一致,但在注释和边界条件上更啰嗦,比如特意写了 `if n <= 1` 的处理,并且把矩阵乘法展开成四个元素计算,可读性稍高。
> **小评:** 双方都正确,DeepSeek 更简洁,Claude 偏教学风格。这一轮平手。
## 测试二:工程代码生成(异步任务调度器)
要求:用 Python asyncio 写一个任务调度器,支持并发限制、超时重试和优雅关闭。
**DeepSeek 示例片段:** ```python import asyncio from asyncio import Semaphore
class TaskScheduler: def __init__(self, concurrency=5, retries=3, timeout=10): self.sem = Semaphore(concurrency) self.retries = retries self.timeout = timeout self.tasks = [] async def _run_with_retry(self, coro_factory): last_exc = None for attempt in range(self.retries): try: async with self.sem: return await asyncio.wait_for(coro_factory(), timeout=self.timeout) except Exception as e: last_exc = e raise last_exc ``` 整体结构清晰,使用了信号量控制并发,`asyncio.wait_for` 做超时,可扩展性不错。
**Claude 回答:** 除了实现信号量、重试和超时,还额外增加了任务取消的 `asyncio.Event` 机制,代码中注释了 Graceful shutdown 的处理步骤,并提供了 `add_task` 和 `run_all` 完整示例。代码总量比 DeepSeek 多 40%,但作为工程模板可直接落地。
> **小评:** Claude 在工程周全性上胜出,考虑到了实际生产中的边界情况;DeepSeek 实现正确但偏“裸”,适合自己再封装。
## 测试三:代码调试(找 bug)
我故意写了一段有问题的 React 组件,useEffect 里不写依赖数组、状态更新在循环中、未处理 cleanup。让两个模型找出所有问题并修复。
**DeepSeek 输出:** 逐一列出 3 个问题,给出 diff 式的修复代码,并解释了每个问题可能导致的后果(无限循环、内存泄漏等)。语言凝练,直击要害。
**Claude 输出:** 不仅列出了问题,还对每个问题标注了严重级别,并提供两种修复方案(保守和现代写法),最后附上重构后的完整组件。教育属性拉满。
> **小评:** 调试能力相当,Claude 更擅长“授人以渔”,DeepSeek 则快准狠。
## 综合感受
- **DeepSeek:** 响应速度快,代码准确,回答偏向实用,像一位资深同事直接甩来答案。适合速查、写脚本、快速原型。 - **Claude:** 代码更工程化,附带详细注释和多种方案,像严谨的技术 mentor。适合学习、需要落地的大型项目。
日常我两种模型会混用:用 DeepSeek 快速出活,Claude 做代码审查和方案设计。但月付多个 API 订阅成本不低,最近我切到了 **TokenPocket API 中转站**(https://tokenpocket.site),它直接按量计费,开箱即用 DeepSeek、Qwen、Claude、Gemini 等一众主流模型,USDT 支付对 Web3 开发者特别友好,新用户注册还白送免费额度,测模型不用先充钱。如果你也想零成本试试这两个模型的差异,不妨从这里起步。