为什么C和C++牛人多.docx

上传人:b****7 文档编号:23804446 上传时间:2023-05-20 格式:DOCX 页数:31 大小:59.76KB
下载 相关 举报
为什么C和C++牛人多.docx_第1页
第1页 / 共31页
为什么C和C++牛人多.docx_第2页
第2页 / 共31页
为什么C和C++牛人多.docx_第3页
第3页 / 共31页
为什么C和C++牛人多.docx_第4页
第4页 / 共31页
为什么C和C++牛人多.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

为什么C和C++牛人多.docx

《为什么C和C++牛人多.docx》由会员分享,可在线阅读,更多相关《为什么C和C++牛人多.docx(31页珍藏版)》请在冰豆网上搜索。

为什么C和C++牛人多.docx

为什么C和C++牛人多

为什么C和C++牛人多?

热1已有28665次阅读 2009-06-2209:

52

“我的面试感悟”有奖征文大赛结果揭晓!

呵呵,这是个找抽的话题,我本人虽然做C和C++很多年,但确实不敢这么说:

“C和C++牛人多!

”。

不过没办法,昨天晚上一个同学在QQ里面问我,希望我就这个话题做个论述。

我尝试着答一下啊。

一家之言哈,欢迎拍砖

====================================================================

在我们学校里,职场里面,确实有一种看法,玩C和C++的人,水平通常要高一点,而做Java和.net的朋友呢,总是有种要受歧视的感觉。

现在虽然好点了,Java多年媳妇熬成婆,已经成为使用率最高的编程语言,Java的粉丝,终于可以喘口气了,狠狠滴BS一下C和C++,呵呵。

其他几门语言也在奋起直追。

大家总结了很多批评C和C++的话,不是完全的面相对象,太低级,语言太简陋,不是一门程序员友好的语言,==。

不过很奇怪,大家一边骂,一边也得承认一个事实,C和C++的程序员,TNND,为啥总是比我们牛一点点?

好像大妈生的,让人看了很不爽,呵呵。

我当年也有一个例子,刚刚进入迈普公司的时候,我一心想去做路由器,感觉很酷,没想到被分配到网管产品中心,做报表系统,当时全中心是Dephi的天下,好像当时成都电子科技大学开的是Pascal的课,没开C,搞得一帮同学全是弄Dephi,我脑门上写了个VC就混进去了,居然没人说啥,我用VC做报表系统,大家也是敢怒不敢言,呵呵,直到最后,我都调离这个部门了,问当时的组长,如果大家是VC,我用Dephi,会怎么样,他笑了一下:

“分分钟被杀掉!

”。

呵呵,看来,就是在Dephi群体里面,做VC的程序员,还是受到了大家的尊重。

我当年还听到这么一句话:

C和C++语言,是所有程序设计语言的皇冠,而VC++,则是皇冠上的明珠。

这话谁说的,我记不得了,不过,作为VC的粉丝,我当年可是着实得意了一小把。

呵呵。

 

说了这么多,越来越找抽了哈,各位看肖某人一定很不爽,这不是捅大家肺管子嘛?

呵呵,其实不是的,我今天借着那位同学的话题,给家分析一下其中的原因。

1、C和C++够笨,逼的程序员自己做很多事。

C其实大家都知道,是一门中低级语言,保留了指针等汇编特征,与系统底层结合密切。

C++呢,更多的向个ObjectC,即面向对象的C。

但这些,其实并不能够让程序员显得很牛。

我个人的理解,之所以C和C++程序员显得很牛,其实原因和大家想像的正好相反,不是因为C和C++太强大,而是这两门语言太弱智了。

C和C++,由于设计时,主要针对系统底层,操作系统层面的应用,因此,其提供的核心基本库相对比较简陋,没有提供很多华丽的框架,VC的MFC不算啊,那是针对Windows的,不是C++的基本特性。

这直接导致了C和C++程序员,在进行大型开发时,缺乏现成的框架模板可以使用,也没有太多的工具库可以使用,像Java等其他语言,基本都提供了常见的几乎所有数据结构类,或者工具模块,不过,C和C++没有,搞得C和C++程序员,这群可怜的娃,啥事都喜欢自己做。

我就经常干这种事,实现个队列,实现个树,经常自己从头写起,无形中呢,自己被逼的把很多常见数据结构,弄得滚瓜烂熟,很多时候,小弟问我一个功能如何实现,我说“站着别动,立等可取!

”,然后几分钟,十几分钟就实现一个给他,呵呵,这不是我想牛叉,这是被逼出来的。

学生大本营很多朋友教训我,说我重复造轮子,弄得我哭笑不得,有那么多现成的轮子用,哪个龟孙想自己造,这不是没办法给逼的嘛,5555。

2、C和C++够通用,逼的程序员广种薄收。

这个通用,分两层意思。

一个是从应用角度,C和C++是目前我见到唯一的可以适应任何应用场合的语言,它对应用通用。

起码,除了汇编语言,C和C++大概是唯一用来写操作系统的语言了,很多底层的驱动程序,操作系统内核级模块,只能用C和C++来开发,因此,一个C和C++程序员,他唯一不知道的,可能就是不知道自己以后会去写什么平台的什么程序,这要求他必须努力学习很多语言之外的知识,为下一份工作做好知识储备。

第二个是从跨平台来说,C和C++又不是很通用,虽然从第一天开始,C就吹嘘自己很牛叉,是跨平台语言,但是,就我个人的经验,可以很负责任地告诉大家,它在吹牛。

没错,作为基本语句,C和C++程序可以到大多数平台的编译器下开发,不过,稍微涉及应用一点的库,差异就很大,比如同样的socket编程,Windows下和Linux下就有很大差异,什么线程库啦,很多,差异都很大。

不过,日常工程开发,离了这堆库,程序员估计也不用做什么事了,因此,很多C和C++程序员自从被骗得上了贼船,没办法,就得面对无穷无尽的学习,操作系统,任务调度,内存管理,资源管理,很多都得自己来,去理解各个操作系统的差异性,然后自己写程序来适应。

这么弄下来,搞得C和C++的程序员,无形中对于很多语言之外的知识,掌握得就多一点了。

3、C和C++不是一门应用级的语言,其程序员的要求也不是应用程序员的要求

对于很多语言来说,比如Java,PHP,Python等,在开发之初,都有明确的应用方向,同时,为了适应跨平台需求,都做了一定性能上的牺牲,这类语言,一般比较擅长应对企业级数据库应用,即办公应用系统,以及网站开发等。

应该说,这已经是很大的市场了,足以让一个程序员吃一辈子的饭,因此,学会了这类语言以及应用开发,一般已经可以再80%~90%的开发市场找到饭碗了。

不过,C和C++不一样,C和C++从设计出来,就没有明确的应用方向,或者说,唯一明确的应用方向,就是做操作系统。

我们知道,操作系统是适应面最广的应用软件,所以,C和C++就显得很保守,为了通用,它宁愿不提供什么功能过去强大的库,一切靠程序员自己来。

换而言之,做C和C++的程序员,或多或少都有一点操作系统,系统底层相关的知识,这部分知识,一般难学,费解,比起学习应用开发,使用某些框架模板来做某一类型应用来说,C和C++程序员需要更加深入的思考加学习,无形中,造成这类程序员没事喜欢瞎琢磨的特性,我就没事老是喜欢想操作系统内核一些功能,我来实现该怎么做。

这种事情想多了,不用说大家也知道,对自己的水平无形中,有一点点促进,因此,C和C++程序员往往看问题会深入一点,善于思考。

4、C和C++是高性能应用的唯一选择,这造成程序员必须学习优化

我们知道,虽然很多语言都可以写游戏,不过,作为大型游戏系统,比如暗黑破坏神吧,还有很多网游,出于高性能图形动画的需求,必须使用C和C++来实现,才能保证效率。

很多大型网站的后台数据库,为了响应高吞吐量,高并发量的客户请求,也需要使用C和C++进行优化。

这就造成了,C和C++程序员一玩就是大的,必须对优化非常熟悉才行。

我们知道,优化,有两个要求,一是对各类算法必须很熟悉,可以进行算法比较,另外,也是需求分析的专家,可以根据需求特性,做量身定做的优化。

这就要求C和C++程序员,经常陷入算法比对之类的任务,而且,也不能仅仅做一个程序员,还必须时刻思考客户需求,对需求做不断的再分析,才能找出优化之路。

我们知道,任何事情,做多了,就成熟练工了,自然也就来得快,C和C++程序员就是这个样子。

 

可能还有很多其他理由,不过,我匆忙间,也就想出这几条。

不过,大家可以看到,日久天长,C和C++程序员,不管是否自愿,但工作和学习中,确实比别语言的程序员在多想,多看,多学,自然而然,就显得很牛叉了。

但大家注意到没有,其实我上面分析的几点,与C和C++其实没有太多的关系,任何一门语言的程序员,只要坚持上面几点,不断**自己,其实都可以达到牛叉的地步。

所谓“功夫在诗外”,又所谓“穷人孩子早当家”,C和C++之所以显得牛人多,并不是这两门语言有多好,其实恰恰相反,是这两门语言没有给程序员提供太多帮助,而其应用环境又太多太广太深,逼的程序员在自我不断的学习,几年,十几年下来,自然显得比小日子过的还算不错的其他语言程序员,要深入一点。

但是,我们还是要看到,每一门语言,都有其存在的价值,起码程序语言排行榜前十的语言,都是伟大的语言,都可以产生大师,我觉得大家完全没有必要人云亦云,都一窝蜂跑来做C和C++,在很多应用市场上,Java、PHP等脚本语言,都以开发周期短,开发时间快,成为优选语言,C和C++完全没有办法和这些语言比较。

计算机软件开发,发展到现在,其实已经是很细分的市场,有专门的应用软件市场,也有系统软件市场,C/C++和Java等,各自应对的是不同的市场,因此,二者其实没有可比性的。

建议已经选择Java、.net等其他语言方向的同学,不要跟风,在自己的领域深入进去,你们也能成为牛人的。

评论(169个评论)

一路自恋王同辉(C/C++学生)2009-06-2210:

09

我想应该是java之类的语言有很多华丽的东西,初学也能做得出比较像样的东西,而c++之流的写出华丽丽的东西那得付出比java之类语言要多得多,但是  这些学的多的多的东西当然是有用的,也会锻炼大量的思维,这好像就是牛的本质吧,所以c++才会显得很牛

李宁(Java老师)

2009-06-2210:

43

语言只是一种表达方式,就象中文、英文、法文一样,更重要的是用自己喜欢的语言可以做出来什么。

各种编程语言的高手并不只是对语法、类库熟悉,还要对高级算法、系统设计理念融会贯通。

只要达到这种程度,不管用什么样的语言,VB、delphi(pascal)、C++还是Java,都可以做出另人钟爱的系统来。

就象Solaris的操作系统桌面(类似于KDE)就是用Java做的。

还有Eclipse也是用Java做的。

伟大的产品并不在于什么语言,而在于能给我们带来什么。

肖舸2009-06-2210:

43

李宁(Java老师)

:

语言只是一种表达方式,就象中文、英文、法文一样,更重要的是用自己喜欢的语言可以做出来什么。

各种编程语言的高手并不只是对语法、类库熟悉,还要对高级算法、系统设

没错,同意,顶!

回复举报

董昌朝(C/C++老师)

2009-06-2210:

58

如果c能做出MVC,能有各种各样的框架,拖拽配置就可以进行开发的IDE,估计也会培养出一堆懒惰的C程序员,可是最常用的就是gcc之类的,逼得大家只能自己动手了

洛阳师范陈占峰(C/C++学生)2009-06-2211:

08

四川师范大学罗恒锋(C/C++学生)2009-06-2211:

19

这么一说:

我更有信心了,呵呵……

不断学习就是很快乐的一件事!

麦浪(C/C++学生)2009-06-2211:

56

一般的“高手”会搭积木;更牛的高手不仅会搭积木,还会造积木。

这是区别之一。

内蒙古农业大学尹晓日(C/C++学生)2009-06-2212:

20

说得我都不敢学c++了

东大张国宝(Java学生)2009-06-2212:

57

在学校,C和C++还是受重视程度高的~~~

武科大黑照(Java学生)2009-06-2213:

02

普罗通信西安有限公司肖舸(C/C++老师)

:

也算一个应用软件啦,仔细想想,抽象出来看。

软件显然是分系统软件和应用软件.而操作系统显然是系统软件

成功是逼出来的.

**市中等职业技术学校刘hack(Java学生)2009-06-2213:

09

貌似笔者还在维护c/c++的地位嘛!

理由:

操作系统、C等是计算机必入门的理论课程。

肖舸2009-06-2213:

20

刘hack(Java学生):

貌似笔者还在维护c/c++的地位嘛!

理由:

操作系统、C等是计算机必入门的理论课程。

无所谓维护,每门语言都有其存在的道理,Java如此,C和C++也如此。

这里我只想客观论述一下,帮助其他语言的程序员树立信心。

湖南大学刘鹏飞(C/C++学生)2009-06-2214:

18

分析的很好...

之前学C/C++,这段时间又被逼着学JAVA,有时候真的感觉好乱...

毕竟一门都没怎么掌握好..

代码人生(C/C++爱好者)2009-06-2222:

30

无意中看到,只能像楼主说的,你做过C和C++也是白混了。

C++没有数据结构方面的类吗?

STL里面每个都是经典。

说到GUI库,MFC本身就是一套Win32的类库集合,当然也有不少开源的,甚至是可跨平台的GUI开发类,难道你能把他们和C++分开?

C++之所以让其他人觉得牛,不是因为他们弱智,什么都需要自己来写,而是多方面的原因:

一方面因为他们贴近系统层,有相对于其他语言的运行性能。

另一方面,因为保留了指针,使得操控起来相当灵活。

再一方面,因为模板的运用,把C++推上了一个新的台阶,甚至在语言基础之上生成了函数式语言,而且也改变了高性能运算只能采用Fortran的历史

MFC是针对Windows的,不是C++的特性,那你平常用的Struts,Spring之类的是JAVA的特性吗?

你说C/C++跨平台是吹牛,只能说明你自己水平不够,写的代码太臭了。

我参与过的一个C++的项目,曾经能在Win32,IBMAIX,Solaris,HpUx等多个系统运行。

JAVA的跨平台方式是一次编译,处处运行吧。

C/C++的跨平台是一次编码,处处能编译运行

以上只是个人的一点见解,欢迎探讨

另外,你说你做过Delphi,其实你就更不应该去误导其他人。

Delphi6的性能也是很高的,而且做为一个RAD应用开发工具开发GUI也是相当便捷。

另外估计你没有在里面使用过嵌入汇编吧?

那也是相当牛

∙回复举报

代码人生(C/C++爱好者)2009-06-2309:

05

刘hack(Java学生):

从50、60年代到就有了FORTRAN、LISP、COBOL等现在都广泛使用语言。

  计算机本来就是向高级应用进化的嘛,以后还不断进化。

语言不外乎表达思想,比如:

一扇由声音控

只能说你一叶障目。

任何一种语言都不可能适应各个方面的应用(基于其简易程度而言),JAVA/PHP之类的语言天生就是为网络而生,它们在开发互联网应用极其方便,但如果你用他们来开发GUI应用试试,他们是C++/Delphi类语言对手吗?

连VB都不如。

历史的潮流不可改变的是什么呢?

是物尽其用,不是JAVA将引领C/C++或者说C/C++类开发工具将不复存在。

你能说VC将从此消失吗?

估计你也只知道.Net了

∙**市中等职业技术学校刘hack(Java学生)2009-06-2311:

43

代码人生(C/C++爱好者):

只能说你一叶障目。

任何一种语言都不可能适应各个方面的应用(基于其简易程度而言),JAVA/PHP之类的语言天生就是为网络而生,它们在开发互联网应用极其方便,但如果你用他

像甲骨文数据库Oracle就是全部改用java实现的,在企业管理系统上招聘都是.net,c/c++的应用慢慢变成一个中间层,代替它们的是脚本或其他语言的东西。

回复举报

代码人生(C/C++爱好者)2009-06-2313:

49

刘hack(Java学生):

像甲骨文数据库Oracle就是全部改用java实现的,在企业管理系统上招聘都是.net,c/c++的应用慢慢变成一个中间层,代替它们的是脚本或其他语言的东西。

ORACLE数据库全部采用JAVA做开发,对这点我表示怀疑,你要说管理器我肯定相信。

我还是这样说的,物尽其用,每种语言都有它自己的用武之处。

回复举报

tongshou(C/C++爱好者)2009-06-2315:

11

刘hack(Java学生):

从50、60年代到就有了FORTRAN、LISP、COBOL等现在都广泛使用语言。

  计算机本来就是向高级应用进化的嘛,以后还不断进化。

语言不外乎表达思想,比如:

一扇由声音控

你可知道LISP,FORTRN,JAVA等语言本身是怎么做出来的?

!

说个具体的,JAVA语言中的垃圾回收功能块是用什么语言编写的?

懂得C/C++语言的人,往往会对其他语言看得比较透,反之,其他语言使用者,如果没有C/C++知识,往往连本身语言都认识不清楚,只会盲目说好!

好!

好!

不是他们笨,而是他们缺少C/C++知识.  这就是C/C++牛的地方!

回复举报

tongshou(C/C++爱好者)2009-06-2315:

46

曹洪伟(3G/移动开发老师)

:

C和C++太强大,而是这两门语言太弱智了。

说C/C++太弱智,有误导人的感觉!

C/C++称得上万能语言,不仅功能非常强大,而且非常灵活!

不可避免地该语言的程序的"粒度"会很小.编程会比较费时间.

∙tongshou(C/C++爱好者)2009-06-2316:

14

C/C++语言是牛语言,但是并不是会用C/C++的人都牛,同样用C/C++语言搞的东西,可能会"相差一万八千里"!

  比如,好几家"国产"CAD用C/C++完成某一个功能:

把1000条直线LINE连结成一条多义线POLYLINE,会一下子消耗几百个M內存,费时几十秒,而AutoCAD仅仅消耗几个M,且在瞬间(<1秒)完成.

回复举报

肖舸2009-06-2316:

20

tongshou(C/C++爱好者):

C/C++语言是牛语言,但是并不是会用C/C++的人都牛,同样用C/C++语言搞的东西,可能会"相差一万八千里"!

  比如,好几家"国产"CAD用C/C++完成

呵呵,所以我说,C和C++也只是显得牛人多点,并不是所有的人都是牛人。

回复举报

**市中等职业技术学校刘hack(Java学生)2009-06-2319:

42

tongshou(C/C++爱好者):

你可知道LISP,FORTRN,JAVA等语言本身是怎么做出来的?

!

说个具体的,JAVA语言中的垃圾回收功能块是用什么语言编写的?

懂得C/C++语言的人,往往会对其他语言

各位同学,我从宏观上讨论语言的地方,而不是从微观的角度比较两种语言的优劣,其实硬件结构、数据结构、操作系统都是基础文化的东西,没必要争那种语言好坏。

对复杂的问题,以往都是从抽象分层的角度来化解。

例如,计算机网络分层就是为上面的层提供抽象接口。

操作系统就为程序提供硬件抽象接口。

脚本就抽象了算法和数据结构。

如果你只懂一门语言,就没必要讨论了,你只要领到别人划分给你的那层次任务,低着头一直做就可以了。

回复举报

tongshou(C/C++爱好者)2009-06-2320:

42

争论语言好坏很有必要,许多语言中的问题都是在争论中被发现,这对使用好语言是很有帮助的.人们是不可能从教科书里获得这些的(里面只有美益之词!

语言的好坏,有点象人的美丑,尽管"情人眼里出西施"可以让人啊Q一下,但是美就是美,丑就是丑,西施的美世人应该都不会否认吧!

回复举报

黄海峰(网络管理爱好者)2009-06-2321:

01

你说vc还是明珠,气死我。

不知道为何我对微软很排斥,用linux,用gcc,但是公司全是windowspc,气死,不干就没饭吃了,继续不服气地写.net的人路过

回复举报

肖舸2009-06-2321:

03

黄海峰(网络管理爱好者):

你说vc还是明珠,气死我。

不知道为何我对微软很排斥,用linux,用gcc,但是公司全是windowspc,气死,不干就没饭吃了,继续不服气地写.net的人路过

我对VC也很排斥的,呵呵,我现在也是用gcc为主。

回复举报

江西蓝天学院柳无云(C/C++学生)2009-06-2321:

22

知识在于积累,学习在于坚持.

回复举报

tongshou(C/C++爱好者)2009-06-2321:

29

微软的软件到处.NET,确实很烦!

尤其把东西做得越来越大,越来越繁!

看看其VB.NET:

VB.NET根本上不是VB的提升版本。

尽管其功能很强大,但是编程烦琐,令人费解,这是背道而弛的做法,当初人们喜欢用VB,就是看中它的简洁!

有人以AutoCAD里画一条直线为例子,进行编程比较,结果太恐怖了(这里比C++还繁):

VB.NET(和VSTA):

_

PublicSubDrawLineA()

  DimmyTransManAsDatabaseServices.TransactionManager

  DimmyTransAsDatabaseServices.Transaction

  DimmyDocAsApplicationServices.Document

  DimmyDWGAsDatabaseServices.Database

  DimmyBTAsDatabaseServices.BlockTable

  DimmyMSAsDatabaseServices.BlockTableRecord

  DimmyLineAsDatabaseServices.Line

  DimStartPointAsNewGeometry.Point3d(1,2,3)

  DimEndPointAsNewGeometry.Point3d(4,5,6)

  myLine=NewDatabaseServices.Line(StartPoint,EndPoint)

  myDoc=ApplicationServices.Application.DocumentManager.MdiActiveDocument

  myDWG=myDoc.Database

  myTransMan=myDoc.TransactionManager

  myTrans=myTransMan.StartTransaction

  myBT=myDWG.BlockTableId.GetObject(OpenMode.ForRead)

  myMS=myBT(BlockTableRecord.ModelSpace).GetObject(OpenMode.ForWrite)

  myMS.AppendEntity(myLine)

  myTrans.AddNewlyCreatedDBObject(myLine,True)

  myTrans.Commit()

  myTrans.Dispose()

  myTransMan.Dispose()

EndSub

--------------------------------------------

VB:

SubDrawLineA()

  DimStartPoint(0To2)AsDouble

  DimEndPoint(0To2)AsDouble

  StartPoint(0)=1:

StartPoint

(1)=2:

StartPoint

(2)=3

  EndPoint(0)=4:

EndPoint

(1)=5:

EndPoint

(2)=6

  ThisDrawing.ModelSpace.AddLineStartPoint,EndPoint

EndSub

回复

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1