少兒編程和打字培訓(xùn)沒區(qū)別!聽我來說說編程語言——養(yǎng)娃記0195

點(diǎn)擊關(guān)注,了解更多精彩內(nèi)容!!努力陪伴孩子成長的中年胖子。
一直有這方面的廣告,所以嘗試用通俗的語言說下我對(duì)編程的看法。
昨天匆忙寫了一篇,有興趣的可以看下。
少兒編程和打字一樣的必備技能嗎?你想讓孩子咋樣——養(yǎng)娃記0194
文章有點(diǎn)長,大概需要10分鐘,核心意思是,如果不確定要不要讓孩子學(xué)編程,也許它可能可以幫你打消這個(gè)疑慮。
能力所限,您且看且吐槽,歡迎留言。
01 簡單的歷史回顧,編程會(huì)是稀缺性技能嗎?
很多年前,如果會(huì)打字,就是算會(huì)計(jì)算機(jī)了。
但是當(dāng)時(shí)的很多人,畢業(yè)的時(shí)候電腦也沒有摸過。
很多年后,Word,Excel,PPT算是基本技能,但是要用好,也不容易。
但是會(huì)了也不會(huì)特別加分。
什么意思呢,這是一個(gè)級(jí)別工具,很多人只是拿它來做工具而已。
現(xiàn)在很多人電腦打字不快,但是手機(jī)很溜,也可以。
但是當(dāng)年打字培訓(xùn)班的廣告也是制造焦慮的哦。
那么現(xiàn)在編程比當(dāng)年的打字似乎高端了很多。
但是在人群的知識(shí)水準(zhǔn)上,他們其實(shí)沒有太大差異。
從這個(gè)樸素的角度來說,會(huì)編程和會(huì)打字沒有太大差別。
會(huì)編程給工作帶來的提升固然是有的,但是我只是掃地而已,并不需要那么多高科技。
再通俗一點(diǎn),一件事,滿分100分,會(huì)編程可以做到90分,不會(huì)編程我也能做到89分,這個(gè)時(shí)候,編程作為一種技能并沒有稀缺性。

02 編程要解決的問題范疇,弄個(gè)屠龍刀?
其實(shí)看了很多廣告,都沒有特別確切地講明這個(gè)事??赡苁强桃饽:?。
編程要解決的問題,我們通俗一點(diǎn)可以理解成是解決一次性問題還是長期性問題。一次性就是為了解決具體問題,解決完就拉到。
少兒編程,或者是競(jìng)賽類的,都可以認(rèn)為是一次性問題。
比如說,要解方程,100元1次方程,解決了就好了,這次編程行動(dòng)就結(jié)束了。它也不用太多考慮后續(xù)的事了。
或者是做一次工資表,做完就好了。分析一次數(shù)據(jù),分析完就好了。
解決很多數(shù)學(xué)問題也是類似的,問題本身不需要很多復(fù)用性,也不用去推廣,將來給很多人用,不需要考慮這些問題。
這些東西,涉及很多算法,成就感會(huì)比較強(qiáng)??赡軙r(shí)間也比較短,代碼也比較精煉,也不用太多考慮其他人的感受。
實(shí)際上,真正的編程工作,很多時(shí)候,是長期性的,是1個(gè)很大的系統(tǒng)工程,這個(gè)時(shí)候,成就感就沒那么大了,興趣愛好成了工作,多少有些不一樣的感覺了。
這么多年下來,編程的很多積累都完成了。
比如說,我們攝像頭識(shí)別車牌,識(shí)別人臉,10多年前可能是非常困難的,涉及到很多領(lǐng)域的知識(shí),但是現(xiàn)在不用,有很多開源免費(fèi)的東西可以用。自己不用從頭開始做。
前面講了這么多,核心的意思是,用計(jì)算機(jī)語言編程只是其中很小的一個(gè)部分,真正的編碼工作,大部分都是工程問題,而不是某個(gè)看起來很有閃光點(diǎn)的個(gè)人英雄。
再直白一點(diǎn)來說,真要再工作中用編程,到時(shí)候?qū)W都來得及。
編程是工程問題不是很酷的事,一項(xiàng)普通的職業(yè)技能而已,和咖啡拉花比,不見得就高級(jí)多少了。

03 編程會(huì)越來越簡單,和使用word也差不多
編程語言后面會(huì)有個(gè)簡單的說明。我們先說編程會(huì)越來越簡單這個(gè)事。
這個(gè)有很多現(xiàn)實(shí)因素,在很早的時(shí)候,軟硬件是需要兼修的。
什么意思呢,做編程,軟件要懂,硬件也要懂,要不然沒法弄。
那個(gè)階段,編程不是聚焦普通人的具體問題,更多的是——玩具。
我讓電腦發(fā)出聲音了,我牛!
但是這些事隨著商業(yè)化的發(fā)展,會(huì)越來越簡單。
這些發(fā)展的迭代速度是非??斓?。
20年前的手持設(shè)備,和今天的手機(jī)比,簡直是無法直視的。
今天手機(jī)的處理性能,比以前的電腦要強(qiáng)很多。
簡單來說,手機(jī)要掃描二維碼這個(gè)事,在手機(jī)剛剛出現(xiàn)的時(shí)候,算是一個(gè)挺難的問題,現(xiàn)在微信的二維碼掃描識(shí)別都非常迅速。
但是它們會(huì)把這些能力開放出來給人免費(fèi)使用。
如果自己個(gè)人要從底層開始寫,非常不現(xiàn)實(shí)。
現(xiàn)在能用好Excel,夸張一點(diǎn)說可以頂過去很多人完成一個(gè)項(xiàng)目的了。
編程語言有很多種,現(xiàn)在廣告比較多的,培訓(xùn)比較多的是Python和C++。
但是這2個(gè)語言一直也是在爭(zhēng)議中的。
幾乎每年都有很多編程語言產(chǎn)生,有些專注于具體領(lǐng)域,有些是通用的。
總體來說,是越來越簡單了。
以前受制于硬件,比如說以前IPhone剛出來的時(shí)候,整個(gè)空間才8G,單子隨隨便便一個(gè)App就能幾百M(fèi)。
從這個(gè)角度來說,學(xué)很難的編程,對(duì)未來的幫助未必有那么大。
花那么多精力,學(xué)一個(gè)Hello World,產(chǎn)生的現(xiàn)實(shí)意義太小了。

04 編程只是工具,工具屬性不需要過分放大
編程只是工具,早期的編程因?yàn)槭苤朴谟布枰ê芏嗑鉀Q計(jì)算機(jī)本身的問題。
但是隨著技術(shù)的進(jìn)步,現(xiàn)在越來越聚焦實(shí)際問題了。
意思是說,很多計(jì)算機(jī)本身的限制慢慢被解決了。
什么是工具呢,比如說要計(jì)算圓周率,知道方法,人力算不出來,用計(jì)算機(jī)來算,會(huì)編程有幫助,但是光會(huì)編程沒用,得理解算圓周率的方法。
比如說下圍棋的AlphaGo,我們知道圍棋是19X19,一共是361個(gè)點(diǎn)。
如果我們直接編程去算,每個(gè)點(diǎn)的可能性,那將是非常龐大的計(jì)算量,現(xiàn)在也沒法解決。所以需要很深的數(shù)學(xué)背景,把問題簡化,把要搜索的結(jié)果范圍收斂。才有可能在現(xiàn)有的算力背景下,解決問題。
這個(gè)時(shí)候,編程重要嗎?也重要,但是不是最重要的。
相比來說,對(duì)于一個(gè)工具的執(zhí)著,就容易陷入小人馭于物的困境。
計(jì)算機(jī)語言給人的刻板印象也就在這里
編程要解決的不是編程問題,而是工具使用問題
05 手機(jī)很解決大部分電腦問題
隨著科技的發(fā)展,現(xiàn)在對(duì)于很多人來說,打開電腦,是一件非常專業(yè)的事。
但是在手機(jī)出現(xiàn)之前,辦公設(shè)備,電腦是最重要的。
但是現(xiàn)在很多人已經(jīng)不開電腦了,大部分工作在手機(jī)完成了。
什么意思呢。
在電腦出現(xiàn)之前,要解決無紙辦公的問題。
手機(jī)要解決電腦笨拙的問題。
那將來手機(jī)一定會(huì)長期存在嗎?也是未必的事。
06 編程語言是什么
編程語言和電腦病毒類似,這個(gè)名詞可能算是好名詞,同時(shí)很多誤解也有由此產(chǎn)生的,利用信息不對(duì)稱,確實(shí)很帶來很多迷惑性。
其實(shí)想用通俗的語言描述一個(gè)專業(yè)的事,不是一件容易的事。
有誤解是必然的。
簡單來說,編程語言就是人和計(jì)算機(jī)對(duì)話的語言(不準(zhǔn)確也不嚴(yán)謹(jǐn),但是好理解)。通過編程語言告訴計(jì)算機(jī)做什么。
曾經(jīng)有數(shù)學(xué)家在解決一些問題的時(shí),發(fā)現(xiàn)可以把問題分解成不同的步驟。
這些步驟看起來是很笨拙的,但是確實(shí)很解決問題。
比如說,1+2+3+……+100,我們知道是(1+100)*50/2。
編程思維是,從1開始,循環(huán)到n。
每一步都是前面的和 加上 n。
第一次:1
第二次:1+2=3
第三次:3+3
……
類似這樣,每一次都做加法,循環(huán)100次。
整體來說,解決這些,大致可以分成3種應(yīng)對(duì)措施。
順序
從上到下依次做一件事
選擇
判斷,假如滿足1種條件,做什么
循環(huán)
就是類似上面的做法
這就是編程的思想了。把問題拆分開來解決。
這和編程語言有什么關(guān)系呢。
07 編程語言怎么和計(jì)算機(jī)說話
前面講了編程的思維。計(jì)算機(jī)就可以理解成是一套精密的設(shè)備。
它有一些功能,必然說在屏幕上顯示一個(gè)小點(diǎn)。
真正實(shí)現(xiàn)這個(gè)功能是很復(fù)雜的,電腦的各種硬件設(shè)備調(diào)度之后才可以。
這其中的復(fù)雜程度遠(yuǎn)超我們想象,但是大部分編程的不需要了解這個(gè)。
因?yàn)橛腥税堰@個(gè)工作包裝成一個(gè)功能的單元。由操作系統(tǒng)調(diào)度。
也就是平常我們說的Windows和蘋果的IOS等,來和硬件打交道。
但是這個(gè)工作還是太復(fù)雜了,所以他們把各種工作做了分類。
有讓屏幕亮一下的,有讓設(shè)備發(fā)出聲音的等等。
這個(gè)時(shí)候編程語言就出來了,加入設(shè)備有1000種功能。
這1000種功能怎么歸類,怎么使用起來方便,就是各個(gè)語言不同的設(shè)計(jì)思路。
從這個(gè)意義上說,編程語言其實(shí)是給人看的,并不是給計(jì)算機(jī)看的。
從這個(gè)意義上來說,人是很Low的。只能用這樣的大白話來溝通。
各種編程語言------>告訴操作系統(tǒng)要干啥------>操作系統(tǒng)調(diào)度硬件。
各種語言就是,對(duì)計(jì)算機(jī)的不同理解。

08 編程需要了解很多現(xiàn)成的東西,編程只是其中很基礎(chǔ)的一個(gè)手段
前面說的是編程語言的區(qū)別。
實(shí)際解決問題的時(shí)候,不太可能直接從頭開始編。
這個(gè)其實(shí)很好理解。
我要做法,但是我不想切菜洗菜,那就有人幫我們把菜切好洗好。
有人覺得這樣不干凈,有人純粹覺得這樣省力。
編程要解決問題,做飯要解決吃飽的問題。
去菜市場(chǎng)買菜,買回來洗好切好,炒好,吃!
外賣送切好的菜過來,炒好,吃!
編程需要了解哪里買的菜比較好。比較適合自己!
但是現(xiàn)在培訓(xùn)的都是從種菜開始的開始。
有意義嗎?當(dāng)然也有,但是并不是必要的。

09 編程會(huì)怎么變化,只會(huì)越來越傻瓜
很多年前,在手持設(shè)備上開發(fā),需要考慮崩潰,內(nèi)存不足等等各種狀況。
開發(fā)的語言也相對(duì)底層,C為主,也有用匯編的。
后來慢慢的就越來越簡單了。
為什么有Java這個(gè)語言,在一些人看來,主要是解決工程化的問題。
相比來說,C,C++這些語言,門檻是比較高的。
什么意思呢,就是我學(xué)會(huì)做飯,首先要學(xué)會(huì)修煤氣灶。但是其實(shí)我只是餓了,吃泡面也是可以的。
Java把很多編程復(fù)雜的東西,都包起來,不讓我們看到了。
把編程的門檻降低以后,意味著更多的人可以加入進(jìn)來,加快整個(gè)行業(yè)的發(fā)展速度。
其實(shí)這些單機(jī)的語言討論已經(jīng)意義不大了。
現(xiàn)在硬件的成本很低,更重要的是,問題規(guī)模都不在單機(jī)能解決的。
每年淘汰的語言,新產(chǎn)生的語言都很多。
不見得學(xué)了Python,學(xué)了C++就獨(dú)步天下了。
如果興趣沒那么大,其實(shí)真沒啥必要。

10 語言沒那么重要
有些孩子學(xué)了C++,學(xué)了Python會(huì)覺得有特別大的成就感。
其實(shí)對(duì)于現(xiàn)在幾千幾萬種編程語言來說,整體都是大同小異的。
無非就是不同的語法糖而已。
要計(jì)算1加到100,每個(gè)語言解決的時(shí)候都是類似的。
區(qū)別的是解決一些具體問題的時(shí)候,有些差異。
這種差異有些是運(yùn)行差異,執(zhí)行銷量差異,有些是工程差異。
什么意思呢,人比機(jī)器貴,所以如果要花很多人力,結(jié)果節(jié)省了一點(diǎn)時(shí)間。
未必是一個(gè)合算的買賣。
編程語言沒那么重要,不要為了編程語言的語法迷惑。
沒有什么高低貴賤之分。
如果真把Excel用好,大部分的Python都是廢的。
現(xiàn)在很多Python的培訓(xùn)廣告,似乎比Excel強(qiáng)很多。
但是,現(xiàn)實(shí)可能等把運(yùn)行環(huán)境,開發(fā)環(huán)境弄利索,差不多也得放棄了。
關(guān)鍵得快速解決問題。

不知不覺,已經(jīng)進(jìn)入中學(xué)階段,叛逆的萌芽已經(jīng)越發(fā)明顯,許多看起來無法接受的缺點(diǎn),拖沓,拖拉,信心不足,情緒管理不善,丟三落四,凡此種種,一應(yīng)俱全。我似乎慢慢把一手好牌給打壞了。不管如何,還是希望嘗試著記錄這段經(jīng)歷,聊以慰藉,撫慰余生。