陪娃學編程 - 後記,沒玩過的迪士尼電子遊戲

2020-08-27 小堂前

七七八八的,上下也不著邊際的,寫了這麼多文字。是想給那些辛苦陪孩子們學習編程的,但是對計算機專業和所謂編程沒有任何背景的父母們一點點幫助。希望能給他們一點點提示,可以從其他角度理解什麼是編程。以及編程裡面涉及的一些比較或相對難的概念。能讓他們和學習編程的孩子們,一起進行交流,也可以給孩子們一些提示。這些內容不一定完全可以給孩子們講,只是想給那些陪著孩子的爸爸媽媽們,一些提示,我們不一定總是把所有的精力集中在那個程式語言本身,我們也可以擴展到其他的地方,把生活當中遇到一些相關的概念,類似的概念,融入到編程的相關概念理解中。

最後我一直想說的內容就是,真的不要把學習一種特定程式語言作為絕對的目標。讓孩子去學習程式語言,這個有一點像,我們現在很多人可能都會學習烘培,學做飯。特別是學習烘培的時候,我們可能會買很多工具,有人說,一入烘培深似海,有很多工具都要買,但是你會發現,最後如果你不堅持一直做這些烘培的話,那些烘培工具基本上就會閒置。

其實學習編程也大概是一樣的,你會發現學習程式語言的時候,你可能先學C++,然後你就會覺得,還有別的東西,還有別的語言需要學,那你就會不斷的去學。其實很多程式語言,大致的語法規則是基本類似的。不像自然語言,可能在某些自然語言當中,比如說漢語和英語,會有非常大的區別。程式語言,世界通用的程式語言基本上都是用英文字母寫的,所以其語法也基本上類似的。

通常情況下,讓孩子學習編程,我們確實不需要強求,說一定要精通這個程式語言,因為你的孩子將來不一定做程式設計師,也不一定做軟體工程師。那麼學習編程的目的是什麼?這個要想好,不是為了學習而學習,其實是開拓一種思路,認知一種人機互動過程。讓它能夠讓孩子們理解,這樣是一種控制,這樣是一種輸出,如何控制計算機成為工具。這裡邊,真的有很多東西可以學,但不僅基於程式語言的語法。

如果在某種情況下,孩子的數學能力還沒有達到一定程度的時候,可能在某些學習的時候,在學習某些語言的時候可能會產生一些困惑。我們可以選擇避開這些東西,沒有必要,一定要讓孩子學會那個。因為有的時候有些程式語言的學習資料,在講解過程當中,它會涉及到算法,這個算法其實就有很多數學的原理。孩子的數學沒有到一定程度的時候,那就不是學習程式語言本身了。比如說高等數學中的線性代數或是概率計算等等,就不要特別去超前讓孩子去一定要學會這個。

應該關注學習編程的思維模式,軟體工程的開發管理方法 - 如何把問題考慮全面?如何把問題分解?如果我們回到特別狹隘的概念來說,作為一個程式設計師或做一個軟體工程師,這也是其最基本的能力。也可以說是工程能力或是項目管理能力,作為一個程式設計師,一個軟體工程師的,基本功,可以這樣來講。我給大家講個笑話,迪士尼很早以前做過一個遊戲,本來想讓這個電子遊戲也同米奇一樣,可以風靡世界。可是出了個非常非常大的紕漏,這也許就是為什麼我們很少人知道甚至玩過這個電子遊戲的原因。我已經忘記了遊戲的名字。做這個遊戲的時候,迪士尼忘記了一個問題,是在當年的蘋果機上開發的遊戲。其實他們是想讓所有人都可以玩到這個遊戲,無論是蘋果計算機還是非蘋果計算機。可是他們忘記了世界上除了蘋果計算機還有其它的計算機系統。他們發售後,有很多人買回去以後發現,在自己的計算機不能使用。據說,當時迪士尼開發團隊完全忘記了在非蘋果計算機系統上進行測試。這個紕漏導致這個遊戲最終在市場上的失敗。

希望大家能夠享受學習程式語言的過程,也可以讓孩子們在學習的時候享受這個過程。也許以後,還會講點關於資料庫的相關簡單內容。


面向對象編程 - 《千裡江山圖》

《千裡江山圖》我看到這幅畫的時候,才第一次知道,中國畫除了水墨畫,還有設色青綠畫。所謂設色畫應該就指的是除了黑白水墨畫,中國也有彩色畫,而且彩色畫也不僅僅是水墨畫中加上紅色等的簡單色彩。再回到這《千裡江山圖》,它的作者該叫王希孟。據說他在畫這幅大作的時候,只有18歲上下,非常了不得,一位天才的畫家。看到這幅畫的時候,真實覺得中國的江山真是秀美壯麗。

這也是一副橫軸畫,有多長我不知道。但是從這幅畫,我才知道,中國的橫軸畫,並不是展開了以後掛在牆上,去看的。以前我覺得中國的橫軸畫很難看全,對於看它的人來說很難一下子把它全部內容收入眼底。就像《清明上河圖》那麼長的畫,要一點一點一點的看完,好像也沒有什麼順序。反正就是把畫家想畫的東西,全部畫在了長長的畫布上。看了《千裡江山圖》後我才知道,原來不是這樣的。看橫軸畫,其實要像我們現在看電影一樣,一幀一幀的放映;要一點點展開,一點點卷上。那你能看到的,大概就是你兩臂之間展開的一段圖景。這就像我們,在看一部影片,鏡頭會帶你把內容展開。假設右手一點點把畫面展開,同時左手再把展開的部分一點點卷上,這樣視線也就一直保持在一個固定的寬度了。

如果這樣去看這幅畫的話,王希孟是在講述一個故事,或者說他在拍一部紀錄片。他讓你先看到的,映入眼帘的可以說是這部記錄片的開頭,告訴你,當時大宋江山多麼的秀麗俊美。然後再一點點的展開,用分鏡頭去講述裡邊不僅有秀麗壯美的山川,還有小橋流水。一個一個分鏡頭講述完,然後再做一個終結性的鏡頭,畫面再次回到那壯麗的山河之間。我沒有看過原作,我只在網上看過。百度百科上有類似捲軸展開收起的展示,可以用滑鼠拉動,然後把這幅畫一幀一幀的看完。這個是比較形象去體驗古人如何觀賞橫軸畫的。

王希孟應該是一個中國宮廷畫匠,他不是一個文人,也不是朝廷大臣。他是當年宋徽宗時代,宮廷畫院裡面的一位匠人。王希孟好像很小的時候就被宋徽宗發現了,然後就把他留在了畫院裡面,不斷的去培養他,提攜他。不負宋徽宗的期望,十八歲上下的時候,就畫了這樣一幅《千裡江山圖》,傳世之作,至今也算是中國宮廷設色畫當中,或者青綠山水畫當中,絕對的珍品。但是很可惜,也許是因為王希孟僅僅是一個宮廷畫匠,我們幾乎查不到他的生平,比如他的家事,等等。只知道他留下來大概兩幅作品,另外一幅作品的名字我也不知道,我也沒有看過。我只看過這幅《千裡江山圖》。後來在查資料的時候,知道王希孟還有另外一幅作品。他好像在20歲左右的時候,就離開了人世。不知道那個時候是不是宋徽宗,或者說大宋王朝已經遭受了汴京之圍了。不知道王希孟是不是也跟隨著宋徽宗的北上的一個隊伍,就在押解途中死去了。這一切都沒文字記載可尋,非常可惜。但是無論如何他雖然只有20歲可能就去世了,並不能抹殺他的偉大。

王希孟也許就這樣被塵封在歷史過往中,可是這並不影響人們欣賞他的那幅畫作。人們依舊可以感受到千裡江山蘊含的無盡雄魂。面向對象編程中的三個特性之一,就是封裝(另外兩個是繼承和多態)。程式語言利用封裝,將類或對象內部的實現邏輯隱藏起來;使用者只關心所使用的對象預先設定的方法即可,這樣讓方法來控制對內部數據或屬性進行安全的訪問和操作。就像我們現在無法知曉王希孟成長的具體經歷和畫作時他所想所思,但是這些其實已經不那麼重要了。因為那些背後的內容的缺失,並不用影響人們對這幅畫作的欣賞。也許如果有一天,王希孟的經歷有了著落,這幅《千裡江山圖》也就香消命隕了。

陳丹青先生曾經把這一幅畫比作一部紀錄片,記錄了中國美好河山。如果把這部作品比作一部紀錄片的話,那其實王希孟就是這部紀錄片的導演。其實每一個畫家都像是現在影視作品的導演。他們對畫作的每一個細節的擺弄,就像導演在擺弄著每一個鏡頭,應該給講述什麼樣的故事。無論是畫家還是導演,從工程的角度來說,他們都是具有相當高度的工程型思維的人。學習任何一種程式語言的時候,希望大家儘量貼近軟體工程能力模型或是思維邏輯,而不是程式設計師。為什麼要叫軟體工程師呢?我們先把軟體這兩字拿掉,我們看工程師這個詞。工程師是需要一種系統性的,具有全面協調能力的工作。就比如說畫《千裡江山圖》,那他如果只表現細節,可能整體上就看不到《千裡江山圖》的雄偉壯麗。無論多麼宏大的構想,都需要一筆一筆的勾勒,才能最終展現出來。把心裡的藍圖逐步分解,變成一筆一筆的細節構圖,還有不同顏色的和角度的呈現分解,最後拼接成一幅完整的作品。

所以工程師是需要從頭到尾,既關注整體也關注細節的;軟體工程師也一樣。在我們做無論大的軟體還是小的軟體,我們都需要從頭到尾整體把握,但也要關注每個細節。對於一個作品,既要知道如何規劃,也要知道如何層層遞進,如何把它整體展現出來。這不僅是畫家要做到的,導演要做到的,這也是軟體工程師要做到的。也許在不久的將來,軟體也可以成為是一個藝術品,而不僅僅是一種為人們服務的工具。


面向對象編程 - 法國第一幅女性人體繪畫

據說中世紀的歐洲是不能畫裸體畫的,但是為什麼我們還會看到西方繪畫的古老作品依舊有人體繪畫呢?大概是這樣界定的,不能畫真實的人體,但是可以畫神的裸體。

據說法國繪畫史上第一幅女性的裸體畫,就是法國畫家讓·庫贊(也譯作古贊)畫的《曾是潘多拉的夏娃》。(這幅畫的原作現在收藏於法國的羅浮宮。網上可以搜索到相關圖片資料,現在提供一個連接僅供參考https://www.sohu.com/a/65383483_390348)我們看到那幅畫的名字,就很有意思,它實際上包含了兩個人,一個是潘多拉,一個是夏娃。潘多拉是希臘神話裡邊第一個人類的女性,她是由宙斯創造的,也就是希臘神話裡面最高的主神宙斯親手創造出來的。這是因為,據傳宙斯嫉妒人類,當時人類世界只有男性,看到他們生活的很美滿,也被稱為人類的黃金時代。他產生了嫉妒,所以就想給人類創造一些麻煩。這個時候他想到了在他們神的世界中就有兩個種類,一個是男神,一個是女神。而女神也經常給男神製造很多麻煩,所以他想人類兄弟們也應該有兩種,一種是男性,一種是女性,這樣他就創造了一個女性的人類。

宙斯用泥巴捏成了一個人類女性的身體,然後又給她人類的生命氣息。這樣,她就成了人類第一個女性,但是還沒有完。希臘諸神都要給這個人類女性禮物。比如,維納斯給了她和女神一樣的美貌;還有其它諸神都給了她各種技能。接受了諸神的禮物,Pantes就是所有的意思,而Dora是禮物的意思。Pandora所以就是所有神的禮物,那這個人類女性的名字就成了潘多拉,可後來為什麼會變成潘多拉魔盒呢?

這裡面有另外一個故事。埃庇米修斯因為愛慕潘多拉的美貌,就把她娶回了家。埃庇米修斯就是普羅米修斯的弟弟。米修斯(metheus)在希臘語裡面的意思是智慧者,思考者;普羅(pro)是預先的意思;合起來的普羅米修斯(Prometheus)就是先知者的意思。也就是說普羅米修斯是有先知先覺的。那埃庇米修斯(Epimetheus)呢?埃庇(epi)在希臘語裡面是後來的和後面的意思,這樣連在一起就變成了後知後覺者。其實,在埃庇米修斯動心要娶下潘多拉的時候,他的兄弟普羅米修斯就告訴他說,你會後悔的,她會惹出很多麻煩的。但是就是因為埃庇米修斯是後知後覺的,所以他並不知道這些麻煩會怎樣。埃庇米修斯最終還是決定娶潘多拉。娶回潘多拉後,有一次潘多拉很好奇埃庇米修斯有一個罐子,她就把那個罐子打開了,想看看那個罐子裡面到底裝了什麼?

這一打開可就不得了了。從那個罐子就冒出了各種東西,各種災難,各種煩惱,各種罪惡,然後跑到人間到處都是。這樣人類的黃金時代就結束了。由於潘多拉很害怕,所以她又把那個罐子的蓋子蓋上了,那裡面還留了一樣東西,那就是希望。所以人類雖然遇到了很多困難,很多麻煩,很多災難,但是也還有希望,人類一直世世代代的繁衍下來。這便是潘多拉的故事,很有意思,但是潘多拉的故事也並不那麼完整。有些地方上下還有些銜接不上,後來潘多拉怎麼樣了好像也沒了下文。也許寫希臘神話的作者,是一個痛恨女性的人,所以他把女性描寫成了一個結束人類(男性人類)黃金時代的締造者。

夏娃其實不用多說了,大家應該比較熟知,聖經舊約裡面的人物。亞當和夏娃犯了錯,所以他們被趕出了伊甸園。這個故事也是大家都很熟悉的。那後來,由於基督教的傳播有時候就會和希臘神話有所結合。在西方其實就有的時候會把潘多拉和夏娃結合在一起,因為她們都是女性,因為她們都是犯了錯誤,使得人類遭受了災難。

回到這幅畫來說,其實這幅畫就集成了這樣兩個故事,展現成為一幅畫作。大家可以根據前面提到的連結或用百度搜索,去看一下這幅畫。這幅畫有很多耐人尋味的地方。除了美貌的身體以外,畫中有很多象徵表現。比如,畫中有一個白色的罐子,其實就是象徵那個被潘多拉打開的罐子。在畫作中,還有一條蛇盤在了這位美麗女性的左臂上,這條蛇就代表了在伊甸園裡面,給亞當和夏娃蘋果的那條蛇。這幅畫作中還有一個紅色的罐子,至今眾說紛紜。目前有一個相對較多的版本,是說那是法王亨利二世進入巴黎,舉行慶典時候用過的一個器物。

這幅畫作中,其實包含了兩類故事題材,一類是古希臘神話故事,一類是聖經故事。前面曾經提到,面向對象編程中類的概念。我們可以把古希臘神話看做一個類,把聖經故事看做一個類。在這個畫中,其實是繼承了這兩個類的內容,然後還增加了一些內容,比如那個紅色的罐子。這種在面向對象編程的中,可以叫做繼承。我們可以將一個新類的內容中包括其它類的所有內容,然後加入需要更多的方法或內容,成為一個全新的類。這幅畫,其實是一個多繼承的例子,因為既有潘多拉也有夏娃。但是,大部分面向對象程式語言(除了C++)都只支持單繼承,而不支持多繼承。這是由於多繼承不僅增加了編程的複雜度,而且很容易導致一些莫名的錯誤。Python雖然在語法上明確支持多繼承,但通常推薦:如不必要,儘量使用單繼承。

其實,從神話故事的口語版到文字版,然後再到繪畫版,這也是一種繼承。如果我們看繪畫作品的話,有很大一部分是繼承各種聖經類的題材和古希臘神話類的題材。編程的一些概念應該說,很多都是來源我們日常的活動中的,深刻理解了日常生活,也一定會理解編程概念很深刻。


面向對象編程 - 拈花一笑,傳衣缽。

據說在釋迦摩尼一次講佛法的時候,釋迦摩尼手裡拿了一束花,展示給信徒們看。有一個人看到釋迦摩尼的手裡的花後,微微的一笑。這個人就是摩軻迦葉,他便是禪宗的初祖。這樣禪宗就成為了佛教的一個宗派,禪宗很有意思的一點就是不立文字,教外別傳。某種程度上我們可以說,禪宗是一種頓悟,也就是說你突然之間悟到了,那你也可以說成佛了。雖然禪宗不傳文字,但是總還有憑據來鑑定誰是繼任者,這樣就有了所謂的傳衣缽這件事情,衣就是木棉袈裟,缽就是化緣用的裝食物的器皿,我們可以把它看成是一個碗。這兩件東西就會一代一代的傳下去,就成為了禪宗的最高的法師的憑據。

後來,禪宗也來到了中國,中國禪宗的一祖叫菩提達摩。在中國開始禪宗的傳承,傳到了第五祖,叫做弘忍。他有很多徒弟。其中他的大弟子,叫神秀,也是弘忍諸多弟子中學問最好的一個。在他感到應該要準備開始傳衣缽的時候,至少他要在他的弟子當中選一個候選人;也就是說當他圓寂的時候,他的衣缽就會傳給這個候選人了,即中國禪宗第六祖。有一天,弘忍就出了一個題,請眾弟子寫一個偈子。但大家也都明白這是什麼意思。寫的好的那個人自然就會成為衣缽的繼承人。眾弟子當中,當然神秀應該是最優秀的一位了,也是大弟子。在眾弟子的關注中,神秀寫了一首偈子,他其實也是很忐忑的,覺得寫的好呢,當然很好;寫的不好呢,就有可能失去了這個繼承衣缽的機會。他寫到:身是菩提樹,心如明鏡臺;時時勤拂拭,莫使有塵埃。

弘忍看到眾弟子寫的和神秀寫的偈子後,就說大家還可以繼續寫。這個時候呢,一個燒火做飯的和尚說,我也來寫。這個和尚叫慧能。眾人說好呀,給你筆,你來寫。但是慧能說,我不識字,我當然也不會寫字了。眾人說那你還寫什麼呀,你這個不是開玩笑呢嘛。但是,慧能請人來幫他寫,那人執筆,慧能口述寫下了 - 菩提本無樹,明鏡亦非臺;本來無一物,何處惹塵埃。這句話一出,弘忍就從屋裡出來了。這誰寫的偈子?慧能說我寫的。弘忍問道,你是誰?慧能答道,我是做飯的。弘忍又問道,那你飯做好了嗎?慧能聽到後,並不作答,就回了夥房。

慧能回到夥房,不多時。弘忍就到了夥房,問道,你叫慧能?你不好好做你的飯,你寫什麼偈子?這時候弘忍就抄起柴火棍,打了慧能幾下,然後就走了。慧能心領神會,自然知道弘忍的意思,是說夜裡要他去找弘忍,要傳衣缽於他。這樣慧能後來就成為了中國禪宗第六祖。

這裡面有個很有意思的地方,西遊記也有一段類似的故事。孫悟空去學七十二變之前,是不是他的師傅也有非常類似的一段,就是在孫悟空的頭上打了幾下,然後孫悟空也是心領神會,知道這是師傅要他在夜裡那個時辰,去找他的師傅,然後學到了七十二變。那麼這兩個故事後面其實就蘊含著一個很有趣兒的地方,他們都是同一類題材。就是一個師傅要傳授給徒弟,一些特殊的技能,或者是特殊的內容。但是既不能直接當眾說,也不能說出具體傳授的時間在眾人面前,然後還要考驗這位徒弟能不能有悟性。那他就用一些特殊的方法來告訴和考驗他的徒弟,我什麼時候傳授給你?

那麼在編程裡面,對於面向對象語言來說,有一個類的概念,我們在編程的時候就可以定義一個類。上面的兩個故事,我們可以這樣定義一個類,也可以說對於故事的抽象概況:一定會出現一個師傅,一定會出現一個徒弟,然後師傅用一個隱蔽的方法,告訴這個徒弟什麼時候來找我,我要傳授你什麼東西;徒弟一定會心領神會的理解師傅的意圖。定義的這個類之後,我們就可以在編程的時候有千變萬化的體現。那我們看這兩個故事,其實就是呈現出來的兩個實例。編程裡面也有,定義了類之後,使用實例來實現具體的類的操作。那麼我們可以說這兩個故事就是實例的具體展現。

編程,編程,就是把生活編制在一起。「學計算機的人,是沒有專業的人。」這是我大學時,一位計算機專業課老師說的。當時還是無法完全理解的,現在基本明白這個是意思了。應該主要指的是軟體開發,如果一個完全不懂財務知識的人,其實是無法編寫財務應用系統的。編程就像織布,要經線和緯線交織在一起才能成為布匹,程式語言就像織布機和織布梭子,如果沒有線的交織,只能是一部空置的機器。生活中,有很多實例可以幫助我們理解編程的思維邏輯,不僅僅是程式語言中的語法規則和抽象的數學邏輯。

前面提到的禪宗不傳文字,法外別傳,除了拈花一笑這個實例,在西遊記中還有一個實例。當唐僧師徒四人到了西天,如來佛祖讓他們去拿經文的時候,第一次他們拿到的其實是無字的經書。那兩個給他們經書的佛陀之一,就有摩柯迦葉,他是禪宗初祖,自然只有無字經書呀。


「上帝啊!女王懷孕了,誰幹的?」

「上帝啊!女王懷孕了,誰幹的?」(Ah God! Queen pregnant, who did?)這看上去,像是一句簡單的玩笑話。但是卻是一部小說,或者是小小說。我沒有查證過,但是據說這樣一部作品,獲得了某一年的英國最佳小小說獎。這麼簡單的一句話就成功的獲獎了。這部小小說可以說含了小說的基本要素,有人物,有情節,還有一點懸疑。如果學習編程的話,比如說我們經常可以在程式語言教程的第一課看到的print(「Hello World」)這樣很簡單的內容,但卻包含了某種語言的基本要素,或者說它也是一個比較完整的程序。

這樣說來編程與寫文章大概有很類似的地方。首先我們都是利用一種語言,比如說,我們編程的時候是利用一種我們所謂的程式語言,C++,Python等等。那如果寫文章的話,其實我們是利用的一種自然語言,用英語,用漢語。無論寫文章還是寫程序,我們都是利用某一種語言,對自己的想法進行表達,或者說是表達某種既定的思維理念。

可能在某種情況下,這兩種完全表面上不同的語言表達,卻倒是有可能有很多類似的地方。在編寫程序的時候,我們肯定是要有一些不確定的東西,只有在我們程序運行起來的時候才會有實際的內容出現,比如我們要收集人們的姓名然後再把姓名存儲起來,在程序沒有運行前這個名字是無法知道的,所以我們要一個符號來代替,這就是我們所謂的變量。這些變量其實有些像小說中的人物,我們在給變量進行定義的時候,我們當然要給它定義成不同的類型,起個名字,那可能在起名字的時候是有特定的目的的,比如說要用到一個收集人名的變量,我們就可能會用一個英文-Name,來代表並定義其為字符串類型。那我們再給小說裡面的人物進行起名字的時候,我們也會考慮這個人物的性格,在起名字的時候可能也會接近這個人物的性格。說到文學作品裡的名字,我突然想到魯迅先生曾經在他的一篇文章裡面用了華和夏這兩個名字,那我們可以想如果把這兩個名字合在一起,其實是華夏的意思。我們在上學的時候都讀過魯迅的文章。我只是想舉個例子給大家看一看,無論是小說人物的名字還是程序中變量的名字,都是有其特定意義的。所以我們在編程的時候給變量起名的時候,其實也是應該有意義的,這樣有助我們理解其含義也便於我們記憶。

說到寫小說寫文章這件事情,我一直都認為,能夠寫作的人都是才思雋永,思維完整,而且邏輯性要非常強,一手的好文筆的人,才能一氣呵成的寫出文章,或者一部小說。一次偶然的機會我在iPad上發現了一個軟體,最開始我認為這個軟體只是做筆記用的,感覺功能挺強大的,就按到了我的iPad上。然後當我使用的時候,我突然發現我基本上不會用這個軟體,因為這個軟體根本不是用於記錄簡單筆記的,它是有特定功能的。首先要寫一個提綱,就是要寫的東西大意以及主題,然後分成幾個章節,每個章節的大概的意思是什麼。然後還可以定義人物,如果寫的是一部小說的話,這些人物會在什麼地方出現,大概他們的性格描述。然後可以隨意的在每個章節中寫任意的情節。不必依次序寫作,還可以進行章節間和情節間的調整。這樣,你可以慢慢的把整個作品填滿。經歷了我學習這個軟體的過程,我突然發現,寫文章或者說寫劇本亦或小說,並不是一氣呵成的;也不是,從頭一直寫到尾的。而是可以經過不斷的打磨,不斷的修整,然後成為一部完整的作品的。當然,如果只是知道這些方法,可能還不夠,但是它讓我聯想到了這個方法和編寫程序實際上非常的類似。當我們在編寫程序的時候,我們首先也要有程序的整體設定和分解,也不是從頭寫到尾的。我們在拆解一個程序的時候,我們會進行功能分類以及模塊設定,這個其實就像在寫一部小說裡面的每一個章節,每一個情節。


睡覺和手機

近來看到很多孩子,在學習編程。年紀大概從學前班到小學高年級,這些孩子一般都是由家長陪伴下學習的。學習的大概內容,我理解基本都是一種特定的程式語言,比如C++, Python等等。對於學習程式語言來說,其實對於孩子並不難,因為編程本身是一種規則和命令的合理組合。只要教會孩子這些規則,然後利用規則的組合,下達一些命令,這樣編程就可以實現我們要實現的一些目標事件了。比如說我們要實現一個任意數的加法求和,其實我們只要定義兩個變量,然後進行輸入和輸出的控制,這樣的話,程序就會幫我們進行任意兩個數字的求和。我們還可以擴展到加減乘除等等數學運算,這個主要是利用我們程式語言的規則來進行的,所以這樣的說的話呢,學習起來並不難,讓孩子們學會這些規則和這些命令就可以了。

其實我們在陪伴孩子學習編程的時候,並不一定只是協助孩子學習,我們也可以進行一種主動的學習。也就是說我們在陪伴孩子學習的時候,我們自己也可以學習,甚至於可以幫助孩子來進行主動理解學習的編程內容。這個可能和我們陪伴孩子學畫畫,學舞蹈課不太一樣。基於大部分家長的能力的話,可能學畫畫學舞蹈課,我們一般情況下都不會陪在孩子身邊,我們只是等在那裡。課程結束了,接孩子下課就可以了。但是編程課程也許會不一樣,特別是我們在網絡上進行學習的話呢,我們可能會一直陪伴在孩子身邊,直到孩子網絡編程課結束。結束以後其實我們可以跟孩子做很多交流,甚至於我們可以準備很多的內容來幫助孩子更好的理解課程的內容。

編程本身,我剛才提到對於孩子的學習呢其實並不難,因為只是理解規則,理解命令就可以了。但是我們家長在陪伴孩子學習的時候,其實我們很重要的一個內容是讓孩子們能擁有一種能力。我們不論出於何種目的,讓孩子來學習編程,其實我們都應該培養孩子的這種能力。什麼樣的能力呢?就是對於整體的把握和分解整體的能力。這個無論我們進行編程也好,或者是我們做事情,都需要的一種能力。我們不僅要有整體思維,也要有把一個整體目標拆解成不同小的目標,這樣的能力。比如說我們寫文章也一樣,我們可能在寫文章的時候先要有一個主題。寫文章前,先規劃主要表達的主題即目標,那我們可能就需要把這個目標進行拆解,我們怎麼樣去描述,用什麼樣的方式來描述,要用什麼樣的方式來表達我的內容。程序也一樣,我要完成加法的運算,我們需要多少個步驟呢,我們怎樣來控制這些加法的運算呢。這是很簡單的一件事情,但是如果我們把它拆解了的話,可能需要很多步驟。其實最重要的,孩子並不一定是學習多少種程式語言,而是利用學習某一種程式語言去掌握這樣的能力 - 既對任何事情或是目標能夠整合也能拆解的能力。


參考資料:

《我山之石》

《文學大綱》鄭振鐸

《文學回憶錄》

《C++大學教程》(N年以前版本)

《C++ Primer Plus》(N年以前版本)

《瘋狂Python講義》

《Thinking in JAVA》(N年以前版本)

《名畫之謎》系列

音頻視頻

《局部》第一季,第二季

網站

RUNOOB.COM

相關焦點

  • 電子遊戲有毒?那是你沒玩對遊戲!
    比如,有人通過玩《我的世界》(Minecraft)從建築坑中學會了Photoshop,從紅石坑中重溫了「通信原理、信號與系統」這門大學課程。還有人在玩《文明5》對歐洲歷史了解了不少。看來,電子遊戲也不全都是「毒藥」,尤其是專門為學習設計的點子遊戲。不要以為這是小探說的噢。
  • 這位8歲會編程的小學生火了!編程到底是啥?學起來難嗎?丨21讀書
    這位「驚動」庫克並在微博中特意為之慶生Vita君就是B站特別火的編程UP主,他通過視頻教大家學習Swift程式語言。這位小學生在之前接受採訪時曾表示,自己在教別人學編程時其實自己也在學習。他還直言編程沒那麼容易,但也沒有想像中那麼難。
  • 中老年人玩電子遊戲可防老年痴呆~那到底該怎麼玩?
    在該項研究中採用的電子遊戲可提高玩家的記憶力、空間導航能力和決策制定能力。玩這種遊戲的老年人與沒玩過的同齡人比,能夠站得更穩、走得更快,而跌倒受傷的風險也變小了。 另有研究發現,通過玩健身類電子遊戲,有 1/3 中老年志願者的抑鬱症狀減輕了 50%,甚至更多。
  • 陪娃學編程 - 睡覺和手機 (一)
    近來看到很多孩子,在學習編程。年紀大概從學前班到小學高年級,這些孩子一般都是由家長陪伴下學習的。學習的大概內容,我理解基本都是一種特定的程式語言,比如C++, Python等等。對於學習程式語言來說,其實對於孩子並不難,因為編程本身是一種規則和命令的合理組合。只要教會孩子這些規則,然後利用規則的組合,下達一些命令,這樣編程就可以實現我們要實現的一些目標事件了。
  • 迪士尼公主遇上「特效相機」,國內粉絲:我們早玩過了,但沒你美
    沒想到不僅咱們會玩這些「特效相機」,就連迪士尼公主也不例外,玩起來還相當的熟練,咱們這就來看看特效相機下的迪士尼公主,都變成了啥模樣。 吐彩虹 ▼阿迷記得在很早之前,「吐彩虹」這個特效就玩過了吧?沒想到迪士尼公主還比咱們落後了一步。
  • 17.7%青少年每天都玩電子遊戲,孩子究竟圖個啥?
    此前有研究數據顯示,17.7%的青少年每天都玩電子遊戲。那麼愛玩電子遊戲,孩子們究竟圖什麼?贏得「成就感」「成就感」是青少年們接受採訪時提及最多的詞。對青少年而言,除了學習,電子遊戲最能滿足他們的成就感。電子遊戲的短期激勵機制,「完美」對接青少年贏得「自信」「成就滿滿」的需求。
  • 玩電子遊戲對孩子有好處嗎?
    (3)玩電子遊戲時要用到各種認知能力,比如注意、反應時、視覺追蹤、記憶、手眼協調、計算能力、視覺空間能力和語言能力,適度玩電子遊戲有助於這些能力的提升;(4)有證據表明電子遊戲使用情況與個體的創造性思維存在正相關。
  • 如何引導兒子玩電子遊戲
    只是我喜歡隨時記錄我身邊發生的點點滴滴,用流水的記憶溼潤那些枯燥的日子。我把去年應朋友之約寫的一篇文章整理出來,真誠地奉獻給我的朋友們,如果對你的孩子有哪怕一絲的啟迪,那便是我最大的滿足。《如何引導兒子玩電子遊戲》細心的你已經看出了吧,我的題目有兩個重點;一是引導,二是電子遊戲。俺先說第二個電子遊戲。
  • 中小學生與電子遊戲的調查
    共收回問卷815份,有效問卷804份,除去從未玩過電子遊戲的問卷113份,共691份關於玩電子遊戲的問卷。   初步整理原始數據,將8個因素的原始分轉化為標準分,總分轉化為標準分。參考美國網絡成癮的9項標準,從691份回答玩過電子遊戲的問卷中,抽出自編問卷答案中同時回答有以下答案的問卷:2,C、D 20-30小時/周,7,D,E異常煩躁、想去死,9,D嚴重超時,10,C、D經常偷跑到遊戲廳玩,11,c、D為玩遊戲借、偷、搶錢,12,C經常逃學,13,C不寫作業,14,C課堂上會聯想遊戲裡的情節,15 A父母關係和睦,作為迷戀電子遊戲組,共56份。
  • 玩遊戲、學編程——帶給孩子一次獨特的學習機會
    小邦財商系列原創翻看上次活動,沒想到新冠疫情一耽擱就半年,熱愛編程和教育的餘教練不得不放慢腳步。在暑假來臨前,冷不丁的問餘教練,要不要帶領一次線上編程工作坊,剛好自己和朋友家裡有好幾隻小白老鼠,可以拿來實驗一下那個醞釀已久的編程工作坊。奇怪的是,餘教練沒有滿口答應,而是過了好幾天才說可以。
  • 父子倆都迷戀玩電子遊戲,媽媽怎麼辦?
    雖然沒被砸中,但眼淚卻不停地在眼眶裡打轉,終於忍不住一滴一滴地往下掉。在淚水朦朧中,往昔一點一點地浮現在眼前。每一對走進婚姻的夫妻都對婚姻懷有美好的憧憬,我也不例外,希望能與他一起組建一個和諧的家庭。誰知,在毫無準備的情況下,兩個相差一歲的寶寶相繼出生了。
  • 孩子為什麼要學編程?怎麼學?騰訊扣叮給出答案
    最近,教育部發布了一條要將編程納入中小學課程的信息,讓家長群裡炸開了鍋:「編程太難了,我大學都沒考過
  • 孩子學沒學過編程,一眼就能看出差距
    放眼全球範圍,學編程低齡化的趨勢也已經越來越普遍,而孩子們也用編程,創造了一個又一個驚豔的奇蹟。先說中考,山東的濰坊、河北的石家莊都將信息學特長生作為高中推薦錄取和自主招生的必備條件。濰坊七中主要招收的就是信息學方面的特長生,而石家莊在中考自主招生改革的第一年,就將信息技術作為重點考察項目。
  • 迪士尼英語關閉,線下編程教育如何破局?
    6月22日,在中國經營了12年的迪士尼英語,發布了《致迪士尼英語學員及家長的一封信》,決定將不再重新開放迪士尼英語中心,並將從26日起為學員開啟退費流程。迪士尼英語從2008年成立以來,在北京、上海等6個城市開設了26家全直營培訓中心,提供線下幼兒英語教學服務,學員達10萬餘人。
  • 這個學霸沒上過課外培訓班 他是怎麼煉成的?
    溫州網訊 「父母沒怎麼管過我的學習,而我從小到大也沒上過任何學科的課外培訓班。」來自溫教研院附校學院路分校的蔣黃煜在同學眼裡是位學霸,但他的學習之路卻不尋常。  跟許多男生一樣,蔣黃煜也曾愛好玩電子遊戲,比如小學時迷上打王者榮耀,但玩著玩著,他會多了些思考——這遊戲是怎麼做出來的?於是,當時才小學五年級的他就用scratch軟體,編些簡單的小遊戲,一方面滿足他玩遊戲的樂趣,一方面也助他學習編程。上了初中後,繁忙的學業讓他沒時間再玩遊戲,但編程卻沒落下。
  • 我的生活與電子遊戲:啟蒙
    包括很多次跟家裡人視頻,他們也會時不時地叮囑我,少玩遊戲,當回到家中,看到我在玩遊戲也會說上一句「都多大了,還玩什麼遊戲」。雖然他們的這些話,並不能澆滅我對遊戲的熱情,但時不時的聽也總會覺得不舒服。我想他們這樣想的原因,有著對電子遊戲的不了解,也有著害怕我成迷電子遊戲的擔心,那麼,我就來說說我跟電子遊戲的故事,說說我到底為什麼愛上電子遊戲,為什麼玩電子遊戲,以及為什麼電子遊戲不應該被那樣的排斥。
  • 玩桌遊也能學編程?有這套「編程三劍客」就夠了
    學編程現在有多火,相信不用多說大家也能感覺的到,很多青少年都想早點接觸編程,以便掌握這門未來世界的通用「語言」,不過直接上手進行編程並不容易,可以先從這款「編程三劍客」入手,培養一下基礎的編程思維。
  • 小時候經典的電子遊戲,玩過三種證明你已經老了!
    隨著社會的發展,現在的電子遊戲也是層出不窮,讓人眼花繚亂目不暇接,然而這麼多的遊戲卻經常有讓人提不起勁來的感覺,電子遊戲已經更新換代了好幾波,小時候根本都想不到現在的電子競技如此火爆,還真的是玩遊戲都可以掙很多錢。今天就給大家盤點曾經的電子遊戲。
  • 陳魯紐約國 I 學哲學、當電子遊戲隊長的凱莉小姐
    大學學哲學聽到這些,我好奇地問她本科學的什麼專業。她說哲學。 法學院的學生的本科專業五花八門,但是,學哲學的很少見。別說擇科被家長管束很嚴的華人了,連非華人的美國人都很少有學哲學的。 我問凱莉為什麼選擇哲學。
  • 玩遊戲=玩物喪志?我打遊戲能學到編程,你能學到什麼知識
    似乎在老一輩人的眼中,玩遊戲這件事情是一件大逆不道的事情,有些沒那麼開明的家長,看見自己孩子玩上了遊戲的時候,頓時感覺自己的小號練廢了,重新起號的心思都有了。 然而玩遊戲真的就和玩物喪志掛上鉤了嘛?這一點老狼不敢苟同,今天就來跟大家說說,一些邊玩遊戲邊學知識的遊戲!