開頭先講幾個例子。
1.此時有幾張大小固定的照片(例如手機截圖),你需要拼在一起,并且打上水印你會怎么辦?
2B青年:打開畫圖工具或者PS之類的軟件,開始一張張合并,加水印。
普通青年:用PS做一張透明模板,然后調好距離,放上水印,每次只需要圖片托進去就好了。
程序猿 :寫一段代碼,自動把某文件夾下面的所有圖片拼起來,并且加好水印。
2.確定一堆文檔或者代碼的行數
2B青年:一個文件一個文件的統計代碼行數然后相加。(再2B點就完全是手數了 o(╯□╰)o)
普通青年:手工把所有代碼粘到文檔里看最后的統計結果
程序猿?。簩懸粋€shell腳本把所有的文件拷貝到一個里面看統計結果或者采用正則表達式全局搜索顯示行數
暫且就舉上面兩個例子,也許這些例子你并不一定碰到過,但是其余的很多類似的肯定發生過。之所以想到這個是今天在聽【內核恐慌】的時候,聽到木遙提前說他很羨慕那些具有工程師特質的人,而此時吳濤就提到說小學的時候自己為了做作業而寫了個自動計算四則運算的程序。而木遙聽到四則運算則想到的是除了這幾種運算外還有什么別的運算嗎?也許這就是工程師思維與科學家思維之間的區別,對于同樣的四則運算也許大部分人只是覺得這就是老師布置的作業,沒什么特別之處,雖然結果是大家都完成了這些任務,但是結果確實完全不同的。有些人在解決問題的時候,看到的只是當前的問題,而有些人看到的則是是不是可以通過一些方法來減輕這種重復勞動,還有些人看到的則是為什么要解決這個問題。
其實簡單的來說工程師思維就是一種效率至上的思維方式,這個效率至上并不一定指的是對某個特定任務的完成時間比你短,就如例子一中也許如果只是拼一張照片,直接拼可能只用了3分鐘,而寫一個小程序用了30分鐘,看起來時間要長的多,可是再次遇到相同問題的時候,你還是需要3分鐘,而這時候可能工程師只需要3秒鐘。也許生活中有些人并不明白我為什么要花這么久的時間折騰手機,能用不就好了,在我看來作為生活中用的最頻繁的東西,肯定只有折騰的最順手才可以用的習慣,例如在dock欄里放一個launch center pro就可以很方便的進行一些日常的操作而不需要四處亂翻,也許設置的過程中會麻煩一些,但是這是一個長期的操作,帶來的是以后的大便利。
有點跑題,在這里我們不去探討科學家思維和工程師思維各自的優缺點,而只是借此來引出一個問題--為什么每個人都需要學一門編程語言。
也許并不是每個人都能夠理解計算機的運行原理,內存分布等等復雜的問題,但是現在有太多們高級語言可以去學習,有太多的語言程度是只要能讀懂英語就可以讀懂代碼的地步。門檻已經降低到很大的程度了,隨著計算機的普及,我們太多的工作都是依賴計算機來完成的,而會一門編程語言會大大提高我們的工作效率。
在連美國總統奧巴馬都可以參加每天編程一小時的活動,也許對于我們更是有時間精力去掌握一門編程語言,讓我們的生活更加豐富多彩,我們不需要去達到自己寫一個APP或者可以搭建一個網站的程度,只要能夠給我們生活帶來一點便利,這就是值得了。
在這里,對于編程語言推薦像Python, Ruby這類的具有很大擴展性的教成熟的腳本語言,學著簡單,用著舒心。