写点什么

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

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

关注

评论

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

2025年8月文章一览

codists

Python

元数据驱动开发:inBuilder破解数据库文档同步难题的实践

inBuilder低代码平台

AI如何赋能UI设计和代码生成?AI产品设计实战分享

职场工具箱

人工智能 AI 产品设计 代码生成 ui设计

大数据-88 Spark Super Word Count 全流程实现(Scala + MySQL)

武子康

Java 大数据 flink spark 分布式

轻松管理项目进度:MZGantt甘特图工具入门指南

Tecjt_锦图科技

JavaScript vue.js 甘特图 插件 软件项目

为什么越来越多的企业选择 iPaaS?一文读懂数据集成的未来

谷云科技RestCloud

API 数据同步 数据集成 集成平台 ipaas

TCA MCP Server | 释放代码潜能,开启极速开发

六月的雨在InfoQ

腾讯云MCP场景教程

Flink Parallelism、Flink Slot的关系

天翼云开发者社区

大数据 计算

新客户 | TDengine 时序数据库赋能开源鸿蒙物联展区实时监控与展示

TDengine

tdengine 时序数据库

《金铲铲之战》鸿蒙版9月25日上架,Mate XTs超宽视界颠覆游戏体验

最新动态

为什么MES总要定制?低代码MES才是未来

万界星空科技

低代码 低代码平台 mes 万界星空科技mes 万界星空科技低代码平台

技术文章

qife122

人工智能 openai

“卧槽,系统又崩了!”——别慌,这也许是你看过最通俗易懂的分布式入门

poemyang

分布式 分布式系统 分布式协议 拜占庭将军问题

四季作曲家,HarmonyOS 5让音符玩起来

最新动态

旅行规划新纪元:腾讯元宝大模型 × MCP Server扩展生态

六月的雨在InfoQ

8 月热搜精选

KaiwuDB

数据库

快递地址信息自动识别全攻略:从技术原理到落地实践

快递鸟

ETL VS ELT企业应该怎么选择数据集成方式

谷云科技RestCloud

数据传输 数据同步 ETL ELT 数据集成平台

理论到实战,高可用架构踩坑说明书

京东零售技术

淘宝商品详情API数据解析(附代码)

tbapi

淘宝API 淘宝商品数据采集 淘宝商品详情API 淘宝数据分析

Windows Server 2025 Active Directory权限提升漏洞检测工具

qife122

PowerShell ActiveDirectory

奋斗正青春,HarmonyOS 5助音乐回归纯粹

最新动态

Kafka配置SASL_SSL认证传输加密

天翼云开发者社区

kafka 分布式消息服务

华为Mate XTs三折叠登场!PC应用让移动办公比肩桌面效率

最新动态

多台服务器的所有容器,我是这样统一管理的

Yops-运维易

容器 运维 服务器 Linux 运维 #docker

让鲜花不只绽放在手中:HarmonyOS助力花农直连市场

最新动态

“人工智能+”驶入快车道,和鲸联合联想、沐曦首发科研智能一体机

ModelWhale

联想 和鲸 科研智能一体机 沐曦

Browser Use 浏览器自动化 Agent:让浏览器自动为你工作

测试人

人工智能 软件测试

数智先锋 | 重大活动零错误运行!Bonree ONE为安踏体育应用性能稳健护航

博睿数据

隐形猎鹰利用微软零日漏洞CVE-2025-33053的技术分析

qife122

网络安全 APT攻击

哈尔滨三级等保:为关键信息系统打造坚固安全防线

等保测评

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