写点什么

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

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

关注

评论

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

双屏协作更高效,华硕灵耀X 双屏Pro 2022创作体验再升级

科技热闻

2022 首期线下 Workshop!面向应用开发者们的数据应用体验日来了 | TiDB Workshop Day

TiDB 社区干货传送门

十步以内,用小程序快速生成App!

Geek_99967b

小程序

操作系统:SSH协议知识介绍

天使不哭

Linux SSH #开源 8月月更

阿里云架构师金云龙:基于云XR平台的视觉计算应用部署

阿里云弹性计算

视觉计算 计算巢 云XR平台 GPU实例

开源一夏 | Mysql开启ssl加密协议及Java客户端配置操作指南

六月的雨在InfoQ

MySQL 开源 SSL证书 SSL 连接 8月月更

重要的不是成为海贼王,而是像路飞一样去冒险

沃德

2022Nginx实战教程,由浅入深

LoneWalker、

nginx

README_Albumentations

G_Meteor

小程序+自定义插件的关键性

Geek_99967b

小程序

为什么数字钱包需要引入小程序生态

Speedoooo

小程序 第三方支付 小程序容器 移动钱包

10个 Istio 流量管理 最常用的例子,你知道几个?

万猫学社

云原生 istio envoy Istio流量管理

SpringMVC(三、JDBCTemplate)

开源 springmvc 8月月更

Java技术:SpringBoot实现邮件发送功能

天使不哭

Java email #开源 8月月更

大型分布式存储方案MinIO介绍,看完你就懂了!

天使不哭

存储 MINO #开源 8月月更

图解VirtualBox安装CentOS 7

万猫学社

Centos 7 virtualbox

“稚晖君”为2022昇腾AI创新大赛打call 期待广大开发者加入

极客天地

FileZilla搭建FTP服务器图解教程

天使不哭

#开源 8月月更

上海一科技公司刷单被罚22万,揭露网络刷单灰色产业链

石头IT视角

shell之变量详解,让你秒懂!

Albert Edison

Linux centos 运维 shell脚本编程 8月月更

“车家互联”新态势,小程序实现物联网多场景互通

Speedoooo

小程序 智能家居 小程序容器 电动车

分享 6 个 Vue3 开发必备的 VSCode 插件

Geek_z9ygea

vue.js 前端 vscode vuejs

视频是主动学习吗?

FunTester

ebook下载 | 《 企业高管IT战略指南——企业为何要落地DevOps》

York

云计算 DevOps 云原生 数字化转型 降本增效

5个 Istio 访问外部服务流量控制最常用的例子,你知道几个?

万猫学社

云原生 istio envoy Istio流量管理

每日一R「02」所有权与 Move 语义

Samson

签约计划第三季 8月月更 ​Rust

开发者必备:一文快速熟记【数据库系统】和【软件开发模型】常用知识点

小阿杰

软件开发流程 软件开发原则 数据库系统 签约计划第三季

开源一夏 | 对于Angular表达式以及重要指令的研究心得【前端实战Angular框架】

恒山其若陋兮

开源 8月月更

在“企业通讯录”的盲区,融云的边界与分寸

融云 RongCloud

企业 IM im开发

跨端技术方案选什么好?

Geek_99967b

跨端

带着昇腾去旅行:一日看尽金陵城里的AI胜景

脑极体

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