`
oldrev
  • 浏览: 230171 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
社区版块
存档分类
最新评论

更好的C++——给C++使用者的D语言简介

阅读更多

作为 C++ 狂热的粉丝,你在多年使用C++的过程中是否有过以下症状:

  1. Boost 和 STL 真不错,但是编译太慢,让我想砸电脑!
  2. 我讨厌一个程序写两次,干嘛要头文件?编译器不会自动提取声明吗?
  3. 经常有大师教导你不要用宏,但是现实是没有那个程序不用!
  4. 我从来不喜欢指针,但我也不想失去它
  5. 我想要垃圾回收!!!
  6. C++的元编程真酷,我也想试试,但我是凡人。
  7. 多继承、虚继承太复杂,我想要 interface,但是有能保持多继承的威力。
  8. 羡慕 C# 的Property、delegate...?
  9. 大师们说要用RAII,但是我觉得麻烦,为清理个资源居然要写个临时类?
  10. ...


如果以上问题你都回答Y,那么,我建议你去看看D语言(www.digitalmars.com/d/)医生,他将为你开出以下处方:

  1. DMD/GDC D语言编译器编译速度飞快,用再多的模板也不成问题,一个 几MB代码的程序的编译也可以在分秒内完成。
  2. D语言提供了模块(module)和包(package)的概念,一个模块就是一个源文件,一个包就是一个磁盘目录,解决了程序的物理架构问题。更妙的是,编译器能自动提取所有声明和接口,完全没有 C/C++ 头文件的麻烦。
  3. D语言没有C/C++中的文本宏,这下你该高兴了吧?而且很快 D语言2.0 Alpha 版本中将提供基于抽象语法树(AST)的宏,让你能在一致的语言环境中操纵甚至自定义语法。
  4. D的许多特性大大减少了指针的需要,比如与C#/Java 类似类默认就是引用类型,D也有内置动态数组。但是 D也保留了指针,因为你需要解决现实世界的问题。
  5. D拥有内置的GC,但是你也可以重在类的 new 操作符来避开GC。D 也不是虚拟机语言,而是像 C++ 一样着眼于大规模高性能的系统和应用程序。
  6. D 的模板与元编程(这是“与”,因为D的元编程不仅限于使用模板)是面向凡人的,远比C++的易于学习使用,但是功能强于 C++,甚至可以在编译时执行函数。
  7. D拥有一切现代面向对象语言的要素:interface, abstract class, final class...,为了解决 interface + 单继承的不足,D 提供了模板混入(template mix-in)特性,没错,天上不会掉馅饼,但是可能会掉红宝石。
  8. D 拥有恐怕是世界上最简单的 Property 功能,比如:
    D 代码
     
    1. class Foo{   
    2.   int c;   

    3.   int count() {
    4.     return c;
    5.   }

    6.   void count(int n) {
    7.     c = n;
    8.   }
    9. }   
    现在类Foo 的成员函数 count 可以像一个真正的属性一样地被访问: int x = foo.count; 或者 foo.count = 123;
  9. D 的 delegate 强于C#,完全由编译器内部支持,而不是如C++般笨拙、低效的手写代码。D 甚至允许完全的匿名 delegate: void delegate() d = { printf("Hi D!\n")};
  10. scope 是C#中 using 的加强版,实践 RAII 手法从此变得轻松愉快。
  11. C++ 界大牛人 Andrei Alexandrescu 参与了核心语言设计,加上经验丰富的编译器作者和一大堆活跃的开发者,D 的前途光明。


D 是一门很年轻很有前途的语言,虽然现在还不算成熟,但是目前的 1.0 稳定版已经拥有了超越 C++0x 标准的特性。就像D的设计和实现者 Walter Bright 说的,看看它的文档,你自己决定吧!

分享到:
评论
10 楼 stealdream 2007-09-14  
希望D语言早日走上正途,现在关注他的人太少了,现在他还只是个玩具
9 楼 qiezi 2007-09-14  
先改一个,原来的太简单了.你这个又太长了,整个简单的换上去吧..
8 楼 oldrev 2007-09-14  
刚才没注意,连圈子简介都改了啊?呵呵
7 楼 qiezi 2007-09-14  
内置正则表达式库..

这条毙掉.
6 楼 oldrev 2007-09-14  
“内置正则表达式”纯属胡说
5 楼 qiezi 2007-09-14  
从孟岩这篇文章里摘出一部分:

D语言既有C语言的强大威力,又有Python和Ruby的开发效率。它是集废料收集、手工内存操作、契约式设计、高级模板技术、内嵌汇编、内置正则表达式、内置单元测试、Mixin风格多继承、类Java包管理机制、内置同步机制、内建运行时信息的系统级编程语言。
4 楼 qiezi 2007-09-14  
"为清理个资源居然要写个临时类?"

C++还有另一个选择,ScopeGuard,满好用的...

Andrei Alexandrescu 11月就要过来了:
Andrei Alexandrescu的SD2C大会演讲主题
3 楼 player7 2007-09-14  
嘿嘿,比较能忽悠...
2 楼 oldrev 2007-09-14  
要掀起学习教主 Walter Bright 勇于搅愤的時传祥精神的新高潮!
1 楼 oldrev 2007-09-14  
我 CSDN 里的老帖,这几天乘着火大拿出来晒晒 

相关推荐

    低效的C++真是这样吗——C++的效率分析

    在刚开始,C++可以简单的作为一个更好的C使用:正如一些C编程者用C++编译器运行代码进行质量检验。这也表明,转向使用C++所带来的利弊并不是绝对的:正如本文所述,你可以选择一些对应用有用的C++功能,而不要其他功能...

    c++期末大作业——音乐游戏.zip

    为了更好地掌握C/C++的知识点,除了复习资料外,实际操作和练习也是非常关键的。希望这份资料能帮助您取得优异的成绩,也欢迎您在学习过程中提出宝贵的意见和建议。 最后,感谢您选择我们的复习资料,祝您学习顺利...

    Boost程序库探秘 深度解析C++准标准库第2版

    深入探讨了其中的许多重要组件,包括迭代器、函数对象、容器、流处理、序列化以及C++语言中最复杂最具威力的模板元编程,并专辟一章详细阐述Boost的开发实例,具有较强的实用性,可帮助读者更好更快地理解掌握Boost...

    现代C++程序设计

    1.1.2 C/C++是一门编译语言 1.1.3 为什么许多程序员都选择C++ 1.2 什么是面向对象 1.2.1 C++程序并不一定是面向对象的 1.2.2 一个简单的面向对象程序示例 1.2.3 面向对象的软件更有优势 1.3 结构化设计与面向对象...

    C++程序设计原理与实践

    另一方面还对软件开发实践中使用最广泛的程序设计语言——C++进行了很好的介绍。《C++程序设计原理与实践(英文版)》从开篇就开始介绍现代C++程序设计技术,并介绍了大量关于如何使用C++标准库来简化程序设计的内容。...

    C++编程思想——很实用的一本书

    本书作者根据自己学习C++的亲身体会及多年教学经验,用简单的例子和简练的叙述讲解C++编程,别具特色。 全书共分十八章,内容涉及对象的演化、数据抽象、隐藏实现、初始化与清除、函数重载与缺省参数、输入输出流...

    【全新正版】现代C++程序设计(原书第2版)

    本书采用生动轻松的语言,深入阐述了C++语言和面向对象程序设计技术。书中设计了超过115个完整的经过教学测试的代码示例,不仅分析了这些示例的代码片段,而且还解释了如何把它们组成一个完整的程序。此外,各章后面...

    Turbo C/C++3.0

     “Turbo C++ 3.0”软件是Borland公司在1992年推出的强大的——C语言程序设计与C++面向对象程序设计的集成开发工具。它只需要修改一个设置选项,就能够在同一个IDE集成开发环境下设计和编译以标准 C 和 C++ 语法...

    c++控制台应用程序——实现简易的学生管理系统,仅供初学者学习交流使用.zip

    CRM系统有助于企业更好地理解客户需求,提高客户满意度和保留率。 医院管理系统: 用于管理医院或医疗机构的患者信息、医生排班、药品库存等。这种系统可以提高医疗服务的质量和效率。 财务管理系统: 用于记录和...

    Visual C++ 2010入门经典(第5版)--源代码及课后练习答案

     ·使用visual c++ 2010支持的两种c++语言技术讲述c++编程的基础知识  ·分享c++程序的错误查找技术,并介绍通用的调试原则讨论每一个windows应用程序的结构和基本元素  ·举例说明如何使用mfc开发本地windows...

    C++书籍集合

    该书围绕55条准则,每一条都介绍了一个可让你写出更好的C++程序代码的方法,并以特别设计过的例子详加讨论。 《Exceptional C++(C++编程剖析)》和《More exceptional C++》 这两本书中都包含了40个C++编程问题,...

    易学C++(简单易懂的讲解)

    第十章如何阅读程序代码……112 10.1整体把握法……112 10.2经验法……114 10.3模拟法……115 习题……116 第十一章如何调试程序代码……120 11.1再谈变量……120 11.2头文件的奥秘……126 11.3更快更好地完成程序...

    Visual C++ 2005入门经典--源代码及课后练习答案

     本书系编程语言先驱者Ivor Horton的经典之作,是学习C++编程最畅销的图书品种之一,不仅涵盖了Visual C++ .NET编程知识,还全面介绍了标准C++语言和.NET C++/CLI。本书延续了Ivor Horton讲解编程语言的独特方法,...

    Turbo C/C++ 3.0

    AiY.CN ☆ 爱游中国 〗为了照顾不熟悉DOS环境软件操作的广大初学者,让大家能在Windows环境下方便地安装Turbo C/C++ 3.0,而为其完善了Windows下的运行环境,经过重新包装后推荐给学习《C语言程序设计》与《C++面向...

    從新手到高手C++全方位學習

    《從新手到高手C++全方位學習》適合於從未學習過任何編程語言的新手,以及學習C++多年,仍舊不能融會貫通的讀者,對於正在使用C++進行開發的程序員也有很好的參考價值。 光盤提供的視頻教程,包含了第1章到第17章...

    C++MFC教程

    这个问题很多朋友都问过我,当然流汗是必须的,但同时如果按照某种思路进行有计划的学习就会起到更好的效果。万事开头难,为了帮助朋友们更快的掌握VC开发,下面我将自己的一点体会讲一下: 1、需要有好的C/C++基础...

    C++标准库介绍.pdf

     Blitz目前仍在发展中对于常见SVDFFTsQMRES等常见线性代数思路方法并不提供不过使用者可以很容易 地利用Blitz所提供来构建 2、POOMA 参考网站WebSite:http://www.codesourcery.com/pooma/pooma  POOMA是个免费高...

    在C++程序中使用QML

    值得注意的是,在这个特殊的例子里有更好的方法来达到同样的效果,在main.qml有”running”属性,这将会是一个非常优秀的QML代码: // main.qml import Qt 4.7 Rectangle { MouseArea { anchors.fill: parent...

    编程语言算法集 Python.rar

    首先使用 Python 或 R 这样的语言来开发一种算法,并通过这些语言制作图表,然后再用 C++或 Java 改写程序,以获得更好的计算机处理性能。  突破这种瓶颈无疑有两个方向,一是基于现有编程语言进行优化,二是“将...

    C语言期末大作业——图书信息管理系统(C语言,单链表).zip

    为了更好地掌握C/C++的知识点,除了复习资料外,实际操作和练习也是非常关键的。希望这份资料能帮助您取得优异的成绩,也欢迎您在学习过程中提出宝贵的意见和建议。 最后,感谢您选择我们的复习资料,祝您学习顺利...

Global site tag (gtag.js) - Google Analytics