学习软件编程的感悟(原创)
2010-06-28 12:09
344 查看
好久没有写东西了。高中时,为了写作文,什么话都往上写,生怕写的字数不够,呵呵,导致高考作文20来分,惨淡的教训告诉我:越怕什么关键时刻越来什么!逃避不是解决问题的办法。
上大学三年了,学习编程快两年了,总结一下自己的经验,希望不要误人子弟!不对之处望不吝赐教。
学习编程并不是学习什么语言,语言只不过是工具而已(网上一大堆,老生常谈了)。一般写的程序都有两部分组成:一个是数据结构;一个是算法。
数据结构就是某种语言所特有的规则,他就像任何游戏一样都有一种规则,这个没有任何捷径,只能平常多看看,多练习,记住它就行了。在实战中才能把它理解的更加深刻、更加透彻。
算法,也就是我们通常在编程中用到的函数或方法,为了使程序更加健壮、更高的可读性和结构更加紧凑,一般都把某种算法封装起来,这样便于移植和测试。其实向俗里说,算法就是我们平常为了解决问题而用到的方法,只不过它用语言描绘出来了而已,怎么想就怎么写就行,只要不违背游戏规则就行了。
学习编程,其实我觉得我们从上学就开始学习编程了,而且我们那是学习的还是编程的精华-------数学。他们学习的方法几乎都是一样的,遇到一个问题(当然最终都是为了解决这个问题),首先分析一下要想解决它必须先解决什么问题?把每一个问题都列出来,再把这些小问题一个一个分解,直到分解成你可以解决的问题为止!当然也可以从两边向中间凑:有这个问题我们首先可以解决什么?不能解决什么?把这些问题尽量向中间靠拢,一步步也可以把它解决掉。当发现,最后出现了错误时,我们再从那些小的问题入手,一个一个分析,把错误的问题找到,最终把它解决掉。数学在理工科中是尤其重要的,因为它在无形中影响我们的思维,呵呵,怪不得有人说数学发展到哪里,这个社会就会进不到哪里呢。
现在我们学的编程基本上就有四种模型:面向过程的,基于对象的,面向对象的,基于泛型的。如果把编程比喻成堆积木,那别人提供给我们的API函数都是一个个零散的小积木,有时我们为了更快的堆积成我们想要的东西,我们再把这些小积木在堆积成另一个形状,当我们需要它时,直接拿过来用就行了,不用再重新堆积了,这就是类。
发现问题,解决问题------测试,因为我也从来没有学习过测试,只会一点最基本的方法,那就是跟着程序走,程序运行到哪里,就检查到哪里,问题总会发现的,最简单的方法是通过输入输出跟踪运行的程序,直到发现它出现了异常。
进步的泉源----错误。人往往从失败中才会得到更多的经验。编程也是,当你运行程序遇到某个错误了,那时最好自己独立解决,因为只有这样你才会有更大的进步,千万不要怕走弯路,有时候在弯路中你学到的东西更多。遇到错误时,先分析错误提示,一般IDE都有错误提示和错误出现在哪一行,尽管有的指示的不够明确,但通过分析错误行的上下文,也可以有助于你找到错误的根源所在,把错误提示看一下,这样也有助于你以后发现错误。
学编程是符合“理论→实践→创新→再理论→再实践→再创新”的一个认识过程。把编程也可以看成一门技术,对于技术,只能通过实战来提高自己了。我们有时可能遇到这样的问题,新学习一门软件课程时,看那些书感觉很吃力,有时看了一遍也不知道它讲了个什么,我觉得这是因为你缺少实践的原因,当你真正实践过,反过头来再看那些书,“哦,原来如此”,才恍然大悟,当你再实践后,再去看这本书,“呵呵,怪不得呢”,这个时候你可能会责备自己“怎么原来我没看到呢,哎,真是太笨了”,到那时,当有个白痴问起你”这门课程好学吗?“,我觉得你就可以告诉它,这门课程太简单了,正常人都可以学会!
系统之上的应用编程,基本上和我们平常解决生活中的问题一样,在脑袋中想,再在纸上写出来(呵呵),编程想想其实也是如此,在内存中保存所计算的,在外存中写出该如何计算,再把外存中的数据放到内存中保存,把内存中的数据返回到外存加以利用,如此反复一个问题就解决了。
系统中的和系统之下的编程,还没有学,不敢妄加评论。
待续……
上大学三年了,学习编程快两年了,总结一下自己的经验,希望不要误人子弟!不对之处望不吝赐教。
学习编程并不是学习什么语言,语言只不过是工具而已(网上一大堆,老生常谈了)。一般写的程序都有两部分组成:一个是数据结构;一个是算法。
数据结构就是某种语言所特有的规则,他就像任何游戏一样都有一种规则,这个没有任何捷径,只能平常多看看,多练习,记住它就行了。在实战中才能把它理解的更加深刻、更加透彻。
算法,也就是我们通常在编程中用到的函数或方法,为了使程序更加健壮、更高的可读性和结构更加紧凑,一般都把某种算法封装起来,这样便于移植和测试。其实向俗里说,算法就是我们平常为了解决问题而用到的方法,只不过它用语言描绘出来了而已,怎么想就怎么写就行,只要不违背游戏规则就行了。
学习编程,其实我觉得我们从上学就开始学习编程了,而且我们那是学习的还是编程的精华-------数学。他们学习的方法几乎都是一样的,遇到一个问题(当然最终都是为了解决这个问题),首先分析一下要想解决它必须先解决什么问题?把每一个问题都列出来,再把这些小问题一个一个分解,直到分解成你可以解决的问题为止!当然也可以从两边向中间凑:有这个问题我们首先可以解决什么?不能解决什么?把这些问题尽量向中间靠拢,一步步也可以把它解决掉。当发现,最后出现了错误时,我们再从那些小的问题入手,一个一个分析,把错误的问题找到,最终把它解决掉。数学在理工科中是尤其重要的,因为它在无形中影响我们的思维,呵呵,怪不得有人说数学发展到哪里,这个社会就会进不到哪里呢。
现在我们学的编程基本上就有四种模型:面向过程的,基于对象的,面向对象的,基于泛型的。如果把编程比喻成堆积木,那别人提供给我们的API函数都是一个个零散的小积木,有时我们为了更快的堆积成我们想要的东西,我们再把这些小积木在堆积成另一个形状,当我们需要它时,直接拿过来用就行了,不用再重新堆积了,这就是类。
发现问题,解决问题------测试,因为我也从来没有学习过测试,只会一点最基本的方法,那就是跟着程序走,程序运行到哪里,就检查到哪里,问题总会发现的,最简单的方法是通过输入输出跟踪运行的程序,直到发现它出现了异常。
进步的泉源----错误。人往往从失败中才会得到更多的经验。编程也是,当你运行程序遇到某个错误了,那时最好自己独立解决,因为只有这样你才会有更大的进步,千万不要怕走弯路,有时候在弯路中你学到的东西更多。遇到错误时,先分析错误提示,一般IDE都有错误提示和错误出现在哪一行,尽管有的指示的不够明确,但通过分析错误行的上下文,也可以有助于你找到错误的根源所在,把错误提示看一下,这样也有助于你以后发现错误。
学编程是符合“理论→实践→创新→再理论→再实践→再创新”的一个认识过程。把编程也可以看成一门技术,对于技术,只能通过实战来提高自己了。我们有时可能遇到这样的问题,新学习一门软件课程时,看那些书感觉很吃力,有时看了一遍也不知道它讲了个什么,我觉得这是因为你缺少实践的原因,当你真正实践过,反过头来再看那些书,“哦,原来如此”,才恍然大悟,当你再实践后,再去看这本书,“呵呵,怪不得呢”,这个时候你可能会责备自己“怎么原来我没看到呢,哎,真是太笨了”,到那时,当有个白痴问起你”这门课程好学吗?“,我觉得你就可以告诉它,这门课程太简单了,正常人都可以学会!
系统之上的应用编程,基本上和我们平常解决生活中的问题一样,在脑袋中想,再在纸上写出来(呵呵),编程想想其实也是如此,在内存中保存所计算的,在外存中写出该如何计算,再把外存中的数据放到内存中保存,把内存中的数据返回到外存加以利用,如此反复一个问题就解决了。
系统中的和系统之下的编程,还没有学,不敢妄加评论。
待续……
相关文章推荐
- 我的写作感悟暨Unix编程需要学习的内容(1)《精通Unix下C语
- 对大学编程学习的一点理解和感悟
- 工作8年对技术学习过程的一些 总结 与 感悟 为什么有时迷茫、无奈 学习编程语言的最高境界最重要的是编程思想 T 字发展 学技术忌讳”什么都会“ 每天进步一点等式图 时间管理矩阵
- 一种脱离VC编程软件的方法学习C/C++编程(搭建EditPlus实现在文本编辑框中执行.c文件)
- 华为软件编程规范学习(二)--注释
- 华为软件编程规范学习(十)--代码编辑、编译、审查
- 从零开始学习音视频编程技术(二十) 录屏软件开发之录屏生成MP4
- 又回来学习软件编程
- (原创) Android手机即时编程软件
- 作者签名赠书,免费学习软件编程
- 深度学习蚕食软件,十年内大部分软件工作不再涉及编程
- 学习网络编程推荐安装的软件
- 华为软件编程规范学习(四)--可读性
- 华为软件编程规范学习(五)--变量、结构
- 从零开始学习音视频编程技术(十二) 录屏软件开发之视频采集
- 华为软件编程规范学习(八)--可测性
- 如果你发现了自己的学习模式,愿意学并且能坚持,我觉得没什么能阻挡你征服软件世界的脚步(对于开发人员来讲,最大的风险是:在职业规划上没有延续性地乱跳槽。时刻要牢记在心的:培养自己的稀缺性),安晓辉大神的感悟 good
- 从零开始学习音视频编程技术(十七) 录屏软件开发之音频采集
- 华为软件编程规范学习(三)--标识符命名
- 华为软件编程规范学习(十一)--代码测试、维护