文本版|topic 高级搜索
   名人堂 帮助 论坛制度 意见反馈 | 首页 博客 周新贴 专题 求职 读书
RSS 底部
 
社区导航: 专家门诊   网络技术   操作系统   数据库   程序设计   系统应用   考试认证   CIO及信息化   站长交流   综合交流   下载基地  51CTO产品服务 设为首页 | 收藏本站
51CTO技术论坛» C/C++ » 问个菜鸟问题 不学C能直接学C++吗?       [ 打印]  [ 订阅]  [ 收藏]  [ 推荐给朋友]   [ 本帖文本页]

论坛跳转:
     
标题: 问个菜鸟问题 不学C能直接学C++吗?  ( 查看:360  回复:2 )   
 
Tough丨vou
新新人类  点击可查看详细


帖子 8
精华 0
无忧币 21
积分 24
阅读权限 20
注册日期 2008-4-20
最后登录 2008-4-24 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-4-20 20:08   标题:问个菜鸟问题 不学C能直接学C++吗?
上一帖 |
问个菜鸟问题 不学C能直接学C++吗?



论坛活动:测测你对IT技术大会的了解指数(赠微软礼品、无忧币)
2008-4-20 20:081楼
[ 顶部 ]
 
yuan-jiaojiao
技术员  点击可查看详细


十二生肖之龙   行业勋章   技术勋章   狮子座  
帖子 398
精华 0
无忧币 1208
积分 438
阅读权限 30
注册日期 2007-6-21
最后登录 2008-10-10 离线

[查看资料]  [发短消息]  [Blog
[个人主页]    QQ    ICQ 状态    Yahoo!   
发表于:2008-4-20 21:25   标题:网上摘的(先声明一下)

在程序设计的学习过程中,一种主流的观点是:无论学什么,首先应该从C或者C++入手,如果不懂C++就好像完全是编程的门外汉一样,但可能却很少有人去深入的思考这个问题:我们为什么一定要学习C++?要完整的回答这个问题,我们首先来了解一下目前C++的主流应用:

  1.操作系统,驱动程序的编写。因为无论是操作系统还是驱动程序都是和硬件紧密相关,频繁通信,这就要求选用的语言具有和硬件直接通信的能力。如果仅从这方面考虑,似乎汇编语言是最佳的选择,但因为汇编语言编写效率太低,完全不能胜任现在大型程序的要求,所以能够直接嵌入汇编语言的C语言当仁不让的成为了最佳选择,在使用C语言编写系统程序的时候,那些不需要和底层硬件通信的基本逻辑模块可以完全采用基本的C语法编写,而必须和硬件通信的模块则嵌入汇编语言编写,这样就完美的解决了效率和功能的矛盾。

  2.大型游戏的编写。在游戏的应用上,C++也许不是唯一的选择(例如韩国的某些大型网络事实上是用Delphi编写的),但我敢肯定C++在其中占有的比例至少超过80%,而且随着Borland(Delphi的生产商)的没落,C++正有一统大型游戏编写的趋势。那么大型游戏的编写为什么如此青睐C++呢?答案很简单:效率。我们已经知道,操作系统是用C编写的,所以系统API天然的就是以C函数的形式提供的,自然在C++中调用就得心应手,而且不需要任何接口转换,效率高低可想而知。又因为目前的大型游戏都是计算高度密集的程序,所以效率显得至关重要,谁有能够接受一个卡的不能再卡的游戏呢!在这里还有一个不得不提的因素,那就是DirectX。大家都知道,目前DirectX基本上已经取代OPGL成为大型游戏的驱动框架,而DirectX也仅仅提供了C语言接口,那么如果采用DirectX编写游戏,还有没有比C++更好的选择呢?

  上面介绍的两个方面就目前的技术形式来开,在短期内还只有C++可以选择,但决不是说C++只能做这两个方面。事实上,如果我们不从“最佳”选择考虑,C++是个相当通用的语言,它基本上可以完成绝大多数的应用,例如我们比较熟悉的“金山词霸”,“超级解霸”都是用C++编写的。但请注意了,我已经说过了,可以用,但却不一定是“最佳”选择。那么什么是“最佳”选择呢,要讲解这个问题,我们必须了解了解C++的缺点。

  第一个,C++语言相当庞杂,而且随着计算机的发展,C++语言本身也在不断的扩展,以致到现在对语言初学者来说就像一个怪物。当然,我的意思并不是说语言本身不应该发展,但C++的发展并却不同于普通的良性发展,而是一种无奈的修修补补,这种无奈源自C++发明初期的先天不足。大家都知道,C++的前辈C来源于贝尔实验室的Unix项目,所以C设计初期就是用来开发系统程序的,当然到后来的C++也继承了这个缺点。但是“无心插柳柳成荫”,C++被后来越来越多的程序员用在通用的开发中,但因为C++的先天不足,C++逐渐不能满足越来越多样的应用开发需求,于是C++的国际标准组织为了满足不断的需求不得不不断的对C++进行扩展,以致现在的C++变得越来越庞杂,在后到的程序员眼中,简直就是一个“语言怪物”。

  如果你作为一个程序初学者,而且你的目的仅仅是为了完成与底层系统无关的应用设计,如果你又采用了C++,那么在你关注现实应用之前,光C++语言本身就够你焦头烂额了,作为根本目的现实应用又在那里呢?这显然与你的初衷南辕北辙。

  第二,即使我们且抛开C++的复杂不说,假使我们已经通过艰辛的努力掌握了C++语言本身,那么是否当我们再次面对所有的应用时都游刃有余,从而高枕无忧了呢!答案同样令人失望:事实不是这样的!

  因为C++本身是为系统开发而生的,所以C++不可避免的必须能够直接访问内存地址,于是C++引入了指针概念。指针对C++来说真的是把双韧剑,真可以说“成也指针,败也指针”。指针给C++带来极大灵活性同时,也让C++付出了极大的代价,如果使用不当,轻则导致应用程序错误,重则导致系统崩溃!这样说吧,如果你是一个严谨的程序员,对你开发的程序有一份负责任的态度,那么在使用C++的过程中,你务必要小心翼翼,否则你会不断把你的程序垃圾抛给内存,从而使整个系统因你的程序越来越慢,最终崩溃!



论坛活动:测测你对IT技术大会的了解指数(赠微软礼品、无忧币)
2008-4-20 21:252楼
[ 顶部 ]
 
Tough丨vou
新新人类  点击可查看详细


帖子 8
精华 0
无忧币 21
积分 24
阅读权限 20
注册日期 2008-4-20
最后登录 2008-4-24 离线

[查看资料]  [发短消息]  [Blog
       
发表于:2008-4-20 23:17 
谢谢你的讲解 我会努力学习
你的话 给了 我动力

[ 本帖最后由 Tough丨vou 于 2008-4-20 23:19 编辑 ]



论坛活动:测测你对IT技术大会的了解指数(赠微软礼品、无忧币)
2008-4-20 23:173楼
[ 顶部 ]
     
论坛跳转:  

| | |

| | |

| | |

标记已读 · 删除论坛Cookies · 文本版 · WAP
 
| 诚征版主 | 版主堂 | 意见建议 | 大史记 | 论坛地图
Copyright©2005-2008 51CTO.COM  Powered by Discuz!
本论坛言论纯属发布者个人意见,不代表51CTO网站立场!如有疑义,请与管理员联系。
京ICP备05051492号