学习这种东西方法当然是有的,方法也是因人而异的,要给个通式实在是给不出。
总体来讲就是3% 的天赋加97% 的后天努力。其他别无他法。
我也没法跟大家讲什么。
既然这里是编程论坛,当然讲的是编程。程序无非是由代码组成的。然后通过编译由计算机去执行。
所以要写出高效的程序,有必要了解计算机的结构,以及数据的表达方式和算法。
语言一直在向高级发展,所谓高级就是越来越接近人的语言的表达方式。从而也产生了OOP。因为OOP更接近于对事物的直接描述。
人往往会有先入为主的习惯。学了C,就拿C当个宝,思想方式也停留在过程化的方式。当然也有人会有其他的思想方式。比如Lisp,
Scheme,他们的思想很独特,他们认为所有的问题可以看作一个整体,整体中包含着更多的其他整体。如果每个整体认为是一个函数,
那么就可以将问题以嵌套的方式去理解,如果将一个整体理解为一个List 中的一个元素,那么整个问题就是对一个List 的元素的解,这就是Lisp
这个语言的思想出发点,也是Lisp 为什么叫 Lisp 的原因了。
以这样的出发点来思考问题,当然可以,但是如果思维方式局限于某个角度,有其弊端,那就是丧失了思维的灵活性。如果你看看Lisp 或
Scheme的书,你会看到作者都将这个语言说的很神,甚至说它是成功的语言。但是事实并非如此,Lisp 或 Scheme
都不是成功的语言,他们没有广泛的应用性。很主要的一点就是语言对程序员的束缚,由于Lisp 语言自身的特色,迫使程序员也同样以
前面我所说的一种思维方式 思考问题。一旦程序员接触了 C/C++,那么必然会放弃使用Lisp而转向 C/C++,对于C/C++
程序员,如果学了Lisp,他也不会使用Lisp,而仅仅将一种思维方式带入他的C/C++ 程序中。其实C/C++ 程序中同样可以体现Lisp
的思想,那就是 树的结构方式。
我并不想在这里批评Lisp 这门语言,而只是想说思想的多维性。
使用C/C++ 可以将你的思想体现在代码中,语言不对你的思维方式有什么限制,如何编程,或者说如何解决问题取决于你的思想,或者说取决于你的解题思路。
很多人提这个问题,提那个问题,其实大多都是入门阶段的问题,是对语言的不熟悉所造成的。
要对语言熟悉也别无他法,只有多写一些程序,为的就是熟悉语言。
比如这学期,我有一门课,要用Scheme 来编程,同样的题目,我用C/C++ 10分钟就可以解决,但是用Scheme
我就用了1个小时。并不是没有解题思路,而是不知道如何用Scheme 这门语言来表达。那么大家这里看到了Scheme 这门语言对我来讲也是新的。
如果C/C++ 对你来讲是一门新的语言,那么你现在碰到的问题,就像我现在写Scheme 程序时同样碰到的问题。那么解决的办法是什么?
第一你要有一本介绍这门语言的书,认认真真地去看书中的DemoCode,如果你没有任何编程经验,那么难度会更大些,你不仅要看,他的程序是怎么写的,
还要看他的解题思路是如何通过这门语言体现的,这样你就能够在以后碰到同样的问题时,知道如何用该语言表达你的解题思路。我想这就是一个学习的方法吧。
大家对我的评价太高了,我不敢接受,这是说心里话。或许仅仅比一些朋友多敲了几百,几千行代码而已。还有很多未知的东西。
Knocker 的水平应该是比较高的了,他远远超过了我。只是他的大脑里还欠缺OOP,这是很可惜的。从不同的角度看问题,可以看到不同的风景,为什么不呢?人不应该局限自己。
由于自己的学习任务比较重,回答问题已少很多了,向大家道个歉。