【二】D语言现状、基本规定和相关资源介绍

  这算是本系列文章的一个序吧,主要是为以后的学习做铺垫,文本分为三个部分,第一部分是对于网上一些比较旧的资料的问题的一些更正,当然我也不可能看过所有的资料,难免会有遗漏。第二部分是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应该都不是问题

如果您看完了本文还有什么疑惑或者遇到什么问题欢迎给我留言

时间: 2024-10-19 18:20:43

【二】D语言现状、基本规定和相关资源介绍的相关文章

R语言入门心得(3) -- 向量相关

向量定义 R在实际应用中比较常用的一个对象就是向量(Vector).向量的创建格式为 向量名 = c(x1,x2,x3,…..)  或  向量名 <- c(x1,x2,x3,…..) 或  c(x1,x2,x3,…..) -> 向量名 或  Assign("向量名", c(x1,x2,x3,…..)),c()为向量赋值函数,c()可以有任意多个参数,而起返回值则是一个把这些参数首尾相连形成的向量.你可以在命令行中输入?c或者help(c)来查看函数的详细信息.例如我们要创建

Android For JNI(二)——C语言中的数据类型,输出,输入函数以及操作内存地址,内存修改器

Android For JNI(二)--C语言中的数据类型,输出,输入函数以及操作内存地址,内存修改器 当我们把Hello World写完之后,我们就可以迈入C的大门了,今天就来讲讲基本的一些数据类型,函数之内的 我们先来看一张传播久远的图片' 一.各种数据类型介绍 整型 整形包括短整型.整形和长整形. 短整形 short a=1; 整形 一般占4个字节(32位),最高位代表符号,0表示正数,1表示负数,取值范围是-2147483648~2147483647,在内存中的存储顺序是地位在前.高位在

采样方法(二)MCMC相关算法介绍及代码实现

采样方法(二)MCMC相关算法介绍及代码实现 2017-12-30 15:32:14 Dark_Scope 阅读数 10509更多 分类专栏: 机器学习 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/Dark_Scope/article/details/78937731 0.引子 书接前文,在采样方法(一)中我们讲到了拒绝采样.重要性采样一系列的蒙特卡洛采样方法,但这些方法在高维空间时都

MyEclipse相关用法介绍

MyEclipse相关用法介绍 ================================================================================ 编辑: Ctrl+Shift+L      显示所有快捷键 Ctrl+K        参照选中的词(Word)快速定位到下一个 Ctrl+Shift+K      参照选中的词(Word)快速定位到上一个 Ctrl+O         快速显示OutLine Ctrl+T        快速显示当前类的

网络视频相关技术介绍

AnyChat音视频互动开发平台(SDK)是一套跨平台的即时通讯解决方案,基于先进的H.264视频编码标准.AAC音频编码标准与P2P技术,支持高清视频,整合了佰锐科技在音视频编码.多媒体通讯领域领先的开发技术和丰富的产品经验而设计的高质量.宽适应性.分布式.模块化的网络音视频互动平台.        AnyChat音视频互动开发平台(SDK)包含了音视频处理模块(采集.编解码).流媒体管理模块(丢包重传.抖动平滑.动态缓冲).流媒体播放模块(多路混音.音视频同步)以及P2P网络模块(NAT穿透

robots写法及相关命令介绍

当一个搜索蜘蛛访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,搜索机器人就会按照该文件中的内容来确定访问 的范围:如果该文件不存在,所有的搜索蜘蛛将能够访问网站上所有没有被口令保护的页面.百度官方建议,仅当您的网站包含不希望被搜索引擎收录的内容时,才 需要使用robots.txt文件.如果您希望搜索引擎收录网站上所有内容,请勿建立robots.txt文件.robots.txt必须放置在一个站点 的根目录下,而且文件名必须全部小写. 国内的搜索引擎蜘蛛: 百度蜘蛛

数据库相关中间件介绍

数据库相关中间件介绍 详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt412 这里主要介绍互联网行业内有关数据库的相关中间件.数据库相关平台主要解决以下三个方面的问题: 为海量前台数据提供高性能.大容量.高可用性的访问 为数据变更的消费提供准实时的保障 高效的异地数据同步 应用层通过分表分库中间件访问数据库,包括读操作(Select)和写操作(update, insert和delete等,DDL, DCL).写操作会在数据

关于OpenStack的学习路线及相关资源汇总

首先我们想学习openstack,那么openstack是什么?能干什么?涉及的初衷是什么?由什么来组成?刚接触openstack,说openstack不是一个软件,而是由多个组件进行组合,这是一个更深层次的理解,当我们看到dashboard的时候,我们或许对openstack感觉有一点感性认识了.dashboard可以理解为openstack与用户交流的一个窗口,而dashboard对于真正的使用者来讲,它的功能上面有一定的局限性.而对于初学者通过它,可能会对openstack有一定的了解.o

C++相关资源

http://www.cnblogs.com/xi52qian/p/4186983.html语言ISO/IEC JTC1/SC22/WG21 - The C++ Standards Committeehttp://www.open-std.org/jtc1/sc22/wg21/ C/C++ Referencehttp://www.cppreference.com/ The C++ Resources Networkhttp://www.cplusplus.com/ C++ FAQ LITE —