掌握編程教育的本質纔是最重要的!

從2014年12月,美國前總統奧巴馬在「編程一小時」活動中寫下本身人生第一行編程代碼開始,青少年編程教育逐步成爲公衆關注的熱點。2017年7月,國務院發佈《新一代人工智能發展規劃》,其中特別提到的「在中小學階段設置人工智能相關課程,逐步推廣編程教育,給青少年編程教育的重要性一槌定音。提起編程教育,咱們最早會想到如ScratchPython等編程語言。是否是學會這些語言,就是學會了編程?到底學會多少語言,纔算是學會了編程?想找到這些問題的答案,咱們不妨從編程的發展歷程中探尋。python

 掌握編程教育的本質纔是最重要的!

 

歷史中的可編程發明編程

 

若是被問到「什麼是編程?」,許多人的回答多是「敲代碼」。坐在電腦前,用鍵盤敲出一行行代碼,這就是咱們如今最常看到的別人編程的樣子。網絡

 

掌握編程教育的本質纔是最重要的!

 

然而,在80年代,計算機工程師編程並非「敲代碼」,而是「寫代碼」——真的在紙上寫出程序代碼。在紙上寫好的代碼也不能運行,工程師們還須要把程序製做成打孔紙帶,把打孔紙帶輸入計算機,計算機才能讀取程序並運行。從1943年第一臺現代電子計算機發明開始,給計算機輸入打孔紙帶就是當時的「編程」方式。直到電子顯示器發明並大規模應用後,純數字化的代碼輸入得以實現,打孔紙帶才退出了「編程」的舞臺。機器學習

 

掌握編程教育的本質纔是最重要的!

 

但有趣的是,使用打孔紙帶、紙卡編程的歷史比現代計算機還要早得多。1805年,拿破崙爲法國紡織商人、發明家約瑟夫·雅卡爾頒發鉅額獎金,嘉獎雅卡爾發明的,極大提高了紡織生產效率的自動化「可設計」織布機。編程語言

 

掌握編程教育的本質纔是最重要的!

 

咱們再向前追溯,還能發現比打孔卡片更早的「編程」裝置。這些裝置中有兩種咱們比較熟悉,是音樂盒和自動人偶(automaton)。能自動演奏音樂的音樂盒最先出如今公元9世紀,在19世紀成爲大量生產的工業化產品,是當時人們的休閒娛樂用品。音樂盒內部有一個滾筒,滾筒側面安裝有一排發音簧片,每個簧片被撥動後能發出特定的音高。工匠對照着曲譜,在滾筒上對應行列的位置作出凸起。滾筒轉動時,各個凸起依次撥動簧片,就造成了旋律。在19世紀末,大型音樂盒開始使用更輕便、也更容易更換的打孔圓盤替代了滾筒。工具

 

掌握編程教育的本質纔是最重要的!

 

自動人偶最先的記載見於古希臘時期,我國的《列子 · 湯問》中也有記載一位工匠「偃師」給周穆王獻了一個跳舞人偶。有製造結構記載的,和有實物保存的自動人偶都使用了凸輪來「編程」。在故宮博物院,藏有一個由英國工匠製造並贈送給乾隆皇帝的「銅鍍金寫字人鍾」。鍾底部的寫字機械人由發條驅動,能自動用毛筆在紙上寫下「八方向化,九土來王」八個漢字。這樣一套複雜的動做,就是由若干個凸輪轉動來控制人偶的手臂、手腕和頭部同時運動。中文的書寫很是複雜,寫字人鐘沒法裝載更多的凸輪來寫出更多文字。字母文字的書寫相對簡單不少,18世紀的瑞士鐘錶匠皮埃爾•雅克德羅製做的「書寫者」自動人偶就能夠自由定義書寫內容。雖然理論上咱們能夠控制自動人偶作出各類各樣的動做,但更換凸輪無疑是一種低效的方式。不過直到今天,人型機器人的動做控制依然是一項複雜的工做。學習

 

掌握編程教育的本質纔是最重要的!

往更早的歷史中尋找,咱們會發如今公元60年,就有一個可編程的發明。這個裝置是古希臘的數學家、工程師希羅發明的「可編程」三輪車。這輛車有兩個驅動輪和一個被動輪。兩個驅動輪分別有獨立的車軸,在車軸繞上繩子,繩子的另外一頭由掛在車子桅杆上的重物拉動,驅動輪就轉動起來,帶動車前進。希羅巧妙地在驅動輪車軸上釘了幾根釘子,這樣就能夠反繞繩子,並且屢次改變繞繩方向。當重物拉動繩子時,兩個驅動輪的不一樣正轉與反轉的組合就實現小車的前進、後退、左右轉彎。只要預先設計好繞繩方式,希羅就能控制小車按既定路線行走,實現對小車的「編程」。大數據

 

現代編程技術的發展編碼

 

希羅的小車、八音盒、雅卡爾織布機這些發明,在其所在年代的尚未「編程」、「可編程」的概念。但它們在解決各自問題的過程當中,都設計出使用了具備通用「編碼」的方式來作自動化控制,用繞繩、滾筒、打孔卡片控制機器按人們的意志運行。今天咱們所使用的各類計算機編程語言,就是控制計算機按咱們的意志運行的技術工具。人工智能

 

回顧這些帶有「編程」概念的歷史上的發明,咱們能夠看到,雅卡爾發明織布機是爲了改進複雜紋樣紡織的生產效率;巴貝奇設計分析機是爲了快速準確的進行復雜數學計算;八音盒和自動人偶爲人們提供了便利的娛樂方式。這些發明家都是在探究各自問題的解決方法中,發明了這些裝置所使用的「編程」方法。咱們熟知的各類現代計算編程語言,也是由於解決特定的問題而被設計發明。

 

全球使用最爲普遍的編程語言——C語言由美國貝爾實驗室的肯·湯普遜和丹尼斯·裏奇所設計。1969年,湯普遜和裏奇正在埋頭研發一種全新的、支持多用戶多任務的操做系統——就是後來的UNIX。第一個版本的UNIX使用匯編語言,在一臺DEC PDP-7電腦上開發完成。因爲彙編語言極度依賴於硬件,當他們在把UNIX移植到更高級的電腦的過程當中,以爲須要一種可以處理更多數據類型,能像機器語言同樣直接操做存儲器,又具備複雜易用的邏輯結構的編程語言。因而他們在當時的BCPL語言上進行了改進和改造,造成了一門新簡潔、規範又強大的編程語言「C」。1973年,二人用C語言從新編寫了UNIX,造成了UNIX更爲標準化的版本。1983年,湯普遜和裏奇因發明UNIX系統而得到計算機科學的最高獎項——圖靈獎。

 

而另外一門與C一樣流行的編程語言Java,在1990年最開始在SUN公司裏被設計時(最初的名稱不叫Java),是用於有線電視和嵌入式設備的應用開發。開發小組讓Java可以方便的實現基於信息傳輸的應用開發,同時可以快捷的在使用不一樣處理器的設備上部署。Java的設計理念對於當時的有線電視來講有些過於超前。可是很快,Java就找到了適合它的廣闊天地——互聯網。1995年,SUN正式對外發布了Java,並把Java的特性精簡歸納爲「WORA」,一次編寫,處處運行(Write Once,Run Anywhere)。今後Java也迅速的流行開來。

 

到目前爲止,全世界已經發展出超過600門的編程語言。從2018年1月的統計數據看,使用量排名前十的編程語言是Java、C、C++、Python、C#、JavaScript、Visual Basic .Net、R、PHP、Perl。這十門語言佔據了50%的使用量,它們廣泛具備很強的通用性。好比Java就幾乎覆蓋了桌面軟件、網絡服務、嵌入式應用、操做系統、智能手機等絕大多數編程開發場景。但前十名裏也有僅在特定領域使用的語言。若是不從事數據相關的工做,你可能幾乎沒機會接觸到R語言。

 

掌握編程教育的本質纔是最重要的!

 

Python是1991年出現的「老」編程語言,近兩年大數據、機器學習的興起,Python被發現很是適宜這兩個領域的開發需求而得到了更多的使用量。新的編程語言也不斷出現,從2010年到如今,就有15門全新的編程語言問世。隨着社會環境、科學技術的發展,將來還會有更多的編程語言出現,用以解決全新的問題。

 

不管是歷史中的可編程發明,仍是近代的計算機編程語言發展,咱們都能從中發現,新方法、新技術隨着時代前進不斷涌現。除了技術自己,社會環境也在變化。

 

提煉編程教育的核心價值

 

十年前沒人會認爲手機成爲我的應用軟件的主流平臺;二十年前人們也沒法想象互聯網會接管咱們大部分生活需求。在這樣的發展節奏裏,一箇中學生今天接觸、學習的編程技術,在十年後他步入社會時,極可能有翻天覆地的變化。因此,在中小學開始Scratch、Python等課程,只是編程教育一個小小的開始。咱們必須提煉出編程教育的本質。

掌握編程教育的本質纔是最重要的!

 

爲青少年作編程教育,若是咱們不能讓學生領會編程語言背後的本質知識,那不論他學會多少編程語言,也不表明真正掌握瞭解編程,可以用編程創造價值。計算機科學的發展突飛猛進,將來新技術的誕生與更替會更快。咱們把握住編程教育的本質把編程的核心價值傳遞給學生,這纔對學生在將來的發展、在將來真正創造價值有意義。

相關文章
相關標籤/搜索