开头先讲几个例子。
1.此时有几张大小固定的照片(例如手机截图),你需要拼在一起,并且打上水印你会怎么办?
2B青年:打开画图工具或者PS之类的软件,开始一张张合并,加水印。
普通青年:用PS做一张透明模板,然后调好距离,放上水印,每次只需要图片托进去就好了。
程序猿 :写一段代码,自动把某文件夹下面的所有图片拼起来,并且加好水印。
2.确定一堆文档或者代码的行数
2B青年:一个文件一个文件的统计代码行数然后相加。(再2B点就完全是手数了 o(╯□╰)o)
普通青年:手工把所有代码粘到文档里看最后的统计结果
程序猿 :写一个shell脚本把所有的文件拷贝到一个里面看统计结果或者采用正则表达式全局搜索显示行数
暂且就举上面两个例子,也许这些例子你并不一定碰到过,但是其余的很多类似的肯定发生过。之所以想到这个是今天在听【内核恐慌】的时候,听到木遥提前说他很羡慕那些具有工程师特质的人,而此时吴涛就提到说小学的时候自己为了做作业而写了个自动计算四则运算的程序。而木遥听到四则运算则想到的是除了这几种运算外还有什么别的运算吗?也许这就是工程师思维与科学家思维之间的区别,对于同样的四则运算也许大部分人只是觉得这就是老师布置的作业,没什么特别之处,虽然结果是大家都完成了这些任务,但是结果确实完全不同的。有些人在解决问题的时候,看到的只是当前的问题,而有些人看到的则是是不是可以通过一些方法来减轻这种重复劳动,还有些人看到的则是为什么要解决这个问题。
其实简单的来说工程师思维就是一种效率至上的思维方式,这个效率至上并不一定指的是对某个特定任务的完成时间比你短,就如例子一中也许如果只是拼一张照片,直接拼可能只用了3分钟,而写一个小程序用了30分钟,看起来时间要长的多,可是再次遇到相同问题的时候,你还是需要3分钟,而这时候可能工程师只需要3秒钟。也许生活中有些人并不明白我为什么要花这么久的时间折腾手机,能用不就好了,在我看来作为生活中用的最频繁的东西,肯定只有折腾的最顺手才可以用的习惯,例如在dock栏里放一个launch center pro就可以很方便的进行一些日常的操作而不需要四处乱翻,也许设置的过程中会麻烦一些,但是这是一个长期的操作,带来的是以后的大便利。
有点跑题,在这里我们不去探讨科学家思维和工程师思维各自的优缺点,而只是借此来引出一个问题--为什么每个人都需要学一门编程语言。
也许并不是每个人都能够理解计算机的运行原理,内存分布等等复杂的问题,但是现在有太多们高级语言可以去学习,有太多的语言程度是只要能读懂英语就可以读懂代码的地步。门槛已经降低到很大的程度了,随着计算机的普及,我们太多的工作都是依赖计算机来完成的,而会一门编程语言会大大提高我们的工作效率。
在连美国总统奥巴马都可以参加每天编程一小时的活动,也许对于我们更是有时间精力去掌握一门编程语言,让我们的生活更加丰富多彩,我们不需要去达到自己写一个APP或者可以搭建一个网站的程度,只要能够给我们生活带来一点便利,这就是值得了。
在这里,对于编程语言推荐像Python, Ruby这类的具有很大扩展性的教成熟的脚本语言,学着简单,用着舒心。