软件大神Bill 听说张大胖要和女友Java举办婚礼,他非常吃惊,赶紧跑去阻止,可是为时已晚,张大胖已经把戒指戴到了满脸幸福的Java的手上。
Bill警告张大胖:“你的苦日子开始了!”
张大胖不以为然,他太喜欢Java了,喜欢Java那严谨的语法,优美的Lambda表达式,漂亮的注解,无所不包的类库。还有,一个简单的单例模式用Java都有七种写法!这是其他语言根本无法比拟的!
他发誓以后只爱Java一个人,不仅爱她众多的优点,也包容她各种各样的缺点。
不仅爱Java,他还爱屋及乌,很喜欢和Java的七大姑八大姨打交道,像Spring了,MyBatis了,Tomcat了,Netty了, 都是他家里的常客。
张大胖用这种方式向Java媳妇表达自己的忠贞不渝,生是Java的人,死是Java的鬼。
他的Java媳妇也经常给他灌迷魂汤:我们Java家族常年在TIOBE上排名第一,静态类型,正统的面向对象编程语言,后端开发、移动开发、大数据开发的绝对统治者!
不仅如此,每当张大胖流露出一点对其他语言的好感,Java都会对他毫不留情地予以打击,直至他悬崖勒马,回头是岸。
有一次逛街,张大胖瞥了一眼迎面走过的Python,就被Java媳妇狠狠踹了一脚:一个动态语言有什么可看的?! 你看看那强迫症似的缩进,丑陋的self,性能大累赘GIL,怎么能和我相比?
张大胖怕回去跪搓板,赶紧附和:就是就是,虽说都有字节码,但是Python那虚拟机就是个玩具,完全不能和Java虚拟机相比。
早些年张大胖对Ruby颇有好感,觉得语法优雅,元编程强大,至今家里还偷偷存放着给Ruby的几封情书。
那一天安装Visual Studio Code,张大胖不知道发了什么神经, 居然用Ruby而不是Java 写了一行代码:
print "Hello World";
很不幸,Java媳妇就在身后,雷霆震怒。
张大胖还想抵赖,红着脸辩解说这是Python代码,结果被明察秋毫的Java媳妇当场识破:“Python程序根本就不用分号,Python3的print函数必须加括号才能调用,还有你这文件扩展名明明是.rb还想抵赖......”
除了罚他用Java刷一百道LeetCode题之外,Java媳妇还翻箱倒柜彻底给家里消了毒,把C,C++, Python等各种代码,包括那几封情书都当作垃圾扫地出门, 这让张大胖伤感了好几天。
不过Java媳妇对JavaScript网开一面,不知道是不是名称中也带个Java的缘故, Java媳妇宽宏大量地规定张大胖以后可以基于HTTP的RESTful的服务和JavaScript进行书信往来,书信的格式必须是JSON,必须交由她先审查再定夺张大胖能不能看。
后来Java觉得用JSON交谈不妥,又升级为GraphQL, 张大胖真搞不懂她心里在想什么。
时间一天天地过去,张大胖掉进了Java的温柔陷阱,落入了Java织就的信息茧房。他觉得Java语言的一切都是好的。
张大胖无论写什么程序都用Java。写服务器端程序,肯定用Java, 写桌面程序,还得用Java。就是写个处理文件的小程序,也是Java,虽然用Python可能10行以内就能搞定。
有一次,公司要开始一个新的项目,尝试用Go语言的技术栈,根本不了解Go语言的张大胖极力反对:用什么Go语言啊,Java多好,生态系统多成熟!
不仅如此,他还每天琢磨着去“统一”公司的编程语言 ,公司有个爬虫程序,专门把竞争对手网站上的数据给爬下来,本来是用Python开发的,因为Python在这方面的工具非常多,开发很方便。可是张大胖有一天居然用Java给它重写了,把经理气得够呛。
张大胖拒不承认动态语言在快速开发方面的优势,看不到迅速完成一个系统,推到市场上验证所产生的价值,他总是拿“动态一时爽,重构火葬场” 来攻击Python,Ruby等动态语言。他不停地上网和别人论战,维护Java的正统地位。
张大胖经常听到同事在讨论新的技术,比如火热的Go语言的Goroutine,Erlang的Actor模型, 还有LISP的函数式和元编程,JavaScript的闭包,柯里化...... 每次张大胖都嗤之以鼻, 什么Goroutine,什么Actor,最有用的还是Java的线程!
慢慢地,大家不再搭理他,周末去喝酒也不带着他了,可怜的张大胖被孤立了。
落寞的他回到家,打开《Java 4-ever》这部老电影开始复习,他一边喝着酒,一边陷入了深深的沉思......
后记:
写这篇小品文是因为我看到有些人太痴迷于一种语言,对别的语言根本看不上眼,不屑一顾,就以张大胖和Java结婚做了一个比喻,批驳一下。现在这个世界上哪有无所不能的语言呢?每个语言都有自己的优点和适用范围,如果只是固守一个语言,不去看看外边的美好世界,就太可惜了。ps: 《Java 4-ever》 是油管上一个非常搞笑的短片,点击阅读原文可以观看。
转载:https://blog.csdn.net/coderising/article/details/105631226