《玩转D语言系列》一、通过四个版本的 Hello Word 初识D语言
对于D语言,相信很多朋友还没听说过,因为它还不够流行,跟出自名门的一些语言比起来也没有名气,不过这并不影响我对它的偏爱,我就是这样的一种人,我喜欢的女孩子一定是知己型,而不会因为她外表,出身,学历,工作等产生偏见,如果您和我一样相信您也会喜欢上D语言,作为一个工作上目前几乎用不到的语言还是很值得学习,就像是跟你结婚的人未必是你最喜欢的人(做人留一线,见后好 xx 嘛,\(^o^)/ )
好了,进入正题,本文将使用四个版本的Hello Word程序向还不了解D语言,有兴趣学习新语言的朋友们展示D语言的基本外观和基本的系统编程能力,以做抛砖引玉
版本一:使用D标准库——phobos
import std.stdio; void main()
{
writeln("Hello World");
}
版本二:使用C标准库
import core.stdc.stdio; void main()
{
puts("hello world");
}
版本三:使用系统调用
import core.sys.posix.unistd; void main()
{
write(STDOUT_FILENO, "hello world\n".ptr, );
}
版本四:被C调用
D 代码(hello.d)
import std.stdio; extern(C) void hello()
{
writeln("Hello World");
}
C代码(hello.c)
void hello();
void rt_init();
void rt_term(); int main()
{
rt_init(); // 初始化D runtime以支持D中的高级特性,如果没有用到可以省略
hello();
// ...
rt_term(); // 释放 D runtime 资源,需与rt_init 配对
return 0;
}
此被C调用程序的编译方法:
$ dmd -c hello.d
$ gcc -o hello hello.o hello.c -lphobos2
$ ./hello
Hello World
D与C是二进制兼容的,但并不兼容源码,所以编译时要使用二进制文件,另外不要忘记链接 libphobos2 这个库,如果你懂C那不需要我啰嗦原因了
这四个小程序初步展示了D语言的外观,以及每一个系统编程语言必需要做到的与C的交互性,在这点上C++可以无缝的实现与C的互调,D相比C++多了两个函数调用,在实现项目中,多了两个函数调用的编码成本几乎可以忽略,相比Go的方式和Rust的FFI要舒服的多,看上去也很自然
有的朋友可以注意到了,D代码跟C++很像,没错,它非常的C like,但这只是冰山一角,还有很多高级特性这里没有体现出来,在后续的文章中会详细介绍
《玩转D语言系列》一、通过四个版本的 Hello Word 初识D语言的更多相关文章
- 《玩转D语言系列》三、轻松大跃进,把它当C语言先用起来
前面说过,本系列文章的前提是您懂C语言,懂面向对象中的一些概念,如果没有任何变成基础,从零开始学习D语言将是一个漫长的过程,因为很多概念都要重新诠释,让一个没有基础的人经过漫长的学习过程,然后还找不到 ...
- 玩转大数据系列之Apache Pig高级技能之函数编程(六)
原创不易,转载请务必注明,原创地址,谢谢配合! http://qindongliang.iteye.com/ Pig系列的学习文档,希望对大家有用,感谢关注散仙! Apache Pig的前世今生 Ap ...
- 玩转Windows服务系列——使用Boost.Application快速构建Windows服务
玩转Windows服务系列——创建Windows服务一文中,介绍了如何快速使用VS构建一个Windows服务.Debug.Release版本的注册和卸载,及其原理和服务运行.停止流程浅析分别介绍了Wi ...
- 玩转Windows服务系列——Debug、Release版本的注册和卸载,及其原理
Windows服务Debug版本 注册 Services.exe -regserver 卸载 Services.exe -unregserver Windows服务Release版本 注册 Servi ...
- 玩转Windows服务系列——创建Windows服务
创建Windows服务的项目 新建项目->C++语言->ATL->ATL项目->服务(EXE) 这样就创建了一个Windows服务项目. 生成的解决方案包含两个项目:Servi ...
- 完毕port(CompletionPort)具体解释 - 手把手教你玩转网络编程系列之三
手把手叫你玩转网络编程系列之三 完毕port(Completion Port)具体解释 ...
- 玩转Windows服务系列——创建Windows服务
原文:玩转Windows服务系列——创建Windows服务 创建Windows服务的项目 新建项目->C++语言->ATL->ATL项目->服务(EXE) 这样就创建了一个Wi ...
- 玩转Windows服务系列——Debug、Release版本的注册和卸载,及其原理
原文:玩转Windows服务系列——Debug.Release版本的注册和卸载,及其原理 Windows服务Debug版本 注册 Services.exe -regserver 卸载 Services ...
- wing带你玩转自定义view系列(2) 简单模仿qq未读消息去除效果
上一篇介绍了贝塞尔曲线的简单应用 仿360内存清理效果 这一篇带来一个 两条贝塞尔曲线的应用 : 仿qq未读消息去除效果. 转载请注明出处:http://blog.csdn.net/wingicho ...
随机推荐
- Shader实例:边缘发光和描边
效果图: 1.边缘发光 思路:用视方向和法线方向点乘,模型越边缘的地方,它的法线和视方向越接近90度.点乘越接近0 那么用 1-减去上面点乘的结果,来作为颜色分量,来反映边缘颜色强弱. Shader ...
- jQuery 利用 parent() parents() 寻找父级 或祖宗元素
$(this).parent().parent().parent().parent().parent().remove(); //此方法通过parent()一级一级往上找 $(this).pare ...
- Pow(x, n)
Implement pow(x, n). public class Solution { public double pow(double x, int n) { //判断x是不是0 if(Math. ...
- VS2010/VS2013中ashx代码折叠的问题
Tools->Options->TextEditor->File Extension Add ashx Microsoft Visual C# Apply OK 重启VS就可以了,效 ...
- Thinking in Java——笔记(15)
Generics The term "generic" means "pertaining or appropriate to large groups of class ...
- jiajianhao
#include<stdio.h> int map[4][4]={ 0,1,0,0, 0,0,0,0, 0,0,0,0, 0,1,0,0}; int flag=0; int minci=9 ...
- Ionic + AngularJS
Ionic Framework Ionic framework is the youngest in our top 5 stack, as the alpha was released in lat ...
- 常用数据库的驱动程序及JDBC URL:
Oracle数据库: 驱动程序包名:ojdbc14.jar 驱动类的名字:oracle.jdbc.driver.OracleDriver JDBC URL:jdbc:oracle:thin:@dbip ...
- 数值分析之QR因子分解篇
在数值线性代数中,QR因子分解的思想比其他所有算法的思想更为重要[1]. --Lloyd N. Trefethen & ...
- ORM系列之二:EF(3) 数据库连接
目录 1.前言 2.Code First默认连接 3.Code First指定数据库 4.自定义连接 前言 在介绍EF的Code First模式时候,我们没有修改任何配置,运行之后自动在LocalDb ...