10 年后,大家觉得 Java 的地位会不会被 go 或者 node 之流替代掉

2019-07-07 23:04:45 +08:00
 shuperjolly

如题,目前有这个趋势吗?

20707 次点击
所在节点    Java
135 条回复
darklowly
2019-07-09 02:31:11 +08:00
1 node 不太可能

2 golang 也不太可能,我大概从 2012 年低开始用 go,2016 年开始全职用 go。看过无数的 go 语言的开源项目,能够把 go 语言用好的不多。

主要原因是,现在市面上的大规模教育和学习的方式是基于面向对象的模式构建的,所以大家形成了一套用面向对象模式解决问题的思路。


如果把 C 语言看成爷爷,C++就是儿子,C++这儿子把家族发扬广大光大,但是引入了太多东西,搞的太复杂,Java 就是孙子,把 C++这爹犯的错误纠正了一些,所以 Java 这孙子其实很多地方设计的刚刚好。

C++是 C 语言的扩展版,解决了很多不方便的问题,以及引入了新的编程模型,以及代码的组织方式,但是总体来说太复杂,所以实际工作中,用的都是 C++的子集,就怕新手喜欢秀特性,害怕别人不知道自己懂这个特性,非要到处用。

Java 是 C++的阉割版,相对于 C++来说,对语言进行了限制,让大家写代码不要那么潇洒任性。相对于 C 语言来说,限制了指针(同时也限制来手动内存管理),增加了面向对象模型(限制了多重继承)。


go 语言是在另一条路上改进的 C 语言

首先看一下这段 C 代码
```
struct bird {
char *name;
};

const char *bird_get_name(struct bird *b)
{
return b->name;
}
```

再来看一下这段 go 代码
```golang
struct Bird {
bird string
}

func (b *Bird) getName() string {
return b.name
}
```

在语法上改进了 C 语言的很多小问题,保留了指针,去掉了手动内存管理,加上了很多方便用的库

另外一个改进是,看一下 C 语言里面的命名方式 bird_get_name, 一般的 C 代码的命名方式是 模块+功能,例如内存模块可能是 mem_xxxxx. go 语言里面把模块组织成包,那么就变成了 mem.xxxxx,同时限制了包的循环引用。

这一个改进对于系统开发而言是非常好的,但是对于业务开发而言却不太好。

因为对于系统开发而言,很容易按照功能分模块,例如内存管理功能,文件系统功能等等,业务开发一般是分层模式。换句话说,go 语言很好的支持了按照模块组织代码,但是按照分层模式组织代码却很别扭,但是 java 两样都可以。


3 如果.net core 继续发展,听说微软在.net 5 里面要搞成一个夸平台的,通用平台,取代 java 的很可能是 C#
q397064399
2019-07-09 02:40:53 +08:00
@darklowly
c#就算了,它爹的黑历史太多,另外投资微软的技术,真的很容易没饭吃。
darklowly
2019-07-09 03:02:36 +08:00
@q397064399

微软现在对待技术的态度,比之前好很多了,而且甲骨文比微软好不到哪里去,google 呢喜欢搞潮的东西,今天搞一套,明天搞一套,大家不亦乐乎,幸苦的都是程序员自己。
orm
2019-07-09 06:41:11 +08:00
java 一直在发展,例如 GraalVM
jaskle
2019-07-09 07:01:19 +08:00
个人感觉:现在的语言呈现多元化,百花齐放,开源项目和组织越来越多,每种语言都在寻找自己的定位,基本上是各持一把刷子,比如最新流行的 ai 平台是基于 c++和 Python,erlang 也占了一部分集群市场,node 更是中小公司快速起家的武器,还有 go 这种密集计算的语言,总体来说你想用什么就得选什么,人家开源组件是 go 做的,你就得用 go 开发,就是这样
n1dragon
2019-07-09 07:10:15 +08:00
现在我们的新项目都直接上 AWS Lambda with node or python. 只有传统企业项目才用 Java
whileFalse
2019-07-09 08:26:24 +08:00
@n1dragon 我也看好 Lambda。
好像有一个性能测试,Lambda 中 Go 比 Node/Python 的性能好多了。
不过业务开发这玩意儿,在乎性能的不太多……
starsriver
2019-07-09 08:49:53 +08:00
十年前有人说过 php 会被 java 代替
现在 php 活的好好的,而且发展不慢。

五年前有人说过 php 会被 node 代替
现在 node 也逐渐沦为和 php 一样的东西
talk2moon
2019-07-09 09:21:35 +08:00
这个要看 oracle 作不作
halk
2019-07-09 09:50:10 +08:00
@jitongxi 想当年这句话说的是 COBOL
不知道现在核心系统里 cobol 还剩多少
Hanggi
2019-07-09 09:56:42 +08:00
@starsriver Node 只是最近讨论的少了,国内外用的实际上真的很多,特别是项目初期。
sirm2z
2019-07-09 10:08:56 +08:00
楼上几个 go 能取代 node 的观点应该是脱口而出
前端垄断这点很难取代
node 之于前端的生态链就像 java 的生态一样
跟平台绑定,入门开发就需要掌握
KuroNekoFan
2019-07-09 10:19:30 +08:00
反正 java 码农就是量大够用,生态也足够好....刚好国内还是处于堆人数解决问题的阶段,那就接着 java 咯..

不过看起来讨厌 js 的人是真的很多
yunson
2019-07-09 10:45:22 +08:00
各有特色,各有应用之处,取代应该不至于
jaskle
2019-07-09 10:59:10 +08:00
感觉好多人看不起 node,我从 c++转 Java,最后转 node,最后我的感觉是:没有最好的,只有最合适的,老板让你做个项目,你掏出 Java 撸了一个月,结果用 node 的一个周,你在跟老板谈集群框架大数据。最关键的是启动一次几分钟,我都等疯了,掏出 node,双击跑起来,有 bug 当场改,要多爽有多爽。跟我说性能不行?那我明确告诉你:数据库才是瓶颈,常见业务根本没有密集计算,反而 Java 不用 nio 连接数和性能远不如 node。
windyboy
2019-07-09 11:20:34 +08:00
c 都活得好好的,谈谁取代谁
java 要死,也是 oracle 玩死
Jonasen
2019-07-09 11:23:35 +08:00
没有最好的语言,只有最合适的语言,每个人都有自己的角度,所谓的会不会被替换也是站在个人的角度看问题,我从来不认为某个编程语言有多好,也不会认为哪个语言会被替代。
--------别问,问就 PHP 是世上最好的语言[手动狗头]!!
liuhuansir
2019-07-09 11:25:43 +08:00
@jaskle 啥样的系统用 Java 撸一个月,node 只要一周?水平差不多的话,Java 开发速度不比 node 慢
ycz0926
2019-07-09 11:30:18 +08:00
我以前觉得,套模板的活,python 和 ruby 会是主流,api 的实现,go 会是主流,但是,我又发现,同事用 laravel 在写 api,而二线城市,java 的就业机会始终是最多的 ~
jaskle
2019-07-09 11:35:03 +08:00
@liuhuansir 举例说明,时间不一定准,估计差一倍应该是有,换 node 后总体感觉就是很爽。

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

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

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

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

© 2021 V2EX