`
hideto
  • 浏览: 2677890 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

学习D语言之helloworld

阅读更多
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入门之HelloWorld(一)详解 #### 一、引言 JNI(Java Native Interface)是Java平台标准的一部分,它允许Java代码与其他语言写的代码进行交互。JNI接口提供了若干公共服务,并为Java虚拟机和本机应用程序或...

    jni-helloWorld

    总的来说,"jni-helloWorld"是一个非常适合初学者了解JNI基本用法的实例,通过它,开发者可以学习到如何在Java程序中嵌入本地代码,实现Java与本地代码的高效交互。而提供的错误处理和解决方案则有助于在实践中解决...

    webgl-3d-helloworld

    “webgl-3d-helloworld”项目很可能会简化以上步骤,提供一个基础的3D渲染流程,便于初学者理解和学习。通过分析和实践这个项目,开发者能够掌握WebGL的基本概念,为进一步探索复杂的3D图形和动画打下基础。

    各种程序语言的Hello_World程序

    module HelloWorld (main) where main = putStrLn "Hello World!\n" ``` **解析:** - Haskell是一种纯函数式编程语言。 - `module`定义模块。 - `putStrLn`用于输出字符串。 #### Icon ```icon procedure main() ...

    实现HELLOWORLD入门和常见错误分析

    ### 实现HELLOWORLD入门与常见错误分析 #### JAVA语言简介与编译流程 JAVA,作为一种跨平台的高级编程语言,由Sun Microsystems于1995年推出,旨在实现“一次编写,到处运行”的理念。其核心优势在于通过Java...

    masm.rar_Assembly hello wor_dos hello world_hello world D_masm_

    在标签中,"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++模板_

    "01 C++书写HelloWorld_通用C++模板_"这个标题暗示了我们将探讨如何使用C++编写基础的"Hello, World!"程序,并介绍一个通用的C++模板,它可以帮助初学者快速开始编程。 "Hello, World!"是学习任何编程语言时的第一...

    特别的“helloworld”

    这段代码会输出一个20x5的字符网格,其中"@"字符组成了一种简单的图形,形状类似于"Helloworld"的首字母。这种方式展示了如何使用字符串来创建图形,虽然这不是直接输出文本,但它是用字符数组或字符串进行艺术创作...

    Hello,World!

    在这个例子中,`D Vc_Hello s 100A` 定义了一个变量,`C Eval Vc_Hello = 'Hello World!'` 设置了变量的值,而 `C DSPLY Vc_Hello` 则用于显示这个字符串。 2. **Ada** Ada 是一种强类型、静态类型的面向对象编程...

    实现java_HelloWorld小程序.pdf

    Java HelloWorld 程序作为学习 Java 编程语言的第一步,具有重要的意义。它不仅帮助初学者熟悉 Java 的基本语法结构,还能够让大家掌握如何搭建 Java 开发环境,以及如何进行简单的程序编译与运行。本文将基于提供的...

    第一个C#程序Hello World

    因为需要进行比对教学,所以这几天闲暇之余我学习了一下C#语言。环境:Windows XP Professional、.NET Framewokd 2.0、 .NET Frameworkd 2.0 SDK(没有安装VS系列IDE),以及记事本。学习思路:按照Java的规范来书写...

    java的简单代码HelloWorld借鉴.pdf

    这段代码定义了一个公共类(public class)`HelloWorld`,包含一个主方法(main method),这是每个Java应用程序的入口点。`System.out.println()`是一个标准输出方法,用于在控制台打印指定的字符串。 2. **保存...

    SpringMVC_HelloWorld:SpringMVC的一个hello world的demo,开启学习SpringMVC的大门

    SpringMVC_HelloWorld SpringMVC的一个hello world的demo,开启学习SpringMVC的大门。 SpringMVC 框架提供了一个DispatchServlet作为前端控制器来分派请求,同时提供灵活的配置处理程序映射,视图解析,语言环境和...

    【LGame学堂003.第三章】 HelloWorld之绘制文本 附件下载

    第三章】HelloWorld之绘制文本是针对初学者的一个教程,旨在教授如何在LGame框架下实现基本的文本绘制功能。LGame是一个轻量级的游戏开发库,它提供了丰富的功能,使得开发者能够快速、便捷地创建2D游戏。在这个章节...

    android helloWorld

    在Android开发领域,"HelloWorld"是初学者入门时的第一个程序,它标志着开发者在这一平台上...通过这个"HelloWorld"项目,开发者可以逐步熟悉Android开发的各个环节,为进一步学习更复杂的Android应用打下坚实的基础。

    用JAVA实现HELLO WORLD入门和常见错误分析 (1).pdf

    编译Java程序时,首先需要创建一个包含`public class`的源文件,例如`HelloWorldApp.java`。这个文件应包含主函数`public static void main(String[] args)`,这是Java程序的入口点。例如: ```java import java.io...

    Hello-World:你好世界用不同的语言!

    Hello World和使用不同编程语言的一些示例 该存储库包含大量的编程语言和一些示例。 也有一些关于它们的描述。 如果您想学习一种编程语言,那么此回购中有关该语言的说明和示例可能会有所帮助。 在此存储库中,还...

    Another Hello world_python_

    标题 "Another Hello world_python_" 暗示我们将讨论的是一个基础的 Python 编程概念,通常初学者在接触编程时会通过"Hello, World!"程序来入门。在这里,"Another"可能意味着我们要探讨的是与“Hello, World!”类似...

    自动化实现HelloWorld,模拟键盘和鼠标点击

    具体到“HelloWorld”程序,它是每个程序员学习新语言时的第一步。在Java中,一个简单的HelloWorld程序如下: ```java public class HelloWorld { public static void main(String[] args) { System.out.println...

    D语言教程

    第五章深入探讨了D语言的模板系统,这是该语言最具特色的功能之一。 1. **模板基础**: - 介绍了模板的基本语法和使用方式。 - 包括模板参数、实例化等概念。 2. **模板元编程**: - 元编程是指在编译时进行...

Global site tag (gtag.js) - Google Analytics