Java基础、中级、高级、架构面试资料

Java被其它语言或程序去瞧不起的原因是什么?

JAVA herman 26浏览
公告:“业余草”微信公众号提供免费CSDN下载服务(只下Java资源),关注业余草微信公众号,添加作者微信:xttblog2,发送下载链接帮助你免费下载!
本博客日IP超过2000,PV 3000 左右,急需赞助商。
极客时间所有课程通过我的二维码购买后返现24元微信红包,请加博主新的微信号:xttblog2,之前的微信号好友位已满,备注:返现
受密码保护的文章请关注“业余草”公众号,回复关键字“0”获得密码
所有面试题(java、前端、数据库、springboot等)一网打尽,请关注文末小程序
视频教程免费领
腾讯云】1核2G5M轻量应用服务器50元首年,高性价比,助您轻松上云

今天我们不聊技术,聊一个我最近看到的话题《为什么一些人很瞧不起 Java?》、《Java 被骂 20 年,却越骂越火?》、《Java 到底动了谁的奶酪?》。

我觉得这些话题很有意思,而且知乎的这个话题的浏览量也很高,有将近 120 万的浏览量,于是我就扒了一下这 200+ 条有意思的回答,得出的真相很可能让大家破防!

为什么 Java 总在鄙视链底端?为什么一些人很瞧不起 Java?难道是因为 PHP 是世界上最好的语言🤣。

所以,作为一名 Java 程序员,我试图找到真相,翻阅了所有高赞回答,发现鄙视 Java 的理由五花八门,但背后真相却出奇一致。下面,我们就一起深入拆解这条长达二十年的“Java 鄙视链”吧。

C/C++ 程序员

鄙视链的顶端,首选是 C/C++ 程序员,高赞回答里来自他们的“降维打击”,最一致的观点是:瞧不起 Java 的,70% 是 C/C++ 程序员

他们的理由很硬核:

C/C++ 直接操作内存,手握指针大杀器,面向操作系统和硬件编程。Java 在虚拟机里跑字节码,算什么本事

这逻辑听起来很有道理,但越看越不对劲。按照这个标准,写机器码打孔的岂不是要上天?用汇编写代码的是不是可以鄙视所有用高级语言的?

这其中有一个答主说的一针见血,他指出:凭什么底层语言就要高人一等?编程语言归根结底是工具,鄙视链本质是工种歧视的变种

更讽刺的是,这些“底层优越感”往往在实际项目中秒打脸,当 C++ 程序员花一周时间排查内存泄漏时,Java 程序员已经用 Spring Boot 上线三个服务了🤣。

Java 语言原罪

Java 语言的原罪是什么?Java 真的“又臭又长”?我看评价这个的也不少。

如果说 C++ 程序员的鄙视是“架构歧视”,那么另一类鄙视则直击 Java 的语言设计本身。

啰嗦到让人抓狂

这是被吐槽最多的点。写个 Hello World 都要套个类,明明一行能解决的事,Java 偏要写五行。相比之下,Python 的简洁、Go 的优雅,瞬间让 Java 看起来像上个世纪的裹脚布。

实际上 Java 已经在变了,简化了 main 方法,参见我的这篇文章《》、《》。

当然,不得不说的是,有答主分享了自己的心路历程:

写了十年 Java,后来转去写 Python 和 Go,那时候我也开始鄙视 Java,看看人家写得多简洁

但冷静下来想想:啰嗦的另一面是明确。Java 的强类型和冗余语法,在维护十万行代码的大型项目时,反而成了优势。今天让你接手一个五年前的 Python 项目,你可能连依赖都装不上;但五年前的 Java 项目,Maven 一刷直接跑。

或者,可以这样理解。你妈妈是不是可能很啰嗦,但她是不是真的对你好。父母之爱子,则为之计深远。若干年后,可能会有人能理解父母的啰嗦吧。

历史包袱太重

接下来,被吐槽的是历史包袱太重。

很多开发者在 2004 年被 JSF 1.x 和 EJB 2 伤害过,发誓“此生不再碰 Java”。即便现在 Spring Boot 已经极致简化,但“一朝被蛇咬,十年怕井绳”的心理阴影还在。

有架构师在 Twitter 上调研发现:超过 60% 的“Java 复杂”印象,都来自 2010 年前的技术栈。现代 Java 世界早已是fat jar横行,类加载器问题几乎绝迹,但偏见一旦形成,就很难改变。

函数式编程

针对函数式编程也有“降维打击”。

Java 8 才开始支持 Lambda,而 Scala、Haskell 这些语言天生就是函数式的。甚至有答主直言:

用 FP 写软件比 OOP 爽多了。Java 虽然能模仿 FP,但像 Clojure 那样自然?门都没有

这确实没说错。但问题是:大多数业务系统需要的是稳定、好维护,而不是学术上的完美。Java 的 OO 范式虽然“老旧”,但恰恰是业界验证二十年、数百万程序员都能理解的标准答案。

鄙视链的真相

但这鄙视链的背后,有着比较明显的真相。我们鄙视的不是语言,是“人”。

最扎心的真相来自几条匿名回答:

不是瞧不起 Java,是瞧不起烂 Java 程序员
入不了行的半吊子,Java 都没学会就各种喷,主要是找不到工作恨透了这个世界

这是什么意思?言外又有何意?

Java 的入门门槛(相对)低、岗位(绝对)多,导致大量培训机构流水线式生产“Java 程序员”。三年经验只会 CRUD、设计模式说不出三个、JVM 调优听都没听过——这样的程序员一多,Java 的形象就被拉低了。

于是形成了悖论:

  • Java 生态越成功 → 低端程序员越多 → 语言口碑越差
  • 小众语言越高端 → 会用的人越少 → 显得越有“逼格”

有答主调侃道:用 Python 的看不起用 Java 的,用 Java 的只能骂骂 PHP 了。就算都是 Python,Python 3 还能鄙视 Python 2 呢

原来鄙视链的底层逻辑是:通过贬低大众选择,来彰显自己的小众人设

动了别人的奶酪

Java 被鄙视的真正原因,很可能是:动了太多人的奶酪

梳理完所有回答,我发现 Java 被鄙视的根本原因,不是语言本身,而是三个现实:

Java 太成功了

连续二十年霸榜 TOP 3 编程语言,企业级应用的事实标准。正如答主所言:C#、PHP、Python、JS 之流,还没有这个胆子敢瞧不起 Java。枪打出头鸟,树大招风。

Java 让编程“不够酷”

Java 不追求语法糖,当然也有不少语法糖,不迎合学术潮流,甚至有点“土”。它解决的是真金白银的企业问题:高并发高可用可维护。就像丰田凯美瑞,可靠但没人说它酷。而 Rust、Go 这些新车,就像纯电新能源,天生自带光环。但 Java 也依旧是不落后的新能源,或者说是插混或增程。这个比喻可能不恰当,大家自行比喻吧。

Java 程序员赚钱太容易

前几年大数据、云计算风生水起,Java 程序员薪资水涨船高。“刚毕业 40 万,五年年入百万”的故事听多了,其他语言栈的开发者难免心理不平衡,凭什么他写 CRUD 赚得比我多

于是,鄙视就可能成了最好的心理安慰剂。

最后

我建议大家停止鄙视,当个清醒的程序员。

尤其是,翻完这些回答,我最大的感触是:技术圈鄙视链,本质是认知懒惰

  • 用 C++ 的:鄙视 Java 不懂底层,却忽略了 Java 在开发效率上的碾压优势
  • 用 Python 的:鄙视 Java 太啰嗦,却避而不谈大型项目中的维护噩梦
  • 用 Go 的:鄙视 Java 太重,却假装看不见 Go 生态的稚嫩

每个语言都有自己的战场。Java 的战场在企业级开发,C++ 的战场在系统级编程,Python 的战场在数据科学。用坦克的标准去嘲笑航母不够灵活,本身就挺可笑的。

同是社畜程序员,相互鄙视几时休🤣?我觉得,能赚钱、能解决问题、能养活百万程序员的生态,再土也是好语言,你们觉得呢?

最后,我还是拿我的之前的文章里的语句做个结尾吧。

Java 的理念就是一次编译,到处运行,从来没有说过我要节省内存,我要启动快等等。不少人一提起 Java,就说 Java 是内存大户,Java 慢等等。不能只看缺点,不看设计理念。部分人挑出的毛病,其实是 Java 为了实现“跨平台”而付出的必要代价,是设计上的权衡,而非“缺陷”或“错误”。另外,Java 已经不是当年的 Java 了。不能简单的停留在了过去、陷入标签化、暴露认知局限、寻求着群体认同。作为理性的技术人,我们应该做的是:理解其设计哲学,承认其固有代价,欣赏其优势领域,并在正确的场景下使用它

业余草公众号

最后,欢迎关注我的个人微信公众号:业余草(yyucao)!可加作者微信号:xttblog2。备注:“1”,添加博主微信拉你进微信群。备注错误不会同意好友申请。再次感谢您的关注!后续有精彩内容会第一时间发给您!原创文章投稿请发送至532009913@qq.com邮箱。商务合作也可添加作者微信进行联系!

本文原文出处:业余草: » Java被其它语言或程序去瞧不起的原因是什么?