这算是本系列文章的一个序吧,主要是为以后的学习做铺垫,文本分为三个部分,第一部分是对于网上一些比较旧的资料的问题的一些更正,当然我也不可能看过所有的资料,难免会有遗漏。第二部分是D语言最基本的规定,第三部分是相关的资源

一、对于一些网上旧资料上的内容不准确之处在此指出
1、D对闭包的支持不好
目前版本支持完全的闭包,所以不用担心
 
2、D不支持动态链接
目前版本支持动态链接技术,但Windows平台需要注意的是D的runtime建立在dmc(一个C编译器)runtime 基础上,它与VC的二进制格式不兼容,所以如果要调用VC生成的DLL,或者为VC生成DLL需要另外的工具转换,具体方法在以后的文章中会有介绍,这也是我觉得D语言Windows版本不好的一个地方,至于为什么使用dmc,可能是因为设计者本人对dmc的感情吧,左手右手都是肉啊,但对于用户来说的确造成了一些不便,不过问题也不是很大
 
3、D存在两个不同的标准库Tango和Phobos,且两者不兼容,Phobos过于简单
Tango是D1时期流行的库,目前虽然有D2的移植版,但Phobos目前是主流的标准库,很多新的开源项目都是基于Phobos的,所以可以放心使用Phobos,Phobos库已经比原来强大了许多,而且随着更新版本的更新会越来越强,预测将来Tango会做出让步以做为Phobos的补充,而不是水火不容
 
4、D不支持嵌套类
支持,且支持的非常好
 
5、D没有预处理
的确,不过D有代替方案
 
6、D语言的第三方库很少
目前第三方开源库相对以前已经多了不少,刚查了下github,目前上面有六千多个项目,主流技术支持都不错,如数据库,网络,图形等,而且所有C语言的库都可以直接使用
最新信息可查看 http://code.dlang.org,这里包含了所有提交到官方开源库的项目,全部是以dub管理的
所有guthub上的D语言项目可以访问 https://github.com/search?utf8=✓&q=language%3Ad 即直接搜索 language:d
 
7、D没有好的IDE支持
目前IDE支持已经挺好了,我用过的有:
VisualD(Visual Studio的一个插件,需要注意的是免费版的VS不支持插件,最好用专业版)
DDT(Eclipse 插件,使用dub管理项目,dub是一个项目构建工具,也是D开源项目的管理工具,基于json配置,以后会介绍这个工具的使用)
KDevelop(KDE桌面下的主要IDE,支持D语言,不过官网上没提到,也挺好用)
Code::Blocks(支持D语言,不过这个工具对代码提示一直不是很强,如果不注重这个功能可以一用)
更多IDE支持情况可以参考 http://wiki.dlang.org/IDEs
编辑器支持详细情况请访问 http://wiki.dlang.org/Editors (主流编辑器几乎都支持)
注:目前我在使用的是DDT,虽然我不喜欢eclipse,但是在Mac系统下也没有更好的选择
 
8、D没有大公司支持,没有大公司使用
目前Facebook在用,也是支持D语言的公司,因为D语言的设计者在那工作
 
9、中文资料较少
目前是这个情况,而且相对比较老,不过我正在为这个方向做贡献,不为利益,只是从心里面真的很欣赏D语言,同时也希望能结识一些同道中人,一起交流
 
10、如果您对D语言在网上的一些资料内容还有什么问题欢迎留言交流
 
二、基本知识
1、D语言源代码文件必须是UTF-8、UTF-16、UTF-32编码,且支持bom,支持*nix 的#!解释器命令
2、D的源文件组织与文件系统兼容,源文件称为模块,包含源文件的目录(以编译器的工作目录为根的相对路径)称为包
3、D的源代码区分大小写
4、学习D语言最好先学会C语言,因为做为一个系统编程语言不可避免的要与C API交互,所以D最适合熟悉C语言且需要提升生产力的人使用
5、在以后的文章中我会假设您会C语言,并且了解一种面向对象的语言
 
 
三、相关资源
1、D语言官方网站是 http://dlang.org 因为使用了被国内屏蔽了的CDN,所以可能您需要FQ,推荐找一个免费的VPN,我正在使用的是MxVPN
2、D的编译器有哪些,在哪里可以下载到
DMD(官方编译器,对D标准的支持是最快的,并集成rdmd,可做为D语言的解释器用,如果使用其它编译器这个工具也可以单独下载,是一个D语言写的程序) 
GDC(GNU版本,适合Linux系统,版本更新紧随DMD,但一般Linux发行版本中的版本会较老,最好下载最新版本)
LDC(LLVM版本,目前我还没有尝试过,不知道对D语言版本的支持如何,有兴趣的朋友可以尝试)
 
无论您使用什么系统,通常DMD都是不错的选择,只是在Linux中安装时库的依赖会相对较多,GDC和Linux契合度较高,毕竟GCC是Linux默认的编译器,但对于编译后的程序的依赖都是一样的,在后序的文章中没有特别说明将使用DMD做为编译器
编译器的下载都可以通过此链接下载::http://dlang.org/download.html
 
4、安装好编译器后可以使用上一篇文章中的HelloWorld程序测试,也可以使用官网或者手册上的任意一个例子做测试
 
《D程序设计语言》中文版 电子书 百度网盘下载地址:http://pan.baidu.com/s/1qB65w
《D 语言中文参考手册》 百度网盘下载地址:http://pan.baidu.com/s/1o684aL0,此手册是D 2.0.54版,目前最新版是2.0.67,略显老,不过这是唯一的中文翻译的手册。语言和库方面的变化请参考官方网站的 Change Log
注:以上两个中文资料均由 张雪平 翻译,在此感谢张雪平为中国D语言的发展做出的贡献
 
ddt eclipse update site :http://ddt-ide.github.io/releases/(需要dub,在还不知道dub为何物的时候建议不要使用)
只有这个插件的安装可能会遇到问题,所以这里直接给出eclipse update site的地址,其它IDE应该都不是问题
 
 
如果您看完了本文还有什么疑惑或者遇到什么问题欢迎给我留言

《玩转D语言系列》二、D语言现状、基本规定和相关资源介绍的更多相关文章

  1. 复习C语言系列二:动态调用函数指针数组

    a:用call_fun_ptr调用afun(),b:用call_fun_ptr调用bfun() a 请输入给您指定的函数输调用的参数 afun_par ------------------------ ...

  2. 【R语言系列】R语言初识及安装

    一.R是什么 R语言是由新西兰奥克兰大学的Ross Ihaka和Robert Gentleman两个人共同发明. 其词法和语法分别源自Schema和S语言. R定义:一个能够自由幼小的用于统计计算和绘 ...

  3. 【GoLang】GO语言系列--002.GO语言基础

    002.GO语言基础 1 参考资料 1.1 http://www.cnblogs.com/vimsk/archive/2012/11/03/2736179.html 1.2 https://githu ...

  4. Go语言系列(三)之数组和切片

    <Go语言系列文章> Go语言系列(一)之Go的安装和使用 Go语言系列(二)之基础语法总结 1. 数组 数组用于存储若干个相同类型的变量的集合.数组中每个变量称为数组的元素,每个元素都有 ...

  5. C语言高速入门系列(二)

    C语言高速入门系列(二) -----转载请注明出处coder-pig 本节引言: 在前面一节中我们对C语言进行了初步的了解,学会了使用IDE进行代码的编写,编译执行! 在这一节中我们会对C语言的基本的 ...

  6. 《玩转D语言系列》三、轻松大跃进,把它当C语言先用起来

    前面说过,本系列文章的前提是您懂C语言,懂面向对象中的一些概念,如果没有任何变成基础,从零开始学习D语言将是一个漫长的过程,因为很多概念都要重新诠释,让一个没有基础的人经过漫长的学习过程,然后还找不到 ...

  7. windows下mongodb基础玩法系列二CURD附加一

    windows下mongodb基础玩法系列 windows下mongodb基础玩法系列一介绍与安装 windows下mongodb基础玩法系列二CURD操作(创建.更新.读取和删除) windows下 ...

  8. 【Go语言入门系列】Go语言工作目录介绍及命令工具的使用

    [Go语言入门系列]前面的文章: [保姆级教程]手把手教你进行Go语言环境安装及相关VSCode配置 [Go语言入门系列](八)Go语言是不是面向对象语言? [Go语言入门系列](九)写这些就是为了搞 ...

  9. C语言 预处理二(宏定义--#define)

    //#define 宏定义(宏定义一般大写) //知识点一-->#define的作用域:从#define开始,从上往下,如果遇到#undef就到#undef处结束,如果没有就是作用于当前整个文件 ...

随机推荐

  1. NOI 题库 7624

    7624  山区建小学 描述 政府在某山区修建了一条道路,恰好穿越总共m个村庄的每个村庄一次,没有回路或交叉,任意两个村庄只能通过这条路来往.已知任意两个相邻的村庄之间的距离为di(为正整数),其中, ...

  2. 五分钟理解一致性哈希算法(consistent hashing)

    转载请说明出处:http://blog.csdn.net/cywosp/article/details/23397179 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法 ...

  3. ajax pagination 布局刷新

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...

  4. asp.net在线预览txt文件(简单实现)

    最近在做文件的在线预览,发现txt文件没有一个较好的方法去实现,想了想可能是比较简单就直接在后台输出了 txt文件

  5. 使用holder进行内存管理

    在C++中,我们使用new 和delete进行自己的内存管理. void test_func() { someType *ptr = new someType; //使用ptr ptr->fun ...

  6. HTML中行内元素与块级元素的区别:

    HTML中行内元素与块级元素的区别:在标准文档流里面,块级元素具有以下特点: ①总是在新行上开始,占据一整行:②高度,行高以及外边距和内边距都可控制:③宽带始终是与浏览器宽度一样,与内容无关:④它可以 ...

  7. 雷克萨斯-RC

    -型号:RC(双门) -价格:49-59W -动力:2T -变速箱:8挡手自一体 -长宽高:4.70,1.84,1.40 -油箱:66L -发动机:8AR-FTS -大灯:LED

  8. Struts2 OGNL 字符串自定义转化对象细节

    要使用Struts2的自定义对象转化,需要几个要点: 1.要有继承DefaultTypeConverter的实现类,要重写convertValue,并且参数value转化而来的String是Strin ...

  9. VS2012 提示未找到与约束 ContractName 匹配的倒出

    问题描述: 今天由于开发需要,我安装了一下 Vs 2015 按照之后 打开原来的项目 vs2012 打开,点击类文件提示错误 未找到与约束 ContractName 匹配的倒出 解决办法: 1  去微 ...

  10. http协议中用于上传多个文件的 multipart 字段

    大家好,我是许飞,微软拼音的开发实习生.在网络编程中,经常用到从服务器上“下载”一些数据,有时却要向服务器“上传”数据.曾在一个原型中使用了“multipart/form-data”格式向Web服务器 ...