什么是基础呢?就是要把我们大学所学的离散数学,算法与数据结构,操作系统,计算机体系结构,编译原理等课程学好,对计算机的体系,CPU本身,操作系统内核,系统平台,面向对象编程,程序的性能等要有深层次的掌握。
刚開始学习的人可能体会不到这些基础的重要性,学习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这些越往后就会认为越吃力,它们涉及的技术太多了,并且不但在更新,对于三层啊,mvc,orm这些架构,你仅仅会用也不明确为什么用,就感觉心里虚,感觉没学好。而你把面向对象,软件project,设计模式这些基础学好了再去看这些就能够一不变应万变。
大家不要被新名词、新技术所迷惑.NET、XML等等技术固然诱人,可是假设自己的基础不扎实,就像是在云里雾里行走一样,仅仅能看到眼前,不能看到更远的地方。这些新奇的技术掩盖了很多底层的原理,要想真正的学习技术还是走下云端,扎扎实实的把基础知识学好,有了这些基础,要掌握那些新技术也就非常easy了。開始编程应该先学C/C++,系统api编程,由于它们更接近底层,学习他们更能搞清楚原理。学好了C/C++编程和基础,再去学习mfc,.net这些就会比較轻松,并且非常踏实。假设学习VB编程须要4个月,学习基础课程和VC的程序设计须要1年。那么假设你先学VB,再来学习后者,时间不会降低,还是1年,而反过来,假设先学习后者,再来学VB,或许你仅仅须要1个星期就能学得非常熟练。
编程就好比练功,假设学习.net,mfc,vb等详细的语言和工具是外功(招式),对基础的学习就是内功,仅仅注重招式而内功不扎实是不可能成为高手的。非常多人会认为《射雕英雄传》中马玉道长什么都没有教郭靖,马道长教的表面看来是马步冲权实则都是内功心法,郭靖拜师洪七之后開始练习降龙十八掌凭借的就是这深厚的内功,吞食蝮蛇宝血又加上练习了周博通传授的九阴真经和外加功夫双手互博技之后,最终练即可走江湖的武功,由此可见马玉道长传授给了郭靖的是最基础的,也是最重要的观念,编程也好比盖高楼,根基没打好早晚有一天会挎掉的,并且盖得越高,损失也越慘重。这些底层知识和课本不是没实用也不是高深的不能学,而是我们必须掌握的基础。
这些是个人的愚见,说的不是非常清楚,大家能够看看这些前辈们的经验,相信看完后大家一定会有所体会说了这么多无非是想告诫大家要打好扎实的基础,不要仅仅顾追求时髦的技术,打好基础再去学那些技术,对自身的发展会更好的。
至于培训,这个怎么说呢 你说培训好不好?事实上是因人而异的,假设你认为没有学习的那种自觉性,或者学习方法有问题,能够进行相关了解找到适合自己的老师。
对于算法,非常多书上都写到他是程序的灵魂,没有他程序是没有价值的。可是算法又是独立于计算机存在,能够说他的核心能够独立出来。这个依据自己的数学基础情况,来着量学习。总之,算法学习肯定是有优点的。
呵呵,又扯回基础了还是数学。没错,数学能够说是科学之王。那你说基础重要吗