@
CRVV > 比如 checked exception,要在 finally 里面写一个 try catch 来包住 file.close,结果是非常多层的嵌套。当然现在已经有新的写法了。
checked exception 确实是 Java 比较奇怪的设定。但是我的体验是每种技术都有自己奇怪的角落。你后面提到 C++,C++ 奇怪的东西不少么?
> 比如 Java 很喜欢标榜自己没有指针,还造了个词“引用”。但 Java 的引用是 C++ 的指针,C++ 的引用在 Java 里面不存在。这是让人很不爽的用词方式。
我觉得如果一个东西在汉语里面叫“冷烤馒头”,在英语里面不一定要叫"Cold roasted bread"或者“LKMT”。
维基百科上有一张图:
https://en.wikipedia.org/wiki/File:Germany_Name_European_Languages.svg 画的是“德国” (.de) 在不同欧洲语言中如何称呼,日耳曼也是德国,德意志也是德国,阿勒曼尼也是德国。
如果 Java 的设计者认为“引用”的名字更合适,那自然可以用“引用”这个名字,更何况两者不是一个东西,比如 Java 不支持 pointer arithmetic 。
> 中文的 Java 资料里面类似的情况更多,比如“内存模型”,中文说的内存模型和 wikipedia 的 memory model 说的是完全不相关的两件事。
Java 中文的内存模型就是 JMM (Java Memory Model) 啊,我看 wikipedia 的 Memory model 也提到了 JMM,没感觉有啥不相关的。
> 比如有个 Azul C4 GC,号称 pauseless,但如果你去翻它一篇 pdf 的像论文一样的东西,里面会说其实有那么大概 1 ms 的 pause,但这种重要信息从来不会出现在好找的地方,所有地方都说 pauseless 。我从来没在其它语言上见过这种销售话术。
我倒是觉得这个很常见。
比如 Rust 声称自己 Empowering EVERYONE to build reliable and efficient software,但是觉得 Rust 门槛高的应该不在少数。
Rust 声称自己 guarantee memory-safety and thread-safety,然而 Rust 至今连个像样的 spec 都没有。
另外你的 C4 GC 是第三方 Azul 做的,并不代表官方态度,上面 Rust 的 claim 是官方的,要找非官方的更多。还是 Rust 的例子:
最近 GitHub 上火了个项目
https://github.com/mTvare6/hello-world.rs ,这项目很明显是揶揄 Rust,其实应该主要是一些 Rust 项目的“销售话术”的。
实际上就算不涉及商业利益,你到任何一个圈子里面,看到最多的都是对其主题的吹捧。比如我看过两眼 BSD 圈子,都是吹 BSD 如何如何优雅啊,这个好那个也好啊,最喜欢跟 Linux 比较,然后说 Linux 虽然很多人用,但是就是不如 BSD——这种现象的部分原因应该是 BSD 的阳光下的地盘(划掉)生存空间被 Linux 严重挤压。不过你到 Linux 圈子里面,也能看到 Linux 比 Windows 好的大量吹捧——大概也是类似的原因。这个应该也能部分解释主题所说现象。
其实我觉得最牛逼的“销售话术”还是 Haskell 的: Avoid success at all costs. (顺便,Haskell 圈子里面吹捧一点不少)