《零基础D编程入门》

第一篇      基本概述

———————————————————————————————————————————

“在我看来,大部分‘新的’编程语言都可以归结到下面两类:一类来自于有着革新典范的学术界;另一类则是那些来自于关注RAD和web的大型公司。或许是时候该在实现编译器的实践经验中诞生一门新语言了。”

                                                                                                                   --Michael
“太好了,正是我所要的,编程时可以用D语言啦。”

                                                                                                                   --Segfault

文章目录


                                                               第一章      介绍

——————————————————————————————————-————————

一、D语言介绍

1.1

D是一种系统编程语言。它的重点在于整合了C和C++的强大及高性能,同时又具有像现代语言Ruby和Python一样的程序员生产率。对于其它像质量保证、文档、管理、移植性和可靠性等这些需求,它也给予了特别的关注。
D语言需要静态录入,然后直接编译成机器代码。它是多范式的(multiparadigm),即支持多种编程风格:命令式、面向对象以及元式编程。它属于C语法家族的成员,其形式上跟C++非常接近。

1.2

D目前共有两个版本

1.D版本2,推荐新项目使用。
2.D版本1,它现在是维护模式。
目前,有四个实现:
1.DigitalMarsdmd用于Windows的版本有1.0、2.0;用于x86Linux的版本有1.0、2.0;用于MacOSX的版本1.0、2.0,而用于x86FreeBSD的版本有1.0、2.0。
2.LLVMD编译器ldc实现的是D语言的第1版。
3.GnuD编译器gdc。
4.D.NET编译器alpha可用于.NET平台,实现版本为D语言的第2版。

下列代码演示D的一些功能;

#!/usr/bin/dmd-run
/*支持sh风格脚本语法*/

/*D的 HelloWorld
编译方法:
  dmd hello.d

dmd-O-inline-releasehello.d
*/
importstd.stdio;

voidmain(string[]args)
{
   writeln("HelloWorld,Reloaded");

//自动的类型推断以及内建的foreach
   foreach(argc,argv;args)
   {
//面向对象的编程
     autocl=newCmdLin(argc,argv);
//改进的类型安全的printf
     writeln(cl.argnum,cl.suffix,"arg:",cl.argv);
//自动或显示的内存管理
     delete cl;
}

//嵌套结构和类
  structspecs
  {
//所有成员自动被初始化
     intcount,allocated;

}
//嵌套的函数可以引用
  //像args那样的外层变量
  specs argspecs()
  {
         specs * s = news pecs;
//不需要使用'->'
         s.count = args.length;                //使用.length来获取数组的长度
         s.allocated = typeof(args).sizeof;    //内建的本地类型特性
         foreach(argv;args)
            s.allocated+=argv.length * typeof(argv[0]).sizeof;
         return * s;
}
//内建字符串和常见字符串操作
   writefln("argc=%d,"~"allocated=%d",
      argspecs().count,argspecs().allocated);
}


class CmdLin
{
   private int_argc;
   private string_argv;
public:
   this(intargc,stringargv)//构造函数
{
       _argc = argc;
       _argv = argv;
}

int argnum()
{
      return_argc + 1;
}

string argv()
{
     return_argv;
}

string suffix()
 {
     stringsuffix = "th";
     switch(_argc)
     {
       case 0:
         suffix = "st";
         break;
       case 1:
         suffix = "nd";
         break;
       case2:
         sufix = "rd";
         break;
       default:
         break;
     }
      return suffix;
  }
}

————————————————————————————————————————

注:本人第一次发表博客可能有些不太好的地方还请多多谅解,尽量做到教科书式讲解,后续会更新更多关于其他语言内容热门冷门你见过没见过的都会有。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

即刻编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值