神啊,C 终于开始支持 closure 了
不支持 closure 的语言用起来真是太难受了。
前段时间有同事在用 boost 的时候想用一个匿名的 struct 实现一个 functor 模拟出 closure 来用。可耻的失败鸟。迎接他的是一大坨的 template 编译错误。我这个久久不碰 C++ 的碰观者就有机会在一旁幸灾乐祸了。固然这是因为对 C++ 语言的犄角旮旯认识不足导致的,若是早几年,说不定我还拿这个作为招聘的高级笔试题呢。现在,我只会指责,语言怎么可以设计成这样。
给语言加新特性并不可怕。因为我们最终是要用语言解决问题的。
Apple 给 C/C++ 加的 Blocks 扩展就是这么一个好东西。
Comments
2002-2003年那会全国一阵c++狂热,c++/STL的书翻译出版了N本,现在证明大家是被煽动了
Posted by: sword007 | (30) November 18, 2009 02:35 AM
还是看好加入Lambda和Concept的C++0x。那时候对于C++复杂性过高的大部分理由即将不复存在。
语言终归是要进化的,C++的问题就在于进化的太慢,以至于一堆人钻语言牛角尖去实现那些本来该由语言进化来完成的功能。
Posted by: sandy_zc_1 | (29) November 17, 2009 05:26 PM
呵呵,感觉动态语言挺不错,尝试了一下Ruby的cucumber做BDD,感觉很棒。不过,如果对系统的要求很严格的话,动态语言的风险貌似有点高。
Posted by: Edison | (28) November 10, 2009 10:02 AM
我回答楼下, 谁用过谁知道:)
Posted by: lichking | (27) November 3, 2009 10:37 AM
问下云风:
这特性在编程的大多数时候必须的吗?
我觉得不是。
活用函数指针是不是更优雅一些呢?
我个人觉得这样的风格的代码看着很头晕,我脑袋不是编译器,要自己匹配那么多的括号。
Posted by: 小x | (26) October 30, 2009 08:44 PM
人类真的不 要再发明什么语言了,有C够了,即使有别的语言也就内部用得了
Posted by: chaussures nike | (25) October 27, 2009 02:30 PM
人类真的不 要再发明什么语言了,有C够了,即使有别的语言也就内部用得了
Posted by: chaussures nike | (24) October 27, 2009 02:30 PM
有些没学过,看到不是很懂。
Posted by: chaussures nike | (23) October 26, 2009 02:23 PM
有些没学过,看到不是很懂。
Posted by: chaussures nike | (22) October 26, 2009 02:23 PM
template 在 c++ 中确实有用, 合理使用确实能让代码看起来用起来舒服很多,
不过不用template 也永远不会在项目开发中成为瓶颈. 实际项目开发关注的问题重要的多.
对closure 的评价也应该是如此吧, 一个混合着 closure 和普通函数的语言可能会造成很多困惑,
为了调制这种天生难解决的冲突, 一个有效的方法是做深度的隔离,比如说联合 c和lua的开发.
再多余的概念就观望吧, 我知道closure的好处, 我也能够用, 但要让我在c中直接用closure,等到这个真正大行其道吧.
Posted by: lichking | (21) October 26, 2009 01:14 PM
确实好消息! 以后C就更强大了
Posted by: 驾照考试 | (20) October 25, 2009 01:23 AM
cool, 期待中
Posted by: JiChong | (19) October 23, 2009 09:28 AM
等VS2010看看,据说VC有很大进步
Posted by: 盒子 | (18) October 21, 2009 05:46 PM
其实我真有点不理解, C里面支持类似template的东西么?如果支持,或许我也不想用c++了,现在不得以要和c++纠缠的唯一理由只剩好多东西非要template不可了,特别是写一些数学相关的东东时.各位大牛们有没有能推荐一个更适合写3d程序的语言呢, 找合适的语言我都找了一两年了,找不到,痛苦中.
Posted by: JiChong | (17) October 21, 2009 11:32 AM
http://libdispatch.macosforge.org/
可以看看这个。
Posted by: Cloud | (16) October 21, 2009 10:56 AM
想不出来什么地方一定需要closure才能做的。或者说,想不到什么地方用closure才能更快更简洁的表达。
云风你举个简单例子吧。我知道lua里也支持closure。
Posted by: 雷勇 | (15) October 21, 2009 09:05 AM
VC加了lambda进去,估计是有closure的lambda吧。。
Posted by: 装配脑袋 | (14) October 20, 2009 08:40 PM
xu挺帅的
Posted by: lihuiba | (13) October 20, 2009 08:38 AM
现在只有一个。另一个两年前参与llvm的开发,早就不做了。还有一个是华裔,在苹果编译器组工作。
Posted by: Zhongxing Xu | (12) October 19, 2009 01:14 PM
clang的开发者都现身了啊!
似乎有三个来自中国的开发者。
Posted by: chu | (11) October 19, 2009 09:39 AM
呵呵,云风也关注clang啊。我参与它的开发1年多了。可以在http://llvm.org/developers.cgi看到我的照片。
Posted by: Zhongxing Xu | (10) October 17, 2009 02:36 PM
风风是一个了不起的程序员和很有魅力的生活者
Posted by: 开心果 | (9) October 17, 2009 01:28 PM
我对vc的唯一依赖就只有它能够调试STL程序了.
Posted by: Don | (8) October 17, 2009 09:42 AM
人类真的不 要再发明什么语言了,有C够了,即使有别的语言也就内部用得了。
Posted by: Anonymous | (7) October 16, 2009 10:12 PM
BS一下标题党,原来是扩展……
Posted by: sjinny | (6) October 16, 2009 09:00 PM
C++里面面向对象不就是Closure么
Posted by: fenix124 | (5) October 16, 2009 05:27 PM
曾经尝试在FreeBSD7在装Clang/LLVM, 从SVN check代码N长时间后,开始build。文件夹逐渐膨胀到几百M,接近1G的时候,build error。失败了……后来这玩意就不碰了,还是直接等二进制版本吧
Posted by: Anonymous | (4) October 16, 2009 05:13 PM
我也不懂c++语言的!!
Posted by: breitling | (3) October 16, 2009 03:17 PM
FreeBSD 8 已经引入了CLang/LLVM,有时间试试
Posted by: chu | (2) October 16, 2009 02:13 PM
好消息啊
Posted by: chu | (1) October 16, 2009 02:08 PM