C 的明天——连同明天的明天[2]

2008-02-23 05:40:28来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

  Active topics in Evolution。这些提案正在审查,有明确的意向将其加入下一版标准。都是重量级的提案:

  <!--[if !supportLists]-->1. <!--[endif]-->Transparent Garbage Collection for C ;GC就不用说了吧。人人想要,但又四处挨骂的特性。但是请放心,C 的GC是可选的,而且性能优先。

  <!--[if !supportLists]-->2. <!--[endif]-->Optimization-robust finalization;有了GC,自然需要finalization,这个提案也必不可少。

  <!--[if !supportLists]-->3. <!--[endif]-->Lambda expressions and closures for C ;另一个可爱的特性,C#3.0已有了。boost的那个替代品终于能够退休了。

  Active topics in Concurrency sub-group。正在并发小组里最终审查的提案。并发看来是最头大的问题了,所以标准委员会专门成立了一个Concurrency sub-group,来啃这块硬骨头。包括:Dynamic initialization and concurrency;C Data-Dependency Ordering;Non-Memory Actions;Object Aliasing and Threads。

  Active topics in both Concurrency and Library sub-groups。并发小组和库小组一同审查的提案。包括:Atomic operations with multi-threaded environments;Proposed Text for Parallel Task Execution;Thread Pools and Futures;A Multi-threading Library for Standard C 。

  从这些Active的提案中能够看到,下个版本标准的进步主要集中在三大方面:

  <!--[if !supportLists]-->1. <!--[endif]-->扩展编程技术,强化泛型编程的能力,诸如concept、Variadic Templates、Template aliases、auto、Decltype等;

  <!--[if !supportLists]-->2. <!--[endif]-->强化传统的技术,简化和方便编程,包括GC、rvalue reference、Delegating Constructors、Initializer lists等;

  <!--[if !supportLists]-->3. <!--[endif]-->并发。没有并发的语言,将无法在21世纪生存。

  这些内容表明,现在C 的进化主要集中在编程技术的发展上。已加入和打算加入标准草案的特性,都大大地拓展了C 原本已很强大的编程机制。届时,C 将会再一次站在编程技术的前沿。

  接着的两个大类包含了以上这些提案的背景论文和发展过程中产生的提案。对历史感兴趣的能够研究研究。

  再下来,是两个同样吸引人的大类。都是在C 0x之后的标准中可能会引入的提案,也就是“未来的未来”。

  Heading for a separate TR。包含了打算在C 0x之后的TR(也就是C 0x sp1)中包含的提案。这些提案都不错,只是这次来不及了,等下次吧:

  <!--[if !supportLists]-->1. <!--[endif]-->Decimal Types for C 。decimal没什么好说的,C 在这方面还是缺那么一点的。毕竟应用摆在那里。

  <!--[if !supportLists]-->2. <!--[endif]-->Modules in C 。C 缺少Modules,时常遭人诟病。想想也是,Ada83就有了Module,其他很多语言都有,C 缺了如此重要的东西,是该骂。

  Not ready for C 0x, but open to resubmit in future。这些提案肯定赶不上C 0x了。有的因为来不及,有的因为缺少足够的动机。但不管怎么说,这些提案还是很有价值的,所以标准委员会把他们放在将来考虑。让我比较感兴趣的包括:

  <!--[if !supportLists]-->1. <!--[endif]-->PME: Properties, methods and events;属性、方法和事件是比较时髦的语言特性。但是说实话,个人觉得除了property外,其他两个都没有什么实际意义。method和member function是一回事。event完万能够通过库实现,比如boost::signal。property则无法通过模拟实现。(我曾试过,但不好使)。

  <!--[if !supportLists]-->2. <!--[endif]-->Draft Proposal for Dynamic Libraries in C ;动态链接库对于不同项目,甚至不同语言,共享组件有无可比拟的作用。但是要实现这些特性,需要C 有更统一的编译模型和对象模型。怎么把那些浑身是刺的编译器厂商捏在一块儿,是个比较艰巨的工作。何况更有模板的问题。

  <!--[if !supportLists]-->3. <!--[endif]-->Draft proposal for adding Multimethods to C ;multimethod十几年前就已想加入标准,到现在还只是个提案。唉。

  <!--[if !supportLists]-->4. <!--[endif]-->Reflection in C ;反射也是时髦货,能够提供更完全的类型信息。是个好东西。

  <!--[if !supportLists]-->5. <!--[endif]-->Expliciting default parameters;旨在进一步简化函数默认值的使用。但为什么不再加上命名参数呢?

  <!--[if !supportLists]-->6. <!--[endif]-->Contract Programming For C 0x;Contract Programming能够个时鲜货,搞好了能够大大提高软件研发的质量和效率。但是现在还只是理论上多些。

  <!--[if !supportLists]-->7. <!--[endif]-->Macro scopes;macro不受命名域的限制,很讨厌吧。(比如MFC里的max/min宏)。应该给他们加上一道紧箍咒。

  <!--[if !supportLists]-->8. <!--[endif]-->Overloading Operator.() & Operator.*();关于这个问题,D&E里已有过探讨,不知为什么还会有这样的提案。

  <!--[if !supportLists]-->9. <!--[endif]-->Toward Opaque typedefs in C 0X;typedef是弱类型的,仅仅是类型的别名,无法参和重载。有一个“强类型”的typedef也是件很不错的事。(Matthew Wilson在Imperfect C 中费了不小的力气模拟了这种机制)。

  <!--[if !supportLists]-->10. <!--[endif]-->Toward a Proposal for Object Templates in C 0x;让对象也模板化,很有创意,当然也有实际需求。不知道这种比较“另类”的提案最终会怎么样。

  能够看出,在未来的未来,人们对C 的需要从扩展和强化编程技术,回到增强语言的交互能力上。其中最主要的是module、dll和reflection。其他基本上就是对C 的一些修修补补。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: C语言高效编程的四大绝招[1]

下一篇: C 的明天——连同明天的明天[1]