為什么你該開始學(xué)習(xí)編程了?
有一家飯店的大廚,燒得一手好菜,經(jīng)過口碑相傳,客人從五湖四海聞名而來。然而這對(duì)飯店的老板來說,并不單純是一個(gè)好消息。因?yàn)榭腿瞬皇潜贾埖?,而是奔著大廚的手藝來的。老板必須想辦法留住這位大廚,否則他一旦被別人挖走,飯店的生意就會(huì)一落千丈了。然而即便老板不惜血本保證了大廚的忠誠(chéng)度,風(fēng)險(xiǎn)也依然存在:
大廚休息或請(qǐng)假的時(shí)候,菜品的口味就無法讓顧客滿意;
大廚只有一個(gè),如果想在多個(gè)地方開分店,那口味也就不能保證了;
大廚再厲害,同時(shí)也只能炒一個(gè)菜,而顧客越來越多,輸出總是供不應(yīng)求;
大廚年紀(jì)大了總是要退休的,如果收徒的話,怎么繼續(xù)保證徒弟的忠誠(chéng)度呢?
有一天,老板突然悟到,決定菜品口味的是大廚燒菜的過程,而不是大廚本人。如果大廚愿意把自己每個(gè)菜的菜譜都寫出來,那不就可以請(qǐng)別的廚師來操作了嗎?雖然別人按照菜譜燒出來可能達(dá)不到原味的100分,但90分總是能達(dá)到的,而這樣的差距是一般的食客無法分辨的。這樣只要菜譜在,飯店菜品的質(zhì)量就能得到保證,擴(kuò)張店面、開分店什么的就都不成問題了。
于是老板和大廚談了一個(gè)晚上,說服了他用菜譜技術(shù)入股。幾年后,飯店生意越來越好,開了無數(shù)家分店,老板賺了很多錢,大廚也得到豐厚的分成,不用再天天靠手藝吃飯了。
什么是編程?
在洗衣機(jī)出現(xiàn)之前,人們只能用手來洗衣服,需要經(jīng)過浸泡、揉搓、漂洗、擰干的一系列流程。而全自動(dòng)洗衣機(jī)的發(fā)明使洗衣服的工作人人都可以輕松完成,從而可以將原本用來洗衣服的時(shí)間解放出來去做其他事情。隨著洗衣機(jī)的不斷迭代升級(jí),洗衣服的整個(gè)流程最終會(huì)被人們遺忘,只有設(shè)計(jì)洗衣機(jī)的工程師們了解流程,因?yàn)樗麄冐?fù)責(zé)對(duì)其進(jìn)行優(yōu)化和改進(jìn)。
所謂程序,就是為了實(shí)現(xiàn)一個(gè)需求而設(shè)計(jì)的邏輯流程。大廚的菜譜和洗衣機(jī)的工作流程都是程序,只不過前者由人來執(zhí)行,后者由機(jī)器來執(zhí)行。正是因?yàn)橛谐绦蜃鳛槊浇椋覀儾趴梢苑蛛x設(shè)計(jì)者、調(diào)用者和執(zhí)行者的角色。雖然程序的執(zhí)行效果未必能讓其設(shè)計(jì)者滿意,但它已經(jīng)可以脫離設(shè)計(jì)者的時(shí)間和空間局限而存在,可以被其他人執(zhí)行、驗(yàn)證和改進(jìn)。
所謂編程,就是指編寫程序。將燒菜的過程寫成菜譜,本質(zhì)上就是在編程。通過編程,我們更加透徹地理解并闡述了事物的本質(zhì),讓曾經(jīng)專屬于某個(gè)人、某個(gè)團(tuán)體、某個(gè)地方甚至某個(gè)時(shí)刻的東西,得以獨(dú)立的存在和發(fā)展。從這個(gè)角度來講,說編程是在創(chuàng)造生命也不為過。
編程可以說是一種標(biāo)準(zhǔn)化的寫作。標(biāo)準(zhǔn)化保證了服務(wù)和產(chǎn)品的質(zhì)量,也使大規(guī)模復(fù)制和擴(kuò)張成為可能。KFC正是依賴其詳盡到炸薯?xiàng)l的油溫秒數(shù)的食品加工手冊(cè),才將分店開滿世界各地的。陶華碧如果不能將她的豆瓣醬配方和制作過程清楚地描述出來,交由標(biāo)準(zhǔn)化生產(chǎn)線去制造的話,那么今天“老干媽”最多只是一個(gè)小鄉(xiāng)村里的作坊級(jí)產(chǎn)品,不可能走上我們的餐桌。
我們每天的生活,都在和各種技術(shù)產(chǎn)品和服務(wù)打交道,比如導(dǎo)航、搜索引擎、聊天軟件……你可曾想過,這些產(chǎn)品和服務(wù)背后的原理是什么?相信除了程序員群體之外,絕大多數(shù)人不會(huì)去想這些問題,因?yàn)椋?/p>
這跟我沒有關(guān)系啊!我又不去干這行……
應(yīng)該只有專業(yè)人士才能搞懂吧,我可不行!
能用就行了,想那么多干啥,多累呀!
他們這么想并沒有錯(cuò),因?yàn)榫幊痰谋举|(zhì)就是:設(shè)計(jì)一個(gè)邏輯流程來實(shí)現(xiàn)指定的需求,使調(diào)用者無需了解實(shí)現(xiàn)細(xì)節(jié)即可達(dá)到目的。
由于程序和編程的廣義概念太過籠統(tǒng),為不導(dǎo)致概念混淆,下文中提到的“程序”和“編程”,特指使用計(jì)算機(jī)編程語(yǔ)言編寫,由機(jī)器來運(yùn)行的程序。
解放時(shí)間和注意力
假設(shè)你已經(jīng)在某崗位工作了一段時(shí)間,根據(jù)經(jīng)驗(yàn)總結(jié)出來每天下班前有下面三件事需要做:
A、在公司內(nèi)網(wǎng)系統(tǒng)查詢某業(yè)務(wù)當(dāng)天的數(shù)據(jù)(約10分鐘)
B、整理成日?qǐng)?bào)表并存檔(約15分鐘)
C、把幾個(gè)核心數(shù)據(jù)用電子郵件發(fā)送給領(lǐng)導(dǎo)(約5分鐘)
你可以在認(rèn)真梳理過之后,將這個(gè)流程寫下來,貼在辦公桌前,或者記在腦子里。這自然比那些不知道流程的人要強(qiáng)得多,你可以確保每個(gè)步驟都不被遺漏地執(zhí)行到(然而這并不能完全保證)。雖然你已經(jīng)花了時(shí)間認(rèn)真思考過,但每天這樣枯燥乏味的流程都需要自己執(zhí)行一遍……等等,這活我不可以找個(gè)秘書來干嗎?
當(dāng)然可以,雇傭他人是一種用金錢換時(shí)間的解決方案。但是這同時(shí)又引入了許多新的問題:
你需要花錢(廢話)
你需要把要做的事解釋給秘書聽,并確保他能聽懂(溝通成本)
秘書下班或休假時(shí),這些事你還得自己做(有時(shí)間限制)
你要為秘書犯的錯(cuò)誤承擔(dān)責(zé)任(質(zhì)量得不到保證)
每次秘書犯了錯(cuò)誤,你都需要進(jìn)行教育(培訓(xùn)成本)
秘書會(huì)直接接觸業(yè)務(wù)數(shù)據(jù)和信息,難保有泄密的可能(安全隱患)
換一個(gè)秘書,以上的事情都得再來一遍……
這不是把事情搞復(fù)雜了嗎?人的成本太高,提供的服務(wù)又不可靠。而如果你會(huì)編程的話,也許你可以:
編一個(gè)小程序來完成查數(shù)據(jù)、做報(bào)表、發(fā)郵件的流程,再配置一個(gè)定時(shí)任務(wù)每天自動(dòng)執(zhí)行;
謹(jǐn)慎一點(diǎn)的話,可以讓程序先發(fā)到自己的郵箱,檢查沒有問題后再轉(zhuǎn)發(fā)給領(lǐng)導(dǎo);
必要的話,還可以讓程序在運(yùn)行出現(xiàn)意外時(shí)給你的郵箱或手機(jī)發(fā)報(bào)警通知;
如果你愿意,甚至可以給內(nèi)網(wǎng)辦公系統(tǒng)直接加上郵件報(bào)表這個(gè)功能……
假設(shè)你原本手工做完ABC流程需要30分鐘,那么你的程序每執(zhí)行一次,就為你節(jié)省了30分鐘的時(shí)間。假如你寫程序用了三個(gè)小時(shí),那么一周就能收回成本,以后全部都是凈賺的。如果程序運(yùn)行的時(shí)間足夠長(zhǎng),那么單次運(yùn)行的均攤成本將趨近于零??梢钥闯觯幊淌且环N用時(shí)間換時(shí)間的解決方案。
當(dāng)然,你需要將要做的流程寫成機(jī)器能讀懂的程序;如果需求發(fā)生變化,你需要對(duì)應(yīng)地修改程序;如果運(yùn)行時(shí)出了BUG,你需要調(diào)試修復(fù)……但更重要的是:程序不拿工資,不可能辭職,不需要休息,不會(huì)鬧情緒,不可能犯錯(cuò),只要你的流程正確,依賴的資源不出問題,它就可以7*24小時(shí)一直運(yùn)轉(zhuǎn)下去。
每當(dāng)我們寫程序?qū)崿F(xiàn)了一個(gè)需求,就好比造出了一把錘子。今后你遇到類似的問題,都可以拿這個(gè)錘子來解決。當(dāng)然有時(shí)會(huì)遇到錘子不稱手的情況,需要持續(xù)地升級(jí)和優(yōu)化。但在大多數(shù)情況下,這個(gè)錘子都是可以直接拿來用的。也就是說:完全相同的問題,你只需要解決一次就好,不會(huì)浪費(fèi)時(shí)間在重復(fù)的工作上。
通過編程,你可以將那些枯燥無味的重復(fù)性工作中的部分甚至全部,交由機(jī)器來接管,這樣就可以將你的時(shí)間和注意力從具體的事務(wù)中解放出來,去做更有價(jià)值的事情。比如研究和優(yōu)化工作流程,或者陪伴家人,又或者去讀一本書……
體驗(yàn)“開掛”的人生
喜歡網(wǎng)游的朋友可能都知道外掛這東西,這是指和游戲一起運(yùn)行、為了提升游戲體驗(yàn)的小程序。外掛一般分為兩類:一是在游戲系統(tǒng)框架內(nèi)簡(jiǎn)化玩家操作的輔助性外掛,提供如自動(dòng)拾取、自動(dòng)打怪、改鍵之類的功能;二是利用游戲漏洞營(yíng)造不平等的作弊性外掛,提供如開圖、加速、無敵之類的功能。
隨著游戲行業(yè)的迅猛發(fā)展,現(xiàn)今很多網(wǎng)游都已經(jīng)配備了原本由輔助性外掛提供的功能,輔助性外掛正在逐漸消亡,只剩下作弊性外掛和衍生的一系列黑色產(chǎn)業(yè)鏈,你懂得。
當(dāng)我們說某個(gè)人“開掛”時(shí),其實(shí)是在說他的表現(xiàn)(數(shù)量、速度、精確度……)明顯超出正常的范疇。當(dāng)原始土著人碰到使用著各種科技產(chǎn)品的現(xiàn)代人時(shí),大概就是一種“**,這哥們開掛了吧?”的感覺。
要知道,身體并不強(qiáng)壯的人類之所以能征服地球,就是因?yàn)槲覀儠?huì)創(chuàng)造并使用工具來突破生理的局限,做到原本不可能做到的事情。在即將到來的全信息時(shí)代,編程將是創(chuàng)造工具,甚至使用工具的主要方法。我們天天都在使用的軟件和APP,不管是文字處理,K歌軟件還是搜索引擎,都已經(jīng)和我們的生活融為一體,成為我們生命的延伸。通過使用這些軟件,我們可以不斷突破自己經(jīng)驗(yàn)和能力上的局限,我們隨時(shí)都在給自己“開掛”。
然而大多數(shù)人都是在被動(dòng)地等待別人來滿足自己的需求。他們會(huì)使用通過朋友推薦、廣告宣傳等各種渠道推送給自己的軟件,然后感慨一下:“哇,居然還可以這樣!”他們只會(huì)使用已有軟件提供的標(biāo)準(zhǔn)功能,而一些個(gè)性化的特殊需求就只能因?yàn)檐浖恢С址艞壍袅?。這就和穿衣服一樣,大多數(shù)人只會(huì)買標(biāo)準(zhǔn)尺寸穿,如果這里緊那里松,這里長(zhǎng)那里短,也就只能忍了。
還有少部分人會(huì)主動(dòng)考慮如何去滿足自己的特殊需求。他們會(huì)想:“如果有XXX功能就好了……”他們會(huì)主動(dòng)去尋找能滿足自己需求的軟件,研究軟件的個(gè)性化配置,或者給軟件的開發(fā)者提功能建議。同樣,追求個(gè)性的人可能會(huì)找裁縫為自己量身訂做或者修改衣服,使其盡可能地適合自己。
只有極少數(shù)的人有能力自己去實(shí)現(xiàn)那些別人不能滿足的需求。他們能在原有軟件的基礎(chǔ)上開發(fā)插件,對(duì)軟件進(jìn)行二次開發(fā),甚至寫出一個(gè)全新的軟件。同樣,追求完美的人可能會(huì)親自設(shè)計(jì)衣服,并把一件衣服不停地改來改去,直到自己徹底滿意為止。
如果說學(xué)好英語(yǔ)能為你的世界打開一扇門,讓你擁有更多的選擇的話;那么學(xué)好編程就能讓你有機(jī)會(huì)以“上帝視角”來認(rèn)識(shí)和改造這個(gè)世界,并擁有幾乎無限的可能性。因?yàn)樵诂F(xiàn)實(shí)中的一切最終都會(huì)被信息化,而你可以通過編程來對(duì)信息做任何形式的加工和處理,只要你想得到,就能做得到。
你想體驗(yàn)“開掛”的人生嗎?那就趕緊開始學(xué)編程吧。
培養(yǎng)深入的思維方式
每個(gè)人都應(yīng)該學(xué)習(xí)編程,因?yàn)樗鼘⒔虝?huì)你如何思考。——蘋果創(chuàng)始人 喬布斯 [1]
思考,是人之所以為人的行為,而編程是一種對(duì)人的思考進(jìn)行再思考的行為。我們不需要把每件事情想清楚,就可以在現(xiàn)實(shí)社會(huì)中生存。對(duì)某些從事機(jī)械性操作的職業(yè)來說,甚至完全不需要進(jìn)行思考。然而在編程時(shí),我們只有在想清楚之后,才能把程序?qū)懗鰜怼T诰帉懻_、高效、優(yōu)雅的程序的同時(shí),我們也在塑造自己的大腦,讓它能思考得更清楚、運(yùn)轉(zhuǎn)得更高效。
編程要求我們客觀地去思考事物的本質(zhì),將注意力放在事物本身,而不是事物與我們的關(guān)系上。當(dāng)古代的婦女在河邊洗臟衣服時(shí),她可能在想:“河水好冷啊……這衣服顏色真漂亮……我家孩子為啥這么調(diào)皮……”而當(dāng)我們?cè)跒橄匆聶C(jī)設(shè)計(jì)程序時(shí),只會(huì)想:“哦,這有一堆臟衣服需要洗”。其實(shí)很多原本困擾你許久的問題,只要跳出“我”的范疇,進(jìn)行“忘我”的思考,就變得特別簡(jiǎn)單和容易解決。
編程是將人的想法“實(shí)體化”的過程,這要求我們進(jìn)行更深入、更細(xì)致、更全面地思考。為了實(shí)現(xiàn)一個(gè)需求,你必須對(duì)其原理和運(yùn)轉(zhuǎn)流程了解得十分透徹,否則就無法用編程語(yǔ)言精確地描述出來讓機(jī)器去執(zhí)行。在實(shí)體化的過程中,想法的結(jié)構(gòu)缺陷和邏輯漏洞會(huì)自然凸顯出來,你總會(huì)發(fā)現(xiàn)存在沒有考慮到的可能性,以及需要進(jìn)一步思考的細(xì)節(jié)。
編程要求我們能夠?qū)κ挛锖土鞒踢M(jìn)行拆分,并在不同的抽象層次上進(jìn)行完整自洽的思考,這使我們有可能去解決那些規(guī)模無比龐大的問題。在實(shí)現(xiàn)一個(gè)稍具規(guī)模的需求時(shí),我們不太可能同時(shí)考慮主體流程和操作細(xì)節(jié),也不太可能同時(shí)從多個(gè)角度進(jìn)行思考。經(jīng)過合理拆分后的需求細(xì)粒度需求簡(jiǎn)單明了,實(shí)現(xiàn)難度大大降低的同時(shí),還可以分配給多人來共同進(jìn)行。在一個(gè)成熟的軟件或互聯(lián)網(wǎng)公司,上千名工程師一起開發(fā)同一款產(chǎn)品是很常見的,而你能想象這么多人一起去寫一本書么?
編程是不斷解決問題的過程,也是不斷完善解決問題的方法論的過程。一個(gè)優(yōu)秀的程序員總是解決問題的高手。在編程的各個(gè)階段(需求定義、方案設(shè)計(jì)、編碼實(shí)現(xiàn)、調(diào)試糾錯(cuò)……)中,都將面臨無窮無盡的問題。這個(gè)問題要不要解決?什么時(shí)候解決?其根源是什么?需要考慮哪些方面?如何做取舍?有哪些方案可供選擇?選擇的原則是什么?……解決問題的方法論展開來講可以寫一本書了,且容我有時(shí)間另撰一文來表。
在未來更好地生存
半個(gè)世紀(jì)以前,美國(guó)有70%的人口在農(nóng)場(chǎng)工作;隨著自動(dòng)化耕種的大面積普及,現(xiàn)在只剩下不到1%。 ——凱文.凱利《必然》
從登錄月球到生產(chǎn)納米機(jī)器人,我們已經(jīng)通過設(shè)計(jì)并使用各種機(jī)器完成了人類原本不可能親手做到的各種事情。迄今為止,人類從事的簡(jiǎn)單重復(fù)性的工作(如洗衣、耕種、制造等)已經(jīng)幾乎完全被機(jī)器接管,人類的工作方向已經(jīng)轉(zhuǎn)向?qū)C(jī)器的研發(fā)和維護(hù)。而那些需要復(fù)雜知識(shí)和精密操作的工作(比如駕駛汽車、外科手術(shù)等)也正在被機(jī)器逐步接管。
洗衣機(jī)解放了家庭主婦們的雙手,全自動(dòng)流水線則解雇了工廠里的大部分工人。只有在一些正享受人口紅利的發(fā)展中國(guó)家(比如中國(guó)和印度),由于技術(shù)引入成本比人工成本高,目前體力勞動(dòng)者還有一些生存的空間。但技術(shù)的成本會(huì)不可阻擋地快速持續(xù)下降,而人口紅利的窗口期將快速消失,拐點(diǎn)很快就會(huì)到來。
資本是具有意志的,且不為人性所改變。當(dāng)產(chǎn)出的質(zhì)量不變,而技術(shù)的成本顯著低于人工成本時(shí),幾乎所有的體力勞動(dòng)者都會(huì)失業(yè)。機(jī)器不知疲倦,不會(huì)抱怨,干得比人又快又好又省錢,人類怎么可能和機(jī)器競(jìng)爭(zhēng)?
與此同時(shí),人工智能正在將逐漸接管人類的簡(jiǎn)單重復(fù)性思考活動(dòng)(如尋路、翻譯等),人類只需要下達(dá)命令、制定原則和做出選擇即可。人工智能甚至已經(jīng)進(jìn)入了那些被人們認(rèn)為是“人之所以為人”的領(lǐng)域:寫作、編曲、繪畫……
Google的AlphaGo戰(zhàn)勝李世石是一個(gè)里程碑式的事件,它證明了人工智能已經(jīng)可以在人類最擅長(zhǎng)的思考領(lǐng)域超越人類。現(xiàn)在最優(yōu)秀的棋手都在向AI學(xué)習(xí)下棋,職業(yè)棋手和AI進(jìn)行日常訓(xùn)練成了常態(tài)。純機(jī)比純?nèi)藦?qiáng),人機(jī)比純機(jī)強(qiáng),這早已是棋界的共識(shí)。
當(dāng)人工智能在某個(gè)思考領(lǐng)域的能力接近或超過人類(這在很多領(lǐng)域已經(jīng)做到了 )時(shí),而其成本極其低廉(這是早晚的事)時(shí),在資本意志的作用下,這個(gè)領(lǐng)域就會(huì)將不可逆地被人工智能迅速占領(lǐng)。我們今天已經(jīng)習(xí)慣了使用計(jì)算器來取代大腦進(jìn)行數(shù)字計(jì)算,在不遠(yuǎn)的將來,我們也會(huì)習(xí)慣將原本需要自己思考的許多問題交給由無數(shù)程序組成的人工智能來處理。在可以預(yù)見的未來,所有構(gòu)建在經(jīng)驗(yàn)和技能基礎(chǔ)上的非創(chuàng)造性工作崗位都會(huì)消失,人類的工作方向會(huì)轉(zhuǎn)變成對(duì)人工智能的研發(fā)和維護(hù)。
人工智能全面普及的時(shí)代正在以光一樣的速度向我們飛奔,可能下一秒就將我們遠(yuǎn)遠(yuǎn)地甩在身后,連車尾燈都看不到。屆時(shí),幾乎所有的工作都將和人工智能密不可分。只有那些理解人工智能,能夠很好地和人工智能合作,并幫助改進(jìn)人工智能的人,才能在那個(gè)時(shí)代更好地生存下去。
每個(gè)人都應(yīng)該盡早開始學(xué)習(xí)編程,我的孩子起步太晚了,我覺得應(yīng)該在教他們ABC和顏色的時(shí)候就開始。——美國(guó)第44任總統(tǒng) 奧巴馬 [2]
在《未來我們?cè)搶W(xué)什么語(yǔ)言?》一文中,我曾暢想過未來可能出現(xiàn)的腦接口技術(shù),以及與之配套的人機(jī)共用結(jié)構(gòu)化語(yǔ)言。屆時(shí)我們的大腦將直接接入互聯(lián)網(wǎng)和人工智能,可以瞬間將需要的知識(shí)和信息下載到大腦中……我們將成為神一樣的存在。但前提是你必須具備編程基礎(chǔ),才能享用這一革命性技術(shù)帶來的成果。
什么,那時(shí)候你還沒學(xué)會(huì)編程?可以洗洗睡了。
我知道你會(huì)問……
可是我又不準(zhǔn)備當(dāng)程序員啊,有必要學(xué)編程嗎?
你可能會(huì)開車,還是個(gè)老司機(jī),很會(huì)享受駕駛的樂趣,但你未必愿意去當(dāng)一名出租車司機(jī)吧?同理,學(xué)習(xí)編程不一定非要做程序員,但卻能使你擁有全新的視角、深入的思維方式和效率優(yōu)化的思維,這都將成為你重要的軟實(shí)力。在不久的將來,編程將會(huì)變成像英語(yǔ)、駕駛一樣人人必備的技能。到那時(shí),你希望自己是一名老司機(jī),還是搭車族呢?
“學(xué)這個(gè)有用嗎?”其實(shí)是一個(gè)很可怕的想法。由于很多東西現(xiàn)在看起來并沒有什么用,大多數(shù)人就放棄了學(xué)習(xí),而只有少數(shù)人會(huì)抱著“學(xué)學(xué)看能有什么用”的念頭去嘗試。在之后的某一天,真正需要這項(xiàng)技能和知識(shí)時(shí),那些選擇放棄的人只能感慨“要是當(dāng)時(shí)……就好了!”,而選擇學(xué)習(xí)的人則會(huì)驚喜地發(fā)現(xiàn)“哇,原來還能用在這里!”……所謂的“驚喜”和“運(yùn)氣”其實(shí)就是這樣一回事:在不知不覺間,已經(jīng)提前做好了準(zhǔn)備。
那我能不能現(xiàn)在努力賺錢,然后雇一個(gè)專業(yè)的程序員呢?
不錯(cuò),你是可以找一個(gè)程序員來實(shí)現(xiàn)你的想法,但我們之前請(qǐng)秘書時(shí)遇到的諸多問題又會(huì)接踵而來。更重要的是,如果你不會(huì)編程,你可能連個(gè)靠譜沾邊的想法都提不出來。就好比沒有見過汽車的人,只會(huì)想著讓別人為他造一輛更快的馬車。只有在理解了某個(gè)事物的原理之后,這個(gè)事物的概念才能在你的腦中清晰起來,才能真正融入你的認(rèn)知結(jié)構(gòu)中。
有了清晰的概念,你才能對(duì)其進(jìn)行思考,判斷它能夠用來做什么,不能做什么。如果概念不清晰,你甚至都無法講清楚自己的需求,更難和程序員進(jìn)行溝通和合作。每一位程序員在面對(duì)“給我做一個(gè)淘寶”這樣的需求時(shí),都會(huì)崩潰的。
我的英語(yǔ)很爛,能學(xué)會(huì)編程嗎?
英語(yǔ)不是學(xué)習(xí)編程的瓶頸,關(guān)鍵在于理解其概念和原理,以及改變思維方式。雖然幾乎所有編程語(yǔ)言的關(guān)鍵字都是英語(yǔ),但常用的關(guān)鍵字也就那么幾個(gè),熱門語(yǔ)言的相關(guān)書籍也都有譯版。如果你愿意的話,甚至可以用中文來給程序里的變量、函數(shù)和命名。正如只要你認(rèn)得start / save / load / quit這幾個(gè)單詞,就能去玩英文游戲;只要會(huì)說sorry和how much,就能去國(guó)外旅游一樣。
我已經(jīng)工作好多年了,現(xiàn)在開始學(xué)還來得及嗎?該從什么地方開始?
任何時(shí)候開始都不晚,當(dāng)然越早越好。中國(guó)第一款殺毒軟件KV300的作者王江民,就是38歲才開始學(xué)習(xí)編程的。至于應(yīng)該怎么學(xué),從哪里開始,這將是我今年的主要思考方向,敬請(qǐng)期待我的后續(xù)系列文章。也許你可以先試試這些網(wǎng)站:
http://www.codecombat.com :通過玩游戲來啟蒙,有中文版,適合初學(xué)者
http://www.khanacademy.org :純英文視頻講解教學(xué),適合學(xué)霸和筆記黨
http://www.codecademy.com :交互式實(shí)戰(zhàn),效果最佳,但需有一定基礎(chǔ)
后話
曾經(jīng)何時(shí),想要建立一個(gè)網(wǎng)站服務(wù),需要購(gòu)買動(dòng)轍數(shù)萬元的專業(yè)服務(wù)器,支付昂貴的機(jī)房托管和帶寬租賃費(fèi)用,聘請(qǐng)專業(yè)的開發(fā)人才或團(tuán)隊(duì)來研發(fā),再通過廣告和運(yùn)營(yíng)活動(dòng)去拉攏用戶……門檻如此之高,使絕大多數(shù)人望而卻步,只有企業(yè)才能負(fù)擔(dān)得起。
而現(xiàn)如今,云服務(wù)器甚至比家里的寬帶都便宜了,各種開源技術(shù)唾手可得,各種開放平臺(tái)提供了免費(fèi)的用戶和渠道,一個(gè)APP通過社交網(wǎng)絡(luò)可能瞬間火遍全國(guó)……有了樹莓派這樣超便宜的卡片電腦,再加上現(xiàn)在各種家電都在向智能化發(fā)展,想通過編程在實(shí)現(xiàn)自己的一些小創(chuàng)意,真是不要太簡(jiǎn)單。
我們正身處一個(gè)只要愿意思考,就能改變世界的時(shí)代。那么你是愿意去改變世界,還是等待被世界改變呢?