都是无穷无尽复杂的细节让初学者停滞了他们学习一门语言的脚步,在你开始满怀喜欢地按书上的例子用C++开始写HELLO WORLD时却被IDE少引用了一个文件之类的问题折腾一头恼怒浪费不少时间,而书上没有任何一点关于这些的描述,或者网上也只能找到零碎不成文的信息,即使一门语言内部被宣传得天花乱坠比如拥有OO有多少语言机制多么利于复用这种论调泛滥的的今天,在真正动手使用一门语言的时候,作为新手的他们还是会能遇到轻易就把他们击败的细节问题些细节问题往往不是大思路大方向(比如什么是OO,这个逻辑用什么来设计好),反而是那些日常时常见到的工具上或语言上的陷阱(象其名家一般研究基础的东西,因为任何东西都基础的东西通过泛化得来的,而很多人就是基础都搞不明白,,虽然存在大量关于某主题的高级论题,但是基础的东西永远是要求精和熟的),往往这些细节问题可以被理解,但就是难于掌握,,应该被尽量在语言被设计时就避免而不是人脑避免,比如IDE环境,比如语言细节,比如目标领域的问题,当一门语言复杂到你真正需要掌握这些才能编程的时候,编程就演变为不仅仅是简单的复用了,虽然我们以为OO语言就是简单的复用语言但它们明显做得不够.(没有一门语言,即使RUBY,也没有把语言细节弄得足够简单,使得你可以不管任何语法产生式的机制去直接构建你的应用,,在不损耗逻辑的情况下,而且RUBY的一些语法机制也不是不简单.需要你有深厚的系统知识去理解他们,比如协程,元编程等技术,在接确过一点C++人的眼里,丝毫不比C++简单)
用C++进行开发要学到什么程度,需要什么知识最小集呢,当然要根本目标问题的不同决定不同的复杂度,但语言和工具级的复杂度都是一样的那么真正要掌握C++进行开发,你需要掌握那些语言级和库级的知识呢
1,至少熟练一个IDE,make,install,,调试,等编译技术,能在编译期出现错误的时候能搞明白基本的I关于DE环境配置的错误。
2,在语言级和库级要明白的就多了出去,比如对STL理念和当中每个LIB的理解,对指针进行理解才能明白诸如函数指针,指针当返回值以返回一个数组等机制,当然还有很多很多C++的惯用法,等等,这是主体部分,注意我这里说的是会用,人们可以不懂STL原理和任何实现却照样可以拿来熟练使用的人大有人在。
3,要明白你使用的第三方库的一些知识,要了解它们OO 的架构,一个字,要达到一种能用C++使用它们的接口的能力就够了,这就是OO语言宣传它们的资本..又一次,你只会使用就够了,不必懂得库的OO架构,,你需要了解它们透出来供你使用的粗略架构模型和接口就行。
4,在复用方面,要明白设计的一些知识,知道OO,GP这样基本思想,知道你的应用大家都用OO作了什么设计,你所使用的库用了什么样的封装上的设计.OO并不仅仅是封装,封装是为了复用,,因此OO最终就是为了复用,封装只是中间过程..就像接口并非用来封装一样,而是用来抽象,,一切都是抽象..
5,在开发自己的库和逻辑方面,要明白应用域的一些知识,这样在设计时就能知道要构建什么样的架构.用什么模式来设计等等,用什么语言细节来实现,等等。
6,要尽量熟悉以上,多练手,才能快速打出代码,,,,要记住,这个过程很自然,,就像你学好了英语的语法,再多看了一些英语的文章,那么你就可以写出英语文章来了.一切都是习惯用法,和语法游戏,,,
除此之外,编程中其它的一切就是设计问题,而不是编码问题了,,,设计的问题是其它领域的问题,比如算法设计,,而不是编码问题(有些书用鸡免同笼这样的问题来放在C语言的书,这对学习C语言本身的语言机制如流程控制有意义,数学问题的复杂性只对研究算法有用,对解释C语言本身无任何作用,而算法是设计通用的,不跟语言相关)一切在于多看,多写!一开始不要写逻辑和架构过大的逻辑,在懂得设计时就可以接确了.设计本不存在?当你快速写代码时你根本不会觉得设计的存在,,这是因为编码就是一种习惯,而设计就是一种关于要写出什么样的逻辑的设想,用什么编码方法来体现,,,设计就是对编码进行控制和计划,,这里就是编码跟设计的关系,,难的不是编码,因为所有人都可以学会语法,学会写作习惯,,,但是设计样的文章却千差万别.设计不仅是算法设计,而且是复用设计。
对你死亡级的提醒,请不断写代码唯手熟而的方式是阅读代码,成千上W,并实践!!!(本文摘自编程新手新言)
针对C++编程初学者,本文探讨了从选择IDE到掌握语言特性的全过程,强调了实践的重要性,包括熟悉编译技术、理解STL及第三方库、学习设计模式等方面。

11万+





