我为什么后来远离了 Java

2015-05-10 01:55:36 +08:00
 noli

我的编程生涯:

  1. 小学是Logo
  2. 初中是Pascal
  3. 高中是自学JSP和Javascript,为了写论坛
  4. 大学软件工程,教的还是Java,但老子自学C++去了(这简直是我人生中最成功的决定之一)

在大学那会儿基本上是主动放弃Java了,原因之一当然是已经对语言很熟了,但是觉得没有必要再去碰延伸开去的东西,例如SSH啊EJB啊什么的。虽然当时Java还是非常红的,Sun还很强,Eclipse 也是当时最强的IDE之一。

当时是看见这几件事情,决定放弃Java的:

  1. 大公司例如银行、保险、金融等等都招Java,为啥,因为他们的IT团队都很大随时有人走,随时要新人接着上。这说明了Java 很适合大团队管理,因为写法超死板,框架太强力,不需要个人发挥。

  2. 我大学时的同学就算以前没有编程,只要肯学,学Java 还是可以很容易追上我当时的水平(你要对我高中时肯自学JSP的那种劲头有信心),甚至后来都可以跟我一样帮大学老师做项目了。这说明了什么:用Java的核心竞争力不是经验,你写得越多,你的经验优势就越小。

  3. 当我开始想学习Unix,想学习编译器的时候,虽然我甚至因为Java的原因学习了一下 ANTLR,但我发现用Java写这些东西的代码时,实在距离我想表达的,我所知道的东西太远了:尤其是对比 C++ Template 的表现力的时候。

所以现在我看见有人觉得Java好,或者反驳某些语言炮的时候,我都跟着叫好。

我不应该写这个帖子的。

34505 次点击
所在节点    程序员
226 条回复
chilledheart
2015-05-11 01:21:37 +08:00
有点意思哦喂。

当然,我是C++粉。
hepin1989
2015-05-11 01:23:15 +08:00
@zhouquanbest 说的有理有据
hepin1989
2015-05-11 01:23:58 +08:00
@phx13ye 你看看py2 和py3呢?
jun4rui
2015-05-11 07:10:16 +08:00
@zhouquanbest 小公司搞大规模本身就不对,不过建议你看看淘宝十年,真到大规模靠的就是架构了,连各种文件、数据库系统都只能自己开发,需要充分利用各种语言的优势,根本已经不是单一语言的问题。甚至淘宝现在有些板块还是PHP的。
noli
2015-05-11 08:14:28 +08:00
@zhouquanbest

Android 不用 Java 还可以用 C++。 只用Java 的话,你连造轮子的机会都没有。区区在下不才,现在业余做的就是类似的事情,用C++包装游戏引擎甚至是OpenGL来做UI框架。

如果你说我这就是制造轮子,一般人用不上,那好吧,Qt 满足你。
实在不想学, 现在C++不也能写Activity 吗?

你们这些 Java 狗老是说大规模大数据,说得好像你们一个写Java 的就能搞定这些似的。也就你们这种技术社区的盲从者,才会把用别人的轮子用的那么有自豪感了……可是你们知不知道,凡是用Java 做大数据的公司,最终还是要去自己调优 JVM 的?调优JVM 的时候,根本没Java 什么事情好不好?


要比开源库,现成易用,Java 跟其他语言来比还真是不自量力啊……
搞大数据不是只有Java 才有Hadoop MapReduce 什么的,不要老是被Java 社区的人洗脑……
大数据团队不好说,因为肯定都是多语言混合的。
就比单点的性能。
听过 Nodejs, gevent, Eralang 没有?他们随便哪个写一个作为集群里面的单点支持高并发,不比你 Java 方便快捷性能好?

图像识别、人工智能里面的CNN,正在变成实用的领域,就没有Java 的什么事情。

“所以任何技术有自己的有点和局限性
在合适的场景选择合适的技术 才是程序猿该做的”

你算是说对了,所以不要死抱着Java 就感觉很了不起。
IT世界里面的基础设施,现在还没有事情是离不开Java 的,将来也不会有。
Khlieb
2015-05-11 08:44:20 +08:00
timbotetsu
2015-05-11 08:46:51 +08:00
“我说的都是对的,我想听听你们这些人用垃圾、错误语言的想法”
主楼精简版
jackfan
2015-05-11 09:14:18 +08:00
格局要更开阔,别说你一程序员,就是刷油漆的,你雅思7分,一样可以年入50万,英语是程序员自我修养的第一因素。过了英语关,要选一个市场需求大,技术门槛高的活。 说实话,目前没有趋势非常好的语言,就像10年末的OC一样,一定要选还是OC
DRcoding
2015-05-11 09:17:01 +08:00
从回帖看了一遍,LZ一副高高在上的姿势,人品不行不谦虚的人,技术也不见得好到哪里去。
stillwaiting
2015-05-11 09:22:50 +08:00
如@timbotetsu所说
“你们这些 Java 狗老是说。。。”
狗这个词一般都是自我戏谑,感觉LZ人品一般吧。
sparrowMan
2015-05-11 09:43:11 +08:00
@stillwaiting 朋友说的不错 自己说自己 单身狗 程序猿 这都是自嘲 闹着玩呢 你要是说别人什么 狗 什么猿的 这就是不尊重人了
noli
2015-05-11 10:02:40 +08:00
@DRcoding @ stillwaiting @sparrowMan

是不是我人品好可以加工资?哈哈哈哈~~~

好吧,我承认我过激了,虽然在说“Java 狗”这个词的时候,我心里面确实是满满的鄙视。
向你道歉 @zhouquanbest
hepin1989
2015-05-11 10:09:41 +08:00
Nodejs, gevent, Eralang 就这个来说,gevent不是语言,Node.js也是framework,怎么混了呢?
对于性能,还真跟不上java。

还是那句话,语言只是一个顺手的工具罢了,没必要把别人整个社区都攻击了,别人又没有欠你钱,楼主戾气太重,宽宽心。
zhouquanbest
2015-05-11 10:10:05 +08:00
@noli
所以这就是你的应用场景啊 并不适合使用Java 是很正确的选择
你在Android上用OpenGL 这说明你是在做游戏
然后你都要调优JVM 说明你对性能很苛刻
然后你说你处理大数据Hadoop也不够(我自动理解Spark也不够)

结合以上 我能推测的就是你在搞游戏的Client以及Server端开发
如此一来 Java并不适合你 这个场景本来应该使用C++ 对吗?

此外我不是抱着Java的社区狗 相反 我在Web开发上一般使用Python
诸如Node和Go 没有做过线上的正式产品 没有实际的数据也不来吹B

但因为一个场景的不适宜去嘲讽一门技术我是不赞成的
vjnjc
2015-05-11 10:17:50 +08:00
jvm是道槛...
noli
2015-05-11 10:23:36 +08:00
@hepin1989

你说得对,Nodejs, Gevent, 是 framework 不是语言。但是 Java 社区诞生不出这样的 framework 只能靠 JVM 提供 NIO,因为一旦你要扩展 JVM 的能力你得修改整个 JVM。就这一点来说 Java 作为一个语言是不是 渣?

我不是攻击整个社区,我说得很清楚了,叫那些只会 Java 的人多开眼界。你应该不在此列表中。


@zhouquanbest

不是 Hadoop 性能不够。我举例是说明 Java并不独特,没啥了不起。

嘲讽 Java 以及没开眼的 Java 程序员是因为他们碍眼,在我眼里 Java 这门语言确实一无是处。当然写 Java 的程序员和 Java 这门语言是两码事,有很多优秀的 Java 程序员本身并不只写 Java,我是没能力嘲笑他们的。

但是 Java 狗们自动把这些程序员的功劳作为自己的自豪感来源,这就很碍眼了。嗯,没错,我又用 Java 狗 这个词了,恶意满满地用了。
zhea55
2015-05-11 10:30:09 +08:00
语言本身没有问题,问题在于用的人的思维、经验、有没有话心思进行设计。我所见到的大多数java工程师都只是照着别人的类,实现自己的逻辑。代码臃肿、冗余,不过他们觉得无所谓,反而组织好的代码会令他们恐慌,因为他们需要花更多时间去学习那些设计思路。

> 不过我也见过写的好的java代码,人家能把抽象类、继承、多态,体现的淋漓尽致。

只能说大多数人都只是用一些框架,配置一些文件。学习框架,只会用,不深入研究其底层实现和思想。

一遇到新的技术变革,很多东西都要推倒重来。

磨刀不误砍柴工 这句话他们是永远不懂的。
ivvei
2015-05-11 10:30:51 +08:00
@handleyan 你都说了语言只是工具,为啥还要把算法之类的拿出来讲…… 算法又不是Java专用的,别的语言照样有算法, 跟Java一点关系都没有。同样的,linux,网络络编程,存储和分布式计算,大数据处理和机器学习都不是Java专利。
williamx
2015-05-11 10:31:11 +08:00
@djyde 前面部分我和你是一样的,只是觉得Android选择java是最大的失败!
drivedreams
2015-05-11 10:35:03 +08:00
说的好像你多牛逼,你是谁啊,你用C++你就牛?你就有资格说别人是“JAVA 狗”。你写过什么牛逼的东西。堪比Linux量级的Java项目你做过吗。你用qt写Android,算了吧,你真的试过? 你用C++来做Android UI,你真的做过! 你用C++写Activity用多长时间,用Java写需要多长时间。时间是什么,时间就是金钱。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/189854

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX