[八卦] 关于圈子顶部对 D 语言的介绍!

Colorful 2009-04-03
俺对于圈子顶部 D 语言的介绍中,C 语言内存模型一句一直心有疑问。以前分析 D 语言 GC 的时候就觉得这句是对 D 语言最大的误解。直到最近看了 Andrei Alexandrescu 老大的 The Case for D 后更加坚定了俺的看法。

内存模型对于并发和 lock-free 编程至关重要,它是 D 语言针对未来多核并行程序设计的坚实基础,以 C 语言内存模型来看 D ,真的会害死人!

所以俺强烈建议把这句改掉或者直接去掉!
ideage 2009-04-03
赞成!马上修改下.

感谢为D圈子建设积极贡献!
night_stalker 2009-04-03
我也是被误导的那个……
ideage 2009-04-03
C 语言应用程序二进制接口相兼容
hqs7636 2009-04-07
说说 d 的内存模型吧
Colorful 2009-04-07
hqs7636 写道
说说 d 的内存模型吧

D 语言内存模型规范,估计也就 Walter Bright 老大能写出来。

不过总起来说,它不会偏离 CLR 2.0 Memory Model中 x86 行为很远。

你可以参考一下这篇文章,虽然讲的是 .NET,但是跟 D 语言大同小异。
Colorful 2009-04-07
当然,阅读 Java 内存模型规范也可以。
hqs7636 2009-04-07
谢谢,

怎么会跟他们差不多?奇怪
Colorful 2009-04-07
技术都是相通的。
内存模型都是在 CPU 行为基础之上的抽象,而且这项技术已经很多年了。相关的做法在业界也流行了很多年。他们的区别也就是某些细枝末节的不一致。

就像 GC 一样。在 java 语言让 GC 家喻户晓的时候,业界早就做过相当长时间的尝试。
RednaxelaFX 2009-04-07
因为都涉及到volatile read/write的acquire/release semantics,然后memory barrier之类吧。最重要的原则是优化不能影响状态一致性。
在x86上想故意引发老的Java内存模型(Java 5以前)或者ECMA标准的CLI内存模型(.NET的CLR 2.0以前)的votatile语义带来的错误很困难,所以靠自己很难“看到”出错的状况;不过很难看到并不等于不存在,这种问题真遇到了就郁闷了。

Colorful老大是在哪里读那篇The Case for D来着?也想读读看~

顺带补充一下Java内存模型的描述:Java Language Specification, 17.4
Global site tag (gtag.js) - Google Analytics