我想知道D是多么成熟和稳定,如果它可能是C / C ++的良好替代品。

我知道目前有两个标准图书馆(Phobos和Tango)。是否仍然是没有统一的标准库?

另外,我一时听到语言对GCED /非GCED代码的界限存在问题。我找不到任何关于D网站的参考,所以这个问题仍然是真的吗?

有帮助吗?

解决方案

d的版本1是成熟和稳定的,并且肯定会将其用于实际工作。 Phobos是D. D的唯一标准图书馆,但是D1的PHOBOS缺乏足够的人,以便创建各种第三方图书馆来填补空白。探戈是最大的,是最多使用的第三方图书馆(因此,为什么它经常被称为第二标准库,即使不是,沃尔特光明将快速指出它不是)。然而,D1中的探戈和Phobos不要混合得很好此外,除了来自数字火星的主要编译器之外,D1还由多个编译器支持 - 包括LDC和GDC。

D的第2版刚刚达到成熟和稳定性。他们已经停止了对语言进行了重大变化,因此您通常不必担心使用编译器更新的一切突破您,因为过去的情况仍然是指向下语言。事实上,它现在已经成熟,并且Andrei alexandrescu将 d编程语言作为一种明确的语言资源,这些资源应该在文本中保持有效的禁止错误(它是我的最佳编程语言书之一读过)。但是,还有很多错误修复,因此很可能遇到一个错误,导致您对您的特定应用程序的刺激。它绝对成熟并且足够稳定,可以真实工作,但要意识到它很可能遇到错误。

探戈尚未被移植到D2,因此在D2中编程时并不是一个选择。然而,Phobos现在非常好。它已经获得了很多很好的补充(现在它现在拥有容器! - 缺乏Phobos中的容器是在D1而不是Phobos中使用探戈的一个重要原因,并且在IT中有一些非常强大的东西 - Std.algorithm是特别好。方式D处理Lambda函数,嵌套功能和函数指针使将功能传递给算法比C ++的当前标准更容易。此外,它已在D2中固定,使垃圾收集器和探戈正在重复的其他一些核心东西现在与Phobos分开。因此,一旦探戈被移植到D2,你就可以混合Phobos和Tango代码 - 尽管如此,在以前的答案中,Phobos和Tango使用了相当不同的设计哲学(探戈是非常java和Phobos的探戈使用模板和元编程与鸭键入而不是界面),所以我不知道他们将如何与那个角度混合。

目前,我相信DMD是唯一关于D2的规范的最新编译器,但我相信在GDC和LDC D编译器上有工作(虽然如何活动是,我不知道)。此外,Walter Bright目前正在研究DMD的64位端口,因此我们将相对较早地获取本机64位编译。

总的来说,我会说d2准备好使用,但你确实需要意识到对错误修复等来说,这仍然需要做大量的工作。所以,D2绝对准备好用于业余爱好和可能性在工作中进行严重使用,但如果您真的需要稳定性(就像你是波音,错误意味着死亡),那么D1可能仍然是更好的选择。当然,要记住D2的大事是D1没有有很多功能,所以除非你真的需要摇滚固体稳定性,否则D2很可能是去的方式。幸运的是,它继续成熟和稳定,因此当毫无疑问,使用D2会更好时,时间肯定会接近。

无论如何,D1和D2都是C和C ++在一般情况下的良好替代品。他们可以做C和C ++的表现,而(特别是在D2的情况下)可能会更好。 D可能落后的主要位置是在优化的程度上。有很多代码,在C或C ++中的d中可以快速,但是在D上仍然可以做大量工作,因此有足够的空间来进一步优化它,有时会在C和C ++后面延迟效率。因此,一般来说,D是有效的,但如果您真的需要尽可能多的效率,这对您需要的可能尚不好够(虽然它到达那里)。此外,在那里有很多成熟的C和C ++库,而D没有任何接近相同级别的代码浮出水面的任何地方。可以与d一起使用任何C代码,因为可以从d调用C函数,并且某些C ++代码可能是(尽管将C ++代码与D)混合时有相当多的限制,但这不一定是多少障碍,但是要意识到这一点。 T.

他主要是缺乏GUI图书馆的地方。有一些用于D1,并且在GUI库中为D2进行了工作,但我不相信在这一点上的任何一个都特别成熟。

所以,与所有应该使用的语言都取决于您正在做的事情。D会做大多数事情,并做得好。但它并不是一切,它仍然成熟。就个人而言,在这一点上,我使用D除非我需要为特定项目使用其他东西,除非该项目已经用其他东西写入了其他项目,否则现在不会有意义地侵入它。所以,我强烈建议使用D,但你必须调查它并用它来看看它是否真的会做你想要的事情。

其他提示

我建议使用d2与phobos。它在这种语言令人愉快的地方,足够稳定,可以弥补由实施问题造成的偶尔挫折。

我知道目前有两个标准的库(Phobos和Tango),所以我认为可能有人试图统一它们。

由于许可证的差异,

“统一”极不可能。当探戈将被移植到D 2.0时,您将能够与PHOBOS一起使用,在D 1.0中没有(轻松)。

另外,我一时听到语言对GCED /非GCED代码的界限存在问题。我找不到任何关于D网站的参考,所以这个问题仍然是真的吗?

我相信如果你不小心你如何管理内存,只有问题。如果对GC分配对象的所有引用存储在标记为GC根的内存区域之外,GC将考虑对象未引用并将删除它。

如果我今天不得不选择d作为c替换,那么d(v 1.0或v 2.0)以及您建议哪个标准库?

Phobos和探戈在某种程度上进入了不同的方向。 Phobos(在D 2.0中)与D2的新功能密切联系。探戈是更具特色的包装,并包含Phobos中不存在的模块,例如, http / ftp客户端支持,各种加密类等等。它们还遵循不同的设计哲学(Phobos是更具命令/元编程的ISH,而Tango非常严格地oop,因此类似于这方面的Java)。< / p>

我想知道D是多么成熟和稳定,如果它可能是C / C ++的良好替代品。

我会谨慎使用任何由标准机构等的任何语言,如ANSI,ISO或ECMA。这也许是成熟的指标。例如,说java和delphi例如将属于该类别,而我不使用这些语言,它们可能会被描述为“成熟”。

另一个措施可能是为语言编写的书籍和文章的数量和质量。我有一本书,我知道Andrei Alexandrescu。他还写了一个长长的文章关于博士的语言。Dobbs,他专门处理标准库问题。

我在D1中写了一个小型游戏的良好体验,但它是一个很小的项目。

在我看来,d缺乏:

  • 一名官方网络论坛,人们可以获得帮助和搜索答案(不是新闻组)
  • 许多转换为d的SDK的官方存储库(例如SDL,GTK等。这些通常难以找到和使用,当它们存在时。)

我不认为替代c的问题是关于潜在的替代是否是“好”或“成熟”足够的理论层,而是关于实际考虑的事实,即C是“足够好”的事实它用于。除非语言为每个主要操作系统提供完整的本机构建和运行时环境,否则它对C的使用是真正的实用性。c是posix的语言的事实是整个问题的重要组成部分。

肯定的其他半低级语言可以在专业领域具有很大的应用。但是,您不太可能看到在D中写入的主要多平台软件(Web服务器,数据库,Word处理器,Web浏览器等),因为没有任何主要操作系统(更少的所有OR)都附带D构建或运行时环境。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top