没有哪个圈子比程序员更爱「互相伤害」。编程语言之争(Language Wars)堪称技术圈最长寿的综艺:每个阵营都坚信自己用的是真理,别人用的是灾难。这些互黑段子流传了几十年,笑着笑着,你也就理解了每种语言的「性格」。
JavaScript:万物终将归于 JS
Atwood 定律说:「任何能用 JavaScript 写的应用,最终都会被 JavaScript 重写。」这句话本是 2007 年 Jeff Atwood 的一句调侃,如今却成了预言——桌面端有 Electron,移动端有 React Native,后端有 Node.js,连单片机都能跑 JS。
于是就有了那个经典笑话:为什么现在前端工程师越来越多?因为后端、客户端、运维,最后都变成了前端。
Java:冗长,是一种企业文化
Java 被黑得最狠的就是啰嗦。一个打印 Hello 的程序,在别人那里一行搞定,在 Java 里要先造一个类:
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); }}再配上 AbstractSingletonProxyFactoryBean 这种「企业级」命名,段子手们总结道:Java 程序员不是在写代码,是在写法律文书。
C++:在狗身上钉腿的章鱼
C++ 有个著名的自嘲:它是「一条在狗身上钉了太多腿的章鱼」——兼容 C、面向对象、模板、STL、RAII……什么都想要,结果什么都很复杂。开发者们开玩笑说,C++ 的设计目标就是「让所有简单的东西都变难,让所有难的东西都变得可能」。
Python:缩进即正义
Python 党嘲笑别人要写一堆大括号,Python 靠缩进就够了;别人反过来说,Python 是「拿空白当语法」,复制粘贴个代码缩进全乱。两边谁也说服不了谁,只能继续写各自的 print("hello")。
一个能跑的笑话
程序员圈还有个「分不清万圣节和圣诞节」的梗,它妙就妙在真的能跑:
# 万圣节是 10 月 31 日,圣诞节是 12 月 25 日print(0o31 == 25) # True!八进制的 31 恰好等于十进制的 25八进制 0o31 就是十进制 25,所以「Oct 31 == Dec 25」——万圣节(October 31)和圣诞节(December 25)在程序员眼里是同一个数。这个梗被做成了各种语言的版本,成了语言互黑史上的常青树。
笑完以后
这些段子之所以好笑,是因为它们精准踩中了每种语言的真实痛点。但换个角度,每种语言都是为解决特定问题而生的:JS 的灵活让它统治了浏览器,Java 的严谨让它撑起了银行系统,C++ 的性能至今无可替代。
语言只是工具,互黑是乐趣,但真正的工程师会按场景选工具——毕竟代码写得烂,锅不在语言。