有一家飯店的大廚,燒得一手好菜,經過口碑相傳,客人從五湖四海聞名而來。然而這對飯店的老闆來說,並不單純是一個好消息。因爲客人不是奔着飯店,而是奔着大廚的手藝來的。老闆必須想辦法留住這位大廚,否則他一旦被別人挖走,飯店的生意就會一落千丈了。然而即便老闆不惜血本保證了大廚的忠誠度,風險也依然存在:大廚休息或請假的時候,菜品的口味就無法讓顧客滿意;大廚只有一個,如果想在多個地方開分店,那口味也就不能保證了;大廚再厲害,同時也只能炒一個菜,而顧客越來越多,輸出總是供不應求;大廚年紀大了總是要退休的,如果收徒的話,怎麼繼續保證徒弟的忠誠度呢?有一天,老闆突然悟到,決定菜品口味的是大廚燒菜的過程,而不是大廚本人。如果大廚願意把自己每個菜的菜譜都寫出來,那不就可以請別的廚師來操作了嗎?雖然別人按照菜譜燒出來可能達不到原味的100分,但90分總是能達到的,而這樣的差距是一般的食客無法分辨的。這樣只要菜譜在,飯店菜品的質量就能得到保證,擴張店面、開分店什麼的就都不成問題了。於是老闆和大廚談了一個晚上,說服了他用菜譜技術入股。幾年後,飯店生意越來越好,開了無數家分店,老闆賺了很多錢,大廚也得到豐厚的分成,不用再天天靠手藝喫飯了。

什麼是編程?

所謂程序,就是爲了實現一個需求而設計的邏輯流程。大廚的菜譜就是程序。正是因爲有程序作爲媒介,我們纔可以分離設計者、調用者和執行者的角色。雖然程序的執行效果未必能讓其設計者滿意,但它已經可以脫離設計者的時間和空間侷限而存在,可以被其他人執行、驗證和改進。

所謂編程,就是指編寫程序。將燒菜的過程寫成菜譜,本質上就是在編程。通過編程,我們更加透徹地理解並闡述了事物的本質,讓曾經專屬於某個人、某個團體、某個地方甚至某個時刻的東西,得以獨立的存在和發展。從這個角度來講,說編程是在創造生命也不爲過。

編程可以說是一種標準化的寫作。標準化保證了服務和產品的質量,也使大規模複製和擴張成爲可能。肯德基正是依賴其詳盡到炸薯條的油溫秒數的食品加工手冊,纔將分店開滿世界各地的。

我們每天的生活,都在和各種技術產品和服務打交道,比如導航、搜索引擎、聊天軟件……你可曾想過,這些產品和服務背後的原理是什麼?相信除了程序員羣體之外,絕大多數人不會去想這些問題,因爲:

這跟我沒有關係啊!我又不去幹這行……應該只有專業人士才能搞懂吧,我可不行!能用就行了,想那麼多幹啥,多累呀!

他們這麼想並沒有錯,因爲編程的本質就是:設計一個邏輯流程來實現指定的需求,使調用者無需瞭解實現細節即可達到目的。

由於程序和編程的廣義概念太過籠統,爲不導致概念混淆,下文中提到的“程序”和“編程”,特指使用計算機編程語言編寫,由機器來運行的程序。

解放時間和注意力

假設你已經在某崗位工作了一段時間,根據經驗總結出來每天下班前有下面三件事需要做:

A、在公司內網系統查詢某業務當天的數據(約10分鐘)B、整理成日報表並存檔(約15分鐘)C、把幾個核心數據用電子郵件發送給領導(約5分鐘)

你可以在認真梳理過之後,將這個流程寫下來,貼在辦公桌前,或者記在腦子裏。這自然比那些不知道流程的人要強得多,你可以確保每個步驟都不被遺漏地執行到(然而這並不能完全保證)。雖然你已經花了時間認真思考過,但每天這樣枯燥乏味的流程都需要自己執行一遍……等等,這活我不可以找個祕書來幹嗎?

當然可以,僱傭他人是一種用金錢換時間的解決方案。但是這同時又引入了許多新的問題:

你需要花錢(廢話)你需要把要做的事解釋給祕書聽,並確保他能聽懂(溝通成本)祕書下班或休假時,這些事你還得自己做(有時間限制)你要爲祕書犯的錯誤承擔責任(質量得不到保證)每次祕書犯了錯誤,你都需要進行教育(培訓成本)祕書會直接接觸業務數據和信息,難保有泄密的可能(安全隱患)換一個祕書,以上的事情都得再來一遍……

這不是把事情搞複雜了嗎?人的成本太高,提供的服務又不可靠。而如果你會編程的話,也許你可以:

編一個小程序來完成查數據、做報表、發郵件的流程,再配置一個定時任務每天自動執行;謹慎一點的話,可以讓程序先發到自己的郵箱,檢查沒有問題後再轉發給領導;必要的話,還可以讓程序在運行出現意外時給你的郵箱或手機發報警通知;如果你願意,甚至可以給內網辦公系統直接加上郵件報表這個功能……

假設你原本手工做完ABC流程需要30分鐘,那麼你的程序每執行一次,就爲你節省了30分鐘的時間。假如你寫程序用了三個小時,那麼一週就能收回成本,以後全部都是淨賺的。如果程序運行的時間足夠長,那麼單次運行的均攤成本將趨近於零。

可以看出,編程是一種用時間換時間的解決方案。

當然,你需要將要做的流程寫成機器能讀懂的程序;如果需求發生變化,你需要對應地修改程序;如果運行時出了BUG,你需要調試修復……但更重要的是:程序不拿工資,不可能辭職,不需要休息,不會鬧情緒,不可能犯錯,只要你的流程正確,依賴的資源不出問題,它就可以7*24小時一直運轉下去。

通過編程,你可以將那些枯燥無味的重複性工作中的部分甚至全部,交由機器來接管,這樣就可以將你的時間和注意力從具體的事務中解放出來,去做更有價值的事情。比如研究和優化工作流程,或者陪伴家人,又或者去讀一本書……

體驗“開掛”的人生

要知道,身體並不強壯的人類之所以能征服地球,就是因爲我們會創造並使用工具來突破生理的侷限,做到原本不可能做到的事情。在即將到來的全信息時代,編程將是創造工具,甚至使用工具的主要方法。我們天天都在使用的軟件和APP,不管是文字處理,K歌軟件還是搜索引擎,都已經和我們的生活融爲一體,成爲我們生命的延伸。

然而大多數人都是在被動地等待別人來滿足自己的需求。他們會使用通過朋友推薦、廣告宣傳等各種渠道推送給自己的軟件,然後感慨一下:“哇,居然還可以這樣!”他們只會使用已有軟件提供的標準功能,而一些個性化的特殊需求就只能因爲軟件不支持放棄掉了。這就和穿衣服一樣,大多數人只會買標準尺寸穿,如果這裏緊那裏松,這裏長那裏短,也就只能忍了。

還有少部分人會主動考慮如何去滿足自己的特殊需求。他們會想:“如果有XXX功能就好了……”他們會主動去尋找能滿足自己需求的軟件,研究軟件的個性化配置,或者給軟件的開發者提功能建議。同樣,追求個性的人可能會找裁縫爲自己量身訂做或者修改衣服,使其儘可能地適合自己。

只有極少數的人有能力自己去實現那些別人不能滿足的需求。他們能在原有軟件的基礎上開發插件,對軟件進行二次開發,甚至寫出一個全新的軟件。同樣,追求完美的人可能會親自設計衣服,並把一件衣服不停地改來改去,直到自己徹底滿意爲止。

如果說學好英語能爲你的世界打開一扇門,讓你擁有更多的選擇的話;那麼學好編程就能讓你有機會以“上帝視角”來認識和改造這個世界,並擁有幾乎無限的可能性。因爲在現實中的一切最終都會被信息化,而你可以通過編程來對信息做任何形式的加工和處理,只要你想得到,就能做得到。

你想體驗“開掛”的人生嗎?那就趕緊開始學編程吧。

在未來更好地生存

半個世紀以前,美國有70%的人口在農場工作;隨着自動化耕種的大面積普及,現在只剩下不到1%。 ——凱文.凱利《必然》

從登錄月球到生產納米機器人,我們已經通過設計並使用各種機器完成了人類原本不可能親手做到的各種事情。迄今爲止,人類從事的簡單重複性的工作(如洗衣、耕種、製造等)已經幾乎完全被機器接管,人類的工作方向已經轉向對機器的研發和維護。而那些需要複雜知識和精密操作的工作(比如駕駛汽車、外科手術等)也正在被機器逐步接管。

洗衣機解放了家庭主婦們的雙手,全自動流水線則解僱了工廠裏的大部分工人。只有在一些正享受人口紅利的發展中國家(比如中國和印度),由於技術引入成本比人工成本高,目前體力勞動者還有一些生存的空間。但技術的成本會不可阻擋地快速持續下降,而人口紅利的窗口期將快速消失,拐點很快就會到來。

資本是具有意志的,且不爲人性所改變。當產出的質量不變,而技術的成本顯著低於人工成本時,幾乎所有的體力勞動者都會失業。機器不知疲倦,不會抱怨,幹得比人又快又好又省錢,人類怎麼可能和機器競爭?

與此同時,人工智能正在將逐漸接管人類的簡單重複性思考活動(如尋路、翻譯等),人類只需要下達命令、制定原則和做出選擇即可。人工智能甚至已經進入了那些被人們認爲是“人之所以爲人”的領域:寫作、編曲、繪畫……

Google的AlphaGo戰勝李世石是一個里程碑式的事件,它證明了人工智能已經可以在人類最擅長的思考領域超越人類。現在最優秀的棋手都在向AI學習下棋,職業棋手和AI進行日常訓練成了常態。純機比純人強,人機比純機強,這早已是棋界的共識。

當人工智能在某個思考領域的能力接近或超過人類(這在很多領域已經做到了 )時,而其成本極其低廉(這是早晚的事)時,在資本意志的作用下,這個領域就會將不可逆地被人工智能迅速佔領。我們今天已經習慣了使用計算器來取代大腦進行數字計算,在不遠的將來,我們也會習慣將原本需要自己思考的許多問題交給由無數程序組成的人工智能來處理。在可以預見的未來,所有構建在經驗和技能基礎上的非創造性工作崗位都會消失,人類的工作方向會轉變成對人工智能的研發和維護。

人工智能全面普及的時代正在以光一樣的速度向我們飛奔,可能下一秒就將我們遠遠地甩在身後,連車尾燈都看不到。屆時,幾乎所有的工作都將和人工智能密不可分。只有那些理解人工智能,能夠很好地和人工智能合作,並幫助改進人工智能的人,才能在那個時代更好地生存下去。

每個人都應該儘早開始學習編程,我的孩子起步太晚了,我覺得應該在教他們ABC和顏色的時候就開始。——美國第44任總統 奧巴馬 [2]

我知道你會問……

可是我又不準備當程序員啊,有必要學編程嗎?

你可能會開車,還是個老司機,很會享受駕駛的樂趣,但你未必願意去當一名出租車司機吧?同理,學習編程不一定非要做程序員,但卻能使你擁有全新的視角、深入的思維方式和效率優化的思維,這都將成爲你重要的軟實力。在不久的將來,編程將會變成像英語、駕駛一樣人人必備的技能。到那時,你希望自己是一名老司機,還是搭車族呢?

“學這個有用嗎?”其實是一個很可怕的想法。由於很多東西現在看起來並沒有什麼用,大多數人就放棄了學習,而只有少數人會抱着“學學看能有什麼用”的念頭去嘗試。在之後的某一天,真正需要這項技能和知識時,那些選擇放棄的人只能感慨“要是當時……就好了!”,而選擇學習的人則會驚喜地發現“哇,原來還能用在這裏!”……所謂的“驚喜”和“運氣”其實就是這樣一回事:在不知不覺間,已經提前做好了準備。

那我能不能現在努力賺錢,然後僱一個專業的程序員呢?

不錯,你是可以找一個程序員來實現你的想法,但我們之前請祕書時遇到的諸多問題又會接踵而來。更重要的是,如果你不會編程,你可能連個靠譜沾邊的想法都提不出來。就好比沒有見過汽車的人,只會想着讓別人爲他造一輛更快的馬車。只有在理解了某個事物的原理之後,這個事物的概念才能在你的腦中清晰起來,才能真正融入你的認知結構中。

有了清晰的概念,你才能對其進行思考,判斷它能夠用來做什麼,不能做什麼。如果概念不清晰,你甚至都無法講清楚自己的需求,更難和程序員進行溝通和合作。每一位程序員在面對“給我做一個淘寶”這樣的需求時,都會崩潰的。

我的英語很爛,能學會編程嗎?

英語不是學習編程的瓶頸,關鍵在於理解其概念和原理,以及改變思維方式。雖然幾乎所有編程語言的關鍵字都是英語,但常用的關鍵字也就那麼幾個,熱門語言的相關書籍也都有譯版。如果你願意的話,甚至可以用中文來給程序裏的變量、函數和命名。正如只要你認得start / save / load / quit這幾個單詞,就能去玩英文遊戲;只要會說sorry和how much,就能去國外旅遊一樣。

後話

曾經何時,想要建立一個網站服務,需要購買動轍數萬元的專業服務器,支付昂貴的機房託管和帶寬租賃費用,聘請專業的開發人才或團隊來研發,再通過廣告和運營活動去拉攏用戶……門檻如此之高,使絕大多數人望而卻步,只有企業才能負擔得起。

而現如今,雲服務器甚至比家裏的寬帶都便宜了,各種開源技術唾手可得,各種開放平臺提供了免費的用戶和渠道,一個APP通過社交網絡可能瞬間火遍全國……有了樹莓派這樣超便宜的卡片電腦,再加上現在各種家電都在向智能化發展,想通過編程在實現自己的一些小創意,真是不要太簡單。

我們正身處一個只要願意思考,就能改變世界的時代。那麼你是願意去改變世界,還是等待被世界改變呢?

學習編程,入門高薪有前景的IT互聯網行業就從牛耳教育開始!牛耳軟件學院2018年招生火熱進行中,Java、.net、軟件測試、PHP、C/C++、前端與移動開發、H5+全棧工程師等多個專業任你選擇,全程大咖級講師親授,爲你解析IT行業發展趨勢,就業前景,幫你瞭解編程,輕鬆入門,更快一步成爲技術大牛!

查看原文 >>
相關文章