跟我学编程(2)

       我原来学的是机械设计,后来才因为兴趣自学了些编程知识,虽然工作的过程非常辛苦,但是自学也给予了更多的自信。

      我的计算机学习和工作生涯,是从学习编程语言直接开始的,直到工作了4年之后,对于计算机的基础知识基本还是没有接触过,对于电子电路、计算机原理、接口通信一点概念也没有,甚至对于操作系统原理也没有任何了解。 虽然通过项目开发积累了一些技术技巧和软件开发的经验,但是由于对于基础知识的缺乏,工作过程也是相当艰苦的,而且在技术方面的进步也很慢。

       在2006年某个偶然的机会,发现一个论坛中一些根本没有学过电子的机械爱好者在做雕刻机,而且控制电路板都是自己在弄。于是我在惊讶之余,确定自己应该有能力可以自学关于电子方面的知识,从简单的电路原理一直到单片机原理,购买一个51单片机的学习板,发现只要实践,学习就变得有趣味、有效率。虽然只是偶尔学学,两年后回过头来看看,从前觉得密密麻麻的电路板,现在已经不再恐惧。开始可以从硬件的角度理解程序的概念。

       如果你只想做一个简单的程序员,那么最快的方法就是直接学习编程语言,同时学习软件开发的一些基本概念,如面向对象编程、web模式原理、windows消息机制。如果你想做一个高效的程序员,最好还是学学计算机的硬件基础知识。

       但是无论做什么技术工作,即使是对于生活,学习《离散数学》是非常有意义的一件事情,它可以让你用更加严密的逻辑推理思考问题。当一个软件中遇到的逻辑比较复杂的时候,很多程序员根本不知从何着手,而一般只是按照用户描述实现了基本的程序功能,然后实际使用的时候就漏洞百出,于是进行不断地修改完善,但是由于缺乏严格的逻辑描述,一处的修改可能导致更多无法意料的问题发生。

       因此进行软件编程时,首要的是能把问题描述清楚,然后进行抽象,把很多类似的业务逻辑变成一个程序逻辑。

      例如有一个业务需求,需要实现将数据传输到服务器,经过计算后,然后传回给本地机器。

      首先的进行业务功能分析:

         1)本地数据保存在哪个地方?

         2)  数据应该按照什么方式封装?

         3)通过什么途径上传到服务器?

         4)服务器的接收者采用什么通信协议?

         5)传回的数据格式会是怎样的?

         6)数据接收到本地后,应该保存到哪里?

      然后按照当前的软硬件环境,确定通信协议、通信速度、数据包大小、开发工具等。

      对这个业务过程进行过程分解,再抽象。

      例如数据上传过程可以分解为:1)数据按包分解,2)数据封装,3)数据上传。

      数据接收过程可以分解为:1)数据接收,2)数据校验,3)数据解析,4)数据组装

      如果我们把所有过程都写在一起(一个main函数中),当然一样可以实现需求,但是如果我们的通信协议发生变化、数据封装格式发生变化,就必须重写整个程序。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值