编程语言 D 2.067 发布

oschina
 oschina
发布于 2015年01月04日
收藏 11

编程语言 D 2.067 发布,此版本更新内容如下:

语言改进

  1. Asm statements can now be used in pure nothrow @nogc @trusted code.

库改进

  1. volatileLoad and volatileStore intrinsics were added.

更多内容请看发行说明

D语言(Dlang)是由Digital Mars公司开发的编程语言,起因是为了改进C++。它与C二进制兼容(不完全),可编译为本地码,有GC也可手动管理内存,语法上借鉴多种语言,模板则 在C++的基础上做了相当大的扩充。D 语言既有 C 语言的强大威力,又有 Python 和 Ruby 的开发效率。它是一种集垃圾回收、手工内存操作、契约式设计、高级模板技术、内嵌汇编、内置单元测试、Mixin 风格多继承、类 Java 包管理机制、内置同步机制、内建基本运行时信息的系统级编程语言。

D语言是一种通用的系统和应用编程语言。它是比 C++ 更高级的语言,同时还保持了生成高效代码以及直接访问操作系统API和硬件的能力。D 很适合于编写从中等规模到那些由团队合作完成、数百万行代码规模的各种程序。D 易于学习,为编程者提供了很多便利,并且适用各种野心勃勃的编译器优化技术。

D 不是脚本语言,也不是一种解释型语言。它不需要虚拟机、宗教、或者高于一切的哲学。它是给实际的编程者使用的实际的语言,它帮助编程者快速、可靠的完成易于维护、易于理解的代码。

D 是数十年来实现多种语言编译器的经验的积累,是用那些语言构造大型工程的尝试的积累。D 从那些语言(主要是 C++ )那里获得了灵感,并使用经验和现实世界中的实用性来驯服它。

为什么是 D ?

确实,为什么?有谁需要另一种编程语言?

自从 C 语言被发明以来,软件工业走过了一段很长的路。许多新的概念被加入了 C++ 中,但同时维护了同 C 的向后兼容性,包括兼容了原始设计中的所有的弱点。有很多修正这些弱点的尝试,但是兼容性是最大的困扰。同时,C 和 C++ 都在不断引入新的特性。这些新特性必须被小心的加入到现有的结构中,以免重写旧的代码。最终的结果十分复杂—— C 标准将近 500 页,C++ 标准大概有 750 页!C++ 实现起来既困难又代价高昂,造成的结果就是各种实现之间都有差别,因此很难写出完全可以移植的 C++ 代码。

C++ 程序员倾向于使用语言中的孤岛来编程,也就是说,他们倾向于十分精通语言中的某个特性而避免使用其他特性。尽管代码通常在编译器之间是可移植的,但在程序 员之间移植就不那么容易了。C++ 的一个长处是它支持很多根本上不同的编程风格——但从长远来看,互相重复和互相冲突的风格会给开发带来妨碍。

C++ 在标准库而不是语言核心中实现了可改变大小的数组和字符串拼接等。不在语言核心中实现这些功能造成了几种不太理想的结果。

是否能把 C++ 的能力释放、重新设计并重铸到一门简单、正交并实用的语言中呢? 这种语言是否能做到易于正确实现,并使编译器有能力有效地生成高度优化的代码呢?

现代编译器技术已经取得了很大的进步,有些原来用作原始编译技术的补充的语言特性已经可以被忽 略了(一个这样的例子是 C 语言中的‘register’关键字,一个更为微妙的例子是 C 中的宏预处理程序)。我们可以依赖现代编译器的优化技术而不是使用语言特性(如同原始的编译器所做的那样)来获得可以接受的代码质量。

下面是一段D语言的代码示例。

#!/usr/bin/dmd -run




 std.stdio;

 main([][] args)
{
    writefln();

         (argc, argv; args)
    {
                CmdLin cl =  CmdLin(argc, argv);
                writefln(cl.argnum, cl.suffix, , cl.argv);
                 cl;
    }

         specs
    {
                 count, allocated;
    }

            specs argspecs()
    {
        specs* s =  specs;
                s.count = args.length;		           s.allocated = (args).sizeof;          (argv; args)
            s.allocated += argv.length * (argv[0]).sizeof;
         *s;
    }

        writefln( ~ ,
	argspecs().count, argspecs().allocated);
}

 CmdLin
{
      _argc;
     [] _argv;

:
    ( argc, [] argv)	    {
        _argc = argc;
        _argv = argv;
    }

     argnum()
    {
         _argc + 1;
    }

    [] argv()
    {
         _argv;
    }

    [] suffix()
    {
        [] suffix = ;
         (_argc)
        {
           0:
            suffix = ;
            ;
           1:
            suffix = ;
            ;
           2:
            suffix = ;
            ;
          :
	    ;
        }
         suffix;
    }
}
本站文章除注明转载外,均为本站原创或编译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动共创开源社区。
转载请注明:文章转载自 OSCHINA 社区 [http://www.oschina.net]
本文标题:编程语言 D 2.067 发布
加载中

最新评论(30

l
lplus

引用来自“特价萝卜”的评论

还是用Go语言吧。

引用来自“lplus”的评论

Go只能算是应用层的更好的C
D是系统层和应用层通吃的语言,我说的系统层是指能被C调用,因为系统都是C的,Rust和Go被C调用理论上都能做到,但是明显没有D做的好,这方面能和D比的只有C++了,但是C++是带着C语言的历史包袱的,用过的都懂的
l
lplus

引用来自“特价萝卜”的评论

还是用Go语言吧。
Go只能算是应用层的更好的C
足下存身

引用来自“magicdmer”的评论

刚去官网看了一下,作者对lua和rust感兴趣了,以后不管这个D语言了。。。靠,难得我最近看了一下,超喜欢这种脚本风格的编译性语言。。。
这个不是D语言作者,这个是D语言的一个大牛,以前开发过D语言一些开源库。现在不玩D语言了而已
通吃岛-低手哥
通吃岛-低手哥

引用来自“magicdmer”的评论

刚去官网看了一下,作者对lua和rust感兴趣了,以后不管这个D语言了。。。靠,难得我最近看了一下,超喜欢这种脚本风格的编译性语言。。。

引用来自“通吃岛-低手哥”的评论

在哪里看到的?

引用来自“magicdmer”的评论

http://www.dprogramming.com/news.php,这个是不是?
表示遗憾和失望!学过一段时间 D语言。
千山雪
千山雪

引用来自“magicdmer”的评论

刚去官网看了一下,作者对lua和rust感兴趣了,以后不管这个D语言了。。。靠,难得我最近看了一下,超喜欢这种脚本风格的编译性语言。。。

引用来自“通吃岛-低手哥”的评论

在哪里看到的?

引用来自“magicdmer”的评论

http://www.dprogramming.com/news.php,这个是不是?
不知道是不是因为这个网站太老了,我看到另一个
http://dlang.org/ 这个比较活跃点
千山雪
千山雪

引用来自“magicdmer”的评论

刚去官网看了一下,作者对lua和rust感兴趣了,以后不管这个D语言了。。。靠,难得我最近看了一下,超喜欢这种脚本风格的编译性语言。。。

引用来自“通吃岛-低手哥”的评论

在哪里看到的?
http://www.dprogramming.com/news.php,这个是不是?
通吃岛-低手哥
通吃岛-低手哥

引用来自“magicdmer”的评论

刚去官网看了一下,作者对lua和rust感兴趣了,以后不管这个D语言了。。。靠,难得我最近看了一下,超喜欢这种脚本风格的编译性语言。。。
在哪里看到的?
千山雪
千山雪
刚去官网看了一下,作者对lua和rust感兴趣了,以后不管这个D语言了。。。靠,难得我最近看了一下,超喜欢这种脚本风格的编译性语言。。。
返回顶部
顶部