`
oldrev
  • 浏览: 229380 次
  • 性别: 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 说的,看看它的文档,你自己决定吧!

分享到:
评论
30 楼 DavidL 2007-10-02  
我越来越不喜欢做程序了,因为我发现做程序的,绝多数都是不识时务的人!
嗯,我是不识时务的人。

但不一定是所有人,虽然我看到的也有很多人。

总之,自以为聪明的都在写程序
29 楼 mathgl 2007-10-01  
我越来越不喜欢做程序了,因为我发现做程序的,绝多数都是不识时务的人!

这个因果关系 相当没有意义可言
重新抽样
28 楼 tomqyp 2007-10-01  
我建议喜欢争的人看看有多少高手参与了这样的争论(我不是所以我参与了:))为什么?因为没有意义,各种工具的各项性能参数都有是有据可查的,当一个人担当重任掌握着一个重大项目的决策权时,选择什么样的工具,我想正确的做法肯定是参考比较这些工具的各项性能参数,和实际测试结果,而不是听一两个人的一家之言。高手之所以称为高手不光是因为知识掌握的程度,更因为高手分析问题是全面分析问题所涉及的知识面,而不是仅凭自己所知道的一些知识点。

当自己的知识也从点汇集到面时,并且也掌握了正确的分析问题的方法,回头再去看看自己说的话,也许会有不同的感受。

另外,我觉得,在议论自己所不了解的知识时闹了笑话被人不客气的指出时,应该抱着感谢别人态度,这才正确的学习方法,不要为了面子而放弃真理。
27 楼 Colorful 2007-10-01  
还是就此打住吧。
上次我就没敢继续讨论下去。

再怎么说,Delphi已经是过去时了。它不能做到与时俱进,走下坡路是必然的。

不过,说实话,我在C#里面看到了Delphi的影子。
26 楼 stealdream 2007-10-01  
想想还是回了这个帖子,不想回是因为我们不应该把时间浪费在这种问题的争论上,因为这种问题只会引发更多的争论,但却总是得不到一个认人更明确的结果,而回帖是因为我确实是一个好争论的人,不吐不快。

CBC 当然不会是中国人民建设银行,我敲错了,是指的BCB

我并不是过份追求执行效率的人,我也写不出有多么高执行效率的代码,虽然我也认为这不是什么大不了的,但就是有人要拿Delphi的执行效率和其他语方做比较啊,主要是有和他做比较的同类语言(Java 跑个百十来个客户端的服务器就要上百万的服务器主机可就没听到多少人批评他跑得慢,注意哦,无形中,Java的这个缺点却能创造更多的效益,不要老以技术角度去看待事物)。我说 Delphi的基础类(不仅仅指 TObject,还有各种容器,列表等)很糟这一点我以为大家都会有同感,难道不是吗?不过大型的公司有精力和财力开发自己的类库(挑剔的人不知道会不会说叫我去改造 TObject,反正我没这个能力),当然另当别论,但是我们首先要明确的一点是Delphi与VCL肯定不完美,新诞生的语言和框架,肯定有比Delphi、VCL更高明之处,何必把自己深深的陷在Delphi里喃,如果是这样,楼上的朋友也不会来到这里发表观点。说我不了解Delphi,不了解VCL,我也承认。记得曾有人说过认识Delphi的三个阶段:1:惊奇并喜欢;2:发现他的不足;3:再次找到他的魅力,能根据他的特点找到解决方案(这一点是肯定的,有很多第三方组件都不是只提供给Delphi的,典型的如Indy,针对不同的语言有不同的版本,是不是就能说明他们能根据语言的特点开发适合这个语言的版本,而并没有听到他们并抱怨某个语言比哪个语言不好,至少我没听他们说)。可能我就处在第二个阶段吧,如果楼上的还从未发现他的不足...

想想 Delphi 横行了这么多年,应该有很多了不起的工程,但走到现在,即使这些工程有多么的了不起,也可能到了快要推翻重来的时候了。

不要用“没有过时的工具,只有过时的人”这样的大道理来打压人,我越来越不喜欢做程序了,因为我发现做程序的,绝多数都是不识时务的人!

尽管写再多不好听的话,我却没有半点想要诋毁别人的意思,就事论事!
25 楼 zlxym 2007-09-28  
引用
不想再引起这种无畏的争论,不管怎样,Delphi 对我来说都以是一个过时的工具,尽管我还会用他,靠他养活。要说 Delphi 的代码质量高那只是针对代码局部来说的,比如哪句话Delphi的汇编码是如何如何的比C++的汇编码好了,但是整体呢?不要忘了Delphi的局部变量申请方式,Delphi的对象在堆中分配的方式,等等,不要以为写两句话的测试程序就能说明一切,那是在唬人。VCL是比MFC好,从封装的角度来看,还有TObject 实现的比MFC更好的消息映射,我认为仅此而以。如果须要大量的低层代码,又何必选择 Delphi 呢?Delphi有非常糟糕的基础类,即不够高效,也不方便,也不够丰富。

Borland 总是在制造不伦不类的产品,永远跟在别人屁股后面推车还要糟人骂,Delphi 如此,CBC如此,JB也如此,据说现在人家又有 Delphi.net 了,垃圾!就没有一个完全属于自己的或者说彻头彻尾变革的产品,似乎这是他走向败落的更有力的原因吧!

模式没有语言之分:你在C和汇编下能运用模式?运用模式至少还得面向对向吧!

    CBC为何物,没听说过,应该是BCB吧。连产品名字都搞不清楚,都敢如此大肆批评,阁下真牛。
    你说的底层代码是哪些?我们的电力负荷主站系统完全用Delphi开发,可以同时管理5000台以上的终端设备,随时进行数据交换,现在已经运行了一年多了,也没见出过什么问题。
我们现在的管理系统最多时有7000多台工作站进行在线事务处理,由15台应用服务器分担负荷,不算大系统,中系统算了吧。
    我不知道你为什么对Delphi有如此多的不满,VCL怎么会限制你对模式的应用?如果这样,说明你对Delphi的了解还不够。要用好它,既要有高层的眼光,也要对它的底层细节有相当的理解,这样你做出来的程序,才可能达到你预期的要求。Delphi运行效率低?没觉得,只要是编译型语言,整体上运行效率不会有太大的差别,20%都算多的,而且程序的最终运行效率,更大程度上取决于写程序的人。
    没有过时的工具,只有过时的人。
24 楼 oldrev 2007-09-27  
引用

liukl     6 小时前

一个二进制版的java,没多大前途。毕竟有那么多C++、Java的现有程序、库、经验可以继承,何必为了一点点炫耀而轻易选择。


不知您从何处看到了“炫耀”之意?
23 楼 侯风玄黄 2007-09-27  
怎么优秀,有空了解一下啊
22 楼 liukl 2007-09-27  
一个二进制版的java,没多大前途。毕竟有那么多C++、Java的现有程序、库、经验可以继承,何必为了一点点炫耀而轻易选择。
21 楼 saaya 2007-09-15  
20 楼 DavidL 2007-09-15  
在Delphi中想抽象代码的确需要点功夫。。。没有模板的确是个痛苦的事情。。。不过不可否认Delphi的VCL还是很优秀的。TObject也不至于是很糟糕的基础类吧?
然而Delphi最让我不满的是没有内置的容器库。引进一个凑或者用就勉强度日吧。。
Delphi本身不是什么太坏的东西,所以说它好说它不好都可以,争论就没必要了
19 楼 stealdream 2007-09-15  
不想再引起这种无畏的争论,不管怎样,Delphi 对我来说都以是一个过时的工具,尽管我还会用他,靠他养活。要说 Delphi 的代码质量高那只是针对代码局部来说的,比如哪句话Delphi的汇编码是如何如何的比C++的汇编码好了,但是整体呢?不要忘了Delphi的局部变量申请方式,Delphi的对象在堆中分配的方式,等等,不要以为写两句话的测试程序就能说明一切,那是在唬人。VCL是比MFC好,从封装的角度来看,还有TObject 实现的比MFC更好的消息映射,我认为仅此而以。如果须要大量的低层代码,又何必选择 Delphi 呢?Delphi有非常糟糕的基础类,即不够高效,也不方便,也不够丰富。

Borland 总是在制造不伦不类的产品,永远跟在别人屁股后面推车还要糟人骂,Delphi 如此,CBC如此,JB也如此,据说现在人家又有 Delphi.net 了,垃圾!就没有一个完全属于自己的或者说彻头彻尾变革的产品,似乎这是他走向败落的更有力的原因吧!

模式没有语言之分:你在C和汇编下能运用模式?运用模式至少还得面向对向吧!
18 楼 oldrev 2007-09-15  
我以前尝试过 C++Builder4/6,恐怖的 AV 错误经常发生,而且程序还能继续运行....
17 楼 Colorful 2007-09-15  
@stealdream
有些同意,有些不敢苟同,呵呵。
Delphi完全是Borland一手毁灭的。
Delphi的代码生成质量很高,运行效率也不低。我记得前人有过这方面测试,至少不比C++ Builder差。
VCL的设计应该说要比MFC漂亮吧。
而且你可以完全采用Win32 API自己来设计满足对性能苛刻的要求。
实际上VCL和MFC都是对Win32 API的上层封装。

当年的传奇客户端很能说明问题。

只是Microsoft挖墙脚,才使得Borland无力再修改Delphi编译器。以至于后面的版本Bug频出。

Delphi 2005不要说是大工程,连小工程也应付不了。

PS:模式应用可不分高层底层,也无语言之分。
16 楼 tomqyp 2007-09-15  
呵呵 一说Borland我就想到了oldrev
15 楼 stealdream 2007-09-15  
Delphi 我已经用了 4 年了

我想我的感受不会比你少,并没有否认Delphi是一门优秀的语言,我也没有用Delphi做过多大的项目,但也却实不知道Delphi做的大项目究竟有多大。项目的大小本身就没有什么明确的界限,要看不同的恒量方式,但我说 Delphi 是开发小工程语言是有理由的:

大工程通常会有较多的用户数,或处理大量的数据,则肯定要考虑运行效率和稳定性,这点Delphi肯定没优势,因为如果要进行大量的低层开发的话,Delphi肯定不是这个公司这个工程的首选,C++或VC++可以更好的完成,而且大工程通常会有较大的资金,不会因为过度考虑成本而选择开发效率高而运行效率低的 Delphi。

4年时间也不算少,已经累计了很多对Delphi的不满,Delphi 的IDE是强大,但强大得不是地方,我上面说的 Delphi IDE 及整个 VCL限制了模式的运用,而对于高层编程,模式的运用是对我来说无法抵挡的魅力
14 楼 Colorful 2007-09-14  
引用
千万不要有Delphi那样的IDE,否则这个语言的前途渺茫,Delphi的工作方式不适于模式的运用,再好的程序员一旦习惯了按他的方式工作,该名程序员就报销了,对于大的软件来说界面本来也不是什么障碍,所以 Delphi 在人们心目中就成了永远的小工程、快速开发工具,不希望D语言也伦为这种语言!!!

扯淡!
且不说任何IDE均是辅助开发的工具。
Delphi是小工程的工具?
工作原因,我用了这门语言几个月,我认为Delphi相当优秀,只是成也Borland,败也Borland。Borland在与Microsoft竞争下决策失误,而且IDE Bug不断才自毁前程。
Delphi的前身Pascal结构相当严谨,在C之前,它可是最火的语言。
而且Delphi IDE在3,4,5,6,7都是相当成功的。

VB以前被称为玩具语言,借着.NET,现在VB.NET不也咸鱼翻身,跻身一流之列。
13 楼 stealdream 2007-09-14  
引用
是啊,如果D语言有个像delphi那样的IDE就爽呆了...


千万不要有Delphi那样的IDE,否则这个语言的前途渺茫,Delphi的工作方式不适于模式的运用,再好的程序员一旦习惯了按他的方式工作,该名程序员就报销了,对于大的软件来说界面本来也不是什么障碍,所以 Delphi 在人们心目中就成了永远的小工程、快速开发工具,不希望D语言也伦为这种语言!!!

刚把 Eclipse 的 Descent 插件装好了,现在写D语言的感觉不知好了多少倍速,不过没有代码提示,是没装好还是现在还没有完成这个功能啊?
12 楼 player7 2007-09-14  
是啊,如果D语言有个像delphi那样的IDE就爽呆了...
11 楼 tomqyp 2007-09-14  
引用
希望D语言早日走上正途,现在关注他的人太少了,现在他还只是个玩具

用来做一些普通的桌面应用开发完全够了,如果放在VB和delphi的时代,现在的D完全可以派上大用场了.

相关推荐

    低效的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