免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: send_linux

[C++] 过来人谈程序设计,如何选择C或者C++?!(获奖名单已公布-2012-8-29) [复制链接]

论坛徽章:
0
发表于 2012-07-02 18:46 |显示全部楼层
咱的第一份写代码的工作是比较偏门的DSP/mcu开发, 勉强用下c,  更多的是直接用汇编语言。c++根本谈不上, 现在的工作涉及到linux驱动的开发及c51系列,当然是gnu c和keil c了。基本上无关c++。
所以,对LZ提出的话题1: 个人立场,支持c.
                              2: c适合更低层,与硬件关系更密切的开发领域中。而c++适合更上层,资源更丰富的场合。
                              3: 没读。

论坛徽章:
4
CU大牛徽章
日期:2013-04-17 11:48:26CU大牛徽章
日期:2013-04-17 11:48:40CU大牛徽章
日期:2013-04-17 11:48:45摩羯座
日期:2013-12-06 18:10:04
发表于 2012-07-02 19:20 |显示全部楼层
1、您在C和C++之争中支持哪方,为什么?
  两个我都很喜欢,实在说不上支持哪方。但我现在从事的工作与内核或系统打交道的不多,真要选的话,我当然是选C++,这是因为OO设计已经被我接受,做一个大点的项目,采用OO对我来说是很自然的事,那么采用C++也是很自然的事了。
  从前做嵌入式时,用的C,入门也是用的C,所以对C有非常好的感情。
后来做业务相关的开发,接受了OO,啃C++ primer plus,因此对C++也有非常好的感情。

2、C和C++各自适合的领域是什么,为什么?
很多时候两者其实可以互换,执行效率问题其实在现在大多数软件中并不是首要考虑的因素,开发与维护、成本、人力才是首要考虑的因素。


3、读完试读章节后有哪些感想?(回答第3题的时候 需要标注图书名称,例如:《C++ Primer Plus(第6版)》+感想)
书嘛,看过C++ primer plus,C++沉思录,没什么感想,只有感慨——现在两者都不用了,还是有点怀念从前那段时光。

论坛徽章:
19
CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-09-18 15:15:15CU大牛徽章
日期:2013-05-20 10:46:44CU大牛徽章
日期:2013-05-20 10:46:38CU大牛徽章
日期:2013-05-20 10:46:31CU大牛徽章
日期:2013-05-20 10:46:25CU大牛徽章
日期:2013-05-20 10:46:18CU大牛徽章
日期:2013-04-17 11:19:51CU大牛徽章
日期:2013-04-17 11:19:42CU大牛徽章
日期:2013-04-17 11:19:37CU大牛徽章
日期:2013-04-17 11:19:32CU大牛徽章
日期:2013-04-17 11:19:28
发表于 2012-07-02 19:27 |显示全部楼层
C++的多继承很悲剧,容易产生二义性.而且还得考虑内存问题,想必java有缺点.
C确实简单,可是现在都是面向对象了

论坛徽章:
0
发表于 2012-07-02 20:01 |显示全部楼层
2、C和C++各自适合的领域是什么,为什么?
C在操作底层上有优势,比较适合嵌入式领域。而C++比较适合服务器领域和游戏领域。

论坛徽章:
0
发表于 2012-07-02 20:26 |显示全部楼层
您在C和C++之争中支持哪方,为什么?
C和C++争得其实并不多,而C++与java的争论才叫一个多.
如果C是一条狼,那么C++就是一条披着羊皮的狼,看上去不一样,其实很多类似的. C++多得是多态,模板,类,继承等等特性,当然这些特性如果硬要讲的话只能说是一种负担,学习的负担,本来这些负担没有什么,可能是由于要兼容C的原因,在C里的加上这些特性就使得C++成为一种非常复杂的语言了.
在开发的时候,如果用C很好可以解决的问题,我决不会使用C++,当然,我可能会选择C++中的STL来简化开发,可能会使用模板来简化开发,这又使得我不得不用C++来简化开发一样,而C++又是非常复杂的,所以如果常常使用的就是还C++特性的C来开发,我支持C,但不愿意放弃C++.

论坛徽章:
3
卯兔
日期:2013-08-15 13:17:31处女座
日期:2014-01-10 11:35:23双子座
日期:2014-01-25 02:16:06
发表于 2012-07-02 21:43 |显示全部楼层
首先声明下,下面的观点与我的学习过程和使用环境有关,所以并不具有普适的客观性,仅供参考。同时若与你的观点相悖,还请见谅。

作为非计算机科班出身的开发人员,刚开始并没有对C或C++中的哪一个有特别的喜好。当时很粗浅的观点就是:简单至上(简单的定义有很多种,比如语言的语法简单;逻辑的简单等。这里指的是以最快的速度开发出一个能“看得过去的”程序。‘虽然成本是采用简单这一约束条件的主要原因,但我想,我们周围浮躁的风气还是有很大原因的’)。所以什么VB,C#,还有古老的Delphi7都很推崇。当然,这里说的都是在Windows下开发桌面应用。

作为开发PC上的桌面应用程序。我对嵌入式开发和移动开发不了解,不敢评论。但听朋友说,C语言非常适合嵌入式的开发。

术业有专攻,就开发桌面应用软件看来,C++还是有其得天独厚的优势的。当初从不同语言中选择了下,最后还是选择了C++。照顾了下跨平台性,没有选择C#/VB(说Mono的请无视掉我吧);然后在Java和Python中纠结了一段时间,如果你说Java不合适开发桌面应用,这不是有个Eclipse的RCP架构在那吗;后来还用Python做了一段时间,但考虑到效率问题,最后改用了C++。当初也想用Python写主体,关键部分用C++封装。但考虑到不同人员的背景知识,学习成本,库的接口等,还是放弃了,直接用C++。至于C语言嘛,用C++使用QT库比C语言太方便了,不是吗?GTK?众人的学习成本呐。。。

总体而言,对于桌面应用来说,在C/C++中,我是支持C++的。但这只是个人的观点,在实际中,语言使用的惯性等因素,也决定了在项目中使用哪种语言。

至于《C++ Primer Plus(第6版)》样章,我感觉其最大的看头是介绍的C++11的“新特性”,当然,这些是对初学者来说是新的,许多新标准的内容都是源自于Boost。这本书根据其前言来看,作者将其定义的是入门级的。但根据一些朋友的交流,都认为这本书不适合零基础的人读,当时讨论的是BS的《C++程序设计》比较好,我个人认为Walter Savitch写的《C++程序设计(第8版)》比较适合新手读。跑题了。。。我的猜想,可能由于作者定义为入门级的,所以书中根据目录和样章的内容来看,并没有完完整整的在书中介绍了所有的C++11的新特性。作者只是在书中穿插介绍了C++11中最可能用到的新特性,并新开辟了第十八章将本书中介绍的这些零散的C++11的新特性总结了下。所以,如果发现书中没有找到自己需要的C++11的新特性,也算正常的。

论坛徽章:
0
发表于 2012-07-03 01:24 |显示全部楼层
编程语言四范式(命令式,函数式,面向对象,逻辑式)都有其优点与不足,C与C++也是一样。但之所以C依然被大家所接受,而C++逐渐被部分人所抛弃的关键,除了C++语言本身的缺点以外(Linus Torvalds on C++),还与C++在运行效率与开发者效率之间的中庸选择有关。在运行效率方面显然使用C更有优势,而在开发者效率方面,与Java和Python有大量可用的库相比,C++就略显不足了,为此制定11标准的C++大拿们也为此哀叹“C++的库太少了”。在C与C++的选择上不能简单的只进行二者的衡量,还要考虑其他语言的情况,C++不是被C打败的,而是被Java,许多使用Java的老程序员原来都是使用C++。但需要指出程序员最该关心的还是算法的分析与设计,无论C或C++都可以编出很好的程序,Linus认为许多C++程序员水平低下,这要看跟谁比了,能比Linus Torvalds水平高的C程序员恐怕也不多吧!

论坛徽章:
323
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
发表于 2012-07-03 08:48 |显示全部楼层
若平台支持,能用C++的尽量考虑使用C++。使用C++最好时根据项目需要以及参与人的实际水平进行适当裁剪,简单的类的封装、虚函数等我想一般的C程序员理解起来也不是问题,设计合理,最终的C++代码应该也应该易懂。

由于平台限制,C在一些嵌入式方面使用较多,GUI方面由于本身层次结构,用C++描述更合适。

论坛徽章:
1
天蝎座
日期:2013-12-06 18:23:58
发表于 2012-07-03 08:59 |显示全部楼层
C和C++ 其实真没有谁好谁坏之分,任何一种语言都没有绝对的优点,只有在适合的场合下能体现风骚的走位就够了。
PHP和C++ 都可以写网页,但花费的代价不同撒。同理,C和C++一样。
C语言首先是伴随UNIX产生的,说明他天然就和系统有着密切关系,如果想打造系统应用,舍C其谁啊?
C++的特点是可以提供面向对象的设计。这也是C语言发展中遇到的瓶颈,其实很多C后来写的高级程序,都在开始封装,都在想展示多态的特点,这里面更多显示的是技巧,那为啥不把他们提炼出来呢。这样就有了C++,他的产生可以说是语言发展的必然吧,当时各种程序设计方法也蓬勃发展,各种模式,各种方法论。

说C++不好用的,真心是没有理解他,好钢用在刀刃上,现在比较推崇混合编程对性能要求较高的地方用C++,其余的尝试用Python搞定,现在boost.python 可以完美实现两者的结合。相比较C来说,C++可以更好的使用一些设计模式,这是我觉得C++顺手的地方,其余的两者部分伯仲吧,看情况使用吧

论坛徽章:
1
天蝎座
日期:2013-12-06 18:23:58
发表于 2012-07-03 09:14 |显示全部楼层
Imperfect C++ 说的很实在,C++语言并不完美。实际上,世界上也没有完美的编程语言。我们要尽可能的去清楚的了解到他的优点和弱点,针对C++的一些不完美之处,本书都具体地分析原因,在实际应用当中扬长避短就好,当然这也只是作者的一些实战经验,可能在实际工作当中,我们也会发现C++使用上微妙的用法,我想还是多多看看C++的说明书为好,这样才能在原生态的水平上掌握C++。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP