AI 年度盘点与2025发展趋势展望,50+案例解析亮相AICon 了解详情
写点什么

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

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

关注

评论

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

区块链技术智能合约有哪些实际的应用场景

CECBC

智能合约 区块链技术

易观方舟Argo+CRM | 让企业数据发挥更大价值

易观大数据

区块链支付系统开发技术方案,USDT支付系统搭建

13530558032

银行数仓体系发展之路

易观大数据

DDD+微服务实战:什么是DDD?

AI代笔

微服务 领域驱动设计 DDD

Java程序员博客系统推荐!我调研了100来个 Java 开源博客系统,发现这 5 个最好用!

Java 项目管理 计算机 框架设计

Week15

一叶知秋

架构师训练营第 1 期-第一周命题作业

arthur

Java异常面试题(2020最新版)

Java架构师迁哥

未来已来!全球一流科技盛会——云栖大会9月17日线上隆重举办

北柯

实战案例丨GaussDB for DWS如何识别坏味道的SQL

华为云开发者联盟

数据库 sql 算子

数字经济时代来临 区块链护航数字资产安全

CECBC

金融 数字时代

数字资产钱包开发方案,区块链数字钱包软件源码

13530558032

天猫成立房产部门,利用区块链承载交易多项服务功能

CECBC

区块链 房地产

Spring Boot CLI 介绍

hungxy

Spring Boot Spring Boot CLI

架构大作业

赵龙

QPS、TPS、RT、并发数、吞吐量理解和性能优化深入思考

艾小仙

架构 编程语言

数字货币交易所技术开发,交易所源码

13530558032

华为HMS的“生态雪球”,滚动在万物智联的新跑道

脑极体

架构师训练营第一周学习总结

邓昀垚

极客大学架构师训练营

面试官:你说说互斥锁、自旋锁、读写锁、悲观锁、乐观锁的应用场景

小林coding

乐观锁 高并发 操作系统 计算机基础

架构师训练营第一周作业

邓昀垚

架构师训练营1期 -- 第一周作业

曾彪彪

极客大学架构师训练营

一文详解分布式缓存(附代码)

架构师修行之路

缓存 分布式 分布式缓存

Java-技术专题-AQS和Volatile和Synchronized实现原理

洛神灬殇

Java-技术专题-JMX超详细解读

洛神灬殇

TCP和HTTP中的KeepAlive机制总结

陈德伟

nginx TCP 性能 网络 HTTP

本以为自己MySQL够牛逼了,直到亲自去阿里受虐了一次!

Java架构师迁哥

甲方日常 17

句子

生活 随笔杂谈

Spring-boot 单元测试

陈靓-哲露

LeetCode题解:622. 设计循环队列,使用双向链表,JavaScript,详细注释

Lee Chen

大前端 LeetCode

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