計算機已滲入到我們生活的各個方面,生長于互聯(lián)網(wǎng)時代的一代甚至被稱作“數(shù)字原住民”。對他們而言,會使用計算機已是基本生存技能,了解計算機運作背后的邏輯,也就是計算機思維也變得非常必要。計算機思維有哪些特征?什么樣的計算機語言才是優(yōu)美高級的?《紐約時報》的這篇文章能讓我們對此有所了解。
加州大學(xué)伯克利分校的Daniel Garcia老師為非計算機專業(yè)的同學(xué)設(shè)計出了一門名為《計算機的美與樂趣》的課。在這門課里,Daniel解釋了一個非常重要的概念——抽象化。
他說,以奶昔為例,“你去上《烹飪的樂趣》這門課,因為你想做草莓奶昔,但是你不會專門去找‘草莓奶昔’這門課”。奶昔會有配方,這門課會指導(dǎo)你添加你想加的冰淇淋、牛奶和水果。雖然早期的烹飪書對草莓奶昔、樹莓奶昔和藍莓奶昔會有不同的配方,但是他認為最后肯定有人會問“為什么我們不把這些不同的配方融合成一個奶昔配方?”
Daniel說,“抽象化的意思就是隱藏細節(jié)”。這要求我們可以識別模式、將復(fù)雜的東西提煉,并形成精確清晰的概括。
抽象化以及計算機科學(xué)領(lǐng)域里的其他想法都又酷又有用,能激發(fā)人們的求知欲。很明顯,電腦已經(jīng)成為人們解決問題不可或缺的伴友,但是熟練操作軟件還遠遠不夠,了解隱藏在電腦魔力背后的東西現(xiàn)在看起來很重要。
計算機思維:從一般到精確,再到一般
美國公共廣播公司位于波士頓的分站正在為3-5歲的孩子制作一檔節(jié)目。在這檔節(jié)目里,三只卡通猴陷入困境,需要孩子們“通過應(yīng)用計算機思維幫它們從混亂中解脫出來”。
計算機思維并不是一個很新的概念。人工智能領(lǐng)域的前沿學(xué)者、MIT教授Seymour Papert,早在1980年,就已經(jīng)使用這個術(shù)語來展望孩子們?nèi)绾卧谖磥硎褂秒娔X來學(xué)習(xí)。計算機思維主要包括識別模式和順序、創(chuàng)造算法、設(shè)計用于發(fā)現(xiàn)以及修正錯誤的測試,把一般濃縮為精確,把精確拓展到一般。
正如達爾文進化理論里解釋了政治和商業(yè),在微軟負責(zé)基礎(chǔ)研究的卡耐基梅隆大學(xué)前教授Jeannette M. Wing博士針對計算機理念的廣泛使用進行爭論。她在一次采訪里說計算機思維不僅可以應(yīng)用于思維,“我們也可以提升日常生活效率并且讓我們的壓力變得小一點?!?/p>
她說,計算實踐有很多的應(yīng)用。比如,把困難的問題解構(gòu)成我們所知道的方式去解決,觀察時間和空間里的平衡問題以及流水線問題。
我們可以看一下自助餐的流水線?!爱?dāng)你去一家自助餐廳吃午餐,你會在第一站看到刀叉。我覺得這個真令人生氣,它們應(yīng)該是最后一步。你不應(yīng)該拿著盤子的時候還要去拿刀叉?!盬ing博士曾把小孩子收書包看作是電腦緩存,她認為自助餐的低效是對邏輯思維以及順序的錯誤運用。
計算機思維可以輔助一個基本的任務(wù),比如策劃一段旅行——你可以把它分成預(yù)定機票、預(yù)定旅館、租車這幾個步驟。計算機思維也可以用于“像身體保健或政策制定這類復(fù)雜的東西”。我們只有識別次問題以及描述這些次問題與主問題之間的關(guān)系,才可以完成目標工作。 Wing博士說,“一旦你有了一個好的接口,你就可以忽略剩下問題的復(fù)雜性?!?/p>
將計算機思維運用于其他學(xué)科
Alexander Torres是一名專業(yè)為英語的斯坦福大學(xué)高年級學(xué)生,他注意到學(xué)校和谷歌公司的相似性吸引了所有人,但是很少有學(xué)生去聽計算機的課程。他也是其中之一,但是他說“我不認為我丟失了一些技能”。在爭取學(xué)位的過程中,我鍛煉了批判思維、分析能力以及有邏輯的爭辯?!爱?dāng)你分析狄金森、惠特曼或者梅爾維爾,你不得不剖析他們詩句里的每一句話,然后再把他們綜合起來看?!?/p>
沒有一項可靠的研究顯示計算可以使一個人更有創(chuàng)造力或者更有能力解決問題。研究教育與計算機的佐治亞理工交互計算學(xué)院的教授Mark Guzdial說,除非一些事情被明明白白地教,否則計算技能并不能讓你更擅長某些事情?!澳銢]法證明計算技能的消極面”,但是在長達十年的研究中,沒有人發(fā)現(xiàn)電腦技能是可以自動轉(zhuǎn)移來解決其他問題的。
另外,他還補充說,因為同樣的原因,人們應(yīng)該這樣去認識生物、化學(xué)以及物理,“理解電腦在生活中的不同應(yīng)用有很多意義?!痹絹碓蕉嗟娜嗽谒麄兊墓ぷ骼锉仨氁鼍幊蹋词顾皇俏④沞xcel。教授說“用電腦解決問題每天都發(fā)生在我們的生活里”,如何能讓更多人獲得電腦技能,是一個很有趣的挑戰(zhàn)。
計算機語言需要簡約優(yōu)美易學(xué)
三月的一天早上,布朗大學(xué)計算機科學(xué)中心。Brawner 把一個學(xué)生的家庭作業(yè)投影在屏幕上。他問,有人注意到問題了嗎?沒有一個人文學(xué)科系的學(xué)生舉手。最后,一個女生說:“centimeters”和“kilograms”可以簡寫。Brawners說,可以,但是不夠。
Brawners打破了沉靜,然后指出這一長串的代碼已經(jīng)觸碰到了屏幕邊了。課堂一陣騷動中,他重復(fù)輸入反斜線然后點擊“返回”,這可以將符號變成整齊的塊。對一個機器來說,這也許就是指令,但是計算機科學(xué)家很在乎視覺的美感。Brawner一邊刪除重復(fù)的指令,一邊說,“不論何時我們定義衡量,我們希望美感在代碼之上?!敝?,他又布置了一個新的作業(yè)任務(wù):寫一個程序來用電腦玩石頭、紙和剪刀。
Mili Mitra是主修公共政策和經(jīng)濟的低年級學(xué)生,她把電腦放在膝蓋上,說她在一年前從來沒有考慮過這門課程。但是看到小組研究項目總是給那些有專業(yè)電腦知識的人去做,Mili決定“不想這些項目讓別人接手”。她已經(jīng)學(xué)會了寫基礎(chǔ)的代碼,以及從網(wǎng)絡(luò)中提取出數(shù)據(jù)來分析她感興趣的東西,比如,地緣親近如何塑造聯(lián)合國大會的投票模式。
盡管Mitra發(fā)現(xiàn)和電腦的交流就像和一個剛學(xué)步的小孩解釋問題,她還是覺得這門課能夠逐漸灌輸一種習(xí)慣——“讓學(xué)生們一步一步走,然后尋找出解決方案?!彼姓J自己是不耐煩的學(xué)習(xí)者:“我會往前跳。但是在計算機科學(xué)專業(yè)里,你沒有選擇。如果你錯過了一步,你就會弄亂所有事情?!?/p>
“Block”就像Scratch一樣是一種編程語言,由MIT媒體實驗室于十年前公布。 Block會把文本字符串隱藏起來,這些文本字符串就像電腦鍵在瘋狂運行一樣。這使得代碼看上去不那么令人害怕。
你可能會從菜單里選擇然后拖出有顏色的空格而不是用鍵盤字母和一些符號。這些有顏色的空格上寫著“say( ) for( )secs”或者“play note( )for( )beats.”顏色和形狀分別與“聲音”和“動作”兩個種類相對應(yīng);這些空格可以用拼圖來填充以指揮說明。學(xué)生們用這個編程語言時,會說,來,設(shè)計一個游戲。
一個人不需要成為一個數(shù)碼Doolittle博士,然后熟練掌握生硬困難的編程語言,比如Java或Python來編碼。Block語言省去了記住指令的需要,這對電腦語言會有不同程度的依靠,因為block語言“按照你想的那樣去讀就可以了?!盙arcia博士這樣說道。伯克利課程的學(xué)生用“block”語言Snap來做作業(yè)——直到最后兩周,他才教Python,這樣他們就可以去上更高階的課程?!拔覀儠嬖V他們,你們已經(jīng)知道如何去編程”,Garcia博士說。因為步驟都是一樣的。
“數(shù)字原住民”的生活
在Eliot-Pearson兒童學(xué)校一個通風(fēng)的幼兒園教室里,在塔夫茨大學(xué)兒童學(xué)習(xí)和人類發(fā)展部門,孩子們用真實的木塊來編程。兒童發(fā)展和計算機科學(xué)的教授Marina Umaschi Bers發(fā)明了帶有條形碼的木塊。條形碼上會有一些指示,比如“向前”、“旋轉(zhuǎn)”、“搖動”。這些指示可以用來為機器人編程序。這些機器人就是一些小小的,有內(nèi)置掃描儀以的轉(zhuǎn)輪推車。通過給木塊進行排序,然后掃描他們。這個程序就可以完成。每一個程序都會以綠色的“開始”木塊開始,然后以紅色的“結(jié)束鍵”結(jié)束。
小孩子學(xué)習(xí)編程已經(jīng)成為一種新潮的教育方法,伴有很多玩具以及應(yīng)用程序,比如Bers博士的積木。Bers和MIT合作開發(fā)了block語言 Scratch Jr,對宣揚編代碼非??駸帷Kf,學(xué)習(xí)機器的語言就像寫作被認為是學(xué)好外語的基礎(chǔ)一樣。“你可以用很多表達方式寫一首愛情詩或者寫一張生日卡片”,“你不僅僅是在識讀,你也在生產(chǎn)。”
Bers博士的同行評議研究顯示,在學(xué)會為機器人編程序后,孩子們能夠更好地為圖片故事排序。她說,甚至有傳聞,當(dāng)老師們讓孩子列出刷牙的步驟,他們僅僅知道幾個步驟,“但是在接受完編程訓(xùn)練后,他們就會列出15-20個刷牙步驟”。
Bers博士把計算機融入小孩子們非常熟悉的活動里,比如,講故事、跳舞或者藝術(shù)創(chuàng)作。最近的一個早上,塔夫斯學(xué)校的孩子們對一個問題感到困惑:一個機器人如何慶祝春天?
一個卷發(fā)小孩Hallel Cohen-Goldberg說,“他去跳舞,然后假裝自己淋濕了”。
Solina Gonzalez用馬克筆畫了一個棕色、藍色和紅色的圈,然后透過粉色邊框的眼鏡冷靜地看著,說:“他跳了個棒棒糖舞蹈?!盨olina的伙伴,Oisin Stephens對Solina捆綁在木塊上的啤酒棒棒糖畫很擔(dān)心。他說“機器人是不會識讀這個的”。
當(dāng)孩子們跪在地毯上時,他們可以執(zhí)行計算機科學(xué)里的一些概念,比如,把指示分解成有序的指令,測試然后調(diào)試。一個團隊使用“重復(fù)”和“停止重復(fù)”的木塊,這樣形成一個程序“循環(huán)”,這一串指示會不斷重復(fù)直到程序的特定條件達到了。
和機器的對話就像孩子玩的游戲一樣這種想法或許是一種飛躍。但是孩子們在排列積木時,Bers博士在和孩子們聊天,孩子們很難注意到他們是在編代碼?!八麄冋f,‘嗯,我不是在編程’”。
不管是有意識還是無意識,下一代可能毫不費力地吸收計算機思維技能,并且處在一個數(shù)字原住民的進程中。
來源:外灘教育