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