? ? ? 最近有個(gè)問(wèn)題一直困擾我,一度也認(rèn)為我錯(cuò)了,努力試圖改變我自己的想法,可是我發(fā)現(xiàn)還是無(wú)法說(shuō)服我自己。作為有著快10年經(jīng)驗(yàn)的碼農(nóng)(程序員的自嘲稱呼),從匯編語(yǔ)言到C再到后來(lái)的java,python,js,C++幾乎所有的語(yǔ)言都使用過(guò),到頭來(lái)所有的底層邏輯架構(gòu)還是c最全面也是最穩(wěn)定的語(yǔ)言,C++作為從C演化而來(lái)的高級(jí)語(yǔ)言,既有C的嚴(yán)謹(jǐn)穩(wěn)定,也有對(duì)程序員友好交互的特性,故而從自身的經(jīng)驗(yàn)我認(rèn)為C++是作為小學(xué)高年級(jí)編程入門的首選。
? ? ? ? 其次,小學(xué)進(jìn)入三年級(jí)以后,相應(yīng)的思維邏輯和簡(jiǎn)單的數(shù)學(xué)公式都能夠理解,如果小朋友還經(jīng)歷過(guò)幼兒scratch的學(xué)習(xí),那么就能好的理解程序運(yùn)行的基礎(chǔ)結(jié)構(gòu),那么對(duì)c++的學(xué)習(xí)更加的如虎添翼了,如果沒(méi)有學(xué)過(guò)scratch也沒(méi)關(guān)系,程序的本質(zhì)是對(duì)事物經(jīng)行描述并輸出結(jié)果的一個(gè)過(guò)程。只要孩子能夠獨(dú)立的講出一件事情,并對(duì)事情經(jīng)過(guò)給個(gè)總結(jié),就已經(jīng)具備學(xué)習(xí)所有編程語(yǔ)言的前提。那就有人問(wèn),那為什么你不推薦python呢?首先,python確實(shí)是一門很好的語(yǔ)言,現(xiàn)在很多人在學(xué),也確實(shí)很多的程序是用python寫的,但是從本質(zhì)上說(shuō),他就是一門程序員在無(wú)聊假期突發(fā)奇想的一個(gè)解釋性的語(yǔ)言。python簡(jiǎn)單是因?yàn)樗恼Z(yǔ)言表述就跟生活中用語(yǔ)(英語(yǔ)語(yǔ)法)基本一致,所以造就了它簡(jiǎn)單,同時(shí)也把程序語(yǔ)言結(jié)構(gòu)簡(jiǎn)化了,從而出現(xiàn)可能的機(jī)器執(zhí)行程序時(shí),程序結(jié)構(gòu)邏輯斷層。最直觀的體現(xiàn)就是python2.0和python3.0都不兼容。學(xué)編程或者想學(xué)真正的編程,還是從最基礎(chǔ)的語(yǔ)言學(xué),把基礎(chǔ)打牢固,后面才能有質(zhì)的飛越?,F(xiàn)在學(xué)python看似簡(jiǎn)單易學(xué),也會(huì)有看似不錯(cuò)的成果展現(xiàn)在學(xué)生家長(zhǎng)面前,可實(shí)際拔苗助長(zhǎng)。三年級(jí)的孩子思想剛處在發(fā)展萌芽期間,對(duì)學(xué)進(jìn)去的東西會(huì)有很強(qiáng)的先入為主的印象,后面再學(xué)習(xí)c或者其他語(yǔ)言會(huì)不斷的與python進(jìn)行比較,甚至不自覺(jué)的會(huì)按照python的代碼習(xí)慣寫,導(dǎo)致后面會(huì)遇到挫折甚至崩潰厭學(xué),學(xué)完c++在學(xué)其他語(yǔ)言就不會(huì)出現(xiàn)這種情況,因?yàn)樗械母呒?jí)語(yǔ)言都是從c語(yǔ)言演化而來(lái)的,只有c++繼承的最全面,最接近機(jī)器語(yǔ)言的底層邏輯。
? 最后,從孩子的升學(xué)角度講,既然孩子花錢學(xué)習(xí)報(bào)班學(xué)習(xí)編程了,不管將來(lái)是否要依靠編程獲得升學(xué)保送或者將來(lái)從事計(jì)算機(jī)行業(yè),c和c++是兩個(gè)繞不開(kāi)的基礎(chǔ)。首先保送這一條,國(guó)家規(guī)定的語(yǔ)言只有c++。所以可見(jiàn)c++的重要性。有人說(shuō)我的孩子還小,三年級(jí)先讓他學(xué)一段時(shí)間python,簡(jiǎn)單入門一下。后面再轉(zhuǎn)C++這樣想法的家長(zhǎng)有很多,有這樣想法的家長(zhǎng)大都不了解編程,形成一個(gè)誤區(qū),認(rèn)為編程就應(yīng)該是先python在C++,其實(shí)這不過(guò)是資本的又一次操作而已,前幾年java大火,各種培訓(xùn)班Java課程滿天飛,后來(lái)發(fā)現(xiàn)python更簡(jiǎn)單,而且還可以簡(jiǎn)單做出讓人看起來(lái)不明覺(jué)厲的效果。然后就大力推,導(dǎo)致后面幾乎市面上的機(jī)構(gòu)都大力推這個(gè)課程,但基本都是讓學(xué)生記住代碼,很少解釋程序底層的邏輯,因?yàn)槿绻忉尵蛣?shì)必要用到c語(yǔ)言的結(jié)構(gòu)和原理甚至還會(huì)涉及一些匯編語(yǔ)言。python比c語(yǔ)言更能吸引小朋友,更能創(chuàng)收,更沒(méi)有機(jī)構(gòu)會(huì)拒絕這樣一門課程了。那python能不能學(xué)呢,當(dāng)然能學(xué)。但是我認(rèn)為需要有了c語(yǔ)言的基礎(chǔ)之后,再去嘗試python,那樣事半工倍。不然就像空中樓閣,看起來(lái)絢麗奪目,其實(shí)危險(xiǎn)重重,沒(méi)有地基的大廈,終究是不牢固的。然后就是有些家長(zhǎng)說(shuō)我也不打算走保送,只是讓他學(xué)一下,掌握一點(diǎn)編程的知識(shí)。其實(shí)這部分的家長(zhǎng)是比較矛盾的,既把錢花了,孩子其實(shí)也沒(méi)學(xué)到多少知識(shí),最多記住了一些永遠(yuǎn)也用不到的代碼,僅此而已,連編程都算不上,最多叫會(huì)敲一些字母,記住一些單詞。因?yàn)橛涀〉哪切┐a全部都是基于記憶,而根本不了解機(jī)器在編譯這段代碼時(shí)候的運(yùn)行邏輯,孩子只會(huì)看到,程序運(yùn)行的結(jié)果,而程序運(yùn)行的內(nèi)核,全然不知。最后還有家長(zhǎng)說(shuō)C++太難了,任何知識(shí)都有從易到難的過(guò)程,不可能c++上來(lái)就給你講算法,講結(jié)構(gòu)。也是從最基礎(chǔ)的計(jì)算機(jī)的工作原理,進(jìn)制轉(zhuǎn)換等等的基礎(chǔ)知識(shí)最后到難點(diǎn)知識(shí)。
? ? ? ? 寫在最后,不管學(xué)什么樣的編程語(yǔ)言或者知識(shí),基礎(chǔ)是最重要的,從計(jì)算機(jī)發(fā)明到現(xiàn)在也不過(guò)76年,各種語(yǔ)言層出不窮,但都是基于最基礎(chǔ)的匯編語(yǔ)言到c語(yǔ)言最后到高級(jí)語(yǔ)言(C++,python,java......)以后可能還有更加優(yōu)秀的語(yǔ)言出現(xiàn),但是記住計(jì)算機(jī)行業(yè)的一句話“C生萬(wàn)物”語(yǔ)言重要,算法才是靈魂,更加重要。