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

如何学好编程2

2017-09-15 10页 doc 25KB 16阅读

用户头像

is_005190

暂无简介

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

历史搜索

    清空历史搜索