如题,目前有这个趋势吗?
101
darklowly 2019-07-09 02:31:11 +08:00 6
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# |
102
q397064399 2019-07-09 02:40:53 +08:00 via iPhone
@darklowly
c#就算了,它爹的黑历史太多,另外投资微软的技术,真的很容易没饭吃。 |
103
darklowly 2019-07-09 03:02:36 +08:00
|
104
orm 2019-07-09 06:41:11 +08:00 via iPhone
java 一直在发展,例如 GraalVM
|
105
jaskle 2019-07-09 07:01:19 +08:00 via Android
个人感觉:现在的语言呈现多元化,百花齐放,开源项目和组织越来越多,每种语言都在寻找自己的定位,基本上是各持一把刷子,比如最新流行的 ai 平台是基于 c++和 Python,erlang 也占了一部分集群市场,node 更是中小公司快速起家的武器,还有 go 这种密集计算的语言,总体来说你想用什么就得选什么,人家开源组件是 go 做的,你就得用 go 开发,就是这样
|
106
n1dragon 2019-07-09 07:10:15 +08:00 via iPhone
现在我们的新项目都直接上 AWS Lambda with node or python. 只有传统企业项目才用 Java
|
107
whileFalse 2019-07-09 08:26:24 +08:00
|
108
starsriver 2019-07-09 08:49:53 +08:00 via Android
十年前有人说过 php 会被 java 代替
现在 php 活的好好的,而且发展不慢。 五年前有人说过 php 会被 node 代替 现在 node 也逐渐沦为和 php 一样的东西 |
109
talk2moon 2019-07-09 09:21:35 +08:00 via iPhone
这个要看 oracle 作不作
|
111
Hanggi 2019-07-09 09:56:42 +08:00
@starsriver Node 只是最近讨论的少了,国内外用的实际上真的很多,特别是项目初期。
|
112
sirm2z 2019-07-09 10:08:56 +08:00
楼上几个 go 能取代 node 的观点应该是脱口而出
前端垄断这点很难取代 node 之于前端的生态链就像 java 的生态一样 跟平台绑定,入门开发就需要掌握 |
113
KuroNekoFan 2019-07-09 10:19:30 +08:00
反正 java 码农就是量大够用,生态也足够好....刚好国内还是处于堆人数解决问题的阶段,那就接着 java 咯..
不过看起来讨厌 js 的人是真的很多 |
114
yunson 2019-07-09 10:45:22 +08:00
各有特色,各有应用之处,取代应该不至于
|
115
jaskle 2019-07-09 10:59:10 +08:00 via Android
感觉好多人看不起 node,我从 c++转 Java,最后转 node,最后我的感觉是:没有最好的,只有最合适的,老板让你做个项目,你掏出 Java 撸了一个月,结果用 node 的一个周,你在跟老板谈集群框架大数据。最关键的是启动一次几分钟,我都等疯了,掏出 node,双击跑起来,有 bug 当场改,要多爽有多爽。跟我说性能不行?那我明确告诉你:数据库才是瓶颈,常见业务根本没有密集计算,反而 Java 不用 nio 连接数和性能远不如 node。
|
116
windyboy 2019-07-09 11:20:34 +08:00
c 都活得好好的,谈谁取代谁
java 要死,也是 oracle 玩死 |
117
Jonasen 2019-07-09 11:23:35 +08:00
没有最好的语言,只有最合适的语言,每个人都有自己的角度,所谓的会不会被替换也是站在个人的角度看问题,我从来不认为某个编程语言有多好,也不会认为哪个语言会被替代。
--------别问,问就 PHP 是世上最好的语言[手动狗头]!! |
118
liuhuansir 2019-07-09 11:25:43 +08:00
@jaskle 啥样的系统用 Java 撸一个月,node 只要一周?水平差不多的话,Java 开发速度不比 node 慢
|
119
ycz0926 2019-07-09 11:30:18 +08:00
我以前觉得,套模板的活,python 和 ruby 会是主流,api 的实现,go 会是主流,但是,我又发现,同事用 laravel 在写 api,而二线城市,java 的就业机会始终是最多的 ~
|
120
jaskle 2019-07-09 11:35:03 +08:00 via Android
@liuhuansir 举例说明,时间不一定准,估计差一倍应该是有,换 node 后总体感觉就是很爽。
|
121
talk2moon 2019-07-09 11:38:54 +08:00 via iPhone
@axwz88 好处是不用写实体类,坏处嘛就是验证不做到位会有类型转换错误,然后 idea 一堆强转换提示
|
122
rockyou12 2019-07-09 11:41:10 +08:00
@jaskle 只能说你们业务可能太野太简单了……表可能就 10 张以内。我们现在经常做 100 表网上,关系要是用外键起码也有 20+,这种系统用 node 做我确实不晓得怎么管理。更不要说后期维护 node 要怎么做重构或者单纯加功能……
|
123
TheWalkingDead 2019-07-09 11:43:59 +08:00
@n1dragon
现在我们的新项目都直接上 AWS Lambda with node or python. 只有传统企业项目才用 Java --------------------- 把 java 玩到炉火纯青的阿里巴巴被吃了。 |
124
friddle 2019-07-09 11:50:26 +08:00 1
java 肯定不会被 node 取代。node 能干啥?
go 和 java 有部分有交叉。但是 java 比 go 更适合大型商业型软件。尤其是商业性比互联网性质要浓的。毕竟招 go 的程序员比 java 的程序员贵多了。 取代 java 的语言。必须比 java 入手更简单。库更多更稳定。生产力更猛。kotlin 可以算半个吧。scala 肯定是不行的。go 和 java 根本不是面向同一个商业场景。 未来新项目: 底层 c, rust 取代部分 c++. go 取代部分网络性质较重的业务层。 java 和 kotlin 相互做用于业务型后端。 python:新手入门或语言不重要的领域(比如机器学习)。 至于 node,除了写页面模板源(前面还必须有 cdn 扛着)还能干啥。 javascript 肯定不死。但是应该有很多项目用 typescript。 |
125
tozp 2019-07-09 12:17:30 +08:00
会取代一部分,不会取代整个 java 生态,因为 java 本来也在发展进步。
至于 go,不少用过的人都表示非常喜欢,哈哈 |
126
ihipop 2019-07-09 12:19:45 +08:00 via Android
node 暂时看不到可能性,go 不好说。
|
127
Hanggi 2019-07-09 12:23:04 +08:00
@friddle Node 能干啥自己查查不就知道了,Node 能干啥都不知道。python 语言不重要的领域,看来 python 能干啥也不知道。还有啥不知道,让大家帮忙科普一下。
|
128
blless 2019-07-09 12:33:50 +08:00 via Android
虽然目前是 go 可能取代 java 系统层,但是业务生态起来之后也很难说,很多业务也需要多线程高并发啥的,优势还是不小的
|
129
friddle 2019-07-09 12:51:27 +08:00
|
130
Gea 2019-07-09 13:17:41 +08:00
go 和 node 都取代不了,有希望替代的话,可能要再新出语言或者 go 的大改
@friddle 分析的很对,但是有一点做 kotlin 的一般懂 java,不懂 java 的,学 go 和学 kotlin 也差不多,如果要学 kotlin 还不如学 java,我觉得 kotlin 又有点尴尬了。最后,你为什么不分析一下世界上最好的语言 php (手动狗头 |
131
ArJun 2019-07-09 13:22:01 +08:00
@jaskle 支持你的观点,业务完善无 bug 才是王道,当数据量大的时候其实做分流都差距不大,数据库的影响倒是很大差别,个人也喜欢 node,比起 java 没那么麻烦
|
133
Cellei 2019-07-09 18:25:39 +08:00
哪位大佬来分析一下 Rust
|
134
chihiro2014 2019-07-10 00:17:36 +08:00
面向金钱开发,其实语言被淘汰跟我们关系不大。
毕竟遇上金融上的玩意还是 java 最好,go 和 java 在安全性上完全没法比。 掌握好熟练的代码能力,远比去思考啥时候语言被淘汰来的更加实际。 |
135
cmonkey 2019-07-19 15:50:28 +08:00
当然是被 Rust 革命
|