虽然自己有一些基础,但基础打得其实并不牢靠,当然,我个人对computer方面在方向性上的认知其实基本是正确的。(这主要是因为我在之前很长一段时间里其实并没有注重实践,反而注重于找方向,当然现在想想这其实是正确的方法,即使所花费的时间比较久。方向正确走得慢,比大踏步往错误的方向上走要好的多。)
刚开始接触CS的时候,跟很多人一样。技术崇拜,其实要真的是在崇拜技术还好,但有时我们连我们自己所崇拜的是什么都不知道。只是莫名其妙的觉得很高深,很难懂,然后就崇拜了。这反而跟我们一直以来所学的语文课反而比较相像,鲁迅说“我家门前有两棵树,一棵是枣树,另一棵也是枣树”。高深的并不是技术或者文学中的文化含义本身,高深的只是技巧。这种技巧其实是不应该被崇拜和模仿,甚至学习的。技巧虽然绚丽,但技巧也太浮华,容易让学习的人看不清本质,学习者如果只模仿技巧,肯定是件吃力不讨好的事。
基础很重要。这话是对的,但我们得先知道基础是什么?那么对于CS基础是什么?程序语言。这个也是比较明显的。
有人说学计算机随便先选一门语言,然后熟练就行了。其实这是不对的。虽然程序语言之间有相像之处,但也不应该随便选择。语言是会影响思维的,就如我们入门是C语言,然后等到学C++/Java(C ++跟Java其实也非常不相似,这里只是用他们共同的面向对象特征)的时候,很多人还不能从程式转到对象上来。
还有了解多种多样的语言肯定是必要的,我们应该知道的并不是这个语言有哪些那个语言没有的特征这种粗浅的表面现象,而是应该知道,为什么这种语言能够制造性能更加快速的程序,为什么那种语言可以内存自动回收,他们又是以怎样的一种方式最终使得程序得以正确执行的。
其实如果真要理解程序语言,其下还有一些基础是需要学习的,比如CPU、汇编、计算机架构、编译器、解释器。
现在学习基本都有一个目的性,为了工作学习跟为了研究学习应该注重的地方其实是不一样的。
最初学习的时候,真的很忌讳跟着最新的流行走。你得思考,这样是不是我真想要的。还有程序语言本身其实不是库的堆积,在初学的时候还是少用这些吧,就算用,也多多了解一下他背后的实现原理。堆积库其实就是一种技巧,熟练者用其可以省时间,但对初学者,只会让其走到迷途。比如换个环境,没这个库了怎么办,或者有类似的库,性能达不到怎么办。如果你熟悉库的原理,就可以自己造一只了。
初学者应该注重语言本身,而不是库。当然语言本身也是有瓶颈的,而且现在很多语言本身为了简化,默认就让你用其基本库。不过基本库也是人写的,也完全可以去了解其中的原理。之所以说语言应该多学,是因为程序语言是人造语言,每种都是不同的思想,思想的广阔不但没坏处,还能让你能更好的理解程序语言本身。
最后,不用急着突破,循序渐进才对。每天会一点点最终也是能够会很多的。
一个人买了只小牛,每天都举,最终,小牛长成大牛了,他还能举起来。这可比,一下买只大牛,但每次都举不起来要好太多了。