2022 年冬月, Java 后端工程师拒绝使用 kotlin 的技术原因有哪些?

2022-12-13 20:54:24 +08:00
 yazinnnn

除去一些非技术的原因(如:领导不让用,同事看不懂,学不会,没时间,不挣钱,对比 java 没优势等)

可能对比 java 没优势算是一个技术原因

有哪些技术原因呢? 比如

15595 次点击
所在节点    Java
145 条回复
wuyiccc
2022-12-14 13:45:30 +08:00
我感觉,java 服务端开发,有时间学 kotlin ,不如学下 c++/go
magicZ
2022-12-14 13:52:31 +08:00
建议大家学学 scala, 还能搞搞大数据,学 kotlin 性价比太低。
humpy
2022-12-14 13:59:49 +08:00
我是实际用 kotlin 写过项目的,同楼上其它朋友一样,基本上只有它的 nullable 语法让我喜欢,其它都无感。
最主要不喜欢的点是它语法糖太多了,代码看着头疼。而且 idea 运行的时候也没 java 流畅,整体的使用体验不太舒服。
Slurp
2022-12-14 14:01:12 +08:00
🤔 Kotlin 都算心智负担重,语法糖多。算是知道当今程序员的平均水平了。难怪尬吹 Go 的这么多。大多数人还是适合写无泛型、无宏、无抽象的 CRUD 吧。
urnoob
2022-12-14 14:01:15 +08:00
@Torpedo
因为甩给你的 java 代码很好的包含 json 格式数据没有的信息。比如最重要的字段名称,数据类型。要一个包含所有字段的样例数据或者 json schema 是多么浪费的事情。
Akitora
2022-12-14 14:03:36 +08:00
用 go 组织项目感觉各种不爽后现在用 kotlin 觉得很香
urnoob
2022-12-14 14:09:44 +08:00
自从 java 8 后 在语言特性上 stream 和 lambda 是不错的,但是大量使用,嵌套使用就是阅读 维护的灾难了。最大的败笔是加入了 var 以后满屏的 var 真是地狱。
还好有 idea 之类的 IDE 能给你显示对应的类型,方便你阅读,调试。
换到 C/C++上,你在 sourceinsight VScode 之类的编辑器上去看 还不被恶心死。来个 coredump 用 gdb 调是真累。
t6gfx4ddv3
2022-12-14 14:10:23 +08:00
在我看来 kotlin 不只是高糖 java ,感觉已经离不开 data class 、sealed class 、协程、函数参数默认值、扩展函数等特性了,以至于后面用到 dart 和 flutter 的时候非常不适应,看到推上吹 dart 比吹 rust 的还厉害突然陷入了迷惑。
不愿换到 kotlin 的大部分原因应该还是招人难,特别是小公司,之前亲身经历因为写 kotlin 的人离职后招不到人,组长甚至开始用 java 重写才写了几个月的 kotlin 代码。。。
大多数人还是更愿意呆在舒适圈里,对新语言新框架抱有抵触情绪。当看到有人说用 kmm 不如用 rust 时,顿时理解那些不愿换到 kotlin 的人,与其在语言和框架里辗转,不如把自己熟悉的学好学精。我也是不知不觉就把这个当做理由麻痹了自己,去年就想学的 rust 到现在连 rust book 都没看过几章,kotlin 、java 水平也没见长进,只能说真是服了自己,想学东西的时候真不能给自己找什么难学没用之类的借口。
zzzzzzZ
2022-12-14 14:25:41 +08:00
@flyingghost 👍🏻

22 年冬月还在争语言优劣的一律视为巨婴,除非你今年才高一
witcherhope
2022-12-14 14:49:44 +08:00
如果现在还不明白语言只是一个工具,只能说作为开发眼界有点窄
hewiefsociety
2022-12-14 15:22:36 +08:00
个人感觉不好用
yazinnnn
2022-12-14 15:23:56 +08:00
@witcherhope

---
举例来说,假设你需要写一个软件。你的经理根本不懂这个软件的运作机制,也不知道各种编程语言有什么区别。但是,他竟然明确要求你一定要使用某一种语言进行开发。没错,他就是要求你一定要用 Java 语言。

为什么他会提出这种要求?让我们看看他脑袋里是怎么想的。他的想法无非就是,Java 是业界的标准。我知道肯定如此,因为媒体对此有铺天盖地的报道。既然它是标准,那么使用它就不会错。另外,这也意味着人才市场上肯定有无数 Java 程序员,即使现在为我打工的这批人都辞职了(真奇怪,这种事情总是不断发生),我也能够轻易地找到替代者。

嗯,这听起来也不无道理。但是,它的前提是一个没有说出口的假设,而这个假设实际上是错的。你的经理相信所有编程语言的功能都差不多,可以互相替代。如果这种想法是对的,那么他要求你用 Java 编程就很合理了。反正编程语言之间没有区别,那么就用大家都在用的那种语言吧。

但是,编程语言是不一样的。就算不探讨各种语言之间的具体区别,我也能向你证明这一点。回到 1992 年,如果你问经理使用什么语言开发软件。他会像今天一样毫不迟疑地回答说 C++。如果所有编程语言都一样,为什么答案变了?进一步说,为什么 Java 语言的设计者要如此麻烦地去创造一种新语言呢?

一般来说,如果你动手创造一种新语言,那是因为你觉得它在某些方面会优于现有的语言。Java 语言之父詹姆斯·戈斯林在第一份《 Java 白皮书》中说得很清楚,之所以要设计 Java ,就是想解决 C++的一些弱点。所以结论就是,各种编程语言的编程能力是不相同的。如果你接受你的经理的假设,然后一路追溯到 Java 语言的源头,就会得到与他的假设完全不同的结果。

到底谁对?戈斯林还是你的经理?结果当然是意料之中的,戈斯林是正确的。某些情况下,一些语言就是比另一些语言更出色。可是这样一说又导致了另外的问题。C++不适合解决某些难题,所以 Java 才被设计出来。那么,什么情况下应该使用 Java ,什么情况下应该使用 C++呢?会不会某些情况下其他语言比它们更合适呢?

---

paulg 姑且也能算个开发吧?他的眼界在程序员群体中能排第一不?
muchenlou
2022-12-14 15:30:38 +08:00
语言只是我生存的工具,我喜欢的还是躺平。
yannxia
2022-12-14 15:52:10 +08:00
写过一段时间 kt ,后来使用高版本的 Java 之后就不用了,没有感觉特别大的优势……
其实自从我升级到 11 ,能用 var 关键字之后就已经好很多了。
leonshaw
2022-12-14 16:11:16 +08:00
@yazinnnn #92 老板要的是实现业务需求,你所说的语言功能是啥?
yazinnnn
2022-12-14 16:17:15 +08:00
@leonshaw
我什么都没说,这话是 Paul Graham 说的

我对"语言只是一个工具"这个观点没有看法,我只是觉得不认同这个观点等于眼界差也太扯淡了


下面的话也是 paulg 说的

---
一旦你开始思考这个问题,就会发现它非常棘手。如果你的经理被迫去想这个问题,当他看到它的复杂性时,脑袋恐怕都会爆炸。如果所有语言真的都一样,那么他只需选择一种看上去获得大部分人拥戴的语言就可以了,因为这实际上是一种流行风尚,而不是技术问题,所以即使像你的经理这样对技术无知的人也有可能轻松得到正确答案。但是,如果语言各有不同,你的经理就会突然发现,有两个互相关联的方程,他必须找到一个能够同时满足两个方程的最佳解,而最要命的却是他对此根本一无所知。第一个方程是找到(相对于要解决的问题)能够适用 20 年左右的最佳语言,第二个方程是(为这种语言)找到合适的程序员、函数库的机会有多大。如果假定所有语言都不同,就会遇到这种苦苦求解的情况,所以难怪你的经理不愿意接受这个假设了。

认为所有语言都一样的看法的缺点是自欺欺人,但是优点是可以使许多事情变得很简单。我想这就是为什么它被广泛接受的主要原因。它是一个令人舒服的想法。
---
leonshaw
2022-12-14 16:41:51 +08:00
@yazinnnn 现实情况没有这么复杂,大部分业务场景轮不到语言层面做决定。与其说是选择语言不如说是选择生态,而生态和流行程度是正相关的。20 年后的主流很难把握,也许现在还没出现,也许还是 Java ,考虑这些就是在赌。
lengyuqu
2022-12-14 18:13:52 +08:00
你说 jvm 语言,一届一届换了多少种语法糖了?改过不啦?换汤不换药啊!人家协程也有理由说的,我出名的是什么语言,我带的 golang 。你这批语言是什么执行环境啊?你叫我带!

jvm 现在什么水平?就这么几个语言,你什么 kotlin 的都想做后端,他能做吗?做不了。没这个能力知道吗?

再这样下去 Groovy 也要做后端,kotlin 做完 Groovy 做,再 Scala 做。
liyafe1997
2022-12-14 18:27:09 +08:00
2022 年,使用 kotlin 的理由有哪些?或者说它能解决哪些问题?
exploreexe
2022-12-14 20:59:01 +08:00
看了 LS 几位的回复,说的挺好的,学 kotlin 不如学点别的,JAVA 又不是不能干,没啥意义。

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

https://ex.noerr.eu.org/t/902298

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

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

© 2021 V2EX