中文编程争议的核心原因是什么?
这个问题每隔几年就会被翻出来讨论一轮,争论的激烈程度往往超过技术本身。曾经我主张如果你用中文写出来的开源库拳打elastic search,脚踢kafka,那么中文编程就是编程史上的里程碑,围绕你的信徒没有几千也有几万,但是很可惜现在并没有人做到。 当时有个人追着我一堆喷,给我都整出PTSD了。
写过几年代码,经历过从纯英文到现在 AI 辅助开发的转变,可能能提供一些不同角度的观察。
反对中文编程最硬的理由其实很简单: 现有生态全是英文的。
- 主流框架、库、工具链都是英文
- Stack Overflow、GitHub 上的问答和文档是英文
- 报错信息、日志输出是英文
- 第三方服务的 API 文档是英文
这不是"崇洋媚外",是客观现实。你用中文写业务逻辑,调用的底层还是 HttpServletRequest,出了问题还得去英文社区找答案。这种割裂感是真实存在的。
你可以在 Spring Boot 项目里试过用中文命名变量和方法,比如 获取用户信息(),写的时候确实顺畅,但调试时看到这样的调用栈:
com.example.service.UserService.获取用户信息(UserService.java:45)
at com.example.controller.UserController.lambda$0(UserController.java:32)
at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:421)
中英混杂的视觉体验确实不太好。
在实际项目中,代码不是一个人写的:
- 可能有外包团队参与
- 开源组件需要其他开发者维护
- 技术选型时要考虑招聘难度
- 代码审查和交接时的理解成本
中文编程在小团队、内部系统里问题不大,但一旦涉及开放协作,英文确实是当前的通用语言。这不是技术问题,是社会网络效应。
很多人觉得中文输入慢,这在十年前确实是问题,但现在拼音输入法已经很成熟了。真正的障碍在于:
- 中英切换的认知负担(虽然习惯后还好)
- IDE 对中文标识符的支持参差不齐(某些老版本工具会乱码)
- 某些字符在不同编码下显示问题
不过这些都是工程问题,不是根本性障碍。我用 IDEA 写中文注释和文档完全没问题,只是变量名还是习惯用英文。