阅读《C++之父Bjarne谈C++在2005年》

c++能够保持较好的增长势头的原因 1985---2004

C++语言保持着稳定性(stability)。

这种语言的实现有了很大的改善,其类库的数量、质量和复杂程度都有所增长

我们对如何使用C++的理解也进一步深入了

标准的C++拥有足够的特性,它能够适应十年中编程技术和应用程序的增长,其稳定性也允许它实现跟上潮流。

-----------

那么,这些C++程序员到底在做什么事情呢?他们在编写哪种类型的应用程序?他们使用了哪种编程风格?我不知道,谁也不会知道。

同样,与C++程序员太多了以至于无法估算类似,不同的应用程序领域也太多了,某个人需要掌握的编程风格也太多了。

有时候我们会听到别人说"C++应该这样使用"--这样的表述一般都是痴心妄想,它们来自于非常有限的经验。

我们在与很多人一起玩"盲人与大象"的游戏。有些人已经阅读了一百多万行代码,编写了成百上千行C++代码,读过C-vu、C/C++ Users Journal等杂志中的所有文章,读过所有优良的C++书籍和许多劣质的书籍,读过所有的与C++相关的论文,并在C++新闻组中"居住"了很多年。这种人很少,即使是这样,他们也只碰到了其表面。这种人一般都是最后发表简单概括的。

实际上,我听到的最简洁和自信的概括(包括正面的和反面的)都来自于那些几乎没有C++经验的人--无知是福。

----------

当我试图理解如何使用C++的时候,我首先考虑下面两个方面:

  ·应用领域

  ·程序员(设计师、软件产品公司等)的成熟度

1、 编写实时(嵌入式)系统的程序员与编写专用的数据库业务程序的程序员所关心的内容是不同的,他们与编写高能物理(high-energy physics)应用程序的程序员所处的环境也完全不同。我发现听取新应用领域的程序员的想法并向他们学习是有好处的。

很难存在某种东西跨越所有应用领域都有意义。但是可以说某种东西(跨所有应用领域)是成熟的。从高层次的角度来看,理想的编程语言可以表达为:(c与c++的区别)

1. 在代码中直接地表达概念

2. 在代码中直接地表达概念之间的关系

3. 在独立的代码中表达独立的概念

4. 自由地组合那些表达概念的代码,无论这种组合是否有意义

2、 我"测评"成熟度主要基于人们如何把这些想法应用到产品代码(也就是受现实条件约束的代码)中。如果某些人使用C++的原因主要是把它作为"更好的C",那么他们在(上述的四条中的)第一条就遇到了失败--他们就不能使用类、类层次和参数化(模板)来直接地表达想法以及想法之间的关系。如果某些人坚持把C++仅仅看作是一种面向对象的语言,那么他们在第三和第四条会遇到失败--他们会构造厚重的层次,通过一些不适合的依据把无关的概念绑定在一起,排除内建类型和简单类。

这意味着,即使语言不作进一步改变,也有很多方面有待改善。通过简单地使用自己计算机上已经安装的、作为ISO标准C++一部分的工具,大多数人就可以改善他们的编程效率、减少错误率、提高运行时性能。如果你没有试用过STL,那就试试吧。也许它不能严格地满足你的需求,但是它是标准的,并且演示了 "现代的C++"中的很多关键技术,你可以使用这些技术来解决问题。我曾经指出的教育的题现在更糟糕了:编程教育在很大的程度上无法跟上软件生产方面的变革。由于我最初编写D&E,我成为了一个专家,在一定程度上助长了这种倒退趋势。

那么这些C++程序员到底在做什么呢?这是你可以想到的:"普通的PC业务应用程序"、嵌入式系统、电子商务、游戏、科学计算、网络软件、操作系统、设备驱动程序、移动电话等等。在继续之前,我建议你看看我持续维护的一个小列表http://www.research.att.com/~bs/applications.html。我个人特别喜欢"冒险和与众不同的"应用程序,它们拥有极端的性能和/或可靠性需求,例如JPL火星漫步者自动驱动系统、MAN B&W巨型船用柴油机引擎控制系统、高度分布式系统(例如多玩家游戏)的ICE下层构造。

个人认识:

-----------语言是在不断的进步,虽然没有必要紧跟潮流,但了解语言发展的最新动态,学习一些新的编程思想确实有利于实际的技术工作。

----------当更深入的了解c/c++的时候,一切的复杂都会变得简单。世上没有难事,而是因为没有去做,没有深入。

C++的未来之路:C++0x概览

指导原则

C++是一门偏向于系统编程的通用编程语言。它

   ·是一个更好的C

   ·支持数据抽象

   ·支持面向对象编程

   ·支持泛型编程

操作系统核心、设备驱动程序、系统工具、网络应用、字处理工具、编译器、某些图形和GUI应用、数据库系统、游戏引擎、CAD/CAM、电信系统,等等。这类工作在当前的C++用户中占有主导地位。

C++0x的高级目标是:

  使C++成为一门更好的系统编程语言和构建库的语言。

- 而不是为特定子社群提供专用设施(例如数值计算或Windows风格的应用程序开发)。

- 使C++更易于教和学。

- 通过增强的一致性、更强的保证以及针对新手的设施支持。

C++0x的改进应该以这样的方式进行:结果所得语言应该更易于学和用。以下是委员会考虑的一些规则:

  ·提供稳定性和兼容性(针对C++98而言,可能的话还有C)

  ·优先考虑库设施,其次才是语言扩展

  ·只进行可以改变人们思考方式的修改

  ·优先考虑一般性而非专用性

  ·同时为专家和新手提供支持

  ·增强类型安全性(通过为当前不安全的设施提供安全的替代品)

  ·改进直接处理硬件的性能和能力

  ·适应现实世界

库设施

  从理想上说,我们应该尽量不修改C++语言,而集中于扩充标准库。然而,那些具有足够大的通用性的能够进入标准的库设计起来并不容易,而且一如既往,标准委员会缺乏足够的资源。

一个关于库的技术报告(Library TR)也在最近被投票通过了,它提供了一些对程序员来说具有直接的用处的设施:

  ·哈希表(Hash Tables)

  ·正则表达式(Regular Expressions)

  ·通用智能指针(General Purpose Smart Pointers)

  ·可扩展的随机数字设施(Extensible Random Number Facility)

  ·数学专用函数(Mathematical Special Functions)

  我尤其赏识能够有标准版本的正则表达式和哈希表(名为unordered_map)。此外,Library TR还为基于STL构建泛型库的人们提供了广泛的设施:

  ·多态函数对象包装器(Polymorphic Function Object Wrapper)

  ·Tuple类型

  ·Type Traits

  ·增强的成员指针适配器(Enhanced Member Pointer Adaptor)

  ·引用包装器(Reference Wrapper)

  ·用于计算函数对象返回类型的统一方法(Uniform Method for Computing Function Object Return Types)

·增强的绑定器(Enhanced Binder)

个人认识:

----------设计与编程的真正目的是使用最简单的方案来完成工作,并用尽可能清晰的方式来表达。C++0x设计的目标便是更好地支持这样的简单方案。


文字的表达能力远远比不上图片,语音和视频,比不上现场。不过我们没有机会接触,那就将就着,看不懂也没什么反正未来终究你自己也会有自己的看法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微澜-

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值