长期的C ++程序员(就是我)探索其他语言,并想知道是否值得学习D 2.0。 (这是D的重新编写。)到目前为止,我喜欢我所看到的 - 许多务实,明智的选择。现在,我想了解更多,并想知道是否有可能做到以下几点:
总之,我希望有一个D 2.0编译器,后端能够生成Javascript。
所以我的问题有两部分:
对于上下文,我想要上述的原因是我可以在D 2.0中实现一堆业务逻辑,然后在纯Javascript(即没有Flash / Silverlight / Java)Web中使用该业务逻辑应用
更新
我有三个答案,其中两个是主题,一个不是,因此被忽略。
@FeepingCreature认为它永远不会发生,因为“它与D的目标环境太不协调”。我很想知道这意味着什么,并且已经问过了。
相比之下,@ Nekuromento指出理论上已经可以使用LDC,其次是LLVM Javascript后端。我检查了两个链接。 LDC对D 2.0的支持看起来像是正在进行的工作。但我猜它会在某个时刻到达那里。 LLVM Javascript也没有经过优化或缩小,但它从演示中看出它们的工作原理。所以我认为这至少是有用的。更新2
好的 - 这似乎是迄今为止最好的解决方案。
我会尽快选出最佳答案,但我真的想要一些更明智的意见。
更新3
有关我为何要这样做的更多信息。
以下是我希望实施的一个项目的具体示例。它将是一个几何建模库,可能只由我编写,花了几年时间编写,最终达到大约100,000行代码。我希望它包含尽可能接近零的错误,因此,我不希望在Javascript中实现它。我希望它能够在服务器,桌面和浏览器上运行。 (在“浏览器中”我的意思是没有任何插件,如Flash,Silverlight或Java的帮助。)事实是,在Javascript上运行的浏览器中的代码将保留一段时间。项目将越来越需要一个战略来处理这个问题。
更新4
我希望得到更多的答案,但没有得到它们。好吧,没关系。感谢所有的反馈,包括@dsimicha的刺激性评论。 (我希望有时可以在技术上不同意,同时保持文明。)我接受了@Nekuromento的回答。
更新5 2018-07-18
七年过去了,LDC v1.11支持编译和链接到WebAssembly。3
答案 0 :(得分:4)
这样的编译器目前不存在,但在javascript LLVM-backend上有一些工作。
因为有LDC。它使用DMD前端和LLVM,因此理论上可以添加javascript输出。
答案 1 :(得分:2)
在接下来的几天里,请关注D新闻组,我正在研究你可能感兴趣的东西(或者更确切地说,你想要的东西)。它目前可以编译:
int foo()
{
if (true)
{
return 3;
}
}
我希望在下周内获得一些alpha / beta。
答案 2 :(得分:1)
简短回答:不。
答案很长:真的。否。
不那么狡猾的答案:这与D的目标环境太不协调了。
如果你选择实施一个 - 地狱,更多的权力给你,但你的工作是为了你的工作。可能最好从阅读DMD前端开始,这是FOSS(并且,afaik,以标准DMD zip分发)。