隨著數據、計算資源和人工智慧的發展,編程教育是否越來越重要了?

不是「打不過就加入他」的意思,就是學習並了解這些技術和應用是不是有足夠的必要?

本題已加入圓桌 ? 人機對弈終章,更多「AlphaGo(阿爾法圍棋)」相關的話題歡迎關注討論


從寬泛的意義上講,編程其實是一種整合資源創造新產品的活動。

在現在,編程體現為使用某種編程語言,比如C++、Java、Go、Python等實現某個軟體服務或產品。但這只是一種表現形式,實際上,編程這件事情,分成兩個階段:

  1. 腦子裡整合各種資源構建了產品或服務的原型
  2. 用具體的編程語言、技術框架實現出腦海中構建的原型

而第 2 個階段的事情,其實可以不用現在耳熟能詳的C++、Java、Go、Python、JavaScript等來實現,你完全可以在手機上用指頭戳幾下,或者憑空做幾個手勢就可以實現。

而且,現在已經在往這個方向發展,比如面向兒童編程的Scratch - Imagine, Program, Share,它不需要孩子們懂編程語言,它以一種很歡樂的方式就把編程這件事情完成了。

現在可以設想將來的情景:會有越來越多的人學習編程思維,使用更高級的但不同於當下這麼原始的編程技術把某些想法實現為產品或服務

這一定會成為現實。基本推斷是這樣的:每個人都想證明自己是特別的,而將來什麼產品都有都很便宜,大家都用得起,彰顯自己非常特別的難度就變得很大,而需求也會越來越強烈,那麼結果就是大家都可可能會使用編程工具來定製自己的一切

其實現在已經有了雛形了。像 3D 列印技術的出現,就讓有一部分人擁有了和別人不一樣的能力,他們可以在腦海中先構造原型,然後利用 3D 印表機這種編程工具來生產他們的專屬產品,打造自己的特別之處。

那麼,與之相應的編程教育,也會越來越重要。但請注意,將來的編程教育,絕不是現在的教你如何做網頁或者APP。


編程教育會很重要,培養計算思維會很重要。當然這並不是說熟悉某一門語言的特性會重要,如果非專業人士或者專業人士的入門編程教育是沉浸在語言的細節上,那麼這種編程教育還不如不要。

編程在這個世界不只是程序員的任務,編程的作用在最近這些年來也不再局限於寫個網站或者是開發一個桌面應用,相反,我目前所接觸的絕大部分非IT從業者之所以需要編程是因為他們需要處理數據,或者需要在某些硬體上實現一點功能,這些都是和他們本領域密切相關的東西。編程本質上是在給計算機下命令讓它們完成本來需要自己完成的任務,在這個計算機越來越強大的世界,學會更好地利用計算機自然是重要的。當然,隨著技術的發展,很多底層的細節會被封裝好,絕大部分非IT人士在工作中和計算機打交道的時候只需要點點滑鼠就好,但是,會編程意味著更早的接觸到新技術,更高效的完成工作,對需要完成的工作有更好的控制。我知道很多行業軟體或者專業產品都是可編程的或者有寫腳本的介面給用戶實現一些高級功能,作為一個程序員我覺得那些編程真心簡單,但掌握一些簡單的編程卻能極大地提高工作效率和質量,所以說接受基本編程教育是一件投入產出比很高的事

鄧小平同志當年講過,計算機的普及要從娃娃抓起,這句話在當今這個小學生都能熟練玩遊戲上網的時代,其內涵意義應該是:編程的普及要從娃娃抓起。目前西方對兒童的編程教育其實已經很普及了,帝國理工每周六機房有針對小朋友的編程培訓班,收費不菲,但來上課的還是不少;家長就在外面等著,還有強行把不想學的孩子拉進機房的家長,感覺就像是筆者小時候上奧數班一樣…………比起小學奧數那種數學雜技,學習編程不僅更實用,對人思維的塑造也有著更大的好處。不過要注意的是,對兒童進行的編程教育,乃至是中學生的編程教育,都要以激發興趣,塑造思維為主,不要過度教育挫傷其編程興趣影響後續發展。筆者本身因為高中參加信息學競賽在數據結構和演算法上都打下了較好的基礎,至少高中做現在這些公司面試的演算法題沒有任何難度;但因為當時訓練量過大導致我對編程產生厭惡,大學前兩年除非是作業要求基本上不想寫代碼。

最後還要指出的是,編程教育很重要,但得到正確的編程教育,尤其是正確的編程入門教育更重要。本科的時候很多同學拿著自己學校編的C語言教材上了一學期課結果還是啥都不會,考前我給他們講半天然後自己回去練習兩天,通過上機考試就基本上沒有任何問題。所以說,好的編程入門教育和差的編程入門教育,其差距大概比吃飯和吃翔的差距還大吧…………


Thinking in computer最重要。編程教育只是其中一環,並且只是其中最不重要的一環。

這裡包括幾個層面的知識或思維模式:

1、數學表達。把一個實際問題抽象成數學問題,並通過數學的方法來解決這個問題。這一步最重要。計算機終歸是計算機,它其實並沒有智慧,不懂得思考,它實際上只懂得計算。如果一個問題它不能通過數學模型來進行描述,那麼它就是不可計算的,因此也就不能受益於日益增長的計算能力。曾幾何時,我們認為計算機不能處理聲音,不能識別圖像。但最終通過科研人員的努力,現在計算機圖像識別已經爛大街了。

2、系統工程。計算機僅僅是貢獻了計算機能力。但廣義的計算機實際上是一個計算機系統。它包括了計算核心部件CPU和外圍部件。而外圍部件在嵌入式計算機的使用中,又獨立成為一個微小的計算機系統,並以此迭代。最終,這些系統組合成一個目標系統。因此如果要理解一個目標系統,就必須理目標系統的組成以及各自的作用。通過分層和抽象,使得我們處理問題的時候,適當的把某一層級的系統進行黑盒化,從而簡化了數學建模的難度。但是為了要構建這個系統,最終還是要打開每一個部件進行開發和建設。這當中如果設計者沒有系統工程的思維,則絕不可能理解和構建一個複雜度越來越高的計算機系統。

3、硬體界面。不管計算機的計算機能力多麼強大,數學建模的契合程度多麼完美,如計算機要最終作用到現實世界的話,它就必須直接操作硬體。而在硬體層面,這些計算結果最終會表達成為0和1。而這些0和1最終會成為某一條線路上的邏輯電平,從而通過電平的高低來進行硬體電路的操作。如果設計計算機系統的設計者沒有這樣的思維,那麼計算結果僅僅是結果,絕不可能產生當今這種生產能力巨大的變化。

4、編程方法。編程方法可以說是上述思維的粘合劑。它是最重要的,然而它又是最不重要的。說它重要,主要是指它的思維方法重要:數據結構+演算法。而說它不重要是指,具體的編程語言是不重要的,編程語言只是工具,工具可以有助於或限制了思維的表達,但工具絕對不能產生新的思維。當工具成為產生力的約束的時候,人們就會發明新的工具來代替它。實際上只要掌握了數據結構分析方法和演算法設計的原理,對於一個熟練的程序員來說,學會一門新的語言只需要五分鐘。

論述到這裡,我的答案就出來了:用計算機的思維方式去思考問題是最重要的,而編程僅僅是必要的步驟和過程。不要把過程當成目標了。


非常重要。

當今很多人有想法但總是"差一個程序員"啊。所以自學吧各位。


加拿大這邊已經要普及小學生編程課程了。


他99

8正相反,我覺得


我的看法是編程教育會越來越「不」重要。

編程之所以在現階段這麼重要,是因為機器不能替代人工來進行編程。計算機的各項技術都在以摩爾定律飛速發展,但程序產出和質量依舊受限於人的能力。

不過有以下一些趨勢,可以幫助程序脫離人的能力桎梏,或者說需要更少的人進入軟體行業:

1 計算機智能編程。目前這一方向已經啟動,機器已經可以幫助人類寫完簡單的代碼,自動生成代碼等等。複雜邏輯代碼依舊需要人工進行。

2 共享的編程工具與框架。程序員們開始通過建立框架和概念,共享已有經驗和技術,簡化編程的過程,降低編程難度。

3 IT產業的寡頭壟斷。很多時候,同時會有多個公司的程序員寫同樣功能的代碼,因為他們是相互競爭的公司。當IT行業越來越趨向於寡頭壟斷,成熟產業就不需要那麼多程序員了;當然新型產業,以及創業向公司不是這樣。

程序員之所以叫做碼農,就如同舊時代的農民;IT行業就如同農業。當農業生產工具進步,出現了機械化生產時,當農業出現產業化經營與承包機制時,越來越多的人就可以從其中解放出來做其他事情。我覺得編程人員或者說程序員也是這樣。


編程中的「邏輯」教育越來越重要。

至於演算法,還是需要交給專業的人來。話說現在大部分程序員也不是自己研究演算法的不是嗎?

至於編程語言,這玩意不該往自然語言上發展嗎?

所以,以後的人人會編程,應該是指每個人都會給Siri之類的程序下指令,而不是每個人都會寫C++。現在人人都要會用電腦,也是指人人都會用電腦上的這些軟體,也不是指人人都會拿電腦寫個操作系統出來。


真●首答

初學編程是因為愛好,堅持是因為習慣。

本人高中作為計算機競賽弱省省一,從高一到高三學習編程知識,記得有一本書,外號黑書,是劉汝佳大神的演算法藝術。初學編程就聽聞了這本書,很好奇編程也是一門藝術?

漸漸地,學習數據結構,演算法設計,演算法導論,騙分導論(つд?),等等,從簡單的快排到動歸,再到深搜寬搜,再到各種樹論圖論,最後再初步涉及網路流,發現編程就好比高手過招,見招拆招,最刺激的是可以自創招數說他是一門藝術真的不過分。

我的高中三年唯一堅持下來的一件事就是打開pascal,看一看自己寫的代碼,翻一翻刷題網站的天梯排名。

上大學時,放棄了報計算機專業,因為感覺有點累覺不愛。聽我的,千萬別學什麼內燃機(?д?; )。

後來發現什麼c,vb,matlab,異曲同工,關鍵是一種編程的思維,掌握問題的本質,例如是貪心問題還是動歸問題,這種東西需要經常看代碼和題解才能逐漸理解。大學裡很多為了專業服務的那一點編程教育,真的不是很夠用。

我即使被裝進棺材裡,我也要用這腐朽的喉嚨喊出:維他入我心,忘記海洛因。


編程只是表象,編程技術背後的編程思想,每時每刻都在刷新著我的三觀,人工智慧的火熱,給了大眾一個關注這個行業的機會(當然了,互聯網本身就熱門到大家都在關注了)

對於一個計算機科班出身的學子,無論是在校學習期間,該還是工作之後的不斷學習之路,都不斷的在接受和學習新的知識,編碼可能只是一種體力勞動,但是真正的編程活動背後,是有很多編程思想。因此我從不認為面向過程,面向對象或者函數式編程是一種技術,它們是思想,而思想,是值得所有人學習的,即使是無關行業的從業人員。

手機輸入,表達不是很清楚,之後再修改吧。諒解


KinderLab 機器人公司創始人、CEO Mitch Rosenberg 在「人工智慧與未來教育」高峰論壇上以「美國幼兒教育的領航實踐」為題,分享了美國在這方面的研究與實踐。

總結一下:他認為給孩子一種控制科技的能力很重要,因此要教給孩子相關STEM知識。而且研究表明,7歲之前的教育會有效。至於怎麼教,能讓孩子明白,請見下文詳情。

另,新加坡已經將相關教育視為智慧國家戰略基礎。

下面是他的演講部分:

我將跟大家探討一下,我們要讓我們的孩子為人工智慧世界做怎樣的準備。我認為,我們給予孩子們一種控制科技的能力很重要,而不是讓孩子被科技控制。

我將跟大家分享的是,機器人並不是來取代老師的,它只是取代了傳統的玩具,比如傳統的粘土、或傳統的積木等。

下面我會用到「STEM」這個縮略語,它們分別代表:科學、技術、工程和數學。我們看到,STEM的教育在全球日益受到重視,最主要的是家長們覺得這跟未來的工作機會是掛鉤的。認知科學和經濟學的研究發現,教孩子STEM最好的階段是在幼兒早期。在這一時期進行STEM教育的回報是巨大的。

但我們如何教孩子呢?因為他們的年齡還沒有形成這些抽象概念。

我的合伙人(一位著名的教授)的研究發現,教幼兒STEM最好的方式就是把抽象的概念變得具體可觸摸

最重要的是要讓孩子們意識到,STEM的教育不只是枯燥的計算,而是關於創造力的。其核心教學理念包括:編程、排序、建造、感測器以及變數等等。

培養解決問題和合作的能力也很重要。更重要的是要把STEM的教育跟我們的藝術、歷史和其他課程融合在一起。特別是把STEM跟閱讀和識字結合在一起。

比如:有個孩子用一套機器人組件創造了一個波斯舞者。他還跟舞蹈家合作,通過編程,讓這個波斯舞者能跳一段真正的舞蹈。這個學生只有六歲。

我想跟大家說一下為什麼我能來分享,因為我不是來自教育的背景。

我的合伙人在STEM領域寫了五本權威的書籍,也做了很多演講。我的專業背景是商業領域,我的合伙人找到我,希望我能跟他合作,讓他的研究在業界有更大的影響力。

我合伙人的博士生導師是麻省理工學院媒體實驗室的西蒙教授,也是MIT的人工智慧實驗室的創始人。除了在AI領域的成就,其實他職業生涯的大部分時間,都花在怎樣利用技術幫助教育和學習上了。

他的研究發現,編程已經是一門新的語言,應該教給大家。因此,我們研究開發了這套KIBO機器人套件,來幫助早期的兒童進行STEM學習。這個KIBO套件可以幫助4-7歲的兒童製造編程裝飾和運行他們自己的機器人。

這套機器人中的積木塊非常重要,每個積木塊上面都有圖片,這些圖片代表了積木將會做什麼。其實它代表了一行程序。

所以,這個套件由幾個核心部分組成,積木塊就是核心之一,代表了軟體編程通過可觸摸的形式表現出來。機器人可以讓孩子嘗試他們編程的結果,所以這是結果的展現。我們認為最重要的是這個平台,因為它為孩子創造了展現自己創意的天地。

很多同行的學術研究都證明,這個系統可以幫助孩子提高STEM能力。幼兒園小朋友在使用2周後,其排序的能力能提升62%。教STEM不僅是教這個能力,更重要的是讓他們熱愛並喜歡上STEM。

特別是對女孩來說,讓她們能熱愛和喜歡STEM很重要。這個套件也提升了女孩們對STEM的熱愛。

我最後想分享一下,怎麼把學術研究、創業實踐跟政府的支持結合在一起

新加坡去年把「玩創項目」作為他們智慧國家戰略的基礎。他們決定從早期兒童開始,全國10%的幼兒園實施這個項目。每個幼兒園都被提供了4套技術支持:能觸摸能動的玩具。

這是新加坡的一個國家策略。一年後,成果非常顯著。除了提升STEM技能本身,93%的老師都認為孩子們的毅力、創造力、創新能力等都得到了提升。90%以上的老師都希望繼續在教室里使用這些玩具。

我總結一下今天的分享:我們覺得培養普世的STEM能力非常重要,而這需要從兒童開始。最好的方式就是用具體的、兒童能理解的材料與其他教學內容相結合。結果是不僅提升了技能,而且態度和創造力都有很大的提升。


編程只是某些理工科專業的一門必學的技能或者課程而已,也僅此而已。只是在某些人看來,這項技能有著比它實際掌握難度和意義大太多的莫名其妙的牛逼之處。這種誤解可能和早年間80、90後這代人對計算機這種新生事物的神秘感有關吧。

但實際上,無論是資料庫(尤其是大數據)的廣泛秀存在感還是硬體設備的逐年彪悍(當然主要是噱頭),甚至是人工智慧(忽悠的居多)的緩慢發展,對普通人的影響都不關「編程」這個技能本身鳥事。說的明白點,行業外的普通人,你再不懂編程,也照樣享受科技帶來的便捷,而你程序寫的再6,依然也難做出真正的人工智慧

應該說,數據、計算和人工智慧方面進步的最重要的基礎只有兩點:硬體和演算法。編程只是實現這些目標的繁瑣的步驟中的一步而已。這也是為啥程序員被稱為「碼農」的原因。

但這並不等於我覺得編程教育不重要,相反,編程教育蠻重要(不是很,而是蠻),只是重要的原因和「數據、計算資源和人工智慧的發展」無關,而是通過學習編程,能讓學生最起碼從表面上理解計算機是個什麼東西、以及計算機是通過什麼樣的思維方式思考問題的。我覺得這是一個世界觀層面的問題,而當代人有必要擁有一個這樣的世界觀。這就像我們的父母輩那個年代,買衣服太貴所以母親們都知道衣服其實是可以自己做的,而傢具電器太貴所以父親們都知道男人是可以修理家裡所有的物件的。系統的學習過編程,就可以知道《極品飛車》里賽車撞牆的損壞模型和《憤怒的小鳥》中鳥撞豬的模型演算法難度遠遠不在同一個量級,就可以知道阿爾法狗雖然會下棋但你罵它它完全聽不懂了。


強烈建議把編程納入義務教育。高校還要從c語言開始教 實在是笑話


就全人類來說,自然是越來越重要。

正如汽車普及後,考駕照的人就如雨後春筍;計算機普及後,會用計算機就是一項重要的生活技能。

它不是每個人必備的技能,但有條件有能力的都不妨去學習。技多不壓身。也能讓自己更好地認識世界、適應世界。

其實編程一點也不神秘,不過就是把自然語言轉化為程序語言。

每天朝九晚五,就是循環結構。

考好有獎勵考砸會挨打(不在此問題討論範圍),就是分支結構。

……

程序語言是人設計的,反人類才不正常。

當然,既然是未知,要學習自然未必簡單。每個人的天賦都不盡相同。還是先照照自己吧


推薦閱讀:

作為老師如何改變學生「課本知識無用」的思想?
樂器入門,找名師的意義?
蒙特梭利教具過時了嗎?
遇到這樣的大學老師怎麼辦?
大學輔修和第二專業的區別?

TAG:人工智慧 | 教育 | 計算機科學 |