写给想成为程序员


  对计算机好奇,对计算机痴迷,你自然就会自己学会写程序。

     很多人都想学计算机软件,却很少思考学了做什么,为了赚钱么?如果你仅仅把学习作为生存的工具。那么我认为学习软件开发不是最好的选择。

     如果不是兴趣,软件开发是一个很辛苦的事情,需要长期的坚持,绝对不是赚钱的最好方法。

     我虽然没有在大公司做过软件开发,也没有参加过什么有名的系统开发,但是我一直在学习计算机相关方面的知识,一学就是十几年,变成了一种习惯,也变成了一种爱好。我对计算机硬件和软件的运行原理非常好奇,总是自己摸索去弄明白其中的道理,因此我学习的进度是很慢的,但是我却发现了软件知识之外的很多道理。

     一个科学家,肯定是一个哲学家,一个人如果想有所成就,那么就必须自己思考,思考关于事物之间的联系,关于事物之间的通性。软件技术中最有价值的部分就是对事物的共性的抽象,因为软件要解决的就是智能和共享。一个程序员,如果仅仅追求对软件编程技巧的研究,那么再怎么样也不会有多大的成就。

     你如果想编写好一个软件,你必须非常清楚编写软件的意义,很多程序员并不思考软件用户的行为,而仅仅是以最灵活的方式最低的成本完成某个功能,我见过太多的软件系统本身bug并不多,功能也很丰富,但是使用的时候你会发现非常不顺畅。

    我见过很多程序员会自己开发自己的架构,包括我自己。更有很多公司开发一些定制型的产品。但是往往是系统经过多次的改版后,系统要么面目全非,要么变得无法维护。程序员有很多的陋习,在软件开发中他们自己并不觉得,因此他们开发的产品也自然包含这些陋习。

   程序员的修炼:

  1)从基本的程序语言学起,但是不拘泥于某个语言。因为程序语言的目的是完成一个软件功能。

  2)有时间就学习计算机硬件基础,从计算机组成原理开始,学学单片机,然后理解计算机体系结构。

  3)更深一步了解电子电路的原理,从门电路原理到芯片制造原理,从而理解单片机的内部构成以及外围电路的设计。

  4)更深一步了解电路设计原理,学学模拟电路的设计,对电性能的理解,知道电路板的构成,直觉性地知道能源与信息的流动。

  5)学习汇编语言,理解编译原理,了解程序编译、链接、加载的过程,从而发现你编写的软件仅仅是操作系统代码的延伸。

  6)有了对单片机和计算机体系结构的理解,就可以深入操作系统实际构建的分析,当然最好的方式就是Linux,因为有源代码,有很多资料。

  7)通过硬件、软件两条线路的学习,然后通过操作系统将它们结合到一起,你发现计算机系统涉及的知识如此庞大,发现凭自己个人之力是如此渺小。

  8)现在你发现可以自己设计电路板、自己设计计算机系统,并自己写程序驱动硬件或者修改操作系统满足自己的需要,你发现原来无论大型服务器还是手机,原理并不高深,而难的是以最低的成本开发出高性能而且稳定的产品。    

  9)当你了解了这些基础知识后,你发现原来理论最终还是决定高度的知识,你发现原来看来很空洞的数据结构、算法、操作系统原理、信息学这些原来都那么高深,如果你开始就看这些纯理论的东西,会完全失去信心。

   网易公开课中的“电和磁”、“电子电路”、“编程范式”、“算法”、“信息学” 等课程相当经典。


我阅读的书籍很多,关于电路、软件、单片机、操作系统、企业管理、财务会计、哲学、心理学。年龄大了,你会发现所有的这些知识都有如此多的关联,例如你要写一个企业管理的软件,你就会跟客户交流,你需要理解客户的管理模式、他们的物流、财务模式,你必须清楚客户心理怎么想,你还要将这些要实现的软件功能抽象成计算机可以实现的数据处理模式。如果你对计算机的原理不清楚,那么你不会找到最好的方法来完成软件功能。

  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值