笔者大学本科毕业之后开始从事IT相关工作,至读研毕业工作,差不多6年了。在学习工作中,对于软件编程有一些心得体会想与大家分享探讨。
    
* 此系列想写些什么?
        笔者认为,若要对软件编程研究透彻,需知其然更知其所以然。因此,本系列想从计算机硬件开始,探讨一些计算机方面的思想与方法。从组成计算机的半导体,到软件编程的思想,自底向上的描述笔者在学习计算机软件时的心得体会。
    
* 真正的前言
        在大四×××时,笔者报名了本校一位著名的数学老师的数学×××复习班。这位老师的一些思想方法,依然在笔者心里有着深刻的印象。他说了几个问题:1.人们为什么要研究数学?数学是一门工具,研究数学是为了解决实际的物理问题,比如牛顿发明了微积分,是为了解决瞬时速度的定义与计算。2.数学是如何解决实际问题的?首先,对于一个物理现象,需要用数学的方式来描述它(即抽象);其次,通过数学的处理方法进行计算,从而得出一个数学描述的结论;最后,用此结论来进行物理解释(反抽象)。
        计算机在某些方面与数学很类似。计算机的发明也是为了解决实际问题,在通过用计算机解决问题的过程中,往往也需要抽象问题,计算解决问题,显示结果三步。软件编程,笔者认为就是一步步分解问题,抽象问题,解决问题的过程。而这三步,也是一个反复迭代的过程。从单晶硅,发明出半导体;根据半导体的特性,发展出模拟电路与数字电路,同时发明了二进制;基于数字电路,发明了CPU、内存、硬盘等硬件设备,把它们互联,发明了计算机,同时打开了程序世界的大门;为了更好的管理硬件资源,同时抹平不同的计算机硬件之间的差异,发展出了操作系统;而为了抹平不同的操作系统之间的差异,发展出了各种各样的虚拟机。笔者想根据以上脉络,自底向上的慢慢梳理讨论各个阶段的抽象思想以及心得体会,大体分为三部分:1、计算机硬件部分;2、计算机软件设施部分(从设备驱动到操作系统);3、计算机软件编程部分。