去
http://www.digitalmars.com/d/download.html下载dmd.zip(D compiler) for Win32 and Linux和dmc.zip (linker and utilities) for Win32
同一目录下解压dmd.zip和dmc.zip,将dmd\bin和dm\bin加入到path中
看看dmd\samples\d下的例子,如hello.d:
int main(char[][] args)
{
printf("hello world\n");
printf("args.length = %d\n", args.length);
for (int i = 0; i < args.length; i++)
printf("args[%d] = '%s'\n", i, cast(char *)args[i]);
return 0;
}
运行dmd hello.d则生成可执行文件hello.exe
输出中文则需要setlocale一下:
import std.stdio;
private import std.c.stdio;
extern(C) int setlocale(int, char*);
static this() {
fwide(stdout, 1);
setlocale(0, "china");
}
int main()
{
writef("你好, D!");
return 0;
}
看看
http://www.digitalmars.com/d/comparison.html中D的特性表:
D Language Feature Comparison Table
Feature D
Garbage Collection Yes
<b>Functions</b>
Function delegates Yes
Function overloading Yes
Out function parameters Yes
Nested functions Yes
Function literals Yes
Dynamic closures Yes
Typesafe variadic arguments Yes
Lazy function argument evaluation Yes
<b>Arrays</b>
Lightweight arrays Yes
Resizeable arrays Yes
Built-in strings Yes
Array slicing Yes
Array bounds checking Yes
Array literals Yes
Associative arrays Yes
Strong typedefs Yes
String switches Yes
Aliases Yes
<b>OOP</b>
Object Oriented Yes
Multiple Inheritance No
Interfaces Yes
Operator overloading Yes
Modules Yes
Dynamic class loading No
Nested classes Yes
Inner (adaptor) classes Yes
Covariant return types Yes
Properties Yes
<b>Performance</b>
Inline assembler Yes
Direct access to hardware Yes
Lightweight objects Yes
Explicit memory allocation control Yes
Independent of VM Yes
Direct native code gen Yes
<b>Generic Programming</b>
Class Templates Yes
Function Templates Yes
Implicit Function Template Instantiation Yes
Partial and Explicit Specialization Yes
Value Template Parameters Yes
Template Template Parameters Yes
Variadic Template Parameters Yes
Mixins Yes
static if Yes
is expressions Yes
typeof Yes
foreach Yes
Implicit Type Inference Yes
<b>Reliability</b>
Contract Programming Yes
Unit testing Yes
Static construction order Yes
Guaranteed initialization Yes
RAII (automatic destructors) Yes
Exception handling Yes
Scope guards Yes
try-catch-finally blocks Yes
Thread synchronization primitives Yes
<b>Compatibility</b>
C-style syntax Yes
Enumerated types Yes
Support all C types Yes
80 bit floating point Yes
Complex and Imaginary Yes
Direct access to C Yes
Use existing debuggers Yes
Struct member alignment control Yes
Generates standard object files Yes
Macro text preprocessor No
<b>Other</b>
Conditional compilation Yes
Unicode source text Yes
Documentation comments Yes
以及D与C/C++/C#/Java的对比:
特性 D C C++ C# Java
垃圾收集 Yes No No Yes Yes
<b>函数</b>
函数委托 Yes No No Yes No
函数重载 Yes No Yes Yes Yes
传出(out)函数参数 Yes Yes Yes Yes No
嵌套函数 Yes No No No No
函数文字量 Yes No No No No
动态闭包 Yes No No No No
<b>数组</b>
轻量数组 Yes Yes Yes No No
变长数组 Yes No No No No
位数组 Yes No No No No
内建字符串 Yes No No Yes Yes
数组切片 Yes No No No No
数组边界检查 Yes No No Yes Yes
关联数组 Yes No No No No
强类型定义typedef Yes No No No No
字符串switch语句 Yes No No Yes No
别名 Yes Yes Yes No No
<b>OOP</b>
面向对象 Yes No Yes Yes Yes
多重继承 No No Yes No No
接口 Yes No Yes Yes Yes
运算符重载 Yes No Yes Yes No
模块 Yes No Yes Yes Yes
动态类装入 No No No Yes Yes
嵌套类 Yes Yes Yes Yes Yes
内部(适配器)类 No No No No Yes
协变返回型别 Yes No Yes No No
属性 Yes No No Yes No
<b>性能</b>
内联汇编 Yes Yes Yes No No
直接访问硬件 Yes Yes Yes No No
轻量对象 Yes Yes Yes Yes No
显示内存分配控制 Yes Yes Yes No No
独立于虚拟机 Yes Yes Yes No No
直接生成本地代码 Yes Yes Yes No No
<b>泛型编程</b>
模板 Yes No Yes No No
混入 Yes No No No No
typeof Yes No No Yes No
foreach Yes No No Yes No
约束 Yes No No No No
<b>可靠性</b>
契约式编程 Yes No No No No
单元测试 Yes No No No No
静态构造顺序 Yes No No Yes Yes
确保初始化 Yes No No Yes Yes
RAII(自动析构函数) Yes No Yes Yes No
异常处理 Yes No Yes Yes Yes
try-catch-finally基本块 Yes No No Yes Yes
线程同步原语 Yes No No Yes Yes
<b>兼容性</b>
C风格语法 Yes Yes Yes Yes Yes
枚举型别 Yes Yes Yes Yes No
支持所有C型别 Yes Yes No No No
80位浮点数 Yes Yes Yes No No
负数和虚数 Yes Yes No No No
直接访问C Yes Yes Yes No No
使用现有的调试器 Yes Yes Yes No No
结构成员对齐控制 Yes No No No No
生成标准目标文件 Yes Yes Yes No No
宏文本预处理器 No Yes Yes No No
<b>其他</b>
条件编译 Yes Yes Yes Yes No
Unicode源代码 Yes Yes Yes Yes Yes
D的GC机制使得C/C++的内存分配和指针问题烟消云散一去不返
算是C/C++的一个提升和进步的产物
分享到:
相关推荐
### JNI入门之HelloWorld(一)详解 #### 一、引言 JNI(Java Native Interface)是Java平台标准的一部分,它允许Java代码与其他语言写的代码进行交互。JNI接口提供了若干公共服务,并为Java虚拟机和本机应用程序或...
总的来说,"jni-helloWorld"是一个非常适合初学者了解JNI基本用法的实例,通过它,开发者可以学习到如何在Java程序中嵌入本地代码,实现Java与本地代码的高效交互。而提供的错误处理和解决方案则有助于在实践中解决...
“webgl-3d-helloworld”项目很可能会简化以上步骤,提供一个基础的3D渲染流程,便于初学者理解和学习。通过分析和实践这个项目,开发者能够掌握WebGL的基本概念,为进一步探索复杂的3D图形和动画打下基础。
module HelloWorld (main) where main = putStrLn "Hello World!\n" ``` **解析:** - Haskell是一种纯函数式编程语言。 - `module`定义模块。 - `putStrLn`用于输出字符串。 #### Icon ```icon procedure main() ...
### 实现HELLOWORLD入门与常见错误分析 #### JAVA语言简介与编译流程 JAVA,作为一种跨平台的高级编程语言,由Sun Microsystems于1995年推出,旨在实现“一次编写,到处运行”的理念。其核心优势在于通过Java...
在标签中,"assembly_hello_wor dos_hello_world hello_world__d masm masm_hello"进一步强调了这是关于使用汇编语言(assembly)、DOS环境(dos_hello_world)、以及MASM汇编器(masm)实现"Hello, World!...
"01 C++书写HelloWorld_通用C++模板_"这个标题暗示了我们将探讨如何使用C++编写基础的"Hello, World!"程序,并介绍一个通用的C++模板,它可以帮助初学者快速开始编程。 "Hello, World!"是学习任何编程语言时的第一...
这段代码会输出一个20x5的字符网格,其中"@"字符组成了一种简单的图形,形状类似于"Helloworld"的首字母。这种方式展示了如何使用字符串来创建图形,虽然这不是直接输出文本,但它是用字符数组或字符串进行艺术创作...
在这个例子中,`D Vc_Hello s 100A` 定义了一个变量,`C Eval Vc_Hello = 'Hello World!'` 设置了变量的值,而 `C DSPLY Vc_Hello` 则用于显示这个字符串。 2. **Ada** Ada 是一种强类型、静态类型的面向对象编程...
Java HelloWorld 程序作为学习 Java 编程语言的第一步,具有重要的意义。它不仅帮助初学者熟悉 Java 的基本语法结构,还能够让大家掌握如何搭建 Java 开发环境,以及如何进行简单的程序编译与运行。本文将基于提供的...
因为需要进行比对教学,所以这几天闲暇之余我学习了一下C#语言。环境:Windows XP Professional、.NET Framewokd 2.0、 .NET Frameworkd 2.0 SDK(没有安装VS系列IDE),以及记事本。学习思路:按照Java的规范来书写...
这段代码定义了一个公共类(public class)`HelloWorld`,包含一个主方法(main method),这是每个Java应用程序的入口点。`System.out.println()`是一个标准输出方法,用于在控制台打印指定的字符串。 2. **保存...
SpringMVC_HelloWorld SpringMVC的一个hello world的demo,开启学习SpringMVC的大门。 SpringMVC 框架提供了一个DispatchServlet作为前端控制器来分派请求,同时提供灵活的配置处理程序映射,视图解析,语言环境和...
第三章】HelloWorld之绘制文本是针对初学者的一个教程,旨在教授如何在LGame框架下实现基本的文本绘制功能。LGame是一个轻量级的游戏开发库,它提供了丰富的功能,使得开发者能够快速、便捷地创建2D游戏。在这个章节...
在Android开发领域,"HelloWorld"是初学者入门时的第一个程序,它标志着开发者在这一平台上...通过这个"HelloWorld"项目,开发者可以逐步熟悉Android开发的各个环节,为进一步学习更复杂的Android应用打下坚实的基础。
编译Java程序时,首先需要创建一个包含`public class`的源文件,例如`HelloWorldApp.java`。这个文件应包含主函数`public static void main(String[] args)`,这是Java程序的入口点。例如: ```java import java.io...
Hello World和使用不同编程语言的一些示例 该存储库包含大量的编程语言和一些示例。 也有一些关于它们的描述。 如果您想学习一种编程语言,那么此回购中有关该语言的说明和示例可能会有所帮助。 在此存储库中,还...
标题 "Another Hello world_python_" 暗示我们将讨论的是一个基础的 Python 编程概念,通常初学者在接触编程时会通过"Hello, World!"程序来入门。在这里,"Another"可能意味着我们要探讨的是与“Hello, World!”类似...
具体到“HelloWorld”程序,它是每个程序员学习新语言时的第一步。在Java中,一个简单的HelloWorld程序如下: ```java public class HelloWorld { public static void main(String[] args) { System.out.println...
第五章深入探讨了D语言的模板系统,这是该语言最具特色的功能之一。 1. **模板基础**: - 介绍了模板的基本语法和使用方式。 - 包括模板参数、实例化等概念。 2. **模板元编程**: - 元编程是指在编译时进行...