看點(diǎn) Scratch是麻省理工學(xué)院媒體實(shí)驗(yàn)室“終身幼兒園”研究組推出的一種電腦程序語(yǔ)言,現(xiàn)已進(jìn)入世界各地的教室和家庭,全球有超過(guò)1500萬(wàn)名孩子在學(xué)習(xí)和使用。本文由Scratch的設(shè)計(jì)及開(kāi)發(fā)團(tuán)隊(duì)撰寫(xiě),他們表示Scratch語(yǔ)言簡(jiǎn)單,人人都可使用,開(kāi)發(fā)Scratch的目的不是創(chuàng)建“程序員大軍”,而是幫助使用者通過(guò)電腦更好地表達(dá)自己。
“我的一個(gè)同事告訴我,他為了讓自己十歲的女兒喜歡上編程嘗試了各種方法,結(jié)果唯一成功的就是Scratch?!?/span>
當(dāng)國(guó)際計(jì)算機(jī)協(xié)會(huì)(Association for Computing Machinery)主辦的《ACM通訊》主編Moshe Y. Vardi,邀請(qǐng)我們?yōu)?/span>Scratch寫(xiě)一篇文章時(shí),他是這么回憶自己最早是怎么接觸到Scratch的。
而這正是我們?cè)诹昵伴_(kāi)始設(shè)計(jì)Scratch時(shí)所希望的。
我們希望構(gòu)建一種方式,讓那些從來(lái)沒(méi)有想象過(guò)自己會(huì)成為程序員的人喜歡上編程。這種方式不但要適合任何年齡段、任何背景、不同興趣的人,而且能讓他們用編程這種方式分享自己的故事、游戲、動(dòng)畫(huà),還能模擬運(yùn)行出來(lái)。
自從2007年5月公開(kāi)發(fā)行后,Scratch就在社交網(wǎng)絡(luò)上引起了熱議。人們會(huì)互相分享、討論、重新合成各自的程序。Scratch也被稱為“交互媒介式的YouTube”(the YouTube of interactive media)。
每天,來(lái)自世界各地的Scratcher們會(huì)上傳至少1500個(gè)程序到我們的網(wǎng)站,這些程序的代碼都可以被免費(fèi)共享和重新合成,包括游戲、時(shí)事通訊、科技模擬、虛擬旅行、生日賀卡、虛擬舞蹈競(jìng)賽、互動(dòng)型輔導(dǎo)等,這些都是利用Scratch完成的。
網(wǎng)站的主要使用人群囊括8歲到16歲的青少年(其中12歲的人數(shù)最多),也有相當(dāng)一部分成年人參與其中。
Scratcher們不僅會(huì)在網(wǎng)站上制作和分享他們的程序,更會(huì)同時(shí)學(xué)習(xí)到數(shù)學(xué)和計(jì)算機(jī)的相關(guān)概念,還會(huì)提高創(chuàng)造性思維、系統(tǒng)性的邏輯分析和團(tuán)隊(duì)合作能力,而這些恰恰也是21世紀(jì)最關(guān)鍵的技能。
我們最初設(shè)計(jì)Scratch的目標(biāo)也并不是為了讓每個(gè)人都成為專業(yè)的程序員,而是讓我們的下一代可以創(chuàng)造性地、有邏輯地并且舒服地用編程這種方式表達(dá)自己的想法。
首先用一個(gè)小女孩的例子來(lái)介紹一下到底Scratch可以做什么。小女孩當(dāng)時(shí)13歲,網(wǎng)名叫做Bala Bethany。
Bala Bethany喜歡畫(huà)動(dòng)漫形象,所以當(dāng)她開(kāi)始接觸Scratch時(shí),很自然地用這些動(dòng)漫形象編了一個(gè)故事程序。
之后她就慢慢開(kāi)始在Scratch的網(wǎng)站上分享她的程序,她收到了越來(lái)越多的積極的評(píng)論,很多人給她留言“太棒了”、“我喜歡你的程序?。。。?!”。
也會(huì)有人問(wèn)她是怎么做出那些視覺(jué)效果的,比如“你是怎么讓那個(gè)小精靈看起來(lái)是透明的?”等等。
在受到這些鼓勵(lì)之后,Bala Bethany就開(kāi)始定期創(chuàng)作和更新她的程序,就像更新連續(xù)劇的劇集一樣。
她會(huì)不時(shí)地在程序中添加一些新角色。慢慢地,她開(kāi)始思考:為什么不讓整個(gè)Scratch社區(qū)都參與其中呢?
之后,她就創(chuàng)建并且上傳了一個(gè)新的程序,宣布要展開(kāi)一個(gè)“競(jìng)賽”。這個(gè)競(jìng)賽需要其他Scratcher們?yōu)樗膭?dòng)漫程序設(shè)計(jì)一個(gè)妹妹的形象。她還列出了一些對(duì)這個(gè)新角色的要求,比如“頭發(fā)必須是紅色或者藍(lán)色的”,“有貓耳或者獨(dú)角,或者兩個(gè)都有”。
這個(gè)程序得到了上百條留言,其中一條說(shuō)想?yún)⒓舆@個(gè)比賽,但是不知道怎么畫(huà)出一個(gè)動(dòng)漫形象。為此,Bala Bethany專門(mén)制作了另外一個(gè)Scratch程序,一步步教授并示范如何用13個(gè)步驟繪制一個(gè)動(dòng)漫形象并為其上色。
在一年時(shí)間里,Bala Bethany制作并分享了超過(guò)200個(gè)Scratch程序,涵蓋了各種程序,包括故事、競(jìng)賽、教學(xué)等等。她的編程及繪圖水平不斷提高,制作的程序也在Scratch社區(qū)引起很大反響,得到超過(guò)12000條評(píng)論。
現(xiàn)在的新一代年輕人被稱為“數(shù)碼土著”(digital natives),這是因?yàn)樗麄兛梢允炀毷褂酶鞣N數(shù)碼產(chǎn)品。
確實(shí),許多年輕人可以非常自如地發(fā)信息、玩電子游戲和瀏覽網(wǎng)頁(yè),但是這能夠真正說(shuō)明他們擁有熟練應(yīng)用新科技的能力嗎?即使他們似乎每時(shí)每刻都在使用社交媒體,但只有很少的人有能力自己創(chuàng)作游戲、動(dòng)畫(huà)或者模擬程序。這就像他們只會(huì)“讀”不會(huì)“寫(xiě)”。
我們都看得出來(lái)熟練使用數(shù)碼產(chǎn)品不僅僅是有能力聊天、瀏覽和互動(dòng),也包括設(shè)計(jì)、創(chuàng)作和發(fā)明新的東西,就像Bala Bethany在她的程序中所做的那樣。為了做到這些,你是需要學(xué)一些編程的。
擁有編程的能力會(huì)帶來(lái)很多好處。比如它會(huì)很大程度地拓展你基于計(jì)算機(jī)的創(chuàng)造力、表達(dá)力,以及學(xué)習(xí)能力。
此外,編程的實(shí)質(zhì)是對(duì)計(jì)算機(jī)思維的支撐,它可以幫助你學(xué)到解決問(wèn)題的能力和設(shè)計(jì)技巧,比如模塊化和迭代設(shè)計(jì)都涉及到了非編程領(lǐng)域的知識(shí)。
編程其實(shí)是一種展現(xiàn)你解決問(wèn)題過(guò)程的方式,它需要你對(duì)自己的想法進(jìn)行不斷推倒反證,它其實(shí)是在思考“思考”本身。
當(dāng)上個(gè)世紀(jì)七八十年代后期個(gè)人電腦最初被引入時(shí),我們有很高的熱情教會(huì)所有的孩子有關(guān)編程的知識(shí)。很多學(xué)校會(huì)教學(xué)生用Logo語(yǔ)言和Basic語(yǔ)言進(jìn)行編程。
西蒙·派珀特(麻省理工學(xué)院終身教授,教育信息化大師)形容Logo是教育和學(xué)習(xí)的一種“再思考”的方式。盡管有些學(xué)生和老師對(duì)這種編程的學(xué)習(xí)方式充滿興趣,但還是有很多學(xué)校很快轉(zhuǎn)換了他們教電腦的方法。
從那以后,計(jì)算機(jī)變得越來(lái)越普及,但是幾乎沒(méi)有孩子學(xué)習(xí)編程。如今,大部分的人都會(huì)認(rèn)為計(jì)算機(jī)編程是一門(mén)晦澀的、高技術(shù)性的、只適合很小一部分人的學(xué)科。
是什么原因讓孩子學(xué)習(xí)編程的熱情不再?為什么像Logo這樣的行業(yè)先鋒也沒(méi)有繼續(xù)遵守他們的承諾?這有很多因素:
早期編程語(yǔ)言太難,許多孩子無(wú)法掌握編程句法;
編程一般涉及的程序(比如排列數(shù)字和畫(huà)線條)都與青少年的日常聯(lián)系不大,也不能引起他們的興趣;
傳統(tǒng)編程都使用文本教學(xué),這會(huì)導(dǎo)致當(dāng)編程語(yǔ)言出現(xiàn)錯(cuò)誤時(shí)沒(méi)有人可以及時(shí)指導(dǎo),而當(dāng)語(yǔ)句運(yùn)行正確時(shí)也難以進(jìn)行更深入的探索。
派珀特認(rèn)為計(jì)算機(jī)語(yǔ)言需要“降低地板”(容易開(kāi)始)和“提高天花板”(廣闊的探索空間)。此外,計(jì)算機(jī)語(yǔ)言還需要“擴(kuò)大墻壁”(支持多種類型的程序,讓擁有不同興趣和學(xué)習(xí)方式的人都對(duì)編程感興趣)。但想要同時(shí)滿足這三個(gè)需求并不容易。
近幾年,為了讓青少年喜歡上編程,出現(xiàn)了很多新的嘗試。一些會(huì)使用專業(yè)的編程語(yǔ)言,像Flash或者ActionScript;還有一些像Alice和Squeak Etoys這種專門(mén)為青少年而設(shè)計(jì)的新的編程語(yǔ)言。
這些都影響并啟發(fā)了我們對(duì)Scratch的設(shè)計(jì)。與此同時(shí),我們并不滿足于這些現(xiàn)有的選擇。我們希望在啟發(fā)孩子們計(jì)算機(jī)思維的同時(shí),把“地板”降得更低、“墻壁”建得更寬。
為了達(dá)到這些目標(biāo),我們?cè)O(shè)立了三個(gè)設(shè)計(jì)Scratch的核心原則,分別是:
更易修改
更有意義
更具社交性
在下文中,我們會(huì)討論這三個(gè)原則都是如何指導(dǎo)我們?cè)O(shè)計(jì)Scratch的。
我們麻省理工媒體實(shí)驗(yàn)室“終身幼兒園研究組”和樂(lè)高公司有多年的合作經(jīng)驗(yàn),包括幫助設(shè)計(jì)和完善樂(lè)高機(jī)器人(Lego Mindstorm)。
孩子們搭建樂(lè)高積木的過(guò)程一直都在啟發(fā)我們。他們得到一桶樂(lè)高積木后,就會(huì)馬上開(kāi)始自己擺弄,不停地組裝和拆卸,在這個(gè)過(guò)程中他們會(huì)不斷產(chǎn)生新的想法來(lái)搭建新的東西。通過(guò)這種有結(jié)構(gòu)、有故事性的方式,他們會(huì)自主地玩、建造、計(jì)劃和設(shè)計(jì)。
我們希望孩子們用Sractch編程時(shí)會(huì)有類似的感受。Scratch的命令是建立在眾多圖形化的“編程積木”上的,孩子們只需要通過(guò)拆拼這些“積木”來(lái)創(chuàng)造新的程序。
在樂(lè)高積木里,一些連接裝置會(huì)提示某些部件是如何組裝到一起的。孩子們就可以簡(jiǎn)單地通過(guò)擺弄這些積木,不停地拆拆拼拼,嘗試不同的拼接方法和組裝順序來(lái)看究竟會(huì)做出一件什么東西來(lái)。
這當(dāng)中不會(huì)出現(xiàn)任何令人費(fèi)解的程序命令和傳統(tǒng)編程語(yǔ)言。這會(huì)讓編程變得簡(jiǎn)單好玩,達(dá)到我們最初設(shè)定的“降低地板”的目標(biāo)。
“Scratch”名字的由來(lái)其實(shí)也強(qiáng)調(diào)了更容易修改這個(gè)特征,“scratch”本來(lái)就是一種嘻哈音樂(lè)技術(shù),即通過(guò)旋轉(zhuǎn)黑膠唱片來(lái)以一種創(chuàng)造性的方式剪輯混合音樂(lè)。在Scratch編程中,就是在用類似的方法,混合圖形、動(dòng)畫(huà)、照片、音樂(lè)和聲音。
同時(shí),Scratch被設(shè)計(jì)為一種高度互動(dòng)的模式。你只要通過(guò)點(diǎn)擊積木它就會(huì)立即開(kāi)始執(zhí)行代碼。你甚至可以在它正在運(yùn)行的同時(shí)修正代碼,這樣就可以很容易地實(shí)驗(yàn)新的想法。想要?jiǎng)?chuàng)建并行線程?只需簡(jiǎn)單地創(chuàng)建多個(gè)積木。我們的目標(biāo)是讓并行執(zhí)行像順序執(zhí)行一樣簡(jiǎn)單直觀。
Scratch界面想要做到的是要像我們平時(shí)使用的桌面一樣簡(jiǎn)單。它允許你有些凌亂,你也大可以留下暫時(shí)不用的積木在一邊,等待以后使用。大多數(shù)編程語(yǔ)言(和計(jì)算機(jī)科學(xué)課程)只允許自上而下的規(guī)劃而非自下而上的修補(bǔ)。
在Scratch中,我們希望這種修改的過(guò)程也變得同樣簡(jiǎn)單。
我們都知道當(dāng)一份工作對(duì)個(gè)人有意義時(shí),人們的學(xué)習(xí)效率最好,也最享受。因此,在開(kāi)發(fā)Scratch時(shí),我們高度重視兩個(gè)設(shè)計(jì)原則:
多樣化。支持許多不同類型的程序,包括故事、游戲、動(dòng)畫(huà)、模擬等,所以不同的人都能夠創(chuàng)造他們熱衷的程序;
個(gè)性化。通過(guò)導(dǎo)入照片、音樂(lè)、錄音和圖形的方式讓人們輕松地個(gè)性化他們的Scratch程序
這些原則影響了我們的許多設(shè)計(jì)決策。例如,我們決定專注于2D圖像,而不是3D,因?yàn)槿藗兏菀讋?chuàng)建、導(dǎo)入和個(gè)性化2D作品。雖然有些人可能會(huì)覺(jué)得2D風(fēng)格的圖像有些過(guò)時(shí),但Scratch程序的多樣化和個(gè)性化可以彌補(bǔ)這種視覺(jué)上的不足。
作為Scratch的開(kāi)發(fā)者,我們不斷對(duì)出現(xiàn)在Scratch網(wǎng)站上各種各樣的程序感到驚訝。就像我們預(yù)期的一樣,出現(xiàn)了很多游戲,從被廣泛喜愛(ài)的游戲的重新設(shè)計(jì)到完全原創(chuàng)的游戲。
一些Scratch程序記錄了個(gè)人生活經(jīng)歷(比如在佛羅里達(dá)的家庭旅行);一些記錄了想象中的經(jīng)歷(例如去見(jiàn)其他Scratcher們的旅行);一些Scratch程序可以幫助建立人際關(guān)系(如生日賀卡和感謝信);還有一些程序旨在提高對(duì)社會(huì)問(wèn)題的認(rèn)識(shí)(如全球變暖和動(dòng)物虐待)。
另外有一些Scratch程序是學(xué)校課程的再拓展。
比如說(shuō)地理課,一個(gè)來(lái)自印度的13歲的男孩創(chuàng)建了個(gè)程序,他設(shè)計(jì)了一個(gè)動(dòng)畫(huà)角色讓它移動(dòng)到地球的中心,同時(shí)用自己的錄音解說(shuō)地殼結(jié)構(gòu)。
對(duì)于社會(huì)學(xué)科,來(lái)自新澤西州的一名14歲男孩設(shè)計(jì)了一個(gè)模擬在拉帕努伊島生活的程序,幫助其他人了解當(dāng)?shù)匚幕徒?jīng)濟(jì)。
Scratch編程語(yǔ)言的發(fā)展與網(wǎng)站的發(fā)展密切相關(guān)。任何Scratch程序都可以被鏈接到Scratch社區(qū),Scratcher們可以互相支持、合作、評(píng)論彼此的作品。
共享的概念在一開(kāi)始就被內(nèi)置在用戶界面中,在屏幕頂部有一個(gè)突出的“共享”菜單和圖標(biāo)。
單擊共享圖標(biāo),程序就會(huì)被被上傳到Scratch的網(wǎng)站,并以“最新程序”的方式顯示在首面的頂部。一旦程序出現(xiàn)在網(wǎng)站上,任何人都可以在有Java的瀏覽器中運(yùn)行它,對(duì)其進(jìn)行評(píng)論、投票或下載以查看和修改腳本(在網(wǎng)站上共享的所有項(xiàng)目都受知識(shí)共享許可協(xié)議的約束。)
在發(fā)布后的27個(gè)月中,Scratch網(wǎng)站上共享了超過(guò)50萬(wàn)個(gè)程序。對(duì)于許多Scratcher來(lái)說(shuō),有機(jī)會(huì)把自己的程序公布在大量受眾面前,接受其他Scratcher的反饋和建議是令人激動(dòng)的。
網(wǎng)站中圖書(shū)館的靈感也是來(lái)源于此。通過(guò)瀏覽圖書(shū)館里的項(xiàng)目,Scratcher們會(huì)獲得創(chuàng)建新程序的想法,并且能夠?qū)W習(xí)到新的編程技術(shù)。
Marvin Minsky(人工智能之父)曾經(jīng)說(shuō)過(guò)Logo有偉大的句法,但還稱不上是一種“文學(xué)”。就像年輕作家的靈感經(jīng)常來(lái)自于閱讀偉大的文學(xué)作品,Logo也需要建立類似的文獻(xiàn)資料庫(kù),以啟發(fā)年輕的程序員。
Scratch網(wǎng)站是就是建立Scratch“文學(xué)”的開(kāi)始。
此外,還有一些程序?qū)W⒂诰W(wǎng)站本身,用來(lái)提供其他程序的評(píng)論和分析。一個(gè)早期的例子叫做SNN(Scratch News Network),它基于Scratch貓(Scratch的默認(rèn)動(dòng)畫(huà)形象)提供關(guān)于Scratch社區(qū)的消息,就像CNN的主播一樣。
最初,我們把它看成是一個(gè)“模擬新聞廣播”,但后來(lái)意識(shí)到它其實(shí)是一個(gè)真正的新聞廣播,它提供了一個(gè)真正的社區(qū)——Scratch社區(qū)的新聞。SNN程序啟發(fā)了其他人,之后又涌現(xiàn)了大量的在線通訊、雜志和電視節(jié)目,這些程序都通過(guò)Scratch進(jìn)行編程,又報(bào)道了Scratch社區(qū)的動(dòng)態(tài)。
同時(shí),我們的網(wǎng)站也是合作項(xiàng)目的沃土。社區(qū)成員不斷借用、適應(yīng)和建立彼此的想法、圖像和程序,超過(guò)15%的程序混合了網(wǎng)站上的其他程序。
例如,我們有幾十個(gè)版本的俄羅斯方塊游戲,因?yàn)镾cratcher們?cè)诓粩鄧L試改善游戲,添加新的功能。此外,還有幾十個(gè)裝扮娃娃的程序,都改編自之前的Scratch程序。
最初,一些Scratcher在他們的程序被重新合成時(shí)感到不安,抱怨別人“偷竊”了他們的想法。這引發(fā)了網(wǎng)站論壇上對(duì)于共享的價(jià)值的討論。
我們的目標(biāo)是創(chuàng)造一種文化,當(dāng)他們的程序由他人改編或者重新合成時(shí),我們希望的是感到自豪,而不是失望。因此我們努力在不斷添加新的功能,以支持和鼓勵(lì)這種心態(tài)。
現(xiàn)在,當(dāng)有人合成程序時(shí),網(wǎng)站會(huì)自動(dòng)添加原程序的鏈接,原作者也會(huì)因此獲得信用。此外,每個(gè)程序也都會(huì)包含其“衍生程序”鏈接,“最受歡迎混合程序”也會(huì)在Scratch主頁(yè)上突出顯示。
這種合作為許多不同類型的學(xué)習(xí)創(chuàng)造了機(jī)會(huì)。一個(gè)來(lái)自加州的13歲女孩,她創(chuàng)辦了一家名為Blue Elk Productions的Scratch公司,她描述了她的經(jīng)歷:
“Scratch的有趣之處在于,我交了很多朋友,學(xué)到了很多新的東西。特別是通過(guò)看其他有趣的游戲,學(xué)到了很多不同類型程序的設(shè)計(jì)方法。我會(huì)把它們下載下來(lái),查看和修改這些腳本。這讓我真正愛(ài)上編程!
另外,當(dāng)我還沒(méi)有接觸Scratch時(shí),我從沒(méi)想過(guò)我會(huì)成為一個(gè)藝術(shù)家。但從那時(shí)起,通過(guò)看別人的藝術(shù)程序,問(wèn)他們問(wèn)題,并使用像Photoshop和Scratch油漆編輯器的繪圖程序,我的藝術(shù)天賦似乎也得到了開(kāi)發(fā)。
創(chuàng)辦Blue Elk公司讓我學(xué)習(xí)到了如何鼓舞其他人,如何和他人合作。比起一般的博客或者像Facebook這樣的社交網(wǎng)站,我更喜歡Scratch,因?yàn)槲覀兛梢栽谏厦鎰?chuàng)造有趣的游戲和程序,這些程序是有意義的,別人可以玩、觀看和下載。相較于單純的聊天,我喜歡更有創(chuàng)意和意義的交流。”
世界上越來(lái)越多的K-12學(xué)校,甚至一些大學(xué)(包括哈佛大學(xué)和加州大學(xué)伯克利分校)在使用Scratch作為編程學(xué)習(xí)的入門(mén)課。
那么,我們的下一步會(huì)是什么?在Scratch論壇中正在進(jìn)行關(guān)于Scratch之后應(yīng)該使用哪種編程語(yǔ)言的討論。我們收到了許多向Scratch添加更多高級(jí)功能的請(qǐng)求,希望Scratch本身可以成為那個(gè)“下一步”。
我們計(jì)劃還是把重點(diǎn)放在“降低地板”和“擴(kuò)大墻壁”上,而不是“提高天花板”。對(duì)于那些想要把編程或計(jì)算機(jī)科學(xué)作為職業(yè)的Scratcher來(lái)說(shuō),他們可能需要學(xué)會(huì)使用更專業(yè)的編程語(yǔ)言。
但是對(duì)于許多其他的Scratcher,他們尋求把編程作為一種表達(dá)的媒介,而不是一個(gè)職業(yè)方向,Scratch足以滿足這些需求。
通過(guò)Scratch,他們可以繼續(xù)嘗試新的自我表達(dá)形式,創(chuàng)建各種不同的程序,同時(shí)加深他們對(duì)計(jì)算機(jī)思維的理解。也許就是這么一點(diǎn)點(diǎn)編程的技能可以伴隨你走得很遠(yuǎn)。
隨著我們不斷的開(kāi)發(fā)與更新,我們的目標(biāo)依舊是讓Scratch更容易修改、有意義和社交化。通過(guò)Scratch傳感器板,人們可以創(chuàng)建程序?qū)ΜF(xiàn)實(shí)世界中的事物進(jìn)行感應(yīng)和反饋。我們還在開(kāi)發(fā)在移動(dòng)設(shè)備上運(yùn)行的Scratch版本和網(wǎng)頁(yè)版本,讓人們可以更方便地訪問(wèn)在線數(shù)據(jù)和編輯在線程序。
我們?cè)絹?lái)越認(rèn)為,也許Scratch最大的挑戰(zhàn)不是技術(shù),而是文化和教育。
Scratch在早期使用者中是成功的,但我們需要提供更好的教育支持,讓它的使用范圍更廣泛。我們希望在Scratch的在線社區(qū)里,教育工作者們會(huì)分享他們對(duì)Scratch的想法、經(jīng)驗(yàn)和課程計(jì)劃。
說(shuō)得更大些,我們希望借此轉(zhuǎn)變?nèi)藗儗?duì)于編程和計(jì)算機(jī)的看法。我們需要擴(kuò)展熟練使用數(shù)碼設(shè)備的概念,包括設(shè)計(jì)和創(chuàng)建,而不僅僅是瀏覽和交流。
Scratch創(chuàng)意編程課
現(xiàn)已登陸外灘課堂
卡內(nèi)基梅隆大學(xué)在讀碩士Ivy老師
擔(dān)綱主講
讓孩子循序漸進(jìn)
玩轉(zhuǎn)妙趣橫生的編程項(xiàng)目
2月1日正式組班
限量300人報(bào)名從速
點(diǎn)擊下圖了解更多
▼
聯(lián)系客服