精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
那什么是編程,編程難學(xué)嗎?

近年來大學(xué)最熱門的專業(yè)無疑是計(jì)算機(jī),而在中小學(xué)基礎(chǔ)教育這塊兒,編程熱也是方興未艾,連奧巴馬也提出“編程要從娃娃抓起”。

當(dāng)我看到才小學(xué)二年級(jí)的女兒,都已經(jīng)在學(xué)校學(xué)編程了,而七年級(jí)的兒子也才剛剛開始接觸Scratch(MIT開發(fā)的簡(jiǎn)易編程環(huán)境),不禁有點(diǎn)按捺不住。于是靠教編程謀生的我,生平第一次動(dòng)了讓13歲的兒子系統(tǒng)學(xué)編程的念頭。

為什么要學(xué)編程?

現(xiàn)在任何行業(yè)都離不開計(jì)算機(jī),會(huì)編程這項(xiàng)技能,在求職時(shí)就如同90年代會(huì)英語一樣搶手。

學(xué)編程,不是為了將來當(dāng)程序員。

而是為在自己行業(yè)里獲得更多的機(jī)會(huì), 比如說做財(cái)務(wù)的,工作中少不了和excel表打交道,即使對(duì)每個(gè)菜單功能都很熟悉,還是有需要定制一些專門的查詢功能,這時(shí)編程就是不可或缺的技能。

也是因?yàn)橛?jì)算機(jī)對(duì)今天我們的生活而言,就如同汽車對(duì)出行的重要。開車即使有定期去車行保養(yǎng),學(xué)習(xí)汽車相關(guān)的知識(shí),萬一出行途中汽車發(fā)生故障也不至于驚慌失措;而且說不定因此感興趣了,鉆研進(jìn)去,自己嘗試做個(gè)升級(jí)改裝也未嘗不可。學(xué)編程,也是同理。電腦或是手機(jī)無論硬件還是軟件,總會(huì)有出問題的時(shí)候,會(huì)編程的人可以自己做簡(jiǎn)單故障定位,也可以作為興趣愛好在閑暇時(shí)間里做個(gè)網(wǎng)頁,寫給APP什么的。

【1】編程,學(xué)什么?

每次聊起學(xué)編程,被問到的第一個(gè)問題往往是“學(xué)哪種編程語言好”。

回答這個(gè)問題之前,我想問你,覺得自動(dòng)檔和手動(dòng)檔的車,哪種好呢?

當(dāng)前初學(xué)者中最流行的Python和Javascript 就像自動(dòng)檔車,編寫簡(jiǎn)單,強(qiáng)大庫函數(shù)支持廣泛應(yīng)用;而最為經(jīng)典的C語言就像手動(dòng)檔,難學(xué)難用,還需要通曉編譯原理、操作系統(tǒng)和計(jì)算機(jī)體系結(jié)構(gòu),當(dāng)然也最能體味駕駛的樂趣。

以前總覺得C語言對(duì)初學(xué)者太難了,這個(gè)想法今年5月在安大略省高中編程賽被徹底顛覆。一支由三個(gè)分別是五年級(jí),七年級(jí)和八年級(jí)亞裔男孩組成的隊(duì)伍特別醒目,年齡比其他選手小很多,卻在由各個(gè)學(xué)區(qū)優(yōu)勝者組成56支高中編程隊(duì)脫穎且出名列第九。這三個(gè)孩子就是用C語言寫的程序,C語言也是他們唯一接觸過的編程語言。所以初學(xué)者具體學(xué)什么語言,因人而異。

思維指導(dǎo)行動(dòng)。未來人人都會(huì)寫代碼,但程序設(shè)計(jì)是否簡(jiǎn)潔高效,就得在思維上見高低了。十年前,卡耐基梅隆大學(xué)計(jì)算機(jī)教授Jeannette Wing 提出Computational Thinking “編程思維”的概念,指出通過學(xué)習(xí)編程,內(nèi)里培養(yǎng)的其實(shí)是認(rèn)識(shí)問題和解決問題的思維方式,而這種思維方式可以跨界應(yīng)用到其他領(lǐng)域的學(xué)習(xí)和實(shí)踐中。

也就是說和編程語言相比,編程思維是內(nèi)功心法,在此基礎(chǔ)上,學(xué)習(xí)和使用哪種語言,猶如使用哪種兵器,只是工具層面上的東西

【2】什么是編程思維

編程思維的四個(gè)組成模塊。

編程思維本質(zhì)上來說,就是能夠把現(xiàn)實(shí)生活中的復(fù)雜問題,逐步拆分成可理解的小問題,(Decomposition 拆分),接著根據(jù)已有的知識(shí)和經(jīng)驗(yàn),找出新問題和以前解決過的問題的相似性,舉一反三琢磨出規(guī)律(Pattern Recognition 模式識(shí)別),然后將問題里涉及的數(shù)據(jù)抽象(Abstraction)到數(shù)據(jù)結(jié)構(gòu)(變量,數(shù)組,鏈表等等),把數(shù)據(jù)處理過程可重復(fù)執(zhí)行部分抽象(Abstraction)成函數(shù)模塊,通過循環(huán)執(zhí)行,最后根據(jù)前三步的分析成果,設(shè)計(jì)步驟,寫出算法(Algorithms),從而解決問題。

編程思維本身是一個(gè)非常抽象的概念,下面我舉個(gè)例子來詳細(xì)解釋一下它的四個(gè)組成模塊。

【3】編程思維1-2-3-4

我們都聽說過這樣一個(gè)故事:數(shù)學(xué)家高斯在三年級(jí)時(shí)候,老師要求從1+2+3開始一直加到100,其他同學(xué)都費(fèi)勁的一個(gè)數(shù)一個(gè)數(shù)的加,只有小高斯注意到了這些數(shù)可以兩兩配對(duì),相加和為101:

1+100=101

2+99=101 等等

一共有50對(duì),最后的和可以用乘法來做:(50X101)=5050

高斯的上述解題思路充分體現(xiàn)了編程思維中的拆分和模式識(shí)別,再進(jìn)一步延伸,就可以概括出求任意范圍【a, b】連續(xù)整數(shù)求和公式:(a+b)x (b-a)/2。

把原題擴(kuò)展一下:

假設(shè)你有100張撲克牌,依次編號(hào),從1到100,打亂洗牌后,突然發(fā)現(xiàn)少了一張,怎么知道少掉的是哪張?

下面我們?cè)囍镁幊趟季S一起來一步步的解決這個(gè)問題。

第一步拆分:通過一張一張的查找,先在這堆牌里找1,再在剩下的牌里找2,然后再找3,依次下來,最后總能發(fā)現(xiàn)哪張少了。這種方法的局限是如果牌張數(shù)少還行的通,如果張數(shù)多,費(fèi)時(shí)費(fèi)力的,但符合一般人的解題思路。

第二步模式識(shí)別:如果能聯(lián)想到高斯的求和題,所有牌的面值總和應(yīng)當(dāng)是5050,將手上的牌一張接一張的加起來,假設(shè)得到的和是5040,用5050-5040=10,很快知道少掉的那張牌是10.這種方法比起前一種,明顯棋高一著。

第三步抽象:擴(kuò)展到現(xiàn)實(shí)生活中,假設(shè)有一副撲克牌,少了一張,如何快速定位少的是哪張?

一般情況下,我們都會(huì)重新理牌,先把4張Ace都找出來,再把四張2放在一起,依次下去,最后總可以看出哪張牌的哪種花色少了。

這種常規(guī)方法效率很低,如果聯(lián)想到我們剛剛建立的求和模型,是不是可以用來更為快速有效的解決這個(gè)問題?粗看每個(gè)數(shù)字都有四種花色,不唯一,好像不適用。

但是如果我們能解決如何把撲克牌花色和數(shù)字映射到計(jì)算機(jī)可以處理的數(shù)據(jù)的問題,就可以試用剛才的求和模型了。這也是考驗(yàn)抽象的能力的時(shí)候了。

不妨按花色來,設(shè)紅桃A 為1 , 紅桃2 為2 ,依次到K是13,然后方塊A為14,到方塊K是26,以此類推,黑桃A到K是 27到39,梅花則是40到52。

這樣一來問題就轉(zhuǎn)化成了有52張撲克牌,依次編號(hào),從1到52,洗完牌,發(fā)現(xiàn)少了一張,請(qǐng)問少掉的是哪張?是不是就可以很容易的套用第二步里總結(jié)的求和解題模型了?

再試想你有一千,一萬,甚至上百萬副撲克牌,每副都少一張(不盡相同),怎么能快速定位的少掉是哪些牌呢?

只要你能設(shè)計(jì)出快速定位一副牌里缺了哪張牌的計(jì)算方法,無論多少副牌,計(jì)算機(jī)都能在一眨眼的功夫,全部準(zhǔn)確無誤的給你找出來。計(jì)算機(jī)相對(duì)于人腦,有存儲(chǔ)容量大和處理速度快的優(yōu)勢(shì),所以計(jì)算機(jī)最擅長(zhǎng)的就是重復(fù)勞動(dòng)。能夠讓計(jì)算機(jī)從事高效的重復(fù)勞動(dòng)的前提,是人先思考和分析怎樣把復(fù)雜工作分解成多個(gè)可機(jī)械重復(fù)執(zhí)行的模塊,然后才可以通過程序讓計(jì)算機(jī)來處理。而這步比寫程序本身來的重要的多。

第四步 算法:當(dāng)要處理的數(shù)據(jù)映射到合適的數(shù)據(jù)結(jié)構(gòu),可復(fù)用的處理模塊也都分辨識(shí)別出來后,下一步就是利用條件,循環(huán),子程序模塊,來規(guī)劃出程序設(shè)計(jì)步驟,從而解決問題。

所以說,編程思維的核心,不是編程語言,也不是語法,甚至不是算法或數(shù)據(jù)結(jié)構(gòu)本身,而是如何分解問題,從中發(fā)現(xiàn)規(guī)律,建立解決問題的模型,并映射到合適的數(shù)據(jù)結(jié)構(gòu)和算法上,然后才能根據(jù)算法寫程序?qū)崿F(xiàn)。在此過程中,前兩步分解和模式識(shí)別,其實(shí)完全隸屬數(shù)學(xué)思維范疇,也是編程思維的基礎(chǔ)。而抽象和算法才是編程思維所獨(dú)有的。 也是在孩子學(xué)編程過程中,最需要強(qiáng)調(diào)的。

【4】編程思維,怎么學(xué)?

從以上對(duì)編程思維的解析來看,培養(yǎng)編程思維的前提條件是有扎實(shí)的數(shù)學(xué),尤其是代數(shù)基礎(chǔ)。數(shù)學(xué)基礎(chǔ)還沒打牢,就開始學(xué)編程,無異于建造空中樓閣。

在孩子有一定代數(shù)基礎(chǔ)的前提下,抽象思維和算法這兩部分應(yīng)該是編程思想的重點(diǎn),也是難點(diǎn),那么該怎么學(xué)呢?

如果對(duì)這方面有興趣的話,我建議你了解AP College Board新推出的一門課程叫 AP Compute Science Principles,這門課過去四年在不少大學(xué)里已經(jīng)試點(diǎn)開設(shè),旨在教授編程思維和計(jì)算機(jī)科學(xué)中的核心基礎(chǔ)內(nèi)容。我打算讓兒子自學(xué)的斯坦福的CS101課程也是因此而產(chǎn)生的。而AP Compute Science Principles這門課程從今年秋天起也會(huì)在高中開設(shè),這是計(jì)算機(jī)教學(xué)領(lǐng)域里非常值得期待的一件事情。

回到學(xué)編程的話題,能夠讓孩子主動(dòng)心甘情愿的學(xué)任何東西,大都滿足兩點(diǎn)要求:“有趣”和“有用”。因?yàn)橛腥ぃ拍芗ぐl(fā)其好奇心,去探索思考。因?yàn)橛杏茫拍軓闹蝎@得成就感,成為進(jìn)一步學(xué)習(xí)的動(dòng)力。

遵循以上兩點(diǎn),我給兒子制定了如下的編程學(xué)習(xí)計(jì)劃。

第一周: http://lightbot.com/hocflash.html 這款基于Flash的可編程游戲,不用來學(xué)編程,單純作為益智類類游戲來完也很有意思。 從最初的順序執(zhí)行指令,到后來引入條件,循環(huán),和子程序,是訓(xùn)練編程思維的好工具。 其中子程序部分,非常考驗(yàn)孩子有效分辨可復(fù)用編程模塊的抽像能力。

同時(shí)閱讀Blown to Bits的部分章節(jié) http://www.bitsbook.com/excerpts/ ,全書的PDF版可以在鏈接里免費(fèi)下載。學(xué)習(xí)編程,首先需要回答為什么要學(xué)的問題?這本書通俗易懂的介紹了作為信息技術(shù)主體的計(jì)算機(jī)如何改變著人類社會(huì)的方方面面,引導(dǎo)孩子在信息爆炸的時(shí)代里辯證的看待各種新興技術(shù)及其影響。

第二周:介紹編程思維,可以用我上面所舉的找撲克牌的例子,看看孩子能否結(jié)合他玩lightbot游戲的經(jīng)歷,對(duì)編程思維有所認(rèn)識(shí)。

第三周開始:使用斯坦福大學(xué)的CS101在線課程開始自學(xué)。

https://lagunita.stanford.edu/courses/Engineering/CS101/Summer2014/about

該課程以Javascript作為工具,教授編程思想和計(jì)算機(jī)技術(shù)中的核心基礎(chǔ)內(nèi)容, 課程以視頻和在線練習(xí)結(jié)合的方式,自學(xué)模式下,預(yù)計(jì)六周完成。而這門課雖然不是專門教編程的課,但是涉及的編程都是孩子們普遍感興趣的數(shù)字圖像處理實(shí)驗(yàn),相信不少孩子會(huì)喜歡。

下圖是一些學(xué)生在學(xué)這門課程過程中,用JavaScript寫的程序生成的Fractal(分形)圖像。

順便提一下編程語言,我一直比較傾向于初學(xué)者學(xué)JavaScript,JavaScript作為Web客戶端的主流編程(腳本)語言,可以在瀏覽器里直接運(yùn)行,孩子寫幾行代碼,就可以在計(jì)算機(jī)或智能手機(jī)上查看效果,即簡(jiǎn)單直接,又有用有趣。

以下為該課程涵蓋內(nèi)容:

The nature of computers and code, what they can and cannot do

How computer hardware works: chips, cpu, memory, disk

Necessary jargon: bits, bytes, megabytes, gigabytes

How software works: what is a program, what is 'running'

How digital images work

Computer code: loops and logic

Big ideas: abstraction, logic, bugs

How structured data works

How the internet works: ip address, routing, ethernet, wi-fi

Computer security: viruses, trojans, and passwords, oh my!

Analog vs. digital

Digital media, images, sounds, video, compression

我把每章節(jié)內(nèi)容從頭到尾過了一遍,總體難度適中,如果家長(zhǎng)能夠給予適當(dāng)?shù)闹笇?dǎo)和幫助的話,初中生自學(xué)不成問題。如果孩子通過以上兩個(gè)月課程,對(duì)編程產(chǎn)生興趣的話,那么下一步,就該系統(tǒng)的掌握一門編程語言了。

【5】學(xué)了編程思維,然后呢?

沒有實(shí)踐的思維,只是空想。學(xué)完編程思維之后,還是有必要深入的學(xué)習(xí)一門編程語言,在實(shí)踐中應(yīng)用編程思維解決問題。學(xué)習(xí)編程語言,網(wǎng)上有大量?jī)?yōu)質(zhì)資源,孩子可以用來自學(xué)。

我在教學(xué)中常用的有以下幾個(gè)

Codecademy 好處是常用的編程語言的教程都有。缺點(diǎn)是Bug不少,明明按照要求輸入完全正確的代碼,服務(wù)器端老是顯示代碼錯(cuò)誤,讓孩子非常沮喪。遇到這種情況,多試幾次,如果還是不行,鼓勵(lì)孩子到Q&A論壇上看其他人是如何解決這樣問題。

雖然編程可以自學(xué),條件允許的情況下,幾個(gè)程度相當(dāng)孩子一起學(xué),互相交流,互相幫助,共同進(jìn)步的效果會(huì)更好。前文提到我在省高中編程競(jìng)賽時(shí)遇到秒殺很多高中生的三個(gè)用C語言的小男孩,當(dāng)時(shí)很感興趣的追問他們是在哪里學(xué)的編程。原來他們每周課后兩次到附近的高中Woburn CI,參加由那里學(xué)生組織的編程俱樂部。編程俱樂部以師傅帶學(xué)徒方式運(yùn)作,大孩子教小孩子,有經(jīng)驗(yàn)的幫助新手。雖然沒有老師指導(dǎo),但是這種以共同興趣為基礎(chǔ)的互助氛圍里培養(yǎng)出來的孩子居然完勝那些經(jīng)過兩三年正規(guī)編程訓(xùn)練的大孩子,真是很讓人深思的事情。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
計(jì)算思維:編程教育的價(jià)值追求
[分享] 關(guān)于編程的學(xué)習(xí)
中小學(xué)生學(xué)少兒編程最愛的4大編程軟件
算法是數(shù)學(xué)?編程是算法?未來的孩子必學(xué)編程?不如看看這部紀(jì)錄片。
機(jī)器人編程和少兒編程到底有什么區(qū)別?
你可能不知道的8本經(jīng)典兒童編程思維書籍
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

主站蜘蛛池模板: 宣汉县| 吉木乃县| 江山市| 营山县| 桂东县| 津市市| 商水县| 江达县| 金乡县| 清丰县| 理塘县| 武宁县| 广州市| 米林县| 安康市| 郎溪县| 卫辉市| 桐梓县| 滦南县| 巴林右旗| 遂昌县| 乐陵市| 盐津县| 横山县| 墨玉县| 吉林市| 海门市| 青田县| 涞水县| 萍乡市| 赞皇县| 涿州市| 乌什县| 广宁县| 乐都县| 丘北县| 登封市| 海安县| 外汇| 兴海县| 唐河县|