更好的C++——给C++使用者的D语言简介

作为 C++ 狂热的粉丝,你在多年使用C++的过程中是否有过以下症状:

  1. Boost 和 STL 真不错,但是编译太慢,让我想砸电脑!
  2. 我讨厌一个程序写两次,干嘛要头文件?编译器不会自动提取声明吗?
  3. 经常有大师教导你不要用宏,但是现实是没有那个程序不用!
  4. 我从来不喜欢指针,但我也不想失去它
  5. 我想要垃圾回收!!!
  6. C++的元编程真酷,我也想试试,但我是凡人。
  7. 多继承、虚继承太复杂,我想要 interface,但是有能保持多继承的威力。
  8. 羡慕 C# 的Property、delegate...?
  9. 大师们说要用RAII,但是我觉得麻烦,为清理个资源居然要写个临时类?
  10. ...


如果以上问题你都回答Y,那么,我建议你去看看D语言(www.digitalmars.com/d/)医生,他将为你开出以下处方:

  1. DMD/GDC D语言编译器编译速度飞快,用再多的模板也不成问题,一个 几MB代码的程序的编译也可以在分秒内完成。
  2. D语言提供了模块(module)和包(package)的概念,一个模块就是一个源文件,一个包就是一个磁盘目录,解决了程序的物理架构问题。更妙的是,编译器能自动提取所有声明和接口,完全没有 C/C++ 头文件的麻烦。
  3. D语言没有C/C++中的文本宏,这下你该高兴了吧?而且很快 D语言2.0 Alpha 版本中将提供基于抽象语法树(AST)的宏,让你能在一致的语言环境中操纵甚至自定义语法。
  4. D的许多特性大大减少了指针的需要,比如与C#/Java 类似类默认就是引用类型,D也有内置动态数组。但是 D也保留了指针,因为你需要解决现实世界的问题。
  5. D拥有内置的GC,但是你也可以重在类的 new 操作符来避开GC。D 也不是虚拟机语言,而是像 C++ 一样着眼于大规模高性能的系统和应用程序。
  6. D 的模板与元编程(这是“与”,因为D的元编程不仅限于使用模板)是面向凡人的,远比C++的易于学习使用,但是功能强于 C++,甚至可以在编译时执行函数。
  7. D拥有一切现代面向对象语言的要素:interface, abstract class, final class...,为了解决 interface + 单继承的不足,D 提供了模板混入(template mix-in)特性,没错,天上不会掉馅饼,但是可能会掉红宝石。
  8. D 拥有恐怕是世界上最简单的 Property 功能,比如:
    D 代码
     
    1. class Foo{   
    2.   int c;   

    3.   int count() {
    4.     return c;
    5.   }

    6.   void count(int n) {
    7.     c = n;
    8.   }
    9. }   
    现在类Foo 的成员函数 count 可以像一个真正的属性一样地被访问: int x = foo.count; 或者 foo.count = 123;
  9. D 的 delegate 强于C#,完全由编译器内部支持,而不是如C++般笨拙、低效的手写代码。D 甚至允许完全的匿名 delegate: void delegate() d = { printf("Hi D!\n")};
  10. scope 是C#中 using 的加强版,实践 RAII 手法从此变得轻松愉快。
  11. C++ 界大牛人 Andrei Alexandrescu 参与了核心语言设计,加上经验丰富的编译器作者和一大堆活跃的开发者,D 的前途光明。


D 是一门很年轻很有前途的语言,虽然现在还不算成熟,但是目前的 1.0 稳定版已经拥有了超越 C++0x 标准的特性。就像D的设计和实现者 Walter Bright 说的,看看它的文档,你自己决定吧!

你可能感兴趣的:(C++,c,C#,D语言,Delphi)