编程的艺术
对于外行人甚至有些内行人来说,编程就是一个纯技术性的活。就像是数学正确的结果往往是唯一的一样,计算机也是如此,会毫无偏差的执行派给其的指令,如果出现意外的结果,那不是计算机的错,但是程序编写人自己产生的bug 。。。 程序的执行是准确的计算, 但是编程本身却是一门艺术。
首先,何为艺术?百度百科中的解释如下:艺术是才艺和技术的统称,词义很广,后慢慢加入各种优质思想而演化成一种对美,思想,境界的术语。艺术是用形象来反映现实但比现实有典型性的社会意识形态,包括文学、书法、绘画、摄影、雕塑、建筑、音乐、舞蹈、戏剧、电影、曲艺、电子游戏等。一句话:艺术不仅仅是技术,更是人类思维活动的一种体现。艺术来源于生活却高于生活,艺术的高低也从某一个程度上反应出了对应的人的思想境界的高低。
其实编程也是一种才艺,解决同一个问题不同的人会有不同的办法比如要计算出1+1 = 2,我们可能会选择 1++, 也可能会选择1+1,在某种特殊的情况下也可能会选择1+2-1 这样的运算。在编程达到某一个目的方法有很多种,但是在某种特定的情况下最优的方法往往却只有一种,而这中选择正确的方法的过程也恰恰是一种才艺的体现。不记得是哪位计算机方面的名人曾经说过:“高手和菜鸟之间的差别在于:面对一个复杂的问题,高手会选择尽量少的维度去解决他,菜鸟却会用高维度去解决他用于体现自己有多厉害”。实现高效的算法,完美的架构,这本身就是程序猿的一种才艺。
编程也反映出一个人的境界。
简单说编程能够反映出一个人的性格,比如一个人的自律能力就能在是否严格的准备团队中的编程规范中体现的淋漓尽致。一个程序猿把软件设计的越是功能明确,模块分明耦合度低。越是说明其在生活中做事井井有条,是否原则性强。
全局观作为人生境界的一个重要体现也能够在编程中得到体现。在我才参加工作的时候有个一前辈跟我说过一句话我至今记忆犹新:“一个项目很大,软件很复杂,但是当你对整个软件的架构一个清晰的了解的时候,把你指派到其中的任何一个模块实现中去工作你能都能够很快上手,游刃有余”。后来每当我加入一个新的项目时我都会朝着这个方向努力,事实证明这样做对我的帮助也很大。
作为个人境界的另一个重要体现还有团队协作。软件往往不是一个人开发的,而是需要多人的团队协作,所以代码注释也是一种团队协作的一种重要体现。模块对外接口的设计也是如此,友好的接口可以让其他模块更好工作,更加方便团队中实现其他模块的队友的工作。
所以各位觉得编程是门艺术吗?