Forwarded from duangsuse::Echo (duangsuse)
Kotlin 相较于其他『高级程序设计语言』一个最显眼的好处就是对很多东西有更抽象的描述。允许程序员只描述问题本身,而不是疯狂描述各种各样为了伺候程序控制流做的制杖事,比如 Ranges。Java 程序员用了不知多少年的
比起其他语言 Kotlin 对抽象层次重视绝对是 Scala 的级别,但不至于把抽象本身做成一种问题而是只为实际工程服务,所以 Kotlin 还有 extension function、extension property 这些方便直观而且自然的语法及特性,某辣鸡 Jawa 和 JVM平台上什么 Decorator 呦、什么 capture 呦 PECS 呦、lazy initializer 还『双检锁』高端得跟 upvalue/continuation 一样,不仅类可以"final"而且参数字段也都能"final",真是把数学式"多态"的糟粕都学干净了。还各种 XML 式的『DSL』,还上Groovy这个IDEA都不屑于给好好支持的『脚本化语言』,真是隔壁 Ruby 都比它强 1k 倍,一切皆对象但是一切皆模板,不是太模板甚至于死板就是太『灵活』。好的语言就不该有模板,为什么模板不应该用对语言/库的设计来解决?所以包含了历史沉淀渣设计的辣鸡Jawa应该退休了,立刻。
int i = 0 while (i < stop) { ...; i++; } (或许你也可以说这应该用 for(int i=0; i<stop; i++) 且带step也可以这样,但依然远远不如 Kotlin 直观),真是忽如一夜春风来就给改 for (i in 0 until stop) ... 了,直白100倍,而且还有基于「块(code block)」的 repeat 直接 EmbeddedDSL,还能让一些程序换 tailrec 写从而更直白,真是打了某些自以为自己的算法很高级而从不考虑可读性的辣鸡程序员的脸,这还只是程序抽象级别上的,没提到比 Java 深思更多的语言设计和新世纪以来最有用的设计成果以及19xx年都有的研究。比起其他语言 Kotlin 对抽象层次重视绝对是 Scala 的级别,但不至于把抽象本身做成一种问题而是只为实际工程服务,所以 Kotlin 还有 extension function、extension property 这些方便直观而且自然的语法及特性,某辣鸡 Jawa 和 JVM平台上什么 Decorator 呦、什么 capture 呦 PECS 呦、lazy initializer 还『双检锁』高端得跟 upvalue/continuation 一样,不仅类可以"final"而且参数字段也都能"final",真是把数学式"多态"的糟粕都学干净了。还各种 XML 式的『DSL』,还上Groovy这个IDEA都不屑于给好好支持的『脚本化语言』,真是隔壁 Ruby 都比它强 1k 倍,一切皆对象但是一切皆模板,不是太模板甚至于死板就是太『灵活』。好的语言就不该有模板,为什么模板不应该用对语言/库的设计来解决?所以包含了历史沉淀渣设计的辣鸡Jawa应该退休了,立刻。