HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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:505048
用户头像

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

关注

评论

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

文盘Rust -- 领域交互模式如何实现

京东科技开发者

rust 逻辑 交互 企业号 2 月 PK 榜 interactcli-rs

某财税集团:使用进步的技术,对业务降本提效

OceanBase 数据库

数据库 oceanbase

StarRocks技术内幕 | 资源隔离原理解析

StarRocks

数据库 开源 资源隔离

2023年中国数字化活动行业专题报告

易观分析

数字经济 产业数字化

GPT发展史

鼎道智联

openai

物联网首选协议,关于MQTT你需要了解这些

EMQ映云科技

物联网 IoT mqtt 企业号 2 月 PK 榜 消息传输

前端开发如何选择培训机构

小谷哥

MQTT协议快速体验

EMQ映云科技

开发 物联网 IoT mqtt 企业号 2 月 PK 榜

日日顺供应链|想要看清供应链发展趋势,先回答这三个问题!

联营汇聚

DAPP智能合约开发链上技术

薇電13242772558

智能合约

信息论绪论

timerring

信息论 信息论与编码

BATMAN:将双边注意力用于视频对象分割

Zilliz

计算机视觉

flutter系列之:使用SliverList和SliverGird

程序那些事

flutter 架构 大前端 程序那些事

【漏洞真实影响分析】Apache Kafka Connect 模块JNDI注入(CVE-2023-25194)

墨菲安全

SCA 代码安全检测 软件供应安全

什么是极速文件传输,极速文件传输如何进行大文件传输

镭速

ChatGPT是什么?怎么用?如何提效?怎么赚钱变现?

王中阳Go

深度思考 高效工作 学习方法 AI ChatGPT

提速还能不掉点!深度解析 MegEngine 4 bits 量化开源实现

MegEngineBot

深度学习 开源 MegEngine CUDA int4

Innodb 的RR 是否彻底解决了幻读?

想要飞的猪

innodb 隔离级别 幻读

一文盘点,ZBC的应用场景与通缩场景

西柚子

低代码开发平台 让数据应用不再复杂

力软低代码开发平台

前端培训机构怎么选择

小谷哥

“唤醒”闲物、“童”心共享

最新动态

瓴羊Quick BI报表分析工具,专业数据分析人员的“神辅助”

对不起该用户已成仙‖

2023年1月国产数据库大事记-墨天轮

墨天轮

数据库 opengauss TiDB oceanbase 国产数据库

ChatGPT:“Hello Alluxio,我为你写了一首诗!”

Alluxio

presto 分布式, Alluxio 大数据 开源 ChatGPT

一图读懂 | 2023年中国产业数字化十大趋势

易观分析

数字经济 产业数字化

线下java培训机构哪个比较好

小谷哥

MQTT X 1.9.1发布:资源消耗降低80%,稳定性大幅提升

EMQ映云科技

物联网 IoT mqtt 版本发布 企业号 2 月 PK 榜

前端培训机构哪家比较适合学习

小谷哥

促进关键软件高层次人才培养:平凯星辰与华东师范大学签订联合博士培养合作协议

PingCAP

教育

java技术培训机构哪里好

小谷哥

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