BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

D语言和Visual D简介

| 作者 Jonathan Allen 关注 611 他的粉丝 ,译者 侯伯薇 关注 0 他的粉丝 发布于 2011年5月27日. 估计阅读时间: 3 分钟 | ArchSummit北京2018 共同探讨机器学习、信息安全、微服务治理的关键点

D语言是一种由Digital Mars公司创造的系统编程语言,它专注于“把C和C++的能力和高性能与先进的语言——像Ruby和Python——的高生产力结合起来。” 尽管它仍然是一种静态类型的语言,可以直接编译成本地代码,而且语法看起来与Java或者C#非常类似,但是它做出了很多有意义的改进。

这些改进包括明确地支持惰性参数。当我们使用关键字“lazy”标记一个形参时,就意味着相关的实参会被赋值0次或者多次。这与Haskell之类的语言不同,它会延迟对实参赋值0次或者1次,但不会再多。

为了保证程序的正确性,特别是在并行以及多线程的领域中的正确性,D语言支持把“immutable”和“const”作为一等概念。和C++不同的是,在D语言中的immutable和const修饰符是可传递的。如果我们用immutable标记了一个变量,那么不但不能对其进行变更,也不能变更通过它所能够访问的任何变量。const关键字的工作方式和immutable类似,不过特定的对象还是可以通过non-const的引用来修改变量的值。

D语言还包括了很多来自于其它语言的流行特性。例如,它拥有for-each循环、字符串转换、数组分片、闭包、try-catch-finally块,以及值类型和引用类型的分离等等。同时,它还考虑到了直接对内存的访问,80位的浮点型数字、结构成员排列控制以及内联程序集。

通常,因为安全性,把源代码转换为本地代码会付出高昂的代价。C和C++是最容易受到类似于缓冲区溢出之类的编码错误影响的,其它大多数本地语言也都一样。D语言通过既在编译时又在运行时执行数组边界检查来避免这些问题。同样,非零长度的数组的内容会自动初始化为它们的默认值。

关于内存管理,D语言和.NET非常类似。默认情况下,引用类型会存储在垃圾回收堆中,而值类型或者会存储在堆栈中,或者存储在其它对象中。D语言也可是分配堆栈来存储引用类型,但这不可避免要使用指向它们的指针。和.NET一样,你还可以让指针指向非托管的内存。让这些彼此分离非常重要,因为很多你能够在非托管的指针上能够执行的操作,在托管指针上执行是不安全的。

对于能够使用非快捷版Visual Studio的开发者来说,有一个项目叫做Visual D,它提供了Visual Studio 插件。Lloyd在一篇文章中介绍了如何在你的环境中安装Visual D

当前D语言有四种实现。Digital Mars公司为Windows、Linux、OS X和FreeBSD提供了免费的编译器。还有一种Gnu D编译器,它是构建在gcc之上的。而LLVM也发布了他们的D语言编译器的beta版本,最后还有针对.NET的部分实现

查看英文原文:An Introduction to D and Visual D

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT