如何教孩子學(xué)習(xí)編程

作者:范德成

鏈接:https://www.zhihu.com/question/19705160/answer/164490969

我想過這個(gè)問題多年了台夺。我家娃長(zhǎng)大以后,我會(huì)這樣教她:首先痴脾,計(jì)算機(jī)的本質(zhì)是有限狀態(tài)自動(dòng)機(jī)颤介。所以先教有限狀態(tài)自動(dòng)機(jī)。為了有趣赞赖,做一個(gè)C語言字面量字符串解析器滚朵,也就是能解析"Hello\tWorld\x21\x20What's\x0020up?\040\n"這樣的一個(gè)狀態(tài)機(jī)。然后前域,介紹馮·諾依曼計(jì)算模型辕近。主要概念是分別存儲(chǔ)程序和數(shù)據(jù)。程序不再只是放在ROM中的话侄,而是可以加載進(jìn)RAM里執(zhí)行的亏推。

再接下來學(xué)習(xí)BASICA/GWBASIC∧甓眩看起來有點(diǎn)老古董吞杭,但實(shí)際上它們能做的事情也不少,比如用來做一個(gè)簡(jiǎn)單的財(cái)務(wù)處理程序变丧,或者畫一個(gè)餅圖芽狗,做一個(gè)漢諾塔小游戲等等。內(nèi)存只有64KB可用痒蓬,還可以讀寫文件童擎,可以讓孩子學(xué)到內(nèi)存和文件大小的概念。BASICA/GWBASIC學(xué)到了非結(jié)構(gòu)化編程攻晒。

接下來學(xué)QBASIC顾复,它帶來了結(jié)構(gòu)化編程的概念。包括函數(shù)調(diào)用鲁捏。學(xué)函數(shù)調(diào)用時(shí)要教一下棧的概念芯砸。QBASIC教的時(shí)候還要著重學(xué)一下內(nèi)存池。因?yàn)橹钡絈BASIC為止還沒有malloc的功能给梅。要教一下用內(nèi)存池怎樣分配和釋放對(duì)象假丧。

QBASIC可以學(xué)到初二。然后教C語言初步动羽,這個(gè)講究程序效率和匯編對(duì)應(yīng)性的中級(jí)語言包帚。內(nèi)存分配、未初始化內(nèi)存运吓、讀寫越界渴邦、野指針疯趟、內(nèi)存泄漏、重復(fù)釋放几莽、general protection fault等等都要講一下迅办,并教一下怎樣做錯(cuò)誤處理。結(jié)構(gòu)體的內(nèi)存布局章蚣、對(duì)齊站欺。匯編代碼一覽。然后用函數(shù)指針來實(shí)現(xiàn)一下接口和多態(tài)纤垂。

初三估計(jì)可以講http://VB.NET和C#了矾策。強(qiáng)類型、內(nèi)存安全并帶垃圾回收的編程語言的好處峭沦。泛型的優(yōu)勢(shì)贾虽。用http://VB.NET8.0以上,或者C# 2.0以上吼鱼,可以用它們的state machine功能教一下協(xié)程coroutine的概念蓬豁。同時(shí)以回顧歷史的方式教一下Windows 3.x協(xié)作式多任務(wù)。用C#模擬一下Windows的消息循環(huán)菇肃。它們和Windows 95的搶占式多任務(wù)的不同地粪。并且,如果在語言沒有提供協(xié)程功能的情況琐谤,怎樣手動(dòng)展開棧來實(shí)現(xiàn)協(xié)程蟆技。

C#和http://VB.NET的面向?qū)ο缶幊瘫厝皇且痰摹_@是一個(gè)好時(shí)機(jī)斗忌。

然后教Python和JavaScript质礼。這兩門動(dòng)態(tài)類型語言最好和TDD一起教。這是因?yàn)門DD可以避免動(dòng)態(tài)語言運(yùn)行時(shí)再確定類型而讓人容易犯的類型錯(cuò)誤织阳。TDD中可以隨時(shí)添加有關(guān)類型的斷言眶蕉,以避免類型錯(cuò)誤。而且唧躲,動(dòng)態(tài)語言本來就寫起來比較簡(jiǎn)潔造挽,加上TDD既保證了質(zhì)量,又不會(huì)像靜態(tài)類型語言那樣繁瑣惊窖。

Python和JavaScript的面向?qū)ο缶幊桃脖厝皇且痰摹?/i>

接下來刽宪,估計(jì)是在高一吧厘贼。要深入C語言了界酒,并結(jié)合操作系統(tǒng)和應(yīng)用程序環(huán)境,用它來做幾個(gè)生產(chǎn)用的程序嘴秸。話說高中課業(yè)壓力大毁欣,如果學(xué)不完庇谆,放到大學(xué)再學(xué)也是可以的。

然后學(xué)C++凭疮。學(xué)C語言的時(shí)候我覺得C89標(biāo)準(zhǔn)就行饭耳,但C++我覺得不必學(xué)太老的,因?yàn)樵谖铱磥碇唇猓珻++ 98本身就是一個(gè)不成熟的版本寞肖。應(yīng)該學(xué)C++ 11/14等新標(biāo)準(zhǔn)。直接啃@vczh大俠審校的C++ Primer 5th Edition就行衰腌。

數(shù)據(jù)庫學(xué)兩個(gè)新蟆,Python/C#訪問sqlite和C#訪問SQL Server。

多線程編程右蕊。先教有鎖數(shù)據(jù)結(jié)構(gòu)琼稻。等到有鎖數(shù)據(jù)結(jié)構(gòu)學(xué)好了以后,再教互鎖(interlocked)操作饶囚。完了以后再介紹一下無鎖多線程編程帕翻,它的優(yōu)勢(shì)和劣勢(shì)。

最后要討論一下如何把多線程程序手動(dòng)轉(zhuǎn)換為協(xié)程以讓它變得可以做單元測(cè)試萝风∴值В基本的數(shù)據(jù)結(jié)構(gòu)和算法。其他主題闹丐,隨需要而學(xué)横殴,包括計(jì)算機(jī)體系結(jié)構(gòu)、數(shù)據(jù)結(jié)構(gòu)和算法卿拴、網(wǎng)絡(luò)衫仑、操作系統(tǒng)、數(shù)據(jù)庫堕花、編譯原理(包括垃圾收集)文狱、圖形學(xué)、圖像處理缘挽、音頻處理瞄崇、函數(shù)式編程、機(jī)器學(xué)習(xí)等壕曼。

所有這些教學(xué)都以雙語進(jìn)行苏研,特別是語言規(guī)范等都直接看英文原版。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末腮郊,一起剝皮案震驚了整個(gè)濱河市摹蘑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌轧飞,老刑警劉巖衅鹿,帶你破解...
    沈念sama閱讀 217,826評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件撒踪,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡大渤,警方通過查閱死者的電腦和手機(jī)制妄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,968評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來泵三,“玉大人耕捞,你說我怎么就攤上這事√棠唬” “怎么了砸脊?”我有些...
    開封第一講書人閱讀 164,234評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)纬霞。 經(jīng)常有香客問我凌埂,道長(zhǎng),這世上最難降的妖魔是什么诗芜? 我笑而不...
    開封第一講書人閱讀 58,562評(píng)論 1 293
  • 正文 為了忘掉前任瞳抓,我火速辦了婚禮,結(jié)果婚禮上伏恐,老公的妹妹穿的比我還像新娘孩哑。我一直安慰自己,他們只是感情好翠桦,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,611評(píng)論 6 392
  • 文/花漫 我一把揭開白布横蜒。 她就那樣靜靜地躺著,像睡著了一般销凑。 火紅的嫁衣襯著肌膚如雪丛晌。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,482評(píng)論 1 302
  • 那天斗幼,我揣著相機(jī)與錄音澎蛛,去河邊找鬼。 笑死蜕窿,一個(gè)胖子當(dāng)著我的面吹牛谋逻,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播桐经,決...
    沈念sama閱讀 40,271評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼毁兆,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了阴挣?” 一聲冷哼從身側(cè)響起气堕,我...
    開封第一講書人閱讀 39,166評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后送巡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,608評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡盒卸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,814評(píng)論 3 336
  • 正文 我和宋清朗相戀三年骗爆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蔽介。...
    茶點(diǎn)故事閱讀 39,926評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡摘投,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出虹蓄,到底是詐尸還是另有隱情犀呼,我是刑警寧澤,帶...
    沈念sama閱讀 35,644評(píng)論 5 346
  • 正文 年R本政府宣布薇组,位于F島的核電站外臂,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏律胀。R本人自食惡果不足惜宋光,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,249評(píng)論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望炭菌。 院中可真熱鬧罪佳,春花似錦、人聲如沸黑低。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽克握。三九已至蕾管,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間菩暗,已是汗流浹背娇掏。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留勋眯,地道東北人婴梧。 一個(gè)月前我還...
    沈念sama閱讀 48,063評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像客蹋,于是被迫代替她去往敵國(guó)和親塞蹭。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,871評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容