我們需要學(xué)習(xí)的是編程,而不是編程語(yǔ)言!
我們不僅是程序員,而且是個(gè)(與時(shí)俱進(jìn)的)學(xué)習(xí)者。鮮見(jiàn)的是有多少人認(rèn)為他們是在學(xué)習(xí)編程的呢。
你可能在學(xué)習(xí)編程語(yǔ)言而不是編程本身
別對(duì)學(xué)習(xí)計(jì)算機(jī)科學(xué)(CS)不是研究計(jì)算機(jī)這種言論感到驚訝。相反的,學(xué)習(xí)CS是對(duì)自動(dòng)解決問(wèn)題的研究。解決問(wèn)題的是計(jì)算機(jī)科學(xué),而不是編程。這就是為什么許多CS的學(xué)生似乎不明白自己為什么要學(xué)習(xí)算法和數(shù)學(xué)。
如果之前你有去上過(guò)CS的課程,你就不會(huì)對(duì)我這里說(shuō)的話感到驚訝。因?yàn)槟銜?huì)注意到編程和編程語(yǔ)言沒(méi)有多大的關(guān)系。
但是,大多數(shù)自我思考的程序員會(huì)掉入這么一個(gè)陷阱:在我們意識(shí)到自己正真要做的是編程事情的時(shí)候,我們已經(jīng)花了很長(zhǎng)的時(shí)間來(lái)學(xué)習(xí)編程語(yǔ)言了。我自己就是一個(gè)受害者。
我花了十幾年的時(shí)間學(xué)習(xí)各種編程語(yǔ)言。我學(xué)的越多,發(fā)現(xiàn)建立簡(jiǎn)單的東西就越難。我總有那么種感覺(jué)是我沒(méi)找到合適的工具。但是,問(wèn)題出在當(dāng)我還沒(méi)有意識(shí)到我要做的工作時(shí),忘了尋找適合的工作而不是尋找適合的工具。
而且奇怪的一點(diǎn)是:編程語(yǔ)言總是在不斷發(fā)展的。編程語(yǔ)言幾乎每天都有所變化,我們很難跟上其步伐??墒?,大多數(shù)優(yōu)秀的程序只是使用了編程語(yǔ)言的一小部分。
學(xué)習(xí)編程語(yǔ)言的問(wèn)題就好比在學(xué)習(xí)木工之前去學(xué)習(xí)如何使用木工鋸,錘子和各種切割機(jī)器。木工需要注意:想法、可行性分析、測(cè)量、測(cè)試和用戶行為。老木工對(duì)上面提到的注意點(diǎn)更感興趣,而不是錘子和釘子。在對(duì)工作科學(xué)研究的期間,他還會(huì)花時(shí)間去檢查釘子、著色板和木材等的質(zhì)量。
學(xué)習(xí)編程和學(xué)習(xí)編程語(yǔ)言有什么區(qū)別呢
程序設(shè)置系統(tǒng)只需指令它一次就可以自由運(yùn)行。我們每天都在做這件事情。我們告訴我們的孩子、士兵和顧客。我們給予他們或者我們自己接受到給定的指令去自由/獨(dú)立地生活。比如,您的父母不需要每天都關(guān)注你并且對(duì)你人生要走的下一步做指導(dǎo)。他們本來(lái)可以在你生活的方方面面為你設(shè)定好。
很多學(xué)校和教育網(wǎng)站都會(huì)教你編程語(yǔ)言的語(yǔ)法。他們會(huì)添加些設(shè)計(jì)模式(當(dāng)你忽略設(shè)計(jì)的時(shí)候),一些數(shù)學(xué)計(jì)算,如何聲明變量并使用它們,數(shù)據(jù)類(lèi)型以及如何聲明/創(chuàng)建它們等的內(nèi)容。
這些并不能教會(huì)你推理。通過(guò)上面的途徑,你會(huì)學(xué)到些推理的方法,但是過(guò)不了多久,你會(huì)意識(shí)到自己浪費(fèi)了或者花了很長(zhǎng)時(shí)間去學(xué)習(xí)編程。
我們是通過(guò)編程解決問(wèn)題,而編程語(yǔ)言只是協(xié)助我們的工具。編程語(yǔ)言就像一個(gè)個(gè)的工具盒,我們稱(chēng)它們?yōu)榭蚣堋K鼈儙椭覀兘M織自己的想法。
如果你正在學(xué)習(xí)編程,但是你還不能夠設(shè)計(jì)并且編碼出一個(gè)實(shí)實(shí)在在的應(yīng)用,那么說(shuō)明你更多的是在學(xué)習(xí)編程語(yǔ)言而非編程。
有多少次我們碰到想知道怎么創(chuàng)建程序的人(程序員)。對(duì)于他們這些程序員來(lái)說(shuō),創(chuàng)建程序就是解決一個(gè)問(wèn)題。他們?cè)谑褂镁幊陶Z(yǔ)言的時(shí)候就通過(guò)批判的分析解決了這個(gè)問(wèn)題。但是當(dāng)你解決了這個(gè)問(wèn)題,你是可以使用多種編程語(yǔ)言去實(shí)現(xiàn)的。我們以平方數(shù)為例。某數(shù)的平方就是這個(gè)數(shù)字乘以本身。我們可以用各種語(yǔ)言來(lái)實(shí)現(xiàn)它,如下:
# c
function square(int * x) {
? ? return x * x;
}
# php
function square ($x){
? ? return $x * $x;
}
# javascript
function square(x){
? ? return x * x
}
# In Scheme (a Lisp dialect)
(define (square x) (* x x))
以上,你可以看到在實(shí)現(xiàn)的上面只有語(yǔ)法的不同,結(jié)果是一樣的。這也是你可以使用任何語(yǔ)言,這種語(yǔ)言使你輕松構(gòu)建任何類(lèi)型軟件的一個(gè)重要原因。
通過(guò)編程發(fā)現(xiàn)語(yǔ)言更容易
問(wèn)題通常是人類(lèi)語(yǔ)言。人類(lèi)語(yǔ)言充滿了限制和錯(cuò)誤,是不能用來(lái)指導(dǎo)機(jī)器工作的,因?yàn)闄C(jī)器接收不到。
學(xué)習(xí)編程的時(shí)候,你將學(xué)習(xí)一種新的術(shù)語(yǔ)和工具來(lái)幫助你編寫(xiě)邏輯方式,這種邏輯方式是被計(jì)算機(jī)和其他程序員理解并且認(rèn)同的。
通常,你將從簡(jiǎn)單且類(lèi)似人類(lèi)語(yǔ)言的符號(hào)開(kāi)始,稱(chēng)之為偽代碼。它是從人類(lèi)語(yǔ)言到計(jì)算機(jī)編程語(yǔ)言的良好過(guò)渡工具。這通常為了防止你浪費(fèi)時(shí)間在語(yǔ)言上面。這樣你可以關(guān)注在推理上面。
如此,你會(huì)發(fā)現(xiàn)組成一個(gè)良好的編程工具(語(yǔ)言)的核心部分。你了解什么才是正需要的,了解編程語(yǔ)言的核心目標(biāo)。通過(guò)了解,你會(huì)不知不覺(jué)下意識(shí)去學(xué)習(xí)這種語(yǔ)言了。
看到這里是不是又學(xué)到了很多新知識(shí)呢~
如果你很想學(xué)編程,可以添加下方七喜小姐姐vx~
有全套編程大禮包相贈(zèng)? 無(wú)償分享

都是學(xué)編程小伙伴們,帶你入個(gè)門(mén)還是簡(jiǎn)簡(jiǎn)單單啦,一起學(xué)習(xí),一起加油~
還有許多學(xué)習(xí)資料和視頻,相信你會(huì)喜歡的!


涉及:游戲開(kāi)發(fā)、常用軟件開(kāi)發(fā)、編程基礎(chǔ)知識(shí)、課程設(shè)計(jì)、黑客等等......