首頁美食 > 正文

學程式設計的時機與選擇

2022-02-19由 麥工科技 發表于 美食

最近這幾年,程式設計教育之火熱,隱然成為了當下家長關注、學校力推、機構扎堆、資本狂歡的一場盛宴。但是以往的商業經驗告訴我們,這種現象最後很有可能是“資本”掠奪走了程式設計行業未來20年的發展利潤,最後造成學員、機構、學校、老師都受傷,而唯有資本受益了的局面。本文希望透過白話的語言,介紹程式設計學習的基本常識,供無相關知識背景的家長在做決策時參考。

學程式設計的時機與選擇

程式碼化程式設計的介面

第一節 什麼是程式設計

開始時,我們不得不提一下這些名詞“程式設計”、“人工智慧”、“計算機思維”、“機器人”等等。不可否認,人類目前處在“資訊時代”,而未來社會更是當下的資訊時代的升級版本,現在基本上所有人都認為未來的社會充斥著各種各樣的機器人,逼真到人都分不清楚,各種型別的機器人充斥著各種工廠代替人的工作,厲害的一塌糊塗的AI(人工智慧)控制網際網路和手機,貌似這些“機器”將會無處不在。

一些機構開始利用這種情緒販賣焦慮,某公眾號為童程童美打的軟文廣告,上面大字標題寫著“在未來,不會程式設計,都將是文盲。”(據說這句話是世界上第一個AI公民索菲亞的第一句話,而這個叫索菲亞的機器人被批評為科技騙局)。為了讓大家從普通人(無程式設計知識背景)的角度能夠理解“程式設計”和文盲的關係,我們來舉個例子說明一下什麼是程式設計。

首先用稍微專業的點話術解釋:車、機器人、手機軟體、網際網路的服務等等都是由計算機在指揮著工作的,而這些計算機是人在指揮的,因為計算機聽不懂人說的話,也看不懂人寫的字,所以人類就得遷就計算機,用計算機的語言去和計算機溝通。而這個把人的思想用計算機語言寫成計算機能讀懂的程式的過程,就是程式設計。

這就好比古時候的農耕社會時人類用牛去耕地的過程,人類不想自己親自去拉著犁耕地,因為太累,於是人類找來了牛,但是牛不聽話,所以人類就訓練牛,發明一些簡單的命令如“dener”“jiaa”“wor”“yu~~”等控制牛前進(相當於程式),再給牛套上犁耙(相當於計算機指揮的機構),這樣這個人工智慧機器人就可以完成犁地的工作了。

我們可以試著想一下,程式設計只是操作計算機的技能,為什麼人人都要會呢?這就好比農耕社會時每個人都要會操作牛犁地一樣,打獵的人不是活的也挺好嗎?照此邏輯推理下去,我們甚至可以說:“在未來,不會跳舞的,都將是殘疾”,“在未來,不會彈鋼琴的,都是聾子”,“在未來,不會攝影的,都是瞎子”等等。

我們有理由相信,未來社會是一個資訊科技或者計算機技術高度發達的社會,萬物互聯,萬物智慧,但是負責去設計和研究這些資訊裝置和服務的人不是應該是程式設計師和工程師們來做的事情嗎?這和我們今天的這個社會的社會分工沒什麼區別,你看現在還是華為、微軟、阿里的工程師在研究如何做好手機、做好服務、做好程式,而我們這些對程式設計一竅不通的人照樣把手機刷的非常溜,你看到那個手機或者APP的使用要求裡面寫著:“使用者必須程式設計能力達到52級”這樣的話。

所以,我們應該要知道,程式設計是一種技術,是為人類的美好生活服務的技術,而它並不是人人在將來都要掌握的技能,如果您的孩子熱愛美術,將來他一定應該是一個偉大畫家,而不是一個二流的程式設計師。

第二節 程式設計和AI之類的關係

在未來,“人工智慧”和“機器人”等所有的智慧裝置和自動化設施,都是透過計算機的控制來實現的,即使在當前的時代,計算機也已經非常的小型化了,比如兒童智慧手錶裡的功能板。並且計算機的形式也早不是我們傳統概念的電腦了,計算機泛指那些具備指令和資料處理能力的部件。

一般來說,在神秘的人工智慧領域,為了能夠達到“智慧”的效果,程式設計師和工程師們需要透過程式設計實現模擬人體的大部分功能,包括透過資料和演算法訓練的智慧大腦,各種感測器的驅動和資訊接收,各種執行部件的驅動和反饋等等。這些專案都是複雜的系統工程,需要多個領域的科學家,多個門類的工程師,專案管理團隊,以及負責軟體的程式設計師們的共同努力才有可能實現。

有一家美國公司叫做“波士頓動力”,他們致力於開發多種機器人,其水平已經很高了,大家可以透過下面的影片瞭解一下:

window。DATA。videoArr。push({“title”:“厲害了!波士頓動力機器人:跑步跳躍樣樣精通”,“vid”:“l0652tpntmx”,“img”:“http://inews。gtimg。com/newsapp_ls/0/9776941582_640480/0”,“desc”:“”})

可以肯定的是,類似於影片中的這種機器人,是需要多位程式開發人員的共同努力的,這不是簡單的程式設計可以實現的,其複雜程度甚至接近於作業系統的開發。

第三節 什麼是程式設計教育?

程式設計的學習,是多種學科的共同運用,主要包含:數學、英文、邏輯等主要的學科。我們現今市場上的培訓機構,採用的程式設計培訓的課程主要有:Scratch類的圖形化程式設計(也稱為積木程式設計),Python程式設計,C語言類的程式設計,APP開發類的。這些程式語言在學習時,不同程度的都要學習到上述學科,接下來我們介紹一下這些程式設計課程,再來說說程式設計教育的這幾個學科的介入程度。

首先說程式設計課程,Scratch類的程式設計是隱去了程式設計中的程式碼,學生透過像擺放積木擺放不同的命令模組來構件程式,然後再讓螢幕上動畫角色做出相應的動作,比如畫個圖形、叫幾聲,塗顏色等等。這類的課程在設計時,其目的就在於透過簡單的方式吸引孩子們的興趣。在程式設計過程中,學生會學到邏輯相關的知識,例如只能先直行然後才能轉彎90度等。

學程式設計的時機與選擇

麻省理工學院官網上的Scratch程式設計介面

(對上述圖片的簡述:Scratch是MIT開發的線上程式設計軟體,學生可以訪問MIT的官網,免費獲得這些學習課程。在上圖中,學員拖動左側的命令積木至中間的程式設計區,嘗試組合出一套符合邏輯的動作,點選執行時,右側的小貓即可做出相應的動作。Scratch程式設計有網頁版和可下載的程式版,支援簡體中文)

Python和C語言類程式設計的課程,都是程式碼化的程式設計,就像我們理解的普通程式設計師一樣,學生要能夠在程式設計的軟體裡面完成整段程式碼的編寫。這類語言需要有英文基礎,以便能夠看懂程式碼,其次,這類語言能夠解決很多的數學問題和“電腦上的操作功能”,其可以接受的複雜程度是相當高的。這類程式的編寫不但需要懂得各種程式語言的規則(比如引數在使用前需要宣告),更重要的是這種程式如果要寫出來能夠解決問題,學生還需要對這個問題進行數學分析,建立數學模型。我們來舉個例子說明一下:

比如著名的雞兔同籠的問題,學員們首先要明白雞兔同籠問題的數學模型關係:

數學模型關係的語言化表達:雞的數量加上兔子的數量是三十五,所有的腳加起來是九十四。

數學模型的數學表達:X+Y=35,2X+4Y=94;

上述模型的程式設計思路的語言化表達:

- 定義 腦袋=35;

- 定義 腳=94;

- 定義 雞 為待求解的變數;

- 定義 兔 為待求解的變數;

- 因為腦袋的總數是35,所以雞的範圍肯定是0~35之間的數字;

- 並且 兔 一定等於 35-雞;

- 讓計算機從 雞 = 0 開始計算,直到 2X雞+4X兔 = 94時結束計算

- 即可算出 雞 和 兔 的具體數字

上述程式的Python程式設計即為:

Heads = 35

Feet = 94

for chicken in range (0, heads+1):

rabbit = heads - chicken

if chicken*2 + rabbit*4 ==feet:

print (“雞的數量是“,chicken,“兔的數量是”,rabbit)

從上面的例子我們可以看出,程式設計除了教授學生對於程式語言本身的理解之外(比如上面例子中 for 和 if 怎麼使用),更重要的是學習邏輯思維和數學建模的能力。所以我們可以總結一下,程式設計過程中對那些知識會用到以及學習到:

1。 程式語言的規則和語法(任何一個程式語言都有);

2。 英語(絕大部分程式碼化程式設計只能使用拉丁字母作為程式的主體);

3。 計算思維(即理解計算機是如何工作的,並按照計算機的模式思考問題);

4。 邏輯思維(計算機是邏輯化的裝置,非邏輯化是人工智慧將要重點突破的方向,還沒成功);

5。 數學思維(主要數學問題的理解,抽象建模能力)

除了上述幾條之外,很多人還宣稱程式設計和如下學科的結合:

1。 音樂(程式設計和樂器結合,比如用程式設計的方式演奏簡譜);

2。 美術 (Scratch的入門課程多和繪畫類有關,一般是程式設計讓小人畫一個圓形之類的圖形);

3。 大資料(大資料收集一般人幹不了,目前主要指分析和使用,資料分析對數學知識的要求非常高);

4。 AI或者人工智慧(程式設計實現人工智慧是人類共同的目標,目前低端常見的層面能實現的叫做自動化和高度自動化,這個和智慧還沒有關係,高階能實現的接近於人工智慧的已經可以做到機器人的自主判斷,但是離我們普通人所想的智慧還差很遠,這一點很像手機上宣傳的無線充電技術,目前不能叫無線充電,只能叫做手機免插線充電);

5。 機器人(目前各型別的教學機器人,都是隻能實現預置的命令,或者我們可以叫它們為一堆透過程式控制電機驅動的連桿和輪子元件);

綜上所述,程式設計課程本身基本會對計算機、邏輯和數學進行較深的涉獵和介入,而且這種知識體系還對學生本身的認知水平有很高的要求(即年齡和學識)。因為比較有實用價值的程式設計學習一般要涉獵到很深入的知識,僅以數學為例,比如機率論、離散數學等等,這些知識即使大學生都不能很容易的掌握的。所以,當前的程式設計的課程,大多都是以培養孩子對計算機的基本理解,初步的邏輯思維和簡單的問題解決為目標的,輔助以音樂美術之類的來提升孩子們的興趣。

第四節 選擇程式設計課程的建議

本文不做廣告,也不去抹黑以及批評當前的程式設計機構和學科開設者。作為學生家長,我們的建議是您要廣泛的讓孩子去嘗試,然後再從中選擇有興趣的方向作為主要課程持久的繼續下去。當我們選擇程式設計時,基本上所有的課程內容體系都適合入門,但是都不會讓孩子產生比較深入的層次上的提升,這一點作為家長要有認識,我們不能指望透過線上課程或者淺層次的學習就能夠讓孩子在程式設計上有所突破。

當孩子還是零基礎的時候,選擇一些機構去學習,此時以提升興趣為主(因為純粹的程式設計是很枯燥的),所以衡量機構的準繩就是課程是否有趣。當孩子有基礎的時候,建議去選擇一些有“實用意義”的課程類別來學習,讓孩子的程式設計在物理世界得到反饋。關於程式設計的實用性,請關注麥工科技的後續文章。

頂部