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