最新帖子 精华区 社区服务 会员列表 统计排行
主题 : 基础的重要性(程序员之路)
admin 离线
级别: 管理员
UID: 1
精华: 1
发帖: 997
金币: 526 个
银元: 488 个
铜钱: 7853 个
技术分: 601 个
在线时间: 736(时)
注册时间: 2010-04-21
最后登录: 2018-04-20
楼主  发表于: 2010-09-19   

基础的重要性(程序员之路)

管理提醒: 本帖被 admin 从 程序人生-IT综合讨论区 移动到本区(2015-08-11)
      学习编程有几年了,感觉走了不少弯路,而不少的学弟学妹又在重蹈我当初的覆辙,不免有些痛心。最近在网上也看了许多前辈们的经验建议,再结合自己的学习经历在这里谈谈基础的重要性,希望帮助大家少走些弯路。
     什么是基础呢?就是要把我们大学所学的离散数学,算法与数据结构,操作系统,计算机体系结构,编译原理等课程学好,对计算机的体系,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这些架构,你只会用也不明白为什么用,就感觉心里虚,感觉没学好。而你把面向对象,软件工程,设计模式这些基础学好了再去看这些就可以一不变应万变。
       大家不要被新名词、新技术所迷惑.NET、XML等等技术固然诱人,可是如果自己的基础不扎实,就像是在云里雾里行走一样,只能看到眼前,不能看到更远的地方。这些新鲜的技术掩盖了许多底层的原理,要想真正的学习技术还是走下云端,扎扎实实的把基础知识学好,有了这些基础,要掌握那些新技术也就很容易了。
       开始编程应该先学C/C++,系统api编程,因为它们更接近底层,学习他们更能搞清楚原理。学好了c/C++编程和基础,再去学习mfc,.net这些就会比较轻松,而且很踏实。假设学习VB编程需要4个月,学习基础课程和VC的程序设计需要1年。那么如果你先学VB,再来学习后者,时间不会减少,还是1年,而反过来,如果先学习后者,再来学VB,也许你只需要1个星期就能学得非常熟练。
       编程就好比练功,如果学习.net,mfc,vb等具体的语言和工具是外功(招式),对基础的学习就是内功,只注重招式而内功不扎实是不可能成为高手的。很多人会认为《射雕英雄传》中马玉道长什么都没有教郭靖,马道长教的表面看来是马步冲权实则都是内功心法,郭靖拜师洪七之后开始练习降龙十八掌凭借的就是这深厚的内功,吞食蝮蛇宝血又加上练习了周博通传授的九阴真经和外加功夫双手互博技之后,终于练就行走江湖的武功,由此可见马玉道长传授给了郭靖的是最基础的,也是最重要的观念,编程也好比盖高楼,根基没打好早晚有一天会挎掉的,而且盖得越高,损失也越惨重。这些底层知识和课本不是没有用也不是高深的不能学,而是我们必须掌握的基础。
       这些是个人的愚见,说的不是很清楚,大家可以看看这些前辈们的经验,相信看完后大家一定会有所体会的。为了方便大家阅读,我把这些前辈们的经验建议整理成了pdf,大家在下面下载吧!希望对大家有帮助。
前辈们的经验pdf下载地址:http://pan.baidu.com/s/1dDEdOFR

请参考另一篇文章: 怎样打好基础(论坛版块说明)
eliot126 离线
级别: 菜鸟
UID: 45448
精华: 0
发帖: 1
金币: 0 个
银元: 10 个
铜钱: 55 个
技术分: 0 个
在线时间: 0(时)
注册时间: 2017-12-29
最后登录: 2018-03-08
270楼  发表于: 03-08   
学习了 一定要耐心的重视基础知识的学习
级别: 荣誉会员
UID: 45085
精华: 0
发帖: 12
金币: 0 个
银元: 10 个
铜钱: 110 个
技术分: 0 个
在线时间: 3(时)
注册时间: 2017-09-22
最后登录: 2018-04-21
269楼  发表于: 2017-09-22   
看了非常受启发,无意中发现的这个论坛,虽然介绍的部分书已经看过但是重新温故还是很激动,谢谢坛主的付出
lj873222533 离线
级别: 菜鸟
UID: 44889
精华: 0
发帖: 1
金币: 0 个
银元: 25 个
铜钱: 55 个
技术分: 0 个
在线时间: 1(时)
注册时间: 2017-07-20
最后登录: 2017-07-28
268楼  发表于: 2017-07-22   
上传头像不能保存!
beimi008 离线
级别: 菜鸟
UID: 44839
精华: 0
发帖: 1
金币: 0 个
银元: 25 个
铜钱: 55 个
技术分: 0 个
在线时间: 1(时)
注册时间: 2017-07-02
最后登录: 2017-07-12
267楼  发表于: 2017-07-03   
十分感谢楼主,溢于言表
userip 离线
级别: 荣誉会员
UID: 44323
精华: 0
发帖: 3
金币: 0 个
银元: 25 个
铜钱: 65 个
技术分: 0 个
在线时间: 0(时)
注册时间: 2017-01-10
最后登录: 2017-01-11
266楼  发表于: 2017-01-11   
觉得我们初学着都进入误区了,这知道如何跟进IT界发展,不知道原来基础是多么的重要,原先我以为自己多厉害,掌握c c++ java c# 还学过计算机网络管理,看过的专业书籍一堆一堆的,到后来才发现,原来看似学到的东西,还没有精通,就是一个刚刚踏入学习的一个毛孩子,
my_perfume 离线
级别: 荣誉会员
UID: 44203
精华: 0
发帖: 2
金币: 0 个
银元: 25 个
铜钱: 60 个
技术分: 0 个
在线时间: 0(时)
注册时间: 2016-12-01
最后登录: 2016-12-15
265楼  发表于: 2016-12-01   
模块是什么个情况
fairybirds 离线
级别: 菜鸟
UID: 41649
精华: 0
发帖: 4
金币: 0 个
银元: 25 个
铜钱: 70 个
技术分: 0 个
在线时间: 1(时)
注册时间: 2015-11-10
最后登录: 2017-02-16
264楼  发表于: 2016-06-29   
有没有朋友能帮我把网盘的东西发下邮箱?新疆打不开网盘,现在手机端也不行了……
谢谢!
[ 此帖被fairybirds在2016-06-29 12:47重新编辑 ]
hykj9495 离线
级别: 菜鸟
UID: 43470
精华: 0
发帖: 1
金币: 0 个
银元: 10 个
铜钱: 55 个
技术分: 0 个
在线时间: 0(时)
注册时间: 2016-06-20
最后登录: 2016-07-15
263楼  发表于: 2016-06-21   
回 楼主(admin) 的帖子
想起高中老师一句话,基础不牢地动山摇,
我什么书都看,所以我比较喜欢胡思乱想。遇到新事物,我就会对比类比,得出也许对的它的特性,这种办法好像有点偏了。但我实在想不出办法去理解新东西了
孟子再说 离线
级别: 菜鸟
UID: 42788
精华: 0
发帖: 1
金币: 0 个
银元: 10 个
铜钱: 55 个
技术分: 0 个
在线时间: 0(时)
注册时间: 2016-02-27
最后登录: 2016-03-03
262楼  发表于: 2016-03-03   
不错受教了 小白感激
描述
快速回复

如果您在写长篇帖子又不马上发表,建议存为草稿
认证码:

验证问题:
printf("%d", 103)
按"Ctrl+Enter"直接提交