展开讨论

经验与复盘经验摘录 · 机器翻译

一个问题:我在职业生涯中曾多次尝试使用D语言(我有大约20年的C++经验)

…一个问题:我在职业生涯中曾多次尝试使用D语言(我有大约20年的C++经验)。我觉得它非常有趣。我比那些更“现代的语言”更喜欢D语言。我喜欢D语言提供的灵活性。但我不确定如果我想做以下事情会怎么样:1. 后端(主要是服务器端,Linux是主要平台,x86-64)2. 桌面端+安卓和iOS(移动设备比桌面更重要)3. WebAssembly(比移动设备更重要,但可能会改变)。4. 向后兼容性(听说版本更新经常破坏一些东西)。5. 与C++的交互。我非常喜欢D语言,但之前遇到的问题更多是与工具(自动补全,我主要使用Emacs,但几年没试过了)和工具链的成熟度有关。它能应对以上所有情况吗?另外,如果能封装C++代码和C代码,那就太方便了。我看到D语言一直在努力实现比其他语言更好的C++兼容性,但我担心这可能不完整。即使如此,是否有文档说明哪些功能正常,哪些不正常?这将非常有帮助。谢谢。

源讨论DConf 2026在伦敦原帖 70 条评论 · 导入时统计
2

这条内容在回应什么?

父级讨论 · 节选

WA

> 我会把D语言的scope exit/failure/success归类为RAII,即使D语言使用了GC。 D语言的scope exit/failure/success是建立在RAII之上的,与GC没有任何关系。 > 我认为在正常情况下,异常应该是主要的机制,而对于预期的错误,你可以使用错误/结果类型。 来参加DConf(或者观看直播),我希望我能改变你的想法,或者至少挑战你的结论!

完整原文

社区评论 0

还没有社区评论,来聊聊你的看法。

原讨论中的回复 2

仅展示本次导入中包含的直接回复。中文为机器翻译,可查看英文原文。

WA

> D 不使用析构函数(如 C++)来处理作用域退出/失败/成功 它确实使用了,但用户看不到它们。 有人正在处理 1、2 和 3。 > 4. 向后兼容性(听说版本经常破坏东西的抱怨)。 我们听取了意见,并大幅减少了破坏性更改。现在我们有版本。 > 5. 与 C++ 的交互。 C++ 已经发展到需要我再花十年时间才能将 ImportC++ 集成进去。然而,如果你在与 D 交互时坚持使用 C++ 的 C 接口,你应该没问题。D 也可以与 C++ 的名称改编一起工作,但 C++ 模板等所有复杂性都太复杂了。 谢谢你的赞美!我真的很感激。 > 我远在外地,无法参加,所以我肯定会观看。 太好了!

完整原文
SK

关于 Web Assembly,支持有限。D 语言中已经有一些人尝试支持 WebAssembly,但这些努力都是个人行为,从未完成并合并到主线 D 中。D 官方编译器中唯一支持的是 BetterC 模式,这是一种最小模式,没有垃圾回收,没有运行时,也没有标准库。有些人已经在这个领域做了一些有趣的项目,但你必须重新实现很多基本内容才能开始,到了那个阶段,你可能会想,为什么不直接使用 C/C++ 呢。 有一个叫做 OpenD 的 D 编译器分支,它有一些 WebAssembly 支持,包括垃圾回收和标准库。我用过它,大部分情况下是可行的,但有一些错误,如果你遇到任何问题,那就要靠你自己了。

完整原文
在 Hacker News 阅读

尊重不同观点,分享具体经验。

登录后即可发帖、评论、转发和引用。