朱勝昔
(婁底技師學院,婁底 417000)
2019年5月,華為創始人任正非在接受采訪時說:“未來20年人類社會一定會發生巨大變革,未來很多職位將會全線被機器人所替代,現在可以去華為手機的生產線看一看,生產一部手機只需要20秒,這是前所未有的?!辈⒃诓稍L中提到“這個社會最終走向人工智能”。
如今華為的手機生產線已經證明了這一點,全自動化不需要大量工人。在華為東莞的一個生產基地,一條120米的生產線,從六年前的上百名工人發展到今天只有17名工人,而且這17名工人能實現更高效率、更穩定質量的生產。
可見人工智能時代到來的步伐已是勢不可擋,在這個新的時代里,對技工人才的需求已經發生了很大的改變。大量傳統的手工操作崗位紛紛被智能化系統所取代,取而代之的是各種智能化系統的控制崗位。在這些崗位中,要求的不再是大量的體力與重復勞動,而轉變為如何更好的與智能化系統打交道,讓智能化系統更高效率、更穩定的完成生產需求。
針對于智能化系統的崗位,主要有開發智能化系統以及與智能化系統協同工作兩類。這兩類崗位在技術層面上有一個共性就是“編程”。所謂編程,實際上就是和機器溝通的語言。不論是開發智能化系統還是操控智能化系統,你都得使用機器能夠理解的語言和它進行溝通。
因此做為技工人才搖籃的技工院校,對于人才的培養趨勢也在逐步的適應時代的變化。PLC、單片機、機器人等與編程相關專業技術逐漸普及起來,然而我們在實際的教學過程中,發現我們的學生對于編程課程的學習難度比較大。究其根源,發現其癥結在于現狀下的技工院校生源質量,在使用常規的培養方法時,由于學生的基礎差等特性,使得學生無法建立起一個良好的編程思維。編程思維無法建立,相關課程自然也就難以掌握。那么如何才能讓學生建立起編程思維?下面我們從編程思維的本質、學生的特性以及培養方式的探索幾個方面來進行探討。
一個程序的編寫過程可為四個步驟:分析問題,設計算法,編寫代碼,調試運行。
通過尋找問題中存在的規律,將其轉化為解決問題的思路,進而建立解決問題的數學模型。再通過一些經典的算法規則,將問題中涉及的數據映射到數據結構上,將數學模型的求解過程轉化為具體步驟,從而得到解決問題的算法。然后將算法使用編程語言表達出來。
在整個過程中,算法的轉化、代碼的編寫均有跡可尋,在數學模型建立的基礎上,依據已有的規律,可以按部就班的實現。唯有分析問題,尋找規律、建立模型的方法只可意會,難以言傳,需要通過進行大量實際問題的分析訓練,慢慢積累,方可將形成良好的編程思維。
故編程思維的核心,不是編程語言,也不是語法。而是如何分析問題、從中發現規律,從而找到解決問題的方法,建立解決問題的模型,并將其映射到數據結構和算法上,然后再根據算法實現程序的編寫。
實際情況表明,我們的學生對于編程語言、語法的掌握,難度并不是很大。通過記憶和簡單習題的練習,是可以較好的掌握。但是當需要將這些知識點綜合起來,去解決一個具體問題時,往往就束手無策了。
因此編程思維的培養,不應該單純建立在大量指令、語法的灌輸上,而是需要通過針對一系列由簡單到復雜的實際或仿實際問題的分析訓練,讓學生逐步掌握問題的分析方法、解題模型的構建方法以及數據結構和算法的設計方法。當掌握了良好的編程思維后,再來學習晦澀的各種編程語言、課程,自然就會水到渠成。
編程思維的訓練依靠的是大量問題的分析訓練,而單純使用習題的方式進行抽象思維訓練,對于我們的學生而言,無疑是枯燥、乏味的,久而久之將直接使其喪失學習的動力。因此必須將問題的分析訓練轉化為具體的成果,然而這個轉化過程中又必須依靠算法轉化、編寫代碼以及其他相關知識點的支撐,才能得以實現。由于社會長久以來的思想固化,造成優質生源紛紛擠到學歷教育這個獨木橋上,留下來接受職業教育的大多都是當前應試教育的犧牲品。他們通常都具備以下幾個特點。
(1)基礎薄弱,主要體現在數學基礎和英語基礎的薄弱上。雖然編程所用的程序語言有多種多樣,但實際上,機器所能理解的語言只有一種—二進制代碼。因此不管任何問題,最終都需要轉化為數學的方法進行解決,即建立數學模型。而我們的學生數學基礎大多較差,尚不論各種函數的求解,有的甚至連簡單的分數加減都容易算錯。至于英語,由于計算機的發展始于歐美,且英語的字符數量少,有利于字符的編碼等因素。使得C語言、匯編語言等絕大多數編程語言使用的都是英語作為助記符、關鍵字等。從而使得我們的學生在學習編程時,單就一個記憶各種英文助記符、關鍵字就足以讓他們望而卻步了。
(2)學習興趣低,主動性差。我們的許多學生在初中階段,就已經養成了大量不良習慣,且長期被冠以“學習不好的人”的稱號。使得他們喪失了對學習的興趣,且內心及其自卑,認為自己學不會、不會學。從而陷入學習主動性差,造成學習更加困難的惡性循環。特別是進入技工院校后,初從應試教育的壓力中解放,使得本就沒有自制力的他們更加的懶散了。在缺乏壓力、又擁有大量不良習慣的情況下,興趣和成就感可能是讓他們主動學習的唯一途徑了。
(3)思維方式固化。在接觸編程之前,思考問題的方法更多是主觀的、直接的,采用的是一種模糊思維方式。而機器由于其理解的語言為二進制,因此它的思維方式是純粹的二值邏輯思維,對條件進行準確的是非判斷。即便需要進行多值判斷,也會以層次性的二值判斷來實現。因此,我們的學生在這個思維方式上往往很難轉變。
梳理以上的分析可知,培養技工院校學生的編程思維,其方法主要在于由易至難的大量問題的分析訓練。然而依靠純粹的習題來進行抽象的訓練,反而會起反作用,讓學生喪失學習的動力。而結合各種支撐的知識點,將其轉化為具體的成果,又由于生源質量的約束,使得操作起來困難重重。因此,尋求一個基礎知識需求低、成果轉化簡單的開發平臺就成了構建技工院校學生編程思維培養體系的主要任務。在對大量軟硬件開發平臺進行篩選的過程中,我們發現Arduino平臺正好滿足這些要求。
Arduino平臺是什么?它是一款既能通過傳感器模塊感知外部環境,又能驅動外部設備實現各種操作的開源電子原型平臺。由開源硬件——Arduino控制器、開源軟件——ArduinoIDE組成,可用于開發各種各樣的自動化控制和交互式的電子作品。[1]值得一提的是,這個平臺實質上就是一塊以ATmega單片機最小系統為核心的控制板,然而它的開發模式具備的以下特點使其成為了培養編程思維的一個很好的選擇。
(1)高度模塊化設計的外部電路。傳統的單片機應用比較繁瑣,需要具備一定的電子技術基礎才能設計并控制其外部電路。而Arduino的出現,各種遵循其標準設計的“黑盒子”般的外部電路,讓使用者只需要將注意力集中在如何控制模塊實現功能,而屏蔽了對模塊內部電子電路具體的設計和控制,使得對使用者的電子技術基礎需求大大降低。
(2)擁有圖形化編程工具。Arduino原生的開發語言仍然是C語言,但是它擁有類似Mixly等第三方圖形化編程工具的支持。在這些圖形化編程工具中,使用者只需要簡單的從模塊區中將編程模塊拖放到工作區內,然后像搭積木一樣,將各個編程模塊結合起來,從而完成程序的編寫,這種編程方式對使用者的英語基礎的需求基本為零。而且各種圖形化程序還能輕松的轉化成C語言代碼,給使用者進一步學習C語言提供了強大的助力。
(3)功能強大,產出輕松。雖然Arduino平臺使用簡便,但其擁有和世界頂級專家設計的嵌入式交互設備相同級別的硬件工作復雜程度。[2]可以用于制作類似電子時鐘、智能小車、四軸飛行器等有趣的創意電子產品。讓學生能夠將所掌握的技能便捷的轉化為具體的產品,從而大大的提高其興趣,增加學習主動性。
基于Arduino平臺的這些特點,技工院校對學生編程思維的培養,可以從低年級就開始,通過一系列Arduino平臺上的電子作品的開發,讓學生在獲得成就感的驅動下,養成主動學習的習慣,進而逐步養成良好的編程思維。為后續PLC、單片機、機器人等進階編程科目打下不可或缺的基礎。
在人工智能即將普及的時代里,編程型技工人才的需求將大大增加。如何將質量有限的學生培養出良好的編程思維,使其能夠更好的學習和接受各種高級智能化控制技術,是這一段時期內我們需要一直探索的一個課題。Arduino的出現,給這個課題的解決帶來了一抹曙光,希望憑借它能切實解決這個難題。