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

时间:2022-09-02 10:06:17

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

    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语言 预处理二(宏定义--&num;define)

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

随机推荐

  1. 四、MyBatis主配置文件

    //备注:该博客引自:http://limingnihao.iteye.com/blog/1060764 在定义sqlSessionFactory时需要指定MyBatis主配置文件: Xml代码 收藏 ...

  2. JavaWeb学习----JSP内置对象详解

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  3. Java中的Timer和TimerTask在Android中的用法(转)

    转自:http://blog.csdn.net/zuolongsnail/article/details/8168689 在开发中我们有时会有这样的需求,即在固定的每隔一段时间执行某一个任务.比如UI ...

  4. 《JavaScript基础教程(第8版)》PDF

    简介:JavaScript基础教程(第8版)循序渐进地讲述了JavaScript及相关的CSS.DOM.Ajax.jQuery等技术.书中从JavaScript语言基础开始,分别讨论了图像.框架.浏览 ...

  5. Poj 1006 &sol; OpenJudge 2977 1006 Biorhythms&sol;生理周期

    1.链接地址: http://poj.org/problem?id=1006 http://bailian.openjudge.cn/practice/2977 2.题目: Biorhythms Ti ...

  6. hdu1978How many ways &lpar;记忆化搜索&plus;DFS&rpar;

    Problem Description 这是一个简单的生存游戏,你控制一个机器人从一个棋盘的起始点(1,1)走到棋盘的终点(n,m).游戏的规则描述如下: 1.机器人一开始在棋盘的起始点并有起始点所标 ...

  7. Localdb Attach Problem

    在进行code first的迁移时,update-database后默认在App_data文件夹下会新建数据库,如果删除了在使用update-database命令会出现以下错误: Cannot att ...

  8. DigitalOcean VPS简介

    DigitalOcean是一家位于美国的云主机服务商,总部位于美国纽约,成立于2012年.由于价格低廉,高性能配置.灵活布置的优势,近些年来发展迅猛,成为中国站长圈们喜爱的品牌.(访问http://w ...

  9. iOS 比较版本号大小的方法

    比较iOS版本号大小 eg:3.2.0和3.1.0 或者 3.2.0和3.2比较 返回bool值变量YES or NO -(BOOL)compareVesionWithServerVersion:(N ...

  10. 【代码笔记】Web-JavaScript-JavaScript注释

    一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...