写点什么

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

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

关注

评论

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

从350ms到80ms,揭秘阿里工程师 iOS 短视频优化方案

阿里云CloudImagine

ios 短视频 视频 视频处理 视频流

术,路,心:陈天桥的大脑行旅

脑极体

【得物技术】得物App Android Crash治理演进

得物技术

发展 日志 进程 Crash 崩溃

区块链蕴含的变革力

CECBC

笔记分享 -- 弱网下的极限实时视频通信

声网

音视频 端到端 极限视频通信 弱网

区块链溯源:重塑咖啡产业链

CECBC

ipfs矿机怎样选?ipfs矿机多少钱一台?

分布式存储 IPFS ipfs挖矿 ipfs矿机 filecoin挖矿

Python代码阅读(第19篇):合并多个字典

Felix

Python 编程 Code Programing 阅读代码

价值连城 图灵奖得主Yann LeCun 杨立昆的采访 给AI从业者的建议 John 易筋 ARTS 打卡 Week 61

John(易筋)

ARTS 打卡计划

强强联合!北鲲云与宝德就打造混合云HPC解决方案达成战略合作

北鲲云

命中率高达87%,GitHub收费下载超过28W次的Java面试题库外泄

Java架构师迁哥

好身体是吃出来的

石云升

健康 8月日更

“腾讯待办”小程序正式发布!初次见面,请多指教。

我为什么坚持六点起床

月哥

JavaScript 中 Math.random() 生成随机数据

devpoint

JavaScript 8月日更 math

ARM工控主板比X86工控主板好吗?

双赞工控

阿里第七次更新的Java面试突击宝典,已累计拿到759份Offer

Java 程序员 架构 面试 后端

网络攻防学习笔记 Day118

穿过生命散发芬芳

网络安全 8月日更

GaussDB(for Redis)与原生Redis的性能对比

华为云数据库小助手

redis GaussDB GaussDB ( for Redis ) 华为云数据库

工业互联网如何加速释放赋能价值?工业智能是关键

云计算

03. AI就是与人类思考方式相似的计算机程序:从仿生学看人工智能的定义

Databri_AI

人工智能

24位出品人已确认,开放原子全球开发者峰会(OADC)分论坛速览(更新中)

开放原子开源基金会

学术顶会再突破!计算平台MaxCompute论文入选国际顶会VLDB 2021

阿里云大数据AI技术

审计挖掘之CNVD通用漏洞

网络安全学海

黑客 网络安全 信息安全 WEB安全 漏洞挖掘

fil矿机怎么买?fil矿机厂商最强哪家?

分布式存储 IPFS Filecoin filecoin挖矿 filecoin矿机

极光开发者周刊【No.0827】

极光GPTBots-极光推送

百度地图开发-绘制点线提示框 07

Andy阿辉

android Android 小菜鸟 Android端 8月日更

【虚拟机专栏】熟悉的新朋友 - 链上JVM

趣链科技

区块链

VMware中安装的Ubuntu启动时出现A start job is running for raise network interfaces...

Mike

解析区块链技术如何帮助企业加速数字转型?

CECBC

Docker 系列 _ 01_ 一念缘起

编程三昧

Docker 8月日更

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