作为 C++ 狂热的粉丝,你在多年使用C++的过程中是否有过以下症状:
- Boost 和 STL 真不错,但是编译太慢,让我想砸电脑!
- 我讨厌一个程序写两次,干嘛要头文件?编译器不会自动提取声明吗?
- 经常有大师教导你不要用宏,但是现实是没有那个程序不用!
- 我从来不喜欢指针,但我也不想失去它
- 我想要垃圾回收!!!
- C++的元编程真酷,我也想试试,但我是凡人。
- 多继承、虚继承太复杂,我想要 interface,但是有能保持多继承的威力。
- 羡慕 C# 的Property、delegate...?
- 大师们说要用RAII,但是我觉得麻烦,为清理个资源居然要写个临时类?
- ...
如果以上问题你都回答Y,那么,我建议你去看看D语言(www.digitalmars.com/d/)医生,他将为你开出以下处方:
- DMD/GDC D语言编译器编译速度飞快,用再多的模板也不成问题,一个 几MB代码的程序的编译也可以在分秒内完成。
- D语言提供了模块(module)和包(package)的概念,一个模块就是一个源文件,一个包就是一个磁盘目录,解决了程序的物理架构问题。更妙的是,编译器能自动提取所有声明和接口,完全没有 C/C++ 头文件的麻烦。
- D语言没有C/C++中的文本宏,这下你该高兴了吧?而且很快 D语言2.0 Alpha 版本中将提供基于抽象语法树(AST)的宏,让你能在一致的语言环境中操纵甚至自定义语法。
- D的许多特性大大减少了指针的需要,比如与C#/Java 类似类默认就是引用类型,D也有内置动态数组。但是 D也保留了指针,因为你需要解决现实世界的问题。
- D拥有内置的GC,但是你也可以重在类的 new 操作符来避开GC。D 也不是虚拟机语言,而是像 C++ 一样着眼于大规模高性能的系统和应用程序。
- D 的模板与元编程(这是“与”,因为D的元编程不仅限于使用模板)是面向凡人的,远比C++的易于学习使用,但是功能强于 C++,甚至可以在编译时执行函数。
- D拥有一切现代面向对象语言的要素:interface, abstract class, final class...,为了解决 interface + 单继承的不足,D 提供了模板混入(template mix-in)特性,没错,天上不会掉馅饼,但是可能会掉红宝石。
- D 拥有恐怕是世界上最简单的 Property 功能,比如:
D 代码
- class Foo{
- int c;
- int count() {
- return c;
- }
- void count(int n) {
- c = n;
- }
- }
现在类Foo 的成员函数 count 可以像一个真正的属性一样地被访问: int x = foo.count; 或者 foo.count = 123;
- D 的 delegate 强于C#,完全由编译器内部支持,而不是如C++般笨拙、低效的手写代码。D 甚至允许完全的匿名 delegate: void delegate() d = { printf("Hi D!\n")};
- scope 是C#中 using 的加强版,实践 RAII 手法从此变得轻松愉快。
-
C++ 界大牛人 Andrei Alexandrescu 参与了核心语言设计,加上经验丰富的编译器作者和一大堆活跃的开发者,D 的前途光明。
D 是一门很年轻很有前途的语言,虽然现在还不算成熟,但是目前的 1.0 稳定版已经拥有了超越 C++0x 标准的特性。就像D的设计和实现者 Walter Bright 说的,看看它的文档,你自己决定吧!
分享到:
相关推荐
根据提供的文档内容,我们可以归纳出一系列关于C++的重要知识点,这些知识点主要涵盖了C++的基础语法、数据类型、内存管理、程序...随着经验的积累,还可以深入学习更多高级特性,以便更好地应对实际项目中的复杂问题。
本教程“C++教程——中英对译”专为那些希望学习C++但英语水平有限的学习者设计,提供了方便的语言对照,帮助理解复杂的编程概念。 C++语言的核心特性包括面向对象编程(Object-Oriented Programming, OOP)、泛型...
通过阅读和实践这些代码,学习者可以更好地理解和掌握书中的理论知识,并将其转化为实际编程技能。 总的来说,《数据结构与程序设计——C++描述》是一本全面而深入的教材,涵盖了数据结构的基础知识和C++实现,对于...
《C++版推箱子——初学者练手》 推箱子是一款经典的逻辑益智游戏,源自日本,以其简单直观的操作和高难度的策略性受到玩家喜爱。在这个项目中,我们将使用C++编程语言在Visual Studio 2008环境下实现一个推箱子游戏...
【C++课设——简单的宿舍管理系统】是一个针对初学者的编程实践项目,旨在帮助学习者掌握C++语言和数据库管理的基础知识。这个系统利用C++实现了对宿舍信息的管理,结合了SQL Server 2005数据库进行数据存储,同时...
书中使用C++语言进行描述,使得读者能够更好地理解和实现这些概念。 1. 数据结构:数据结构是组织和管理数据的方式,它影响着算法的效率和程序的设计。本书涵盖了基础和高级数据结构,如线性表(数组和链表)、栈...
面向对象的程序设计语言,如C++,是一种强大的工具,用于构建复杂且可扩展的软件系统。...通过深入学习和实践,开发者可以更好地理解和应用面向对象的编程思想,从而在软件开发领域中提升自己的专业技能。
面向对象编程使得代码更加模块化,通过类和对象的概念,可以更好地模拟现实世界的问题。泛型编程则允许编写不依赖特定数据类型的代码,增强了代码的复用性。过程化编程是C++的早期核心,强调函数的使用和程序流程的...
《C++语言程序设计——实训教程》是一本专为初学者和在校大学生设计的实践导向教程,旨在通过实例和练习帮助读者深入理解C++编程语言。C++是一种强大的、通用的编程语言,它继承了C语言的高效性,并引入了面向对象...
《汇编语言与计算机体系结构——使用C++和Java》是一部深入探讨计算机底层运作机制的教材,适合对计算机系统有浓厚兴趣或者从事相关工作的专业人士。该书通过C++和Java这两种高级编程语言,帮助读者理解汇编语言以及...
《数据结构——C++实现》(第二版)是一本经典的计算机科学教材,专注于介绍各种数据结构及其在C++编程语言中的实现。这本书的核心是通过实际的代码示例帮助读者理解和掌握数据结构的基本概念,这对于任何想要深入...
在刚开始,C++可以简单的作为一个更好的C使用:正如一些C编程者用C++编译器运行代码进行质量检验。这也表明,转向使用C++所带来的利弊并不是绝对的:正如本文所述,你可以选择一些对应用有用的C++功能,而不要其他功能...
鉴于此,本书旨在帮助学生克服基础薄弱的问题,通过逐步引导,让学生更好地理解C++编程的核心概念。 ### 4. 学习C++的方法与步骤 - **部分内容**:强调学习C++是一个渐进的过程,要求学生在学习过程中注重精深而非...
通过上述知识点的梳理,我们可以看到《C++基础讲义——4》这部分内容主要聚焦于通过实际项目(学生成绩管理系统)来教授C++语言的基础应用技巧。从问题的定义、解决方案的设计到具体的编码实现,本课程为学习者提供...
通过C++编程实现这些转换,学生不仅能学习到数字信号处理的基础理论,还能提升编程能力,更好地理解数字世界与现实世界的交互。在“ADDA实验”中,学生将有机会亲自动手,体验从理论到实践的全过程。