小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

少兒編程這么火,學(xué)哪種最靠譜?專家:精通一門再學(xué)其他就容易了

 湖城館 2018-09-03

深度長文,共計(jì)5097字,預(yù)計(jì)閱讀時(shí)間15~20分鐘,建議先收藏后閱讀。

這幾年,人工智能的發(fā)展速度與日俱增:AlphaGo贏了柯潔;百度無人巴士量產(chǎn);Google的AI客服,用一個(gè)簡單的“嗯哼”,征服了全世界;索尼也用AI創(chuàng)造了一首Beatles風(fēng)單曲......

隨之而來的,是教育風(fēng)向的變化,除了語數(shù)外這“老三樣”,一門新的學(xué)科正在迅猛崛起,且大有燎原之勢——它就是“少兒編程”,加上政策的推動,家長們愈發(fā)認(rèn)識到讓孩子從小學(xué)編程的重要性,在北上廣等一線城市,不讓孩子學(xué)編程,都不敢說自己受的是精英教育。

然而,編程語言種類繁多,哪一種語言最靠譜?最適合孩子的認(rèn)知水平?最能激發(fā)孩子的創(chuàng)造力?

今天,我們特別邀請了一位少兒編程領(lǐng)域的專家——肖恩老師,為我們從專業(yè)上詳細(xì)講解,孩子學(xué)編程從何入手。

肖恩老師

EUMlab&西瓜創(chuàng)客創(chuàng)始人

肖恩老師精通各種編程語言(C/C++//JAVA/Ruby/Python/Javascript/ Verilog/VHDL等),大學(xué)時(shí)代就拿下國際編程大獎(jiǎng) Intel杯亞太區(qū)第一名。他在德國創(chuàng)業(yè)期間,開發(fā)了明星產(chǎn)品Pro Metronome (音樂節(jié)拍器App),全球用戶已逾3000萬,連續(xù)5年在蘋果應(yīng)用商店同類排名第一。

回國后他創(chuàng)辦了“西瓜創(chuàng)客”(一個(gè)在線少兒編程教育品牌),發(fā)展也十分迅速,目前他教過的孩子已近10萬,分布在全球40多個(gè)不同國家,西瓜創(chuàng)客也已藉此獲紅杉資本、經(jīng)緯中國的A輪投資。

少兒編程,選擇哪種語言好?

這個(gè)提問就像有人在問你 “是穿婚紗好、正裝好還是休閑裝比較好?

這是一個(gè)無法回答的問題,因?yàn)閱栴}缺少了重要的前提:“選什么樣的衣服,取決于我們的目的”。

婚禮時(shí)穿婚紗很好,但是如果每天都穿著婚紗上班就很奇怪了。

每件衣服都有適用于它應(yīng)有的場景。

編程語言也是一樣的,每種編程語言都有屬于它的應(yīng)用場景

要回答 “少兒編程,選擇哪種語言比較好?”

我的簡單版答案是:Scratch!作為從7歲開始做電子設(shè)計(jì),讀過Linux 源代碼,寫過RTOS(實(shí)時(shí)操作系統(tǒng)),做過芯片編程FPGA/DSP,有20年編程齡,能熟練使用匯編/C/C++/C#/Perl/Objective-C/JAVA/Ruby/Python/Javascript/HTML/CSS 等大家熟悉的編程語言和大家不熟悉的設(shè)計(jì)芯片編程語言 Verilog 和 VHDL的我,推薦使用Scratch 。

那為什么是 Scratch 呢? 我在和西瓜創(chuàng)客教的近 10 萬孩子的家長溝通過程中總結(jié)了家長們的常見困惑,詳細(xì)解釋如下:

Q&A

Q:Scratch 是低級語言,太幼稚,什么時(shí)候可以轉(zhuǎn)學(xué)高級語言(例如 C 和 Java)?

這是一個(gè)常見誤區(qū),主要是受“高級”二字翻譯不準(zhǔn)確的影響產(chǎn)生的誤區(qū)。 高級語言的英文原文叫做 High-level programming language ,更準(zhǔn)確的翻譯應(yīng)該是高層級編程語言。層級的高低不是語言的高級與否的劃分,而是指語言離硬件指令的遠(yuǎn)近。越接近人類的自然語言的編程語言越叫高級語言(越容易讀懂),越接近計(jì)算機(jī)指令的叫做低級語言(越難讀懂)。

舉個(gè)例子,匯編語言是離 CPU 指令最近的人還能勉強(qiáng)能讀懂的語言。 用匯編來表達(dá) 1 + 2,是這樣的:

在其他語言里是這樣表達(dá)的:

顯而易見,其他的語言更接近人更好理解的自然語言。

更令人發(fā)指的是,不同架構(gòu)類型的 CPU,控制它的指令是不一樣的。 也就是說,同樣的是 1 + 2,不同的 CPU 上需要用不同的寫法。

而所有的編程語言設(shè)計(jì)者,都在致力于做一件事情:

讓人們可以用人類能讀懂的語言,優(yōu)雅地編程,只需要把自己的想法告訴電腦,電腦就能自動把語言翻譯成他能自己能執(zhí)行的命令。

也就是說,無論我們用哪種高級語言寫出來的代碼,都有,也都需要一個(gè)翻譯官,去編譯(Compiler)或者解釋(Interpreter)我們寫的代碼讓電腦可以執(zhí)行。

BTW,從定義上來說,Scratch 是比 C 和 Java 更高級的語言。

那既然編程語言的設(shè)計(jì)者都有同樣的目標(biāo),那哪個(gè)語言是最好的編程語言呢?

這個(gè)問題就和“什么樣的衣服是最好的衣服”類似了。 答案是在不同的場景和目標(biāo)下,選擇對應(yīng)的編程語言,沒有哪一種語言是最好的語言。

例如,C 語言更接近計(jì)算機(jī)硬件,編程語法中有很多莫名其妙的操作學(xué)習(xí)起來十分困難。 但它的優(yōu)點(diǎn)恰好也是它特別接近硬件,對內(nèi)存的申請和釋放都得開發(fā)者自己來寫,程序的執(zhí)行效率能特別的高。(這里之所以說“能特別高”,而不是“會特別高”,是因?yàn)槭欠衲軋?zhí)行高效,還取決于開發(fā)者的算法能力以及對 CPU 的指令是否熟悉)

但是如果誰想要用 C 語言來做網(wǎng)站,也許用 Javascript + CSS + HTML 組合起來花 5 分鐘做出來的網(wǎng)頁,用 C 語言可能 1 個(gè)月也寫不出來。

那為什么編程語言會有排行變化呢?

這個(gè)完全是和工作和市場機(jī)會有關(guān)的。例如,在互聯(lián)網(wǎng)大爆發(fā)的時(shí)候,做網(wǎng)站的人是最稀缺的,于是推動了JAVA、C# 和 Javascript + CSS + HTML 等語言的發(fā)展。那個(gè)時(shí)候,另一種叫做Objective-C 的語言就特別的冷門。直到蘋果的 iPhone 出來后,移動互聯(lián)網(wǎng)的春天來臨,當(dāng)時(shí)誰能做 App,誰的工作機(jī)會就比別人多呀。于是這種冷門的Objective-C 語言就迎來了他的春天。由于互聯(lián)網(wǎng)和移動互聯(lián)網(wǎng)的快速發(fā)展,大量的數(shù)據(jù)產(chǎn)生,機(jī)器學(xué)習(xí)和人工智能在坐了多年的冷板凳后,終于有了用武之地。大量的數(shù)據(jù)科學(xué)家使用 Python 來編寫機(jī)器學(xué)習(xí)的程序(因?yàn)?Python 和 Python 大量的數(shù)據(jù)分析和處理相關(guān)的功能庫是開源免費(fèi)的),于是 Python 又成為近年的新寵。

所以如果選編程語言是為了讓孩子未來好找工作的話,親,你確定現(xiàn)在選擇的語言會在 15 年后還不衰落?

Q:那選擇 Scratch 的優(yōu)勢是什么呢?它會過時(shí)嗎?

"如果我給你一支高級鋼筆...

oh,不不不,你給我一支高級鋼筆。

我能成為作家嗎?"

“不能”

沒錯(cuò)。 決定我是否能成為作家的,不是因?yàn)槭褂玫氖鞘裁礃拥匿摴P;決定是否能成為攝影師的,也不是昂貴的鏡頭和相機(jī);

決定是否能成為好的開發(fā)者,也不是選擇的語言,而是他是否能發(fā)現(xiàn)生活中的問題,找到解決問題的辦法,然后用編程把解決方案做出來。

表達(dá)我們的情感和洞見、凝固時(shí)間記錄故事、發(fā)現(xiàn)并解決問題 是我們的目標(biāo),用一支好的鋼筆,好的相機(jī),和選擇一種編程語言是實(shí)現(xiàn)目標(biāo)的手段。我們不應(yīng)該錯(cuò)把手段當(dāng)目標(biāo)。

在文章剛開始,我提到了我能熟練使用匯編/C/C++/C#/Perl/Objective-C/JAVA/Ruby/Python/Javascript/HTML/CSS 等編程語言,這并非吹噓。 事實(shí)上,一個(gè)成熟的開發(fā)者,基本都掌握多種編程語言,并且可以快速地學(xué)習(xí)和適應(yīng)新的語言。這是因?yàn)榫幊陶Z言是有規(guī)律可尋的。

舉個(gè)例子,如果我們要用編程編寫,如果天下雨,就帶傘,否則就不帶傘。 用不同的語言寫出來是這樣的

我們可以看到,無論是哪種語言,他們都有一個(gè)類似的結(jié)構(gòu):

這就是編程中不變的部分,他們只是表達(dá)方式(編程的語法)有一點(diǎn)區(qū)別罷了。 這就像目前主流音樂,都是由 12 平均律切分的 12 個(gè)音(do 升do re 降mi mi fa....)構(gòu)成的。

但是如果我們用葫蘆絲吹婚禮進(jìn)行曲,就總會覺得有一點(diǎn)過橋米線的感覺。 這是因?yàn)槊總€(gè)樂器有它獨(dú)特的特性。程序語言也是一樣的。 每種語言都有一些它十分獨(dú)特的特性。例如,我們想判斷菜單中是否包含宮保雞丁,如果包含就輸出“找到了”。C 語言, Python 和 Scratch 的寫法分別如下。

你會發(fā)現(xiàn),這時(shí),Python 和 Scratch 的寫法就比 C 語言直觀多了。 這部分就是不同語言的特性部分。

也就是說,當(dāng)精通了一種編程語言后,想學(xué)習(xí)另一種編程語言,只需要了解它的語法就能上手,會熟練使用它的特性就可以精通。編程的核心不在于語法,而是解決問題的思路和方法(算法)。

而 Scratch 中包含了幾乎所有編程語言共通的部分。無論未來語言如何變化,最基本的邏輯是不會變化的。而這些訓(xùn)練在 Scratch 中都能完成。

Q:聽你這樣說,也就是說學(xué)習(xí)其他語言也是一樣的,因?yàn)橹灰ㄒ婚T,再學(xué)另一門語言就容易了?

是的,沒錯(cuò)。和學(xué)好了 Scratch 轉(zhuǎn) C,Java 和 Python 是容易的類似。 學(xué)好了 C 轉(zhuǎn) Python 也是不難的。但是為什么依然還是推薦孩子學(xué)習(xí) Scratch 而不是 C 的原因不是因?yàn)榫幊?,而是因?yàn)?strong>認(rèn)知科學(xué)。

在認(rèn)知科學(xué)中,人們是否能快速學(xué)習(xí)一樣?xùn)|西或者堅(jiān)持學(xué)習(xí)一樣?xùn)|西和自我效能感(Self-efficacy )息息相關(guān)。自我效能感是指人們是否相信自己能達(dá)到一個(gè)目標(biāo),當(dāng)相信的時(shí)候就會覺得做起來很帶勁,一點(diǎn)也不枯燥;當(dāng)不相信的時(shí)候就覺得自己在飽受煎熬。簡單地理解就是成就感是讓人學(xué)習(xí)產(chǎn)生快樂并且堅(jiān)持學(xué)習(xí)的重要原因。

如果在學(xué)習(xí)任何一樣?xùn)|西的時(shí)候,例如數(shù)學(xué),一旦我們意識到自己學(xué)起來有困難,就開始不相信自己能學(xué)好,并且給自己各種理由證明自己不能學(xué)好,甚至是讓自己學(xué)不好合理化。例如會說 “學(xué)這個(gè)有什么用呀,買菜又不需要微積分”,或者說“我就是一個(gè)學(xué)文科的,這種理科的東西我不需要學(xué)” 甚至?xí)f “我就是一個(gè)學(xué)文科的料,理科在我的基因里就寫著‘不擅長’三個(gè)字” 。

類似的,如果我們希望孩子不會說自己“就不是一個(gè)編程的料”,最好的辦法就是讓孩子從第一步就產(chǎn)生成就感,從而產(chǎn)生自我效能感,也就是相信自己可以有能力達(dá)到目標(biāo),學(xué)好編程。

在這樣的前提下,你還會讓孩子從學(xué)習(xí)例如 C 或者 Java 這樣的工業(yè)級編程開始嗎? 這樣,他可能會面臨的困難不僅僅是編程的困難,他還會遇到打字的困難,標(biāo)點(diǎn)是否使用正確的困難,編程語言語法的困難,編譯錯(cuò)誤時(shí)莫名其妙的困難等等。 這些困難會消磨掉孩子學(xué)習(xí)編程的興趣,自己找理由說“我不喜歡編程”,就和很多人找到無數(shù)理由說自己“不喜歡數(shù)學(xué)”一樣。 這就是在沒有形成自我效能感的情況下拔苗助長的結(jié)果。

這個(gè)就很像我在德國期間看到的德國音樂學(xué)習(xí)和中國的區(qū)別。德國在小時(shí)候?qū)W習(xí)音樂首先是學(xué)習(xí)鑒賞,再是學(xué)會玩,最后才是學(xué)音樂。例如,首先老師會給孩子們彈音樂,并且音樂是配合特定故事和場景,讓孩子們能把聲音和場景對應(yīng)起來;然后讓孩子們可以玩樂器,就是不計(jì)較指法是否正確,姿勢是否正確的情況下,先和樂器做朋友,不恐懼音樂和樂器;最后才是學(xué)習(xí)如何駕馭一種樂器,才開始學(xué)習(xí)指法等等所謂的基本工。 而國內(nèi)學(xué)習(xí)樂器恰好相反,首先讓孩子練習(xí)的是指法,而忽略了讓孩子對音樂的熱愛。

這就是為什么西瓜創(chuàng)客以及我肖恩老師還是會推薦學(xué)習(xí) Scratch 的原因: 先讓孩子可以不恐懼編程,產(chǎn)生興趣,并且用編程表達(dá)自己。 等到孩子們已經(jīng)產(chǎn)生了自信和成就感,再提高難度。如果都要選擇一門語言進(jìn)入編程的世界,一定是選擇能讓孩子快速找到自信,找到成就感的語言。 那這種語言目前最好的就是 Scratch。

Q:那要是我的孩子就是想學(xué)除了 Scratch 外的語言,我應(yīng)該怎么為他選擇?

首先,讓我們把編程語言分為兩大類,一類是興趣類編程,以圖形化編程為主,目的是用編程實(shí)現(xiàn)自己的想法,不用擔(dān)心程序執(zhí)行效率不高,也不用考慮用戶的使用場景和平臺。另一類是工業(yè)類編程,以源碼編程為主,除了考慮用編程來解決生活生產(chǎn)中的問題外,還需要考慮到用戶會在什么樣的場景下使用此軟件,以及產(chǎn)品的易用性。

如果是青少年學(xué)習(xí)編程,依然不推薦從工業(yè)類編程入手。 目前 Scratch 語言也在進(jìn)化,能支持的功能已經(jīng)遠(yuǎn)遠(yuǎn)大于把一個(gè)圖形從這里移動到那里。 Scratch 現(xiàn)在已經(jīng)可以對特定硬件進(jìn)行編程了。和 Scratch 類似的圖形化語言 Blocky ,已經(jīng)可以完成很多很多遠(yuǎn)超過 Scratch 的功能了。 例如同是 Scratch 3 基于的 Blockly 開發(fā)的 App Inventor,已經(jīng)可以讓孩子用圖形化編程制作一個(gè)手機(jī) App。事實(shí)上,并不是圖形化編程就弱雞,現(xiàn)在西瓜創(chuàng)客的員工工資公式已經(jīng)是用 Blocky 寫的了,西瓜創(chuàng)客的后臺各種工作流程規(guī)則也都是用圖形化語言來寫的。

如果非要選擇工業(yè)級編程語言,我們還是可以按目標(biāo)來劃分。

如果目標(biāo)是應(yīng)試,首選是 Python,目前浙江等地區(qū)已經(jīng)把 Python 列為了高考科目。 如果想通過 NOIP 加分的話,其次選擇是 C/C++ 語言。(注,在應(yīng)試層面上,選擇 C 和選擇 C++ 是一樣的,因?yàn)?C++ 是基于 C 擴(kuò)展增加了一些例如面向?qū)ο缶幊痰奶匦?,而?NOIP 的賽題里,不會用到這些高級特性)

如果目標(biāo)是編寫控制硬件的程序,推薦語言是 Python 和 C。C 的原因是主流的硬件編程都是支持 C 的。而非工業(yè)級的硬件編程,例如,樹莓派支持用 Python 編程。

如果目標(biāo)是制作 App, 可以選擇的語言是 Scratch 類似的 App Inventor、 Java(用于編寫安卓的 App)或者 Objective-C/Swift (用于編寫蘋果系統(tǒng) iOS 的 App)。另外 Java Script 也是一個(gè)不錯(cuò)的跨平臺選擇。現(xiàn)在大多數(shù)程序都是蘋果安卓系統(tǒng)通用的。這類程序基本是基于某個(gè)框架,最常用的框架是 React Native,而 React Native 使用的就是 Javascript 語言。(注,Java 語言和 Javascript 是兩個(gè)語言,類似但不相同)

如果目標(biāo)是制作網(wǎng)頁,可以選擇的語言是 Javascript + CSS + HTML。其中 CSS 和 HTML 是決定網(wǎng)頁長成什么樣的。這兩種語言學(xué)習(xí)起來很簡單。推薦 Javascript 的原因是,網(wǎng)頁編程的前端(用戶能看到的部分)基本都是用 Javascript 來控制的。而且現(xiàn)在的 Node.JS 也是基于 Javascript 的語法來做的后端程序(也就是用戶看不到的服務(wù)器部分)。也就是說,只要會 Javascript前端后端都能寫。

如果目標(biāo)是做數(shù)據(jù)分析,首推的是 Python 語言。Python 語言里有大量關(guān)于數(shù)據(jù)處理的公共庫可以使用。讓我們可以站在巨人的肩膀上繼續(xù)深入研究,而不是重造車輪。

綜合各種因素,如果是針對 7-12歲的孩子學(xué)習(xí)編程,語言的推薦順序?yàn)?Scratch > Python > Javascript > C 。

the end
免責(zé)聲明:本文來自騰訊新聞客戶端自媒體,不代表騰訊網(wǎng)的觀點(diǎn)和立場。

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多