什么是编程?
在洗衣机出现之前,人们只能用手来洗衣服,需要经过浸泡、揉搓、漂洗、拧干的一系列流程,每天都需要花掉好几个小时。
而洗衣机的发明解放了家庭妇女的双手,让她们可以把原本用来洗衣服的时间去做其他事情。随着洗衣机的不断迭代升级,洗衣服的整个流程终会被人们遗忘,只有设计洗衣机的工程师们知道。
所谓程序,就是为了实现一个需求而设计的逻辑流程。大厨的菜谱和洗衣机的工作流程都是程序,只不过前者由人来执行,而后者由机器来执行。
正是因为有程序作为媒介,我们才可以分离设计者、调用者和执行者的角色。虽然程序的执行效果未必能让其设计者满意,但它已经可以脱离设计者而存在,可以被其他人执行、验证和改进。
所谓编程,就是指编写程序。将烧菜的过程写成菜谱,本质上就是在编程。通过编程,我们更加透彻地理解并阐述了事物的本质,让曾经专属于某个人、某个团体、某个地方甚至某个时刻的东西,得以独立的存在和发展。从这个角度来讲,说编程是在创造生命也不为过。
编程可以说是一种标准化的写作。标准化保证了服务和产品的质量,也使大规模复制和扩张成为可能。KFC 正是依赖其详尽到炸薯条的油温秒数的食品加工手册,才将分店开满世界各地的。
陶华碧如果不能将她的辣酱配方和制作过程清楚地描述出来,交由标准化生产线去制造的话,那么今天“老干妈”多只是一个小乡村里的作坊级产品,不可能走上我们的餐桌。
我们每天的生活,都在和各种技术产品和服务打交道,比如导航、搜索引擎、聊天软件……你可曾想过,这些产品和服务背后的原理是什么?
相信除了程序员群体之外,绝大多数人不会去想这些问题,因为编程的本质就是:设计一个逻辑流程来实现指定的需求,使调用者无需了解实现细节即可达到目的。
假设你原本手工做完 ABC 流程需要半个小时,那么你的程序每执行一次,就为你节省了半个小时的时间。假如你写程序用了三个小时,那么一周就能收回成本,以后全部都是净赚的。
如果程序运行的时间足够长,那么单次运行的均摊成本将趋近于零。可以看出,编程是一种用时间换时间的解决方案。
当然,你需要将要做的流程写成机器能读懂的程序;如果需求发生变化,你需要对应地修改程序;如果程序运行时出了 BUG,你需要调试修复……但更重要的是:程序不拿工资,不可能辞职,不需要休息,不会闹情绪,不可能犯错,只要你的流程正确,依赖的资源不出问题,它就可以 7*24
小时一直运转下去。
每当我们通过编程实现了一个需求,就好比造出了一把锤子。今后你遇到类似的问题,都可以拿这个锤子来解决。
当然有时会遇到锤子不称手的情况,需要改进和调整。但在大多数情况下,这个锤子都是可以直接拿来用的。也就是说:完全相同的问题,你只需要解决一次就好,不会浪费时间在重复的工作上。
通过编程,你可以将那些枯燥无味的重复性工作交由机器来接管,这样就可以将你的时间和注意力从具体的事务中解放出来,去做更有价值的事情。比如研究和优化工作流程,或者陪伴家人,又或者去读一本书……
体验“开挂”的人生
喜欢网游的朋友可能都知道外挂这东西,这是指和游戏一起运行、为了提升游戏体验的小程序。外挂一般分为两种,一种是在游戏系统框架内简化玩家操作的辅助性外挂,提供如自动拾取、自动打怪、改键之类的功能;另一种是利用游戏漏洞营造不平等的作弊性外挂,提供如开图、加速、之类的功能。
当我们说某个人“开挂”时,其实是在说他的表现明显超出正常的范畴。我们可以想象一下,当原始土着碰到端着冲锋枪,乘着降落伞从天而降的美国大兵时,大概就是一种“我 X,这哥们开挂了吧?”的感觉。
要知道,身体并不强壮的人类之所以能征服地球,就是因为我们会创造并使用工具来突破生理的局限,做到原本不可能做到的事情。
在即将到来的全信息时代,编程将是创造工具,甚至使用工具的主要方法。我们天天都在使用的软件和 APP,不管是文字处理,K 歌软件还是搜索引擎,都已经和我们的生活融为一体,成为我们生命的延伸。通过使用这些软件,我们可以不断突破自己经验和能力上的局限,我们随时都在给自己“开挂”。
然而大多数人都是在被动地等待别人来满足自己的需求。他们会使用通过朋友推荐、广告宣传等各种渠道推送给自己的软件,然后感慨一下:“哇,居然还可以这样!”他们只会使用软件提供的标准功能,而一些个性化特殊需求如果软件不支持的话就只能放弃掉了。
这就和穿衣服一样,大多数人只会买标准尺寸穿,如果这里紧那里松,这里长那里短,也就只能忍了。
还有少部分人会主动考虑如何去满足自己的特殊需求。他们会想:“如果有很多的功能就好了……”他们会主动去寻找能满足自己需求的软件,研究软件的个性化配置,或者给软件的开发者提功能建议,当然如果开发者不鸟他,也就没辙了。
同样,追求个性的人可能会找裁缝为自己量身订做或者修改衣服,使其尽可能地适合自己。当然裁缝比较欢迎大众化的需求,一些小众化的需求本来可以实现,却会因为各种原因被拒绝。
只有极少数的人有能力自己去实现那些别人不能满足的需求。他们能在原有软件的基础上开发插件,对软件进行二次开发,甚至写出一个全新的软件。
同样,追求完美的人可能会亲自把关设计、选材、加工等各个环节,并把一件衣服改过来改过去,直到自己彻底满意为止。
如果说学好英语能为你的世界打开一扇门,让你拥有更多选择的话;那么学好编程就能让你有机会以“上帝视角”来认识和改造这个世界,并拥有几乎无限的可能性。
因为在现实中的一切终都会被信息化,而你可以通过编程来对信息做任何形式的加工和处理,只要你想得到,就能做得到。
你想体验“开挂”的人生吗?那就赶紧开始学编程吧。