D语言和Visual D简介

开发 开发工具
D 语言既有 C 语言的强大威力,又有 Python 和 Ruby 的开发效率。它是一种集垃圾回收、手工内存操作、契约式设计、高级模板技术、内嵌汇编、内置单元测试、Mixin 风格多继承、类 Java 包管理机制、内置同步机制、内建基本运行时信息的系统级编程语言。本文主要介绍D语言和Visual D,一起来看。

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的部分实现。

英文原文地址:http://www.infoq.com/news/2011/05/Visual-D

【编辑推荐】

  1. C语言编程开发中用好位操作符
  2. 用C语言实现Linux 下几个文件操作命令
  3. C语言,编程开发的经典之作
  4. 在服务端合并和压缩JavaScript和CSS文件
  5. 菜鸟入门 java语言学习六大要点
责任编辑:于铁 来源: Infoq
相关推荐

2015-11-25 10:43:03

DGORust

2020-08-06 15:14:07

D语言编程语言

2013-08-01 09:33:52

编程语言胖手编程编程姿势

2013-08-01 09:08:21

编程语言

2021-02-09 20:51:13

D 语言脚本编程语言

2019-10-31 13:40:52

JavaPHP编程语言

2010-01-18 15:40:37

Visual C++工

2021-02-04 12:40:55

勒索软件VovalexD语言

2013-07-31 16:56:08

系统级编程语言语言性能语言

2010-09-30 10:25:40

J2ME3D

2011-10-10 09:08:07

编程语言排行榜

2011-08-16 10:03:45

Groovy编程语言Web

2022-04-24 15:55:22

Go语言语言函数

2011-05-31 08:47:30

Colm编程语言

2023-05-03 09:01:41

CanvasWebGL

2011-09-22 10:07:52

奥图码投影仪

2023-08-03 16:12:00

AI模型

2024-10-15 13:07:38

2011-05-03 11:07:46

2D3D丽讯

2020-08-26 10:37:21

阿里3D
点赞
收藏

51CTO技术栈公众号