XGuru's Blog

技术,是一种态度。关注:高性能后端技术/服务器架构/C++/C/LAMP

   :: 首页 :: 联系 :: 聚合  :: 管理
  20 Posts :: 0 Stories :: 93 Comments :: 0 Trackbacks

公告

常用链接

留言簿(12)

搜索

  •  

最新评论

阅读排行榜

      深入学习了STL的内部构造以及一些C++深层次的机制与技巧以后,突然浮现出每个Programmer都要面对的问题。

      Why Programming in C++?

      比起质朴纯净的C,灵活庞大的JAVAC#,我为什么要选择C++?

       在各大技术BBS和牛人的BLOG里逛,大家都在为自己喜欢的语言争论,C#/JAVA的程序员说,不要重复造车轮,拥有良好的语言平台,有丰富全面的库比较全,可以将注意力转向更为重要的架构方面,软件工程方面。又何必在语言的表层基础苦上苦痴迷?C++标准中连最基本的GUI库和网络库都没有。包括 C++创始人BJ本人也想将C++发展成为一个平台(palform)。

       C++STL库固然不错,但是一个新手用STL时,一个小错误编译就跳出上K的错误信息(就算有STLFilt,确实也以难安装),最新的C++0x中 能改善这一问题的万众瞩目的Concept已被取消,C++又该何去何从?C的程序员(包括Linus大叔)说,C++简直就是邪恶的语言,效率底下,语言繁杂,违反KISS原则,更无法在底层如操作系统中胜任。大家说的好像都有道理,难道C++就是这样一门高不成,低不就的语言么?

       我也用过C语言和C#语言,而且还在大学里也拿过关于这两种语言竞赛一些小小的奖,最起码能说对这两种语言还有粗略的了解。

       但是我最喜欢、花的时间最多的还是C++C++是我学的第一门语言,一路学来吃了不少苦,C++作为语言国度的一个联邦[EFC++Item1],灵活,弹性大让我着迷,它像一个精通太极的大师,容纳百川,但却深藏若拙。它有精妙的技法如SFINAEtag distributing (技法的复杂性这也是它被指责的重要原因)。

       它有沉着老练的STL库,其中有各种数据结构和常用算法的灵活精巧的实现和高度可扩充性,有锐意进取的boost库,loki库,有超重量级的网络通信开发框架ACE,还有效率较高的Blitz++科学库等。

       C#中的各种“高阶”功能C++都能实现(没有“基本”两字,您和我说不可能?那就去看看C#的托管机制是用什么语言写的吧),虽然您将花费更多的时间学习与调试,但是我觉得中途的乐趣只有您自己做过才能深有体会。

       它和C语言工作效率不分伯仲,(您说C++效率低下?请问您深入用过C++么?您看过SGI实做中内存分配的实现么?)C++也可以毫不费力的使用现有的 C代码(所谓C-Sytle),C++STL中泛型的sort完胜C中的qsort这也是C++程序员津津乐道的话题。

       但哪种语言不是经过无数大牛们大师们千锤百炼的产物?争论哪种语言的好坏只是显出您的自卑心理。当你去说一门语言好与不好的时候,你有想过,你有真正的深入的学过它么?你真正的了解这门语言的特性么?

       请记住这句话:好手艺人从不会责怪他的工具。语言没有好坏之分,只有在特定环境下,具备各自的优势。

       对于初学者而言,学通一门语言是他叩开计算机底层原理世界的大门的钥匙。语言的好坏不重要,关键是看你自身从学习这门语言中得到了什么。

       若是单单执着于语法细节,把把你的思想全部拘束在孔乙已争论茴香豆的“茴”的几种写法上(像贵国的等级考试这类的考察语言偏僻细节上),你将会得不偿失

       在学习的提高阶段,可以通过大体学习其他的语言,来发散自己的思维;甚至还可以帮助你更好的理解你所目前热爱的语言。

       还有一些人执着争论哪门语言更有“钱途”的时候,我建议您嘞,改行吧。 (您说我装清高,什么程序员也要吃饭,现实也很残酷之类的。我只能说,连吃饭都成问题的,您也不适合在这个层面上讨论语言的好坏,您还是继续学吧)。

  by XGuru 09年12月

posted on 2009-12-20 23:10 XGuru 阅读(2009) 评论(11)  编辑 收藏 引用

Feedback

# re: C++杂感 2009-12-22 14:26 Sunshine Alike
莫非是沙发,欢迎博主来cppblog~~  回复  更多评论
  

# re: C++杂感 2009-12-24 12:41 santhtony
我也很喜欢c++, 用过vb,delphi,java,c, 觉得c++的的确是集合程序执行效率与代码灵活性与一身.
首先oo是很必须的,否则也谈不大上什么代码灵活度了. java的oo也很不错, 但是java现成的类库太多了,使得java程序员比较懒,体会灵活性的乐趣也少了.
java的众多类库和oo性使得快速开发各种高质量程序成为可能(性能虽然低了点), 这是c++难做到的. c++标准就是缺了兼容各个平台的应用为目的的类库.但是在标准里面加上这些类库一方面比较难(要不断维护),另一方面很可能会玷污c++纯洁的执行效率.
虽然官方标准里面没有,民间这种类库现在也有不少,让我们用c++开发一些东西时候也不会很慢.

c++程序让我体会到了"编"的乐趣,其他语言更多的是在用类库,"调"程序.
要体会c++的乐趣,用好c++,必须对它深入了解,多看书,而不仅仅是学完语法就行了. 可能其他语言也是这样.  回复  更多评论
  

# re: C++杂感 2009-12-25 07:36 唐风
“像贵国的等级考试这类的考察语言偏僻细节上”?
请问阁下哪国人?

路过……
:)
  回复  更多评论
  

# re: C++杂感 2009-12-25 12:11 float
C++优势和缺点都是
太过于强大和灵活。让人感觉无所适从,没3、5年的时间,根本驾驭不了
“会”C++的人很多,但“会用”C++的人相对于C语言,JAVA、C#来说,就少了很多
我觉得C语言是个很好的选择。简单的语法,强大的库,直截了当的思想。。
相对于C++,更容易掌握。(我不是来拍砖的)
我的观点是相同的学习周期,如果学习C语言+一门高级的脚本语言(PYTHON、LUA),是更超值。
感觉写C语言程序就像搭积木一样,用什么,往上加什么,呵呵
非常认同LZ说的,学一门语言应该学它的设计思想

:)  回复  更多评论
  

# re: C++杂感[未登录] 2009-12-27 21:39 XGuru
@float
"相对于C++,更容易掌握。",C语法简单,掌握起来可不简单。

"我的观点是相同的学习周期,如果学习C语言+一门高级的脚本语言(PYTHON、LUA),是更超值。",我觉得此处“超值”的含义为能够有更多的经济回报,并非个人素质的提高:)

"感觉写C语言程序就像搭积木一样",这就是模块化编程的要义
  回复  更多评论
  

# re: C++杂感 2009-12-27 21:40 XGuru
@唐风
看来你很少关注三表哥的blog  回复  更多评论
  

# re: C++杂感 2009-12-27 21:42 XGuru
@santhtony
虽然Linus本人是喷c++的,但是我还是想引用他的一句话:
"Just for fun",我用C++,我乐意。  回复  更多评论
  

# re: 杂感系列之一--C++杂感 2010-03-17 15:25 lipingtababa
楼主自己说的"争论哪种语言的好坏只是显出您的自卑心理"  回复  更多评论
  

# re: 杂感系列之一--C++杂感[未登录] 2010-03-17 21:39 xguru
@lipingtababa
此处并没有争论好坏,而是在对C++的反思  回复  更多评论
  

# re: [原创]杂感系列之一--C++杂感[未登录] 2010-04-26 16:48 dudu
说实在的,我是越用c++越讨厌c++的人。时间不应该浪费在学习语法细节和玩所谓的技巧上面。底层用c,框架用python,c++?歇着吧  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理