第一篇 基本概述
———————————————————————————————————————————
“在我看来,大部分‘新的’编程语言都可以归结到下面两类:一类来自于有着革新典范的学术界;另一类则是那些来自于关注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;
}
}
————————————————————————————————————————
注:本人第一次发表博客可能有些不太好的地方还请多多谅解,尽量做到教科书式讲解,后续会更新更多关于其他语言内容热门冷门你见过没见过的都会有。