免费注册 查看新帖 |

Chinaunix

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

习惯使用C,现在学习C++,感觉好不自由  关闭 [复制链接]

论坛徽章:
0
61 [报告]
发表于 2009-08-19 10:16 |只看该作者
原帖由 zwq132435 于 2009-8-19 00:43 发表
告诉你吧,起初我对C++的热情比你还高呢,曾多次赞叹 C++ 真伟大。
可是,自从做了几个复杂项目后,就看透C++这个东西了,就不喜欢它了。


别太自责,优秀的程序员都是走极端的。

论坛徽章:
0
62 [报告]
发表于 2009-08-19 10:33 |只看该作者
目前有没有比较好的template 编译时"debug"工具?

这个事情上本人比较愚钝,通常需要拿g++, vc输出的错误来回比,才能找到问题大概。

论坛徽章:
0
63 [报告]
发表于 2009-08-19 10:59 |只看该作者
也想谈谈自己的想法:

C++、C、汇编、它们本质上有区别吗? 不就是在同样的体系结构上跑着同样一组指令集吗?
C++能实现的C也能实现,汇编更加能实现。(所有语言所能实现的功能,都只是汇编的子集。)
C++的使命并不是实现C或者汇编所不能实现的东西,而是在某些方面,封装一些实现方法,让原本用C或用汇编实现起来很复杂的东西,变得简单。
所以,我们为什么用C++? 不是因为我们必须用它,而是当我们需要某种实现的时候,C++帮我们做了很多事,让我们不必像使用C或汇编那样,为做这件事情付出太多代价。C++的实现和C或汇编的实现本质上并无区别(实际上可能效率稍差)。

我觉得拿着C++(或者其他高级语言)的特性,去设计能够使用这些特性的程序,是很愚蠢的事情。
要做一个程序,首先应该理解程序本质上是怎样去运行的,要达到什么效果。在实现的过程中,如果发现某些功能上,C++已经为我们做了很多事情,那么可以考虑用它。

按我的理解,OwnWaterloo兄要表达的意思也是: 要理解C++的这些特性的本质是什么,再决定什么时候可以用它。

论坛徽章:
0
64 [报告]
发表于 2009-08-19 11:02 |只看该作者

回复 #63 kouu 的帖子

不同意拿汇编说事儿。
男人,女人,不都是人吗?为啥公共厕所向左向右有不同的选择?:wink:

论坛徽章:
0
65 [报告]
发表于 2009-08-19 11:06 |只看该作者
狭隘的自由主义者~

不是C++不自由,而是给自己的不适应找理由!

是不是如果你用0101010这样的方式,那么C也变成了真TMD不自由了?

论坛徽章:
0
66 [报告]
发表于 2009-08-19 11:26 |只看该作者
原帖由 langue 于 2009-8-19 11:02 发表
不同意拿汇编说事儿。
男人,女人,不都是人吗?为啥公共厕所向左向右有不同的选择?:wink:


呵呵,那为什么在自己家里就不用区分男厕女厕呢?  所以男厕女厕并不是问题的本质,而只是一种实现方式(尽管它是基于道德、传统、习俗、等等等等,的实现方式)。

论坛徽章:
0
67 [报告]
发表于 2009-08-19 11:48 |只看该作者

回复 #66 kouu 的帖子

其实你可以换个讲法,比如说,这个世界需要一点多样化,于是诞生了 C++,没有为什么。
这句我举双手赞成:要理解C++的这些特性的本质是什么,再决定什么时候可以用它。

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
68 [报告]
发表于 2009-08-19 11:59 |只看该作者

回复 #62 群雄逐鹿 的帖子

原帖由 群雄逐鹿 于 2009-8-19 10:33 发表
目前有没有比较好的template 编译时"debug"工具?

这个事情上本人比较愚钝,通常需要拿g++, vc输出的错误来回比,才能找到问题大概。


我听说过一些类似的工具, 好像是在刘未鹏的blog上, 介绍concepts的文章中。
具体是只能输出STL的出错信息, 还是可以帮助template debug, 就不记得了。


其实嘛, 这也是一个熟练的过程。
你可以从源代码中轻易找到 buf[xx][n] = 0; CreateThread, 但一开始你肯定也是不具备这个能力的嘛~~~

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
69 [报告]
发表于 2009-08-19 12:07 |只看该作者

回复 #62 群雄逐鹿 的帖子

论坛徽章:
2
青铜圣斗士
日期:2015-11-26 06:15:59数据库技术版块每日发帖之星
日期:2016-07-24 06:20:00
70 [报告]
发表于 2009-08-19 12:35 |只看该作者

回复 #63 kouu 的帖子

原帖由 kouu 于 2009-8-19 10:59 发表
C++的使命并不是实现C或者汇编所不能实现的东西,而是在某些方面,封装一些实现方法,让原本用C或用汇编实现起来很复杂的东西,变得简单
所以,我们为什么用C++? 不是因为我们必须用它,而是当我们需要某种实现的时候,C++帮我们做了很多事,让我们不必像使用C或汇编那样,为做这件事情付出太多代价
在实现的过程中,如果发现某些功能上,C++已经为我们做了很多事情,那么可以考虑用它。
原帖由 kouu 于 2009-8-19 10:59 发表
要理解C++的这些特性的本质是什么,再决定什么时候可以用它。

嗯嗯, 一种正确的使用C++的方式。


原帖由 kouu 于 2009-8-19 10:59 发表
我觉得拿着C++(或者其他高级语言)的特性,去设计能够使用这些特性的程序,是很愚蠢的事情。


C++初学者、半罐水常犯的错误。
觉得自己学到了不少, 可以拿出来show一下了, 不用上这些特性就显示不出自己水平似的。
最终被倒打一把, 怨天尤人。


C++语言为程序员提供了很多表达思想的工具, 学会使用这些工具, 实际上, 才刚刚起步。
学会挑选合适的、利索的、又不自伤的工具, 才算将C++为我所用。

这点学习也没什么大不了的,“学会权衡”是每门技艺的必经之路。


C++学习成本确实很高, 没时间学, 学不会, 不用就是了。
因此而抱怨C++这的那的, 就能显示出自己“与众不同吗”, 能显示出自己“高人一等”、“超乎寻常”、“见解独到”吗?
刚起步, 刚起步……

不学会自我克制, 什么语言上都会栽跟头。
C中不也有macro嘛, 要想show, 也可以show得天花乱坠, 然后复杂性控制不了, 栽。
克制啊~~~

[ 本帖最后由 OwnWaterloo 于 2009-8-19 12:36 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP