迷茫中的启蒙之路(特别适合有心无力的小白,站长推荐)

锺离慈
2023-12-01

学习编程有几年了,感觉当初走了不少弯路。而每当看到不少的学弟学妹却还在重蹈我的覆辙,不免有些痛心疾首。最近在网上也看了许多前辈们的经验建议,再结合自己的学习经历在这里跟大家谈谈基础的重要性,如若这篇文章能帮助大家少走些弯路,我也就心满意足了。

注重基础,是大部分同学都知道却往往做不到的。

何为基础?说白了,就是要把我们大学所学的离散数学,算法与数据结构,操作系统,计算机体系结构,编译原理等课程学好,对计算机的体系,CPU本身,操作系统内核,系统平台,面向对象编程,程序的性能等要有深层次的掌握。

初学者可能体会不到这些基础的重要性,学习PHP,JSP,donet,MFC,VB的朋友甚至会对这些嗤之以鼻,但是一开始没学好基础就去学JSP或donet会产生很坏的影响,而且会陷入其中久久不能自拔。

我上大二的时候还对编程没什么概念,就上了门C++也不知道能干什么,老师说MFC也不知道是什么东西, 看别的同学在学asp.net就跟着学了,然后就了解到.NET、J2EE、PHP是什么了,就觉得软件开发就是用这些了,而上的那些专业课又与我们学的 SQLserver,CSS,Ajax毫无关系,就不免感慨道:还不如回家自学去,读大学就为了一个文凭吗?还不如出去培训,浪费这么多钱.

于是乎天天基本上没去上什么课,天天就在做网站,几个学期就做了三个网站。感觉做这些网站就是学到些技巧,没什么进步。这些技巧就好比别人的名字,告诉你你就知道了,网上也都可以搜得到。

那时候就觉得把.NET学好就行了,搞J2EE的比较难,搞API编程就别想了,操作系统更是望尘莫及了。后来随着学习的深入和看了网上许多前辈们的建议后恍然大悟,明白过来这些基础其实是如此重要。

虽然.net或java的开发并不直接用到汇编,操作系统这些,但是不掌握这些基础是有很大问题的。因为你只知其然而不知其所有然,在mfc和.net里面控件一拖什么都做好了,很方便,但是出了问题可能就解决不了,有些甚至在网上搜都搜不到。这就是基础没打好,不知道它的原理肯定就不知道出错的原因。

在学.net的时候常会讨论那些控件该不该用,别人说尽量别用其实你也并不知道是为什么?不让用是因为你在高层开发,你不知道它的原理万一出错了,你基本上就解决不了。但其实还是应该用的,不然人家开发它干嘛。在了解它的原理后再去用你就会发现,用了比不用其实真的方便太多了。

要编写出优秀的代码同样要扎实的基础,如果数据结构和算法学得不好,怎么对程序的性能进行优化?怎样从类库中选择合适的数据结构?如果不了解操作系统,怎样能了解这些开发工具的原理?它们都是基于操作系统的。不了解汇编,编译原理,怎么知道程序运行时需要多长时间需要多少内存?所以就更别谈能编出多么高效的代码。

如果没有学好基础一开始就去学.net,java这些,越往后就会觉得越吃力,它们涉及的技术太多了,而且不断在更新。对于web三层,mvc,orm这些架构,你只会用也不明白为什么用,就感觉心里虚,感觉没学好。而当你把面向对象,软件工程,设计模式这些基础学好了再去看,这些其实都可以以不变应万变。

大家不要被新名词、新技术所迷惑,.NET、XML等等技术固然诱人,可是如果自己的基础不扎实,就像是在云里雾里行走一样,只能看到眼前,不能看到更远的地方。这些新鲜的技术掩盖了许多底层的原理,要想学习真正的技术还是走下云端,扎扎实实的把基础知识学好。有了这些扎实的基础,再掌握那些新技术当然也就容易得多了。

开始编程应该先学C/C++,系统API编程,因为它们更接近底层,学习他们更能搞清楚原理。学好了C/C++ 编程和基础,再去学习mfc,.net这些就会比较轻松,而且很踏实。假设学习VB编程需要4个月,学习基础课程和 VC的程序设计需要1年。那么如果你先学VB,再来学习后者,时间不会变少,还是1年。而反过来,如果先学习后者,再来学VB,也许你只需要1个星期就能学得非常熟练。

编程就好比练功,如果学习.net,mfc,vb等具体的语言和工具是外功(招式),对基础的学习就是内功,只注重招式而内功不扎实是不可能成为高手的。很多人会认为《射雕英雄传》中马玉道长什么都没有教给郭靖,我个人觉得此言差矣。马道长教的表面看来是马步冲拳,实则都是内功心法。郭靖拜师洪七之后开始练习降龙十八掌凭借的就是这深厚的内功,吞食蝮蛇宝血又加上练习了周伯通传授的九阴真经和外加功夫双手互博技之后,终于练就了行走江湖的武功。由此可见马玉道长传授给了郭靖的是最基础的,但也是最重要的。

编程又何尝不是如此呢?编程就好比盖高楼,根基没打好早晚有一天会挎掉的,而且盖得越高,损失也越惨重。这些底层知识和课本不是没有用,也并不是高深得不能学,而是我们必须掌握的基础。

既然基础这么重要,那么怎样才能学好它呢?我个人觉得,学好它们应该对照这些基础课程所涉及的方面,多了解相关的新技术,多看一些经典书籍,像《算法导论》,《编程珠玑》,《代码大全》等。这些经典书籍不仅能帮助我们打好基础,而且还能开阔我们的视野,对我们的程序人生会产生莫大的影响。

我永远相信:机会都是留给有准备的人的。

只要你现在能在大学打下坚实的基础,你的未来必定不是梦!


如果您读后觉得有帮助或者有启发,请关注微信公众号: IT微视界 ,里面都是满满的干货哦。)

 类似资料: