假设您有3个项目:
你有三个选择:
然后,您要求更多的wises程序员:在这个任务中,D能在模块化、错误修复、团队工作和机器效率方面给我一个显著的优势吗?
发布于 2010-09-01 20:37:36
在我看来,与“传统”静态类型化语言相比,D具有以下优点:
std.algorithm标准库中查看D2或std.range。std.parallelism模块可能很快就会包括在内,如果/当它包含时,这将是另一个很好的例子。这些功能非常强大,有时感觉语言几乎是鸭类型的,但是它具有静态类型化语言的性能。还请参阅关于D元编程的SO问题:D的模板可以用于什么的示例std.parallelism模块这样做是为了实现踏板到金属的多核并行。相对于动态语言,D有:
发布于 2010-09-03 20:27:42
我本人正在学习D,来自C/ C++背景。我对我很感兴趣,因为它是优雅的,它是经过精心设计的。这感觉就像经过密集、深沉和黑暗的C++角后的天堂。
对我来说,D的一个最大的缺点是缺乏图书馆。即使是标准图书馆,我也觉得做得不太好。语言很棒,图书馆还没有。不过,您可以使用C库,这是一个很大的大拇指。
虽然D似乎有很多知识和语言方面,但它还不是C++的一半。因此,我认为学习起来要快得多(当然,90%来自C++或相关语言)。因此,学习语言应该是几个星期/几个月的事情。
由于GUI还没有很好的工具,所以您可能需要用其他方法来开发编辑器。另外两个项目非常适合D。
发布于 2012-06-09 02:17:08
我只想说,昨天我成了一个D爱好者,当我知道它比C++好得多的时候,我从纯粹的爱中学了两天。哦,这并不完美,但是和C++相比呢?没有比赛。爪哇也是。3天前,C#是我的首选语言,但今天我认为它已经降级了。
我还没有用D来做任何严肃的工作,我可能弄错了。但是,D可以回答对C++提出的每一个主要批评,从编译时间、类型安全性差、维护头文件的头痛到编译速度慢。D不仅仅是一种进化上的进步,它还发现了世界上没有一种流行语言的创新:
scope(exit)使异常安全代码的读写更容易。alias this来使智能指针成为la C++?)lower_bound(blobCollection.begin(), blobCollection.end(), blob)中那样重复。对于编译器或搜索引擎库来说,D显然是最优秀的。既然D和C++非常相似,你就不用花很多时间来学习它了,为什么不呢?另外,从C++移植小型程序和库应该并不困难。我的印象是GUI绑定也在不断改进,所以现在D可能对文本编辑器很有帮助。
无可否认,我对一切都不满意。它们仍然满足于C人群,所以您仍然必须用breaks填充您的breaks语句,static关键字被过度使用,lambdas需要大括号和“返回”语句(相对于C#的更快的x -> x+1语法),所有函数和try/catches都需要大括号,传递引用在调用站点中是隐式的.但是D提供的东西太好了,不能错过。
当然,虽然D语言显然很棒,而且标准库显然已经成熟,但周围的工具可能不太好: IDE、对智能手机平台的支持等等。我尝试过的唯一一种IDE,Visual (用于Visual的IDE插件)运行得很好,包括调试,这似乎和VisualC++调试器一样好,并且可以进入标准库(有趣!)但是,代码完成还不能很好地工作。
与C#相比,D在大多数领域都更好,但在动态链接和反射方面却显得很弱。例如,您的文本编辑器可以很容易地在.NET下拥有一个插件系统,但我不太确定D。.NET也提供运行时代码生成,而D不提供。但是,存在一个研究编译器来将D编译成.NET代码。考虑到C++/CLI已经编译成.NET (C++/CLI),也许有一天我们能够在托管代码和本机代码中同样很好地使用D(当然,在托管土地上性能不高)。
与C/C++和.NET的互操作性相当不错。D应该通过C++和C++名称mangling与extern (C++)函数和单继承类进行互操作(但是哪个编译器的名称是mangling?),而您可以轻松地创建可以从.NET和其他语言调用的COM接口。
https://stackoverflow.com/questions/3621414
复制相似问题