尼古拉斯·達(dá)內(nèi):有很多定義方式。首先,代碼是使機(jī)器運(yùn)行的程序。如果沒(méi)有代碼,我們的電子設(shè)備包括電腦、手機(jī)就沒(méi)有生命。代碼是讓我們接近機(jī)器靈魂的方式,使機(jī)器能根據(jù)我們的需求而運(yùn)作。它是一些通過(guò)算法來(lái)自動(dòng)完成任務(wù)的句法。這是個(gè)定義。
但是代碼也可以被定義為一種語(yǔ)言。因?yàn)樗跀?shù)學(xué)算法,我們過(guò)去傾向于認(rèn)為它只是一個(gè)屬于數(shù)學(xué)家和工程師的領(lǐng)域。但實(shí)際上,許多語(yǔ)言學(xué)者已經(jīng)對(duì)編碼和發(fā)明新的編程語(yǔ)言產(chǎn)生興趣。有些人甚至用代碼寫詩(shī)!斯坦福大學(xué)的學(xué)生就創(chuàng)立了一個(gè)俱樂(lè)部,將詩(shī)歌和編程融合在一起。代碼完全可以被視為一種說(shuō)話和表達(dá)方式。
從某種意義上說(shuō),學(xué)習(xí)代碼和學(xué)習(xí)一門外語(yǔ)相似:開(kāi)始會(huì)很艱難,但漸漸地,我們開(kāi)始理解語(yǔ)言的邏輯性——每個(gè)人都有能力掌握它,因?yàn)檎f(shuō)話誰(shuí)都會(huì)。
從機(jī)器語(yǔ)言、到面向?qū)ο笳Z(yǔ)言,編程代碼的演進(jìn)歷史就是不斷地抽象。這一路上我們還在操作系統(tǒng)的作用下得以開(kāi)發(fā)出更好的基礎(chǔ)設(shè)施。大家很快意識(shí)到自己可以在這些基礎(chǔ)設(shè)施之上編寫出更復(fù)雜的程序,然后繼續(xù)開(kāi)發(fā)出更復(fù)雜的軟件架構(gòu)。
在機(jī)器學(xué)習(xí)的推動(dòng)下我們現(xiàn)在進(jìn)入了軟件開(kāi)發(fā)的新時(shí)代。IBM 的 Watson 和 Google 的 AlphaGo 已經(jīng)證明數(shù)據(jù)>算法。或者更地說(shuō),數(shù)據(jù)就是算法。但是現(xiàn)在你需要非常特殊的技能才能開(kāi)發(fā)出機(jī)器學(xué)習(xí)解決方案。工程師和數(shù)據(jù)科學(xué)家仍然需要對(duì)機(jī)器學(xué)習(xí)算法進(jìn)行編程,但終同樣的系統(tǒng)會(huì)教它們學(xué)會(huì)如何通過(guò)分析自己的代碼來(lái)改進(jìn)自己。
代碼,其實(shí)重要的用途就是編程來(lái)解決我們生活中的問(wèn)題,所以不同的編程語(yǔ)言應(yīng)用于不用的領(lǐng)域,它們并沒(méi)有高低貴賤之分,只不過(guò)有些應(yīng)用于商業(yè)化,有些應(yīng)用于教學(xué)領(lǐng)域。而貫徹始終的重要的就是編程思維,編程思維是我們解決問(wèn)題的一種方法,就是能夠利用我們已有的知識(shí)和工具,將自身的思路轉(zhuǎn)化成邏輯運(yùn)算的步驟,從而完成復(fù)雜的任務(wù)。