`
shi5jin
  • 浏览: 38034 次
  • 性别: Icon_minigender_1
  • 来自: 上海
最近访客 更多访客>>
社区版块
存档分类
最新评论

站在巨人肩上的思考[连载] (5)

阅读更多

      最近做个小项目,有点忙。事情倒是不难,就是有点杂,涉及到好多的东西,还得现找资料。这次又学习了远程数据库和rpc的编程,都挺有意思的,有时间和大家交流一下,不知道斑竹允不允许在本版讨论这些乱七八糟的东西,呵呵。
估计这周项目会结案,争取多多更新。:)

祝贺圈子朋友达到100人,希望我们这里越来越热闹!

本笔记首发www.iteye.com 转载请注明出处。谢谢。

//----------------------------------------------------------------------------------------------------

Tips: Remember: Correct is better than fast. Simple is beter than complex. Clear is better than cute. Safe is beter than insecure.

2.2 熟悉C++

学习的过程往往都大同小异,C++也是这样。首先我们第一阶段要熟悉C++,知道C++是什么,C++包含什么。当了解了这些的时候,我们可以进一步去探求,C++中的每种技术如何使用,到此,我们可以说,我们已经了解了C++;最后,更高级的是要认清,C++当中每种技术都有其应用的范围,要在最合适的时间,最合适的地方,应用最合适的技术,当你达到了这个境界的时候,你才有资格说,你学会了C++。如果你应用了这些技术,写出健壮、高效、优雅的代码,满足了客户的需求,这时我们才可以说熟悉了C++。当你熟悉这门语言的所有源代码,了解了他的思想,所有技术的具体实现,他的优点、缺点你了然于胸,甚至你可以自己创造一门语言的时候,你就可以自豪地说,你精通了C++      怎么样?是不是一条很长的路?所幸的是,不是所有人都必须要达到最后的“专家级”境界的。但是也不用妄自菲薄,大部分程序员都可以、也应该达到熟悉C++的程度。

学习C++,有很重要的一点不容忽视,那就是《Effective C++》的开篇点题之作:把C++看成一个语言的联邦,而不是一种单一的语言。如果你读了2.1中的内容,你就可以理解,C++可以说是由四种不同的语言组成的[1]。用其中的一种、或几种,你完全可以完成任务。但一定要反复提醒自己,他们之间没有什么必然的联系。随着对C++的理解越来越深入,我发现有些规则、语法在不同范式[2]当中有不同的语义,从另外一个角度看,也就是说,要达到同样的目的或实现相同的功能,在不同的范式当中要采用不同的表达方式。这点是C++的一大特色,却也是最难适应的地方。好像Linux,完成同样的任务,10个人可能采用10种不同的解决方案。所以强烈建议C++的程序员,把他的四种编程范式,就认为是4种不同的语言,不要假定有任何的联系。当你熟练的掌握了所有技术的时候,再在不断的实践过程当中,把他们联系起来。然后再用实践来检验。

有些东西,初看起来你觉得平淡无奇,可能你会选择走开。但是如果你能多驻足一下,你会发现,当你慢慢深入了解他的时候,你会越来越觉得他是那么的发人深省、耐人寻味,最后你会深深地爱上他,以致无法自拔。Linux这样,C++也是这样,一些女人也如是。不像一些很好上手的东西,时间久了,反觉得的像花瓶、如鸡肋。

以此,激励自己学习C++,共勉。也希望越来越多的人,能了解C++,能熟悉C++

<o:p> </o:p>



[1] 原谅我吧,又是一种通俗却不准确的说法。

[2] 2.1当中提到的C++所包含的四种编程范式。不知道这种提法可不可以。

分享到:
评论
2 楼 shi5jin 2007-04-29  
呵呵,我看的是Effective C++第三版,第一个item。
对,就是那四句话。
嗯。第四条真的是一种“很cool,很眩目”的技术。尤其是C++0x中新引进的一些机制,真是。。。。
1 楼 bigpanda 2007-04-29  
欢迎讨论远程数据库和rpc的编程。

“《Effective C++》的开篇点题之作:把C++看成一个语言的联邦,而不是一种单一的语言。”这是Effective C++第几个Item?

“C++可以说是由四种不同的语言组成的。”你是指第一句话吧?

C++ is a general-purpose programming language with a bias towards systems programming that:

- is a better C.
- supports data abstraction,
- supports object-oriented programming, and
- supports generic programming.

有指针,就可以自己管理Heap内存。第二条第三条在今天看来不稀奇。C++是把第三条发扬光大了,功不可默,不过现在OO语言一堆一堆的。

第四条是比较有意思,还没有完全大众化,相对有新意的东东,C++是用template生成代码,Java和C#是用范型。由于机制不一样,各自能用的技巧也不一样。

相关推荐

Global site tag (gtag.js) - Google Analytics