为啥类属性 Kotlin 要贬低 Java

2017-06-04 20:19:01 +08:00
 muziling
比如以下:
public class Person {
var name: String = ""
}
...
val person = Person()
person.name = "name"
val name = person.name
Kotlin 教程总要说 Java 傻,要用 getter 和 setter,Java 把 name 定义成 public,照样不需要 getter 和 setter。
实在不理解为啥这个地方要秀一下优越性。
8747 次点击
所在节点    Kotlin
28 条回复
mko0okmko0
2017-06-05 15:22:37 +08:00
假设一个任务,同样的注解量,
kotlin 写只要 java 的 50%就能完成,并且性能达到 java 的 90%,
但性能要达到 java 的 95%就要写 120%以上,
你选用哪一个?

然后你不觉得这个问题很熟吗?
我举例 JPEG 压缩,在品质 75%以下过去 20 年有多少新格式能体积性能都赢它?

JPEG 有太多问题,但它还是市场覆盖率选择率最高的影像储存格式,没有之一.

再例如 php 这个全世界最好的破烂玩意,依旧是 web 界最优选择之一.

所以能用 1 行语法完成功能,谁愿意写 10 行?

再说,"你要语意清晰很简单,该类用 java 写好,用 kotlin 去呼叫该 java 档案就好了",
kotlin 从来没有要取代 java 过,其他的 JVM 语言我还觉得更有取代的念头.

所以到底有什么好争议的,
我还是浪费生命写了一篇回文,感觉自己蠢
sagaxu
2017-06-05 15:34:27 +08:00
@silva 你当然有权认为这是混淆,但是 C#,Swift,Python,Ruby,PHP,JS,VB 等等都是这么做的,这已经是比较 common 的 sense 了,也许 Java10 或者 Java11 也会引入这样的特性,你接受不了可以不用。哦,顺便说一下,即使是 Java6,用了注解,也会有一些改变语义的 magic 发生,是不是也是种混淆?还有==运算符,有时候比的是引用,有时候比的是值,你也别用了。
sagaxu
2017-06-05 15:35:50 +08:00
@mko0okmko0 Koltin 性能 >= Java,得益于 inline 方法
silva
2017-06-05 19:04:57 +08:00
@sagaxu 也就是说你已经承认这个确实是混淆语义的设计。但是这个垃圾特性分布非常广,让人无法回避呗。

我有个不太相关的问题,上面你一连举了那么多语言都包含该特性,不会是想用数量来说明正确性吧?
silva
2017-06-05 19:16:19 +08:00
@sagaxu 算了,这特性也不是你加进去的。保留各自观点吧
sagaxu
2017-06-05 19:54:58 +08:00
@silva 对你来说是语义混淆,对我来说那是增强,它不会给我造成任何不清晰或者不明确,相反会节约我时间。

数量跟正确性无关,但是一大波主流语言的设计者们的共同选择,正确的可能性还是蛮高的。

从根本上说,是否加入 XX 特性可能无关正确性,而是各人根据自身经验和喜好,做的一个决定罢了。

ps: 从某种程度上讲,interface 和多态,是同类型同签名方法的不同语义,也是一种你眼中的混淆,只不过你没法回避这种混淆,只能认命。
silva
2017-06-06 10:05:20 +08:00
@sagaxu 你既然继续认为数量既是正确性(概率),那也没啥好说的。

PS:可惜做的最灵活的 C++,在实际项目上没有相对“死板” JAVA 应用范围广。其中原因自然也不是你可以理解的。

至于认不认命的你想多了,都不值得上技术手段。
sagaxu
2017-06-06 16:28:15 +08:00
@silva C++这样也能算最灵活?估计你没玩过 lisp 吧。一个语言流行不流行,有很多因素在里面,灵活不灵活只是很小的一个因素之一。你觉得死板是优点,你高兴就好。不喜欢死板的 Javaer,已经用上 Lombok 了。

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

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

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

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

© 2021 V2EX