写点什么

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

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

关注

评论

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

如何成为一名“Java调优大神”?

了不起的程序猿

Java 面试 性能优化 架构师 jvm调优

团队管理中如何做好目标管理

易成研发中心

团队管理 目标管理

DSP 的 CV 算子调用

地平线开发者

算法 自动驾驶; 算法工具链 地平线征程5

质控经理如何掌握项目进度、项目成本

爱吃小舅的鱼

项目进度 项目成本

Lazada商品评论列表的开发应用与收益

科普小能手

API API 接口 lazada商品评价接口 lazada API接口 lazada

上千人挑战,用通义灵码从 0 开始打造一款 App 爆火 | 第二课:搭建本机服务

阿里巴巴云原生

阿里云 云原生 通义灵码

云计算以及人工智能将为全球国内生产总值贡献数万亿美元

财见

B站,助力品牌与新一代年轻人共舞

财见

HR Path通过收购Pay Human Group扩大全球版图

财见

秒懂Requests响应时间获取技巧!

LLLibra146

Python 代码技巧 requests

9款在线编辑甘特图的网站,助你高效管理项目进度

爱吃小舅的鱼

甘特图

NocoBase 1.4.0 正式版发布

NocoBase

开源 低代码 零代码 无代码 版本更新

黑芝麻智能端到端算法参考模型公布,一文了解技术亮点

财见

软件开发进度频频拖延,项目进度问题如何解决

爱吃小舅的鱼

项目进度

支持Teams Phone的microsoft Office 365版本

cts喜友科技

通讯 云通讯

HarmonyOS 5.0应用开发——UIAbility跳转

高心星

arkui ArkTS 鸿蒙Next HarmonyOS NEXT

联想按下“AI加速键”!目标:与5000万中小企业共创

脑极体

AI

上千人挑战,用通义灵码从 0 开始打造一款 App 爆火 | 第二课:搭建本机服务

阿里云云效

阿里云 云原生

除了Excel,哪些工具能快速绘制甘特图?6款推荐

爱吃小舅的鱼

甘特图

Fish Speech 1.5 发布,TTS-Arena 排名开源第一;DeepMind Genie 2,一键生成无限虚拟世界

声网

百度商业系统升级为“百度伴飞” :用生成式AI重构营销场域、经营、连接

Geek_2d6073

THE发布首届2025年跨学科科学排名

财见

ETL是什么?浅谈ETL对数据仓库的重要性

RestCloud

数据仓库 ETL 数据集成 企业数字化

热忱如初,逐"智"前行 | 正雅齿科嘉兴智能生产基地落成投产

财见

Aeron 框架初探

FunTester

文心智能体平台已汇聚15万企业,智能体分发量上涨16倍

Geek_2d6073

生成式AI重构营销 超7成客户使用百度AI营销服务

Geek_2d6073

a16z丨2025 Web3 趋势预测:这些 Big Idea 或大有可为

TechubNews

不是领导时该如何管理员工

易成研发中心

团队管理 项目管理

AI招聘API:2024年国内外顶级平台的智能化解决方案

幂简集成

招聘 API AI招聘

得物新一代可观测性架构:海量数据下的存算分离设计与实践

得物技术

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