限时领|《AI 百问百答》专栏课+实体书(包邮)! 了解详情
写点什么

D 语言和 Visual D 简介

  • 2011-05-26
  • 本文字数:1054 字

    阅读完需:约 3 分钟

D 语言是一种由 Digital Mars 公司创造的系统编程语言,它专注于“把 C 和 C++ 的能力和高性能与先进的语言——像 Ruby 和 Python——的高生产力结合起来。” 尽管它仍然是一种静态类型的语言,可以直接编译成本地代码,而且语法看起来与 Java 或者 C#非常类似,但是它做出了很多有意义的改进。

这些改进包括明确地支持惰性参数。当我们使用关键字“lazy”标记一个形参时,就意味着相关的实参会被赋值 0 次或者多次。这与 Haskell 之类的语言不同,它会延迟对实参赋值 0 次或者 1 次,但不会再多。

为了保证程序的正确性,特别是在并行以及多线程的领域中的正确性,D 语言支持把“immutable”和“const”作为一等概念。和 C++ 不同的是,在 D 语言中的 immutable 和 const 修饰符是可传递的。如果我们用 immutable 标记了一个变量,那么不但不能对其进行变更,也不能变更通过它所能够访问的任何变量。const 关键字的工作方式和 immutable 类似,不过特定的对象还是可以通过 non-const 的引用来修改变量的值。

D 语言还包括了很多来自于其它语言的流行特性。例如,它拥有 for-each 循环、字符串转换、数组分片、闭包、try-catch-finally 块,以及值类型和引用类型的分离等等。同时,它还考虑到了直接对内存的访问,80 位的浮点型数字、结构成员排列控制以及内联程序集。

通常,因为安全性,把源代码转换为本地代码会付出高昂的代价。C 和 C++ 是最容易受到类似于缓冲区溢出之类的编码错误影响的,其它大多数本地语言也都一样。D 语言通过既在编译时又在运行时执行数组边界检查来避免这些问题。同样,非零长度的数组的内容会自动初始化为它们的默认值。

关于内存管理,D 语言和.NET 非常类似。默认情况下,引用类型会存储在垃圾回收堆中,而值类型或者会存储在堆栈中,或者存储在其它对象中。D 语言也可是分配堆栈来存储引用类型,但这不可避免要使用指向它们的指针。和.NET 一样,你还可以让指针指向非托管的内存。让这些彼此分离非常重要,因为很多你能够在非托管的指针上能够执行的操作,在托管指针上执行是不安全的。

对于能够使用非快捷版 Visual Studio 的开发者来说,有一个项目叫做 Visual D,它提供了 Visual Studio 插件。Lloyd 在一篇文章中介绍了如何在你的环境中安装Visual D

当前D 语言有四种实现。 Digital Mars 公司为 Windows、Linux、OS X 和 FreeBSD 提供了免费的编译器。还有一种 Gnu D 编译器,它是构建在 gcc 之上的。而 LLVM 也发布了他们的 D 语言编译器的 beta 版本,最后还有针对.NET 的部分实现

查看英文原文: An Introduction to D and Visual D

2011-05-26 06:505380
用户头像

发布了 340 篇内容, 共 139.6 次阅读, 收获喜欢 13 次。

关注

评论

发布
暂无评论
发现更多内容

半年摸爬滚打,我是如何从小白进阶渗透测试工程师

网络安全学海

黑客 网络安全 信息安全 渗透测试 漏洞分析

不愧是阿里内部“SpringCloudAlibaba学习笔记”看完直接斩获12家offer

Java 编程 架构 面试 微服务

一周信创舆情观察(6.28~7.4)

统小信uos

Hightopo可视化入局“智慧工厂”,助力企业改革创新

一只数据鲸鱼

数据可视化 绿色工业 3D数据可视化 高炉炼铁 智慧工业

Mobileye智慧出行再加码,中国市场生态建设取得新进展

E科讯

再获权威认可!DataPipeline实时数据融合平台通过信通院大数据产品能力评测

DataPipeline数见科技

大数据 数据融合 数据管理

KDD CUP 2021首届图神经网络大赛放榜,百度飞桨PGL获得2金1银

百度大脑

神经网络 百度

GitHub星标70K阿里大佬手写的Spring Boot实战手册

Java架构师迁哥

HashMap从入门到精通,原创好文,值得收藏!

wljslmz

Java hashmap java8 HashMap底层原理

GNURadio报错Unable to create context(windows10环境)

allu

问题总结

2021年,BAT接连入局!“低代码”为何能备受资本追捧?

优秀

低代码

越学越有趣:『手把手带你学NLP』系列项目07 ——机器翻译的那些事儿

百度大脑

机器学习 nlp

北鲲云超算平台——让科技更好地服务于用户

北鲲云

DataPipeline实时数据融合平台V3.0里程碑版发布!澎湃新动能

DataPipeline数见科技

大数据 数据融合 数据管理

底层技术支撑智慧出行,汽车智能化发展下区块链大放异彩

旺链科技

区块链产业

【工作感悟】2021最值得加入的互联网公司有哪些

欢喜学安卓

android 程序员 面试 移动开发

2021百度云智峰会|DataPipeline携手百度赋能实时数据资产构建与应用

DataPipeline数见科技

大数据 数据融合 数据管理

免费分享JDBC与MyBatis的优秀图书

Java入门到架构

Java

32岁的我裸辞了,八年Java老鸟,只因薪水被应届生倒挂,在闭关三个月后拿到阿里Offer,定级P7!

Java架构师迁哥

一位年薪 180 万的蚂蚁金服大佬扔给我的笔记,建议看完

Java架构师迁哥

永续合约交易所开发,虚拟币合约交易系统源码

一图读懂DataPipeline实时数据融合平台V3.0

DataPipeline数见科技

大数据 数据融合 数据管理

金九银十面试必备,“全新”突击真题宝典,阿里腾讯字节都稳了

Java 编程 程序员 架构 面试

TDengine JDBC整合Druid

山石道人

涛思数据 tdengine Druid Spring MVC taos-jdbc

前端性能优化实践 | 百度APP个人主页优化

百度开发者中心

大前端 百度app

用好“实时数据管理”助推器,旭辉集团加快数字化转型步伐

DataPipeline数见科技

大数据 数据融合 数据管理

Redis学习之Redis概述及原理、基本操作及持久化

Linux服务器开发

redis 分布式 后端 中间件 Linux服务器开发

吹水、面试、进阶齐飞!Github霸榜的阿里分布式设计实录也太香了

Java架构师迁哥

教你给场景添加天空盒,超简单!

ThingJS数字孪生引擎

大数据 大前端 开发 可视化 数字孪生

【工作感悟】Android大厂高级面试题灵魂100问

欢喜学安卓

android 程序员 面试 移动开发

智邦国际ERP系统31.99版本发布,解锁精准高效协同管理模式!

叶落便知秋

D语言和Visual D简介_Java_Jonathan Allen_InfoQ精选文章