为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

【DOC】怎么学好编程

2017-11-30 11页 doc 27KB 2阅读

用户头像

is_954223

暂无简介

举报
【DOC】怎么学好编程【DOC】怎么学好编程 怎么学好编程 怎么学好编程~(个人的真实感受)编了这么久的程序,一直想找机会总结下其中的心得和方法,但回想我这段编程道路,又很难说清楚,如果按照我走过的所有路来说,显然是不可能的~当我看完了云风的《游戏之旅--编程感悟》和梁肇新的《编程高手箴言》我突然知道我要从何说起,我要怎么说了~从接触编程到现在已经至少要 6 年,虽然时间短,但我几乎每天都在编,而编程上突飞猛进的还是最近一两年,单纯编程上的进步,很简单就是经验,但你要理解才可以进步的快~这就是说,你的理论课要学好,才能学好编程,操作系统,网络原理...
【DOC】怎么学好编程
【DOC】怎么学好编程 怎么学好编程 怎么学好编程~(个人的真实感受)编了这么久的程序,一直想找机会下其中的心得和,但回想我这段编程道路,又很难说清楚,如果按照我走过的所有路来说,显然是不可能的~当我看完了云风的《游戏之旅--编程感悟》和梁肇新的《编程高手箴言》我突然知道我要从何说起,我要怎么说了~从接触编程到现在已经至少要 6 年,虽然时间短,但我几乎每天都在编,而编程上突飞猛进的还是最近一两年,单纯编程上的进步,很简单就是经验,但你要理解才可以进步的快~这就是说,你的理论课要学好,才能学好编程,操作系统,网络原理,计算机体系结构,数据结构,编译原理,你哪个学的不好,你根本不配成为编程高手,我见过的高手,这些学的都不错~这些都是计算机的支柱,你连它的支柱都不了解,怎么编程,即使你编写的程序好——只有一个原因,你用的是高级语言或脚本语言,因为它们封闭大量低层语言细节,让你不用了解就可以编写,你不了解低层细节你杂成为高手~ 解释什么叫编程,我觉得现在很多同学,根本不知道什么叫编程~我现在告诉你,单纯的编程,也就是就知道语法知识的编程,根本不叫编程,只会单纯的语法的编程连低级程序员都不如~1编程不仅仅是你对语法的掌握,你还要把各种技术混合到里面,这样才叫编程,你编程的时候,你应该问问自己,你的程序有算法吗,你的程序写的够简单吗,速度足够快吗,占用空间足够少吗,代码写的规范吗,语句写的标准吗,你的程序之间的结构合理吗,你类定义的合适吗,方法和属性合理吗,接口合理吗,等等等,包含很多东西~这就是高级程序员为什么赚这么多钱~要付出相当大的脑力劳动~调试对你也很重要,一个程序高手,也是调试专家,其实调试很多方法,但大多数都是实践中得到的~指正现在人对学计算机误区现在我每天在和汇编,硬件指令 ,c 和 c或一些低层 API 打交道,有些时候编程这个东西很难说清楚,只有你经历了,你才能感受到,你没有经历,就永远体验不到~我现在要更正几个现在学计算机人的误区,我想回答的是,学什么才是学计算机~学计算机的两个方向:一个是纯搞理论的,一个是搞实践的。搞理论的无可厚非的,大家都承认是学计算机。那么实践呢,我很难给出一个定义,但我会列出那些才是真正学计算机学的:(1)编程,这里的编程,我要抛出 FLASH,PHOTOSHOP,3DMAX 等,它们虽然也有语言,但都是为了给美术人员提供的~也就是几乎封闭了大量的低层细节,对于2一个学计算机的人来说,如果你努力学它们,你还是不要学计算机了,去学美术把~网页编程能接触到至少两种类型语言,,HTML 和 ASP 或 JSP(PHP),HTML 说实话,不应该是计算机人学的,你应该学的是ASP,JSP 等~按严格意义上讲(但实际没有这么严格)如果你的主要必修语言,不是 c ,c,JAVA,或者硬件指令,都不算是真正学计算机的,之所以这么说,我举个例子,比如你用 JSP,它是一个脚本语言,如果你用过这个语言,你认为你用好这门语言需要了解硬件结构知识吗,显然不用,如果你纯是 JSP 程序员,你需要只是,JSP 语法,一些简单的 JAVA 语言,SQL 之类的数据库知识,其余的你什么都不需要,至于分析流程,那是系统分析师的事,不要和编程混为一谈,我学 JSP 学了 3 个月,现学现买就做出了功能齐全的网上店(当时是老师布置的作业),如果再努点力,就可以投如使用~所以说,学 JSP 根本就不需要太多的专业知识,不是学计算机的也很容易就学会~学 c,我都学了好几年了,用它写程序都几十万行,我也不敢说我学的精通~就是因为它太灵活了~不同人,用的效果就是不一样~所以按严格意义上讲,如果你的主要必修语言,不是 c ,c,JAVA, 或者硬件指令,都不算是真正学计算机的,也就是说,学那些对计算机专业知识不需要太多了解的语言,就不叫学计算机的~3(2)从事软件方法实践研究,这个纯是软件工程方面的,如果你没有容入一个大项目中很难体会它的重要性,想一想,一个程序,几十万,几百万行代码,能这么好的实现,并运行,它的功劳不小~(3)从事低层硬件开发,这里可能和搞电子的专业有些重叠,但事实就是这样,他们也是学计算机的~其余的,装系统了,装电脑了,用人家编好的软件实现些图片音乐等功能的,那都是计算机的门外汉,不要和真正学计算机的混为一谈~我经常被问到:你会盗 qq 不,我晕,学计算机的就要会盗 qq,你会装电脑不,虽然我会,但不会并不可耻你会装系统不,虽然我会,但不会并不可耻等等把,有好多,通过我上面解释,你应该理解学计算机的应该会什么,不会什么也是应该的~正式入题,怎么学好编程~世面上好象只有这两本是中国人写的关于编程心得的书,中国编程好的人很多,但写出方法很难~第一本《游戏之旅--编程感悟》前面几章写的是云风的编程经历,后面几章写的是编程经验~总的来说本书很容易读懂~《编程高手箴言》书很难,尤4其写操作系统那章~正如作者所说,真正写一门编程方法学的书很难~本书前几张概括了当前中国软件面临的形式,我强烈建议看一下,写的很经典~以前我不知道程序和软件的区别是什么,现在我知道了~后面几张写的都是编程方法和编程要具备的知识~总结他们两人所说的,我准备按照下面提纲来写编程方法~1。如果你感兴趣,学计算机是一种光荣,如果你不感兴趣,那么它是地狱~2。理论对你很重要,尤其是你一名搞技术的程序工程师~3。学会自学,学会思考,学会合作与交流~4。要想成为高手,一定要从底层学起,底层是什么,CPU,汇编等硬件指令~5。编程需要经验积累,学会调试对你尤其重要~6。全局把握整个工程,具体到每个类的属性和方法以及各个类的关系~一定确保你设计的类和类模式和类间关系能够有效,利于修改和升级~概括说就是软件工程下面我就分别说一下一。如果你感兴趣,学计算机是一种光荣,如果你不感兴趣,那么它是地狱~我经常听很多同学说,开始他对计算机很感兴趣,但随着大学里的学习,越来越感觉无聊甚至厌烦~你之所以这么想,5其实一点也不怪你~从高中的应试教育到大学里的自由学习方式上的转变,我们几乎都不适应,一到大学,突然有一种解放的感觉,没有老师的强硬指示学习,自己根本不知道怎么学,学什么~所以说,教育对我们很不负责任~如果你在大学以前已经知道编程怎么回事,那到没什么事情~但好象很少有人象云风这样从小就接触了编程教育~所以我们在没有上大学前几乎是零起步~其实,按我的理解,刚上大学开始学编程有些晚了,之所以这么说,不是因为单纯的编程很难,如果你很努力,几年完全可以搞定,其他的你去公司的经验可以弥补~我这里想说的是,一个真正的程序员不单单要有强硬的编程实力,还要有强大的理论后盾~你只会编程,没有强大的理论做后盾,你也就不会把理论转化成实际的代码,你也不会做出高效,高技能的程序~在计算机理论中,图论,人工智能等等都是很难的理论,但如果你能把它们有效的用在计算机领域,功德无量~国人能做这点的很少,本来厉害的程序员就很少,有高尖端理论技术并把它应用的更是凤毛麟角~(这里可以推荐大家一本书《游戏编程中的人工智能技术》,这本书抛开了传统的自动机,产生式,各种规则的传统的人工智能理论,而是讲的更前沿的计算智能——生物遗传算法,人工神经网络~这本书,不单纯讲理论,还用 c语言结合理论实现各种游戏程序~有时抽象的理论都是基于数学基础6之上,如果没有一 定数学基础是很难看懂的,但正因为它有数学证明是正确的,所以它是可行的~能把它用语言实现更是可观~)所以,如果你热爱计算机,在大学以前,就应该成为一个程序高手,而大学以后,主要专研各种技术的实现,和各种技术的学习,如果你把他留在工作里,可能很难,我的同学在参加工作后,很少有继续看技术书籍,因为技术书籍很难,不是一下两下就看懂的,有几个还有这样的耐力和精力去搞~这些怎么在编程上实现,都在等着老外,咱们 COPY,这样我们的软件技术能强大吗,可是在大学以前成为一个编程高手几乎不可能,我们没有良好的学习编程的环境,而且面对着中考,高考的各种压力,几乎没有机会去学习编程~其实,,初中,高学,那些课程没有必要象我们这样反复的复习,反复的作题,浪费了大量时间,我们要学会什么,学会一种技能,能够应付各种变化的技能,就是自学,学会思考,学会自己解决问题,学会团结合作~初等教育,打的口号很好,实际上,完全压制了这种学习方式~所以我们应该以最快的速度,在大学里容入一个热爱计算机的氛围~说到这又很难,当代大学生迷茫呀~不知道作什么,有些知道自己该好好编程,但光说不做~有些人,写了几段代码,出现了问题,不会调试,就放弃了~大家都这样,所7以以寝室为单位没有人编程,逐渐以整个计算机学院为单位逐渐编程~确实我们的计算机老师,会编程的很少,我们应该知道,中国计算机引进并发展才短短 20 年,正是这样老一辈的,把这些计算机理论上确立,他们不会编程理所当然,大学的老师主要研究理论,国外的也是,因为理论太难了~所以大学里学习编程要完全考自己,你要有信心,有意志把它学好才可以,而且这个过程是循序渐进的~以最快方式,找到你编程的爱好和兴趣~我介绍几个方法,学习方式,希望你能找到兴趣,起码我是这样做的,记住如果跌倒了,你要站起来1。一定要和喜欢编程的,或编程厉害的,或经常编程的人,在一起,经常探讨问题~初学编程会有很多问题出现,你自己很 难解决2。我建议 VB 和 c 一起学习,这个只是我的建议~我为什么这样说呢,如果你开始只学c,你会厌烦整天在 DOS 下,没有图象的 程序~如果你直接学 WINDOW 编程会很难,所以我建议学 VB,VB 这是个语法简单,很快可以见到你编写程序的画面,这样你就会逐渐喜欢编程,没有画面很枯燥的,你不这样认为吗,反正我是这样认为的,你编写的好坏,没有画面也很难用眼睛直接看出来~VB 是最简 单的语言了~不存在 c 的复杂语法结构,程序出错概率相对 c 来说很少,因为 VB 封装8的很好,帮你解决了复杂的过程~其实象 JAVA,MFC, c完全可以作到 VB 效果,但上手相对困难~c 是我们一定要学的,它是一种很接近底层的语言~如果你要成为高手,应该学这个~C是个纯面向过程的语言,它的语法不是很难,你用它大约一年半多左右,就完全可以掌握它,记住这需要你的实践,多做程序,主要是算法程序,最好把你教科书的后的的习题都做了。大家几乎学的都是潭浩强的书,这本书我开始认为很 好,但我看了很多国外的书,和很多国外人所打的代码后,和国内高级程序员所说的话,我只能说这本书,只能是你的开端,但不能 让你更深层次了解语言。但你要问我初学者用什么书,我还会介绍这本书。C 的精髓在于指针,你能灵活运用指针就几乎等于你掌握了 C 语言,这是一种高效的语法支持,快的让法想象,我很有感触,在 VB 下要慢的多。那么我们学 VB 究竟做什么,很简单,做 WINDOWS 程序,控件的使用,数据库的使用等等,还有一个很重要的是,你可以练习你学的数据结构,各种计算机算法,很快就可以用图形的方式显现出来~你现在知道这些就可以,等你以后学了真正 WINDOWS 编程,你会对你以前所实现的东西有很深的理解,究竟什么是 API,什么是动态连接库,什么是控件,象 VB,MFC 这样的东西,究竟封装了什么让我们用起来这么简单~3 如果你能作到,以上两点,(加上你学的专业,如果你很努力,课大约 1 年)我想你会对计算机感兴趣的~你逐渐容9入爱学计算机的氛围~接下来有两个方向你要去做,一个是努力学好其他计算机专业课,二是在巩固 c 语言的基础上,你可以选择学习 c或者 WINDWOS 编程~这两个先学哪个都无所谓。记住你大学时学的 10 大专业课,数学,离散数学,数据结构,编译原理,汇编,数据库,计算机体系结构,操作系统,计算机网络,软件工程,你要尽力把它们学好,这个是整个计算机系统的精髓,这些都是相互贯穿的,相互联系的,你可能学某科没学懂,但学了别的后,可能会懂的~切记,在你学好编程的同时,一定要学好这些理论,以后你会受 益匪浅的。4。在你觉的 c 或者 VB 学的没什么问题,或者你学会 WINDOWS 编程,记住一定要自己有个想法,做个小的可视化程序,小游戏也好,小应用软件也好,都可以,这个步骤,你一定要做,你会学到很多东西~在这期间,你还会遇到很多问题,你要自己多想,多问别人,多去网上查资料~但你做的程序,最好不要 COPY 别人的,如果都是你自己做的,自己想的,你收获最大,哪怕你是模仿别人的程序,你用你自己的想法实现了,也是厉害的~其次,你可以 COPY 部分代码,作为自己的。在你对你的想法,知道怎么实现后,写代码只是浪费时间的时候,而且你写的效率没有现成的代码效率高,你就可以完全 COPY,但如果你是初学者,你千万不要这么做~否则 你会对它产生依赖,有一天真正让你自己去写,你会无从下手~所以开始时,你10可以试着 COPY,逐渐摆脱对它们的依赖,以后摆脱了 ,这个时候,你才可以总依赖它们。5。大学期间,有很多程序的实验课,你要认真做,做出来收获是自己的,也可以作为自己的一个小项目~大学期间加上实验课,基本上自主编程或者团队自主编写的总小软件数目应该不少于 7,8 个,如果你做的程序很大,可以少些~以上,我把如何学习计算机入门和提起你兴趣的方法告诉你了~我相信你按照我的去做,应该没有问题的~对于每个细节,我会在接下来详细为你们写出的~二。理论对你很重要,尤其是你一名搞技术的程序工程师~大学里所有课程几乎都是针对理论的~大学里是你学习理论的最好机会,因为我们不明白可以问老师,老师会帮助我们解决的~当然有些老师很垃圾,那就要你自己解决了~我上面提到的 10 大专业课程,是你以后学习其他理论的基础。你不可能一辈子有老师帮助,以后学习其他理论就要靠自己,所以,在你学习 10 大专业课程的同时,要学会自己和思考问题~如果11你上大学就为了以后做网页,那你没有必要学这写东西,同时,你永远成不了高手~数学:数学我们从小就学,它实在太重要,几乎所有的科学都建立在它的基础之上。让我们每个人都成为数学大师是不可能的,我们没有时间也没有精力去搞这么抽象的东西,我们要做的就是,以后遇到和数学相关的东西,能看懂就可以了~虽然我很长时间没有看大学课本,但我还很清楚的知道学了什么,极限,导数,微分,积分,空间向量几何,多重微分,多重积分~傅立叶变换,等等把~其实这些很大程度随着物理学的发展而发展的,现在的仿真技术这么厉害,都建立在物理学上~我希望大家,在能理解这些真正含义,不要单单会做题~题海战术既浪费时间,也浪费精力~极限:说白了,就是自变量要趋进某个值时的值,我们可以说 0.999999当 9 趋进无限时,它的极限为 1,否则说 0.999999 就是 1,是不对的,如果没有条件 9 趋进 于无限,也是不对的~极限是有条件的~所以说无论学什么,你一定要把概念搞清楚,你要学的东西,都是建立在概念上的,如果这些概念你都没有弄懂,以后你是没有办法学的~这里我毕竟不是讲数学的,我所要说的就是,你学的东西要扎实,地基要牢,对概念要理解透彻,死记硬背是不行的~12如果你不了解它的现实和本身的意义是什么,你根本不知道你在学什么~离散数学:这个实际是最难的理论课程,估计能把它讲好的老师也寥寥无几~集合,命题逻辑,谓词逻辑,数论,图,群,环,域~前几部分很简单,图论往后简直难的要命~我在这里不做多说,因为我没有学明白,太难了,群,环,域,我连它们的现实基础都找不到~它们之所以难,是我们很难容入到那种神秘的思考方式,容入思考方式太难了,只有靠我们的感悟,因为这些真正很强的人真的寥寥无几,能指导我们的更是很少,我本人始终无法理解群的真正含义,我也没有去查什么相关资料,但我知道,再抽象的数学理论,都不是凭空想象的,它一定有它的现实基础,它的出现是有来历的。数据结构:数据结构是十分重要的学科,它完全是建立在实践的基础上,也就是说,你要多打代码。它在一定程度是依赖语言的。我很清楚的知道,第一遍学习数据结构,也就是几乎很少有实践的,大脑几乎一片空白,也是只有?诳际郧埃 锤吹母聪安胖 涝诮彩裁矗 荒苁止さ哪,庵葱泄 蹋 阉惴ㄗ 沙绦蚴贾帐歉雒浴, 胰衔 庖丫 愎涣耍 蛭 魏卫砺壑挥性诶斫馑 悴拍芰杓萦谒 越酉吕匆桓鲋实姆稍揪涂孔约海?3靠自己把那些算法变成代码,在自己有想法时,能够把这个想法用适当的数据结构实现,这需要在电脑旁的硬功夫,绝对是。一个高级的程序员,绝对是个硬功夫。这种把自己的想法变成代码,也是你独立思考的开始,记住思考很重要,他是你在捕捉你的灵感,善于思考的人,灵感来的很快,而且你的灵感会告诉你,对于它,你能把它做出来,这一切都是思考的结果,我不是个思想家,但我知道,我每天对世界万物的沉思,在指引着我发现那些太多的为什么的答案,这个世界为什么这个样子,它后面究竟隐藏着什么,让我们大胆的假设吧~~多做程序的人,程序会改变你的思维,这绝对错不了。编译原理:其实编译原理和汇编,操作系统,语言都是紧密相关的,编译器是在操作系统之上,语言之下。在讲编译器时,除了讲编译源程序成目标程序外,还介绍了很多地方都用到的自动机理论,这个也很重要。在人工智能,很多分析语法,文字类的东西都很重要。编译原理和语言是相辅相成的,只学语言不学编译,无法真正的了解语言,而编译器是在语言基础上的,没有语言的了解更学不了编译,现在大多数高校的编译原理讲的语言都是基于面向过程的,但我认为足够了,你真正的理解了编译所讲的东西,自己在深入学习面向对象的语言,你一定会很好的把握面向对象的编译过程,很好的掌握面向对象语言,在语义分析过后的中间代码生成和动态存储空间分配,和汇编14有很大的联系,我在学习汇编时,总是先把要求的题目写成 C 语言,在转化成汇编语言,这就是不知不觉的一种中间代码生成,虽然不完全一样,但让你掌握中间代码生成已经足够了。动态存储空间分配,主要基于指针所指向的动态空间。因为非指针的变量在编译时就已经有内存分配了,这也是编译要做的事。汇编:大多数学的都是 8086,编译器我推荐用 TD,很好的开发环境。作程序调试是最主要的,没有作过程序的人是想不到调试是多么难 ,好的开发环境有助于有效的开发程序。个人认为,学习汇编要和计算机组成联系起来,主要是指令系统,讲 CPU 时的知识。汇编是最低级的,最快的语言了,有时为了运行速度不得不用汇编来实现想要的功能,我 认为对汇编的掌握程度,只要你能做出个递归函数就可以了,你了解了很多指令用法,寄存器的使用,计算机存储数据和代码的方式,函数调用的方式,栈是怎么实现函数的,你会有很深刻的发展,相信我没错的,一定要上机实现一个递归函数,再加上你对 C 语言的了解,和一些编程知识,你就可以摆平几乎所有的汇编程序了。数据库我在大学里没有接触过太大的项目,而且平常编程对数据库深入不多,只是达到了做网上书店所要求的基本知识,首先15是 ER 图,各种范式,还有数据流图,怎么用语言插入数据,删除,查找等等,实际上,你要不是搞理论的,深到数据的具体存储效率的级别,我想这些对于编程就足够了,但对于高级的数据库程序员这些是不够的。计算机组成对于学习汇编和 C 语言这个其实很重要,因为这些语言还没有屏蔽这些硬件细节,VB 就几乎完全屏蔽了硬件细节,你不需要了解太多的硬件知识。但学习汇编和 C 语言并不是要你了解到能作出 CPU 和连接存储器,我们只要知道他们的运行机理,但有一点你不要怀疑,那就是电信号他就是那样有趣,有趣到你无法想象它的速度和高低电平的传递,但是事实就是这样,你不需要怀疑,承认它就好了,因为我们还不能解释规律,只能运用它一样。原理对软件程序员就应该足够了,它会使你更加容易了解操作系统和硬件的工作。操作系统大家每个人对操作系统都不陌生,所有的计算机的课程几乎都是息息相关的,他们都有太多的联系,有些你可能迷茫,当所有的学完以后,你应该有个豁然开朗的感觉,那就是计算机的一切不应该是个迷。操作系统和硬件的接口,就是那些硬件提供的指令,通过这些指令来操作硬件,就象操作系统定义一样,他是管理系统资源的,管理硬件的使用,你在学习操作系统时,把它看成一个管理者就可以了,它是一个有着自己管16理方法的管理者,管理这些硬件给每个进程使用,进程说白了就是一个应用程序在内存中或在外存中,有着运行权利的程序。现在的操作系统是多任务的,可以运行多个程序,并发是指单个 CPU 而言,每个进程在 CPU 中轮流执行,因为它太快了,你根本感觉不到他们的交替性,就象在同时运行,大多数教材讲并发比较多,我们大多数计算机都是单 CPU的,具体怎么交替运行,那就是操作系统管理进程使用硬件的方法,不同的操作系统方法不同,? 愕姆椒ú灰 闷渲械囊桓鼋 套苁堑貌坏较胍 挠布 褂茫ɑ钏 蚣?觯 氤龈龊冒旆ɑ共环? 浪 ㄕ饫锊凰凳裁词撬浪 耍 冶暇共皇窃俳膊僮飨低常?埠苣眩 苤 阋 У木褪钦庑?椒ǎ 饫锼档氖枪芾?CPU,还有管理内存,外设等等。我在给出进程定义时,还说了外存,其实通常就指硬盘,因为你的内存太小,运行的程序又多,我要为了让其他的程序运行,只能先把它放在外存,也叫挂起。总之,你学的就是管理硬件的方法,怎么管理才能有效率,方便用户使用。如果可以,你也可以设计一套管理方法,那你就作出了一个新的操作系统。计算机网络所有和硬件有关的最后一个,说实话计算机网络很杂,你学第一遍后,把网络 7 层所有管理方法说出个查不多,很难,大多数学生都是晕头转向,网络是个很庞大的系统,它从硬件到软件,被规定了很正规的完整体系,这样大家都遵照这个规17则才能,使每个人开发出的软件和硬件都可以用。记住计算机的交互就象人与人的交互,它通过 0 和 1 来代替人的语言,情或所有可以可以传达信息的东西,也可以说是计算机通信的暗号,只有双方都知道了.
/
本文档为【【DOC】怎么学好编程】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索