前几天看了几个论坛上关于编程本质的帖子,有的认为编程的本质就是构建可维护性、可扩展性的程序,有人认为编程就是用coding解决实际问题。当然,每个人都对编程有自己独特的看法。笔者认为,编程是人类特有的具有某种特定目的的智力活动。朋友们可能会给我扔几块砖,“废话,下棋打麻将也是智力活动”。
编程的发展过程以和理解人类生产力的发展过程做对比。人类的生产力进步,经历了漫长的岁月,从刀耕火种到机器化大生产,其间经历了石器时代、青铜器时代、铁器时代、蒸汽机时代等等。而计算机编程从最初的机器码、逐步发展成汇编语言、以及各种高级语言。如果说机器码的年代是编程的石器时代,那么现代的各种高级语言如C++,Java则是编程的机器化大生产时代。编程的目的是什么呢?就是为了解决实际生产生活中各种计算的问题。编程语言的进步,其实是计算能力的提高,也反映了生产力的提高。同样的问题,用汇编代码可能需要几百行,但是用高级语言可能只需要几十行。受到人类的脑力天然的局限,人只能同时关注7个左右的对象,在进行低级语言编程的时候,除了要考虑问题域的逻辑,还要考虑机器的细节,难免生产效率底下;而在使用高级语言开发的时候,通过各种抽象的手段,人们可以用问题域的语言描述解决问题的方案,开发效率就可成十几倍的提高。
无论编程语言和开发工具如何进步,人们始终离不开编程活动。当问题域的逻辑发生变化,必然要经过编程反映到实际的可执行代码上。
当编程从实验室的神坛上走向成千上万的软件开发企业,当编程从艺术创作变成了工业化的软件工程,软件开发的内涵越来越丰富,软件开发所涉及的活动也越来越多,但是编程归根结底,是一种智力活动。