标签: d

关闭D垃圾收集器

我是一名C++程序员,考虑将D用于我想要玩的个人项目.我想知道是否有办法完全禁用垃圾收集器,以及这样做的风险是什么.

我知道我可以通过覆盖new和delete来管理我自己的内存以使用malloc和free,但如果我这样做,我宁愿垃圾收集器根本不运行.

memory garbage-collection memory-management d

24
推荐指数
2
解决办法
5722
查看次数

嵌入D(编程语言)

我喜欢我读过很多关于D.的内容.

  • 统一文档(这将使我的工作变得更加容易.)
  • 内置于该语言的测试功能.
  • 调试代码支持语言.
  • 前瞻性声明.(我一直认为两次声明相同的功能是愚蠢的.)
  • 内置功能可替换预处理器.
  • 模块
  • Typedef用于正确的类型检查而不是别名.
  • 嵌套函数.(咳嗽 PASCAL 咳嗽)
  • 输入和输出参数.(这有多明显!)
  • 支持低级编程 - 嵌入式系统,哦耶!

然而:

  • D可以支持不会运行操作系统的嵌入式系统吗?
  • 它不支持16位处理器的彻底解除是否完全来自在这些机器上运行的嵌入式应用程序?有时你不需要锤子来解决你的问题.
  • 垃圾收集在Windows或Linux上很棒,但不幸的是嵌入式应用程序有时必须进行显式内存管理.
  • 数组边界检查,你喜欢它,你讨厌它.非常适合设计保证,但并不总是允许性能问题.
  • 对于支持多线程的嵌入式系统而不是运行操作系统有什么影响?我们有一个客户甚至不喜欢中断.更少OS /多线程.
  • 是否有适用于嵌入式系统的D-Lite?

所以基本上D适用于只有几兆字节(有时小于一兆字节)的嵌入式系统,不运行操作系统,其中必须在编译时知道最大内存使用量(每个要求),并且可能在小于32位的情况下处理器?

我对一些功能非常感兴趣,但我得到的印象是针对桌面应用程序开发人员.

具体是什么使它不适合16位实现?(假设16位架构可以处理足够的内存来保存运行时,无论是在闪存还是RAM中.)仍然可以计算32位值,尽管比16位慢,并且需要使用库代码进行更多操作.

embedded 32-bit d 16-bit

23
推荐指数
3
解决办法
5001
查看次数

值得学习D的努力?

想象一下,你有3个项目:

  • 程序员的文本编辑器
  • 编译器
  • 以及至少3种类型文件的搜索引擎库:html,.xls和pdf.

你有3个选择:

  • C++
  • Java的
  • 和C#
  • 或者你可以探索用D做的另一种选择.

然后,你要求更多的智能程序员:在这个任务中,D能否给我一个显着的优势:模块化,错误修复,团队工作和机器效率?

programming-languages d

23
推荐指数
4
解决办法
5321
查看次数

D模板:最酷的黑客

你在D编程语言中做过或看过的最酷的有点实用的元编程黑客是什么?有点实际意味着排除例如编译时光线跟踪器.

templates d metaprogramming

22
推荐指数
9
解决办法
2534
查看次数

用于D的GUI库

使用D语言进行GUI编程的当前状态是什么?语言开发人员计划是否在标准库中包含GUI?

清单(根据答案编译)

DWT(SWT绑定)

GtkD(GTK绑定)

wxD(wxWidgets绑定)

QtD(Qt绑定)

user-interface d

22
推荐指数
1
解决办法
8199
查看次数

D中的纯函数式编程

在我看来,功能纯度的强大之处在于深度代码路径可以被验证为无副作用.人们在代码树规模上的经验是什么,可以在纯粹的说明符中,以及代码重用的级别是什么?

我发现的一些事情:

std.algorithm大部分都没有被标记为pure,但可能很大程度上是纯粹的,要么是纯粹的算法需要实例化函数或mixin的纯度,要么纯度说明符本身是静态多态的.
有用的转换器to!string( someInt )目前不是纯粹的.

用户定义的结构似乎有问题(如下所示):
1.嵌套结构上的纯析构函数
2.纯粹的postblit函数,即使在非嵌套结构上也是如此

以下代码目前在DMD 2.052 win 32-bit上给出了多个错误

struct InnerStruct
{
    pure this(this) {}
    pure ~this() {}
}

struct OuterStruct
{
    InnerStruct innerStruct;
    pure this(this) {}
    pure ~this() {}
}

pure void somePureFunc()
{
    OuterStruct s1 = OuterStruct(); // pure nested destructor does not compile
    OuterStruct s2 = s1;
    InnerStruct is1 = InnerStruct(); // pure non-nested destructor seems to compile
    InnerStruct is2 = is1; // pure non-nested postblit does not …
Run Code Online (Sandbox Code Playgroud)

functional-programming d side-effects

22
推荐指数
1
解决办法
2292
查看次数

如何从头创建/编写一个简单的XML解析器?

如何从头创建/编写一个简单的XML解析器?

我想知道英语中简化的基本步骤,而不是代码示例.

一个好的解析器是如何设计的?我知道正则表达式不应该在解析器中使用,但正则表达式在解析XML中的作用是多少?

建议的数据结构是什么?我应该使用链表来存储和检索节点,属性和值吗?

我想学习如何创建XML解析器,以便我可以用D编程语言编写一个.

xml d xml-parsing

22
推荐指数
3
解决办法
2万
查看次数

可以使用D的模板的示例

我听说D语言具有强大的元编程功能,可以在编译时执行函数.这听起来非常令人兴奋,但我发现很难想到没有它们很难实现的实际例子.

任何人都可以提供一些D的元编程功能非常方便的情况吗?

d metaprogramming

21
推荐指数
4
解决办法
2114
查看次数

D中的模式匹配

我最近偶然发现了D编程语言,我非常喜欢它.你可以编程真正的高级别,同时拥有完整的硬件访问,如在C.

来自一个相当功能性的背景(Haskell,scala)我正在寻找D模式匹配的方法,但我在http://www.digitalmars.com/d/上找不到任何东西.在Haskell中,语言本身支持模式匹配.在Scala中,它通过case类或提取器(具有unapply方法的普通对象)实现.

可以在D中执行此操作吗?

std.concurrency中的receive方法用于在actor类式中进行并发,就像在erlang和scala中一样,在这些方法上采用了大量的函数和模式数学.但我认为它不像其他语言那样灵活.你能用卫兵吗?你能在scala中提取Object的内容吗?

functional-programming d pattern-matching

21
推荐指数
2
解决办法
2855
查看次数

Github错误地识别项目中使用的编程语言

所以我有一个用C++编写的git存储库,但是github坚持认为我正在使用D.为什么这样,并且有什么方法可以解决它?

c++ d github

21
推荐指数
2
解决办法
2083
查看次数