免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: enjoyo
打印 上一主题 下一主题

C++未来在何方? [复制链接]

论坛徽章:
0
41 [报告]
发表于 2011-03-28 17:16 |只看该作者
本帖最后由 AD8018 于 2011-03-28 17:20 编辑

题外话,类似这样的,javascript,
alert(i)之i, 在什么样的上下文环境中运行?i保存在哪里?输出什么值?
俺觉得是个有趣的话题。
如果C/C++要实现类似的功能,简直不可想象。

  1. for(var i = 0; i < 10; i++)
  2. {
  3.       setTimeout(function()
  4.       {
  5.              alert(i);
  6.       }, i*1000);
  7. }
复制代码

论坛徽章:
0
42 [报告]
发表于 2011-03-28 17:17 |只看该作者
说道tuple、list和hash
没有反射特性,三者威力少一半

json NB就NB在除函数外的对象,都可以导出导入为json
所以那个serialization init和uniform init本来应有的效能小了很多

还有就是看看人家javascript+DOM,你不用设计任何一个对象,就能实现MFC、Qt里边要设计、继承N多对象才能做出来的界面。所以OO编程的真正威力是否真的在OO上,也挺让人怀疑的(听说美国某学校取消面向对象设计课程了)。

论坛徽章:
0
43 [报告]
发表于 2011-03-28 17:23 |只看该作者
本帖最后由 xyfree 于 2012-01-21 05:57 编辑

论坛徽章:
0
44 [报告]
发表于 2011-03-28 17:26 |只看该作者
回复 41# AD8018


   
闭包的功能,还有boost中把简单问题搞复杂的bind+lambda,我怎么觉得C++越来越像LISP了?

论坛徽章:
0
45 [报告]
发表于 2011-03-28 17:30 |只看该作者
回复  AD8018


   
闭包的功能,还有boost中把简单问题搞复杂的bind+lambda,我怎么觉得C++越来越像 ...
int-main 发表于 2011-03-28 17:26



C++能实现类似的功能吗?表示怀疑。

和 setTimeout类似,还有 addEventListener,
他们里面的函数,不会当下执行,
在什么样的上下文环境执行,传进来的局部变量如何处理,想起来都不那么容易实现。

论坛徽章:
0
46 [报告]
发表于 2011-03-28 17:37 |只看该作者
看见"simple is better", "linus" 就像抓住救命稻草一样 —— 终于能为自己的无能找到开脱的借口了。
OwnWaterloo 发表于 2011-03-28 16:38



    懒的理会!

论坛徽章:
0
47 [报告]
发表于 2011-03-28 17:45 |只看该作者
C++1x会不会还是过渡版本

看了下1x的内容,貌似突出三部分:对OO部分的修补,对模板元编程和函数式编程的 ...
reiase 发表于 2011-03-28 17:06



    C++想做一个大而全的东东,这种想法本身就值得怀疑。C++中加入了不该加入了东东,使得C++的应用领域变得不清晰。一方面,做系统开发的因为C++过于庞大和复杂而放弃。另一方面,做应用的也因为C++的复杂和缺少做应用必须有的特性而放弃。

    C++的竞争者不是Java,不是C#,更不是Python,当然也不是C。C++的定位应该是C和Java、C#中间的那个地带。如果C++盲目扩展,真的就不知道C++应该应用于何处了。

    我们程序员需要的不是万能的开发语言,做合适的事情,使用合适的语言。

    如此复杂的语言和只有很少人精通的语言,你在项目中敢用吗?C++或许现在还不是这样子,但谁能保证将来不是这个样子?

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
48 [报告]
发表于 2011-03-28 17:48 |只看该作者
回复 38# reiase

你貌似总是喜欢用动态类型语言的优势来对比静态类型语言的劣势。

比如你精常提到的 class based OO vs object based OO。
怎么只见你说object based OO怎么怎么好, 不见你说这样的OO中一个object的开销?

超复杂的类型声明?
如果在C++中只用 boost.any, 只用IIterator, 有鬼个复杂模板?
可是效率呢?  什么都是堆分配, 效率跑哪去了?

照你说, list, tuple, hash还是python发明的了……

用C++, 管理生命周期是基本技能。 非法内存访问只能怪自己, C++没有gc本来就不是让你方便的。
btw: 我一再强调memory 只是 critical resource的一种而已, 习惯gc的程序员对 critical resource的敏感程度永远比不上手工管理的。

多线程? boost.thread是假的? pthread是假的? pthread_w32是假的?

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
49 [报告]
发表于 2011-03-28 17:51 |只看该作者
回复 47# enjoyo

C++的定位他老子早就说过: 在需要效率与抽象兼备、能访问底层系统的地方。
在这个定位下, 有何语言能出其右?
TIOBE里面能找到吗?

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
50 [报告]
发表于 2011-03-28 18:01 |只看该作者
回复 41# AD8018

你这例子举得太好了, 0x的lambda就是解决这个问题的。

for (int i=0; i<10; ++i)
  setTimeout([](){ alert(i); }, i*1000);

lambda表达式产生的functor中按值复制i, 输出0,1,...9

C++0x以前只能用不完善的boost.lambda, 说有多复杂就有多复杂。

C++0x, 至少在lambda这点上, 引入内建支持, 避免03中过渡非正常地使用模板来模拟
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP