工作了几年,有时候回过头总结一下。有点体会。
      大家都是搞软件开发的,不知道有没有意识到软件知识的一体化,系统化的概念和重要性。大学里,我们系统的学习了软件,网络,硬件,通信方面的基础课程,那时可能经验还少,也没什么这方面的意识;现在感觉完全不一样。在这里,我只谈谈软件方面的一块,首先说说纵向,从高级语言到低级语言到底端二进制指令在内存中的动作。
       搞软件开发的人可能都学过汇编语言,c语言,编译原理,c++,java或。net方面的东西。大家在平时用高级面向对象语言开发企业级应用程序的时候,可能都只是开发环境里写程序,编译,调试,运行,测试。而且不规范的公司测试也是很随意的,直接由程序员弄几个例子走走看,实现概定的功能模块就完了;其实在这个过程中,不知道大家写程序的过程有没有意识到系统化和一体化的概念。说到系统化,举个例子,在VS1.1开发环境中写了些C#代码,通过微软的编译环境生成IL,然后通过运行生成二进制指令代码,二进制指令代码通过中央处理器(CPU)调度线程,及中央处理器调度控制器在内存中去实现的一系列动作,以实现高级语言编写的程序想实现的概定的功能。
       上述描述即:高级语言——>编译——>IL——>运行——>二进制代码——>cpu——>控制器——>内存。在这个过程中,不知道我们的同行兄弟们有没有意识到这是一个一体化的过程,有没有在我们的高端高级语言中实现某些功能的同时去想想在底层的内存中二进制指令的一些动作,可能有些人注意到了,但是感觉不可能很清楚在底层的内存中指令发生的一些动作。因为在这个过程中,每个阶段的东西很抽象,而且需要专门的精力去研究。其实在实际的工作当中,也无须或者不可能去做到熟悉,但是要求我们要知道,在实现一些程序功能时采用不同途径实现功能时,相应程序的时间复杂度和空间复杂度会直接影响系统的健壮性,并发性。往往我们在开发一个系统的时候,面临在同一个时间,几千个用户同时登录并运行,导致系统反应的非常缓慢,甚至死机,这个时候我们程序员很难找到问题,也很难去进行调整和修改,这里面涉及到系统程序的优化。不是一般的程序员能够解决的了的。为了防止出现这种问题,就需要要求我们的程序员在高级语言实现功能的时候有一个整体的概念,系统化的概念,以最优的时间复杂度和空间复杂度去实现某个某块的功能。局部优化,整体就优化了,系统也亦优化了。当然这些概念意识是需要一定的工作经验和实际工作中细心的注意,对比和经验总结。站到这个高度了,亦是一位很有功力的程序员了。
     上面主要描述程序实现中的纵向一体化。限于篇幅与时间,对于描述过程中,也没进行过深入的探讨,希望能引起大家的注意。