谷靈康
(安徽工程大學(xué)計(jì)算機(jī)與信息工程學(xué)院, 安徽蕪湖241000)
軟件工程專業(yè)編程語言選擇及教學(xué)方法探討
谷靈康
(安徽工程大學(xué)計(jì)算機(jī)與信息工程學(xué)院, 安徽蕪湖241000)
隨著計(jì)算機(jī)技術(shù)的發(fā)展,出現(xiàn)了多種編程語言,特別是軟件工程專業(yè)的迅速發(fā)展,編程語言的選擇及教學(xué)方法的改革也更加迫切,為適應(yīng)就業(yè)需要, 選擇開設(shè)合適的編程語言,同時(shí)要求理論教學(xué)和實(shí)踐教學(xué)要有效結(jié)合, 教學(xué)要與時(shí)俱進(jìn), 這樣才能培養(yǎng)出社會(huì)需要的優(yōu)秀編程人員。
軟件工程; 編程語言; 教學(xué)改革
軟件產(chǎn)業(yè)是信息產(chǎn)業(yè)的核心,是關(guān)系國(guó)民經(jīng)濟(jì)和社會(huì)發(fā)展的基礎(chǔ)性、戰(zhàn)略性新興產(chǎn)業(yè),是信息化建設(shè)的關(guān)鍵環(huán)節(jié)和21世紀(jì)國(guó)際競(jìng)爭(zhēng)的制高點(diǎn)。軟件產(chǎn)業(yè)保持健康、快速發(fā)展的關(guān)鍵是人才培養(yǎng),但我國(guó)乃至全球的軟件工程技術(shù)人才尚有較大缺口[1]。因此,做好軟件產(chǎn)業(yè)的“源頭活水”,形成一支有相當(dāng)規(guī)模和質(zhì)量的從事軟件開發(fā)與應(yīng)用的專業(yè)人才,特別是努力造就一批具有國(guó)際化、創(chuàng)新型、工程化的復(fù)合型軟件工程人才,為軟件產(chǎn)業(yè)的持續(xù)健康發(fā)展保駕護(hù)航是百年大計(jì),而編程語言又是軟件工程專業(yè)的核心課程,因此對(duì)于編程語言的選擇及教學(xué)方法研究是重中之重。
針對(duì)目前軟件工程專業(yè)需要選擇開設(shè)什么編程語言,想成長(zhǎng)為頂尖Coder需要選擇什么編程語言?TIOBE 2016年10月發(fā)布的編程語言中,Java毫無懸念成為第一名。TIOBE編程語言社區(qū)排行榜是編程語言流行趨勢(shì)的一個(gè)指標(biāo),這份排行榜排名基于互聯(lián)網(wǎng)上有經(jīng)驗(yàn)的程序員、課程和第三方廠商的數(shù)量。排名使用著名的搜索引擎進(jìn)行計(jì)算。在Top20榜單(如圖1所示)中,Groovy 在 2015 年底出現(xiàn)了爆炸性的增長(zhǎng),因此在 2017 年 1 月左右的增長(zhǎng)速度可能就不會(huì)太快了。谷歌的 Go 語言增張速度最快為1.67%,這其中 Docker 這個(gè)以 Go 語言寫就的容器應(yīng)用普及開來很可能在其中助了一把力。 其他類似 Objective-C、Swift 以及R語言等編程語言的年度增長(zhǎng)率雖接近1%,但還達(dá)不到年度編程語言的標(biāo)準(zhǔn)。特別是再次擠入候選名單的 Objective-C,從 2014 年 4 月的 12.875 % 下跌到 2016 年 1 月的 1.074 %,不過目前又在回升了。 另一個(gè)引入注目的編程語言則屬Python,其份額在持續(xù)上升中,目前排名第五位,Python易于學(xué)習(xí),而且借助Python還可進(jìn)行全棧開發(fā)。
這個(gè)編程語言排行榜,會(huì)隨著社會(huì)發(fā)展及需求的變化而變化,前10名編程語言走勢(shì)圖如圖2所示。
下面來分析一下目前主流的幾種編程語言:
(一) C#
這是一款強(qiáng)大而靈活的編程語言。與其它編程語言一樣,它也可用于創(chuàng)建多種應(yīng)用程序。事實(shí)上,C#的功能只受限于我們的想象力。該語言對(duì)開發(fā)者的操作內(nèi)容完全不設(shè)任何限制,其可被用于交付動(dòng)態(tài)網(wǎng)站、開發(fā)工具甚至是編譯器等。用途:Windows應(yīng)用、企業(yè)級(jí)業(yè)務(wù)應(yīng)用和軟件開發(fā)。優(yōu)勢(shì):.net庫。全面集成.net庫,提供出色的功能與支持庫訪問能力;可轉(zhuǎn)換性。其基于C語言,因此C#的結(jié)構(gòu)可轉(zhuǎn)移至Java、Objective-C、PHP以及C++等其它語言形式;需求旺盛。C#加Java為目前各企業(yè)需求最為旺盛的軟件開發(fā)技能組合。弊端:不適合新手。C#并不是最適合新手們進(jìn)行入門學(xué)習(xí)的編程語言,其學(xué)習(xí)曲線非常陡峭;跨平臺(tái)能力差。由于集成.net,因此不具備跨平臺(tái)能力[2]。
圖1 編程語言Top20排行榜
圖2 編程語言Top10走勢(shì)圖
(二) Objective-C
是一款通用型面向?qū)ο缶幊陶Z言,其本質(zhì)上是將Smalltalk類消息收發(fā)機(jī)制添加到C語言當(dāng)中。其目前為蘋果公司在OS X及iOS操作系統(tǒng)上的主要編程語言,并配合各自的應(yīng)用程序編程接口。用途:iOS應(yīng)用程序、蘋果公司的首選語言用于構(gòu)建Mac OS與iOS。優(yōu)勢(shì):庫。Objective-C編程語言的開發(fā)目標(biāo)緊緊圍繞與Cocoa編程框架的協(xié)作需要,這意味著其能夠訪問蘋果的開發(fā)庫;Objective-C運(yùn)行時(shí)。由于Objective-C編寫的程序往往動(dòng)態(tài)程度更高,且能夠收集自身相關(guān)信息以決定相關(guān)內(nèi)存或數(shù)據(jù)類型,而無需在編碼過程中由開發(fā)者自行選擇;使用范圍有限。盡管Objective-C擁有諸多出色特性,但其使用范圍限定意味著我們無法為Android等其它平臺(tái)開發(fā)應(yīng)用。弊端:學(xué)習(xí)曲線。上手難度比較高,要求學(xué)習(xí)者具備一定的C語言知識(shí)基礎(chǔ);不夠直觀。大家不可能在幾周之內(nèi)學(xué)會(huì)如何開發(fā)程序,一般來講,我們可能需要投入一年才能拿出比較像樣的開發(fā)成果;不同于其它的編程思路。蘋果擁有自己的編程方法思路,且與其它編程思路差別較大。
(三) C++
是一款面向?qū)ο缶幊陶Z言,被廣泛視為最出色的大規(guī)模應(yīng)用構(gòu)建語言。C++屬于C語言的一個(gè)超集。用途:可用于搜索引擎、操作系統(tǒng)、視頻游戲及軟件開發(fā)。優(yōu)勢(shì):助你脫穎而出。掌握C/C++能夠幫助大家在眾多開發(fā)人才當(dāng)中脫穎而出,掌握了C/C++,大家能夠深入了解Java或Python等編程語言中的內(nèi)存管理機(jī)制,并了解如何回避各類常見的陷阱與難題;靈活的調(diào)整空間。C++允許大家對(duì)自己的應(yīng)用進(jìn)行靈活調(diào)整并充分發(fā)揮計(jì)算機(jī)的全部性能。與Java相比,C++的編程過程并不友好,但我們卻能夠利用它實(shí)現(xiàn)一切操作。弊端:艱難的學(xué)習(xí)曲線。C++非常難于學(xué)習(xí),但在掌握之后大家將直接登上程序員金字塔的塔尖;極為龐大。C++規(guī)??捎^且擁有大量極為復(fù)雜的功能交互方式。沒有哪位開發(fā)者能夠使用其提供的全部構(gòu)建組件,但我們可以充分發(fā)揮自己的才智為程序選擇正確的功能子集。
(四) Java
是一款非常有人氣的編程語言,而且易學(xué)。用途:可以用于Android & IOS應(yīng)用開發(fā)、視頻游戲開發(fā)、桌面GUIs和軟件開發(fā)。優(yōu)勢(shì):市場(chǎng)對(duì)Java開發(fā)者需求旺盛。Dice.com于2015年5月發(fā)布的報(bào)告指出,Java開發(fā)崗位為目前需求量最大的軟件技能方向;不斷發(fā)展的語言。Java平臺(tái)不斷迎來新功能,包括lambda機(jī)制的引入;Android應(yīng)用開發(fā)的基石。Google公司的Android移動(dòng)平臺(tái)是目前全球范圍內(nèi)人氣最高的移動(dòng)平臺(tái)。開發(fā)者可以利用自己的Java技能為Android系統(tǒng)開發(fā)應(yīng)用。弊端:占用大量?jī)?nèi)存。Java使用的內(nèi)存量高于C++;學(xué)習(xí)曲線。并不屬于最易于上手的語言,當(dāng)然也不是最難學(xué)習(xí)的語言;啟動(dòng)時(shí)間較長(zhǎng)。任何曾經(jīng)利用Java語言開發(fā)過Android應(yīng)用的朋友,都一定會(huì)對(duì)其模擬器代碼在臺(tái)式機(jī)上緩慢的運(yùn)行速度留下深刻印象。Java程序員最佳去向:ebay、amazon、IBM等大公司。
(五) Python
是一項(xiàng)服務(wù)器端解釋型開源非編譯腳本語言。可單獨(dú)使用,也可以作為django等框架的組成部分。用途:Web開發(fā)、視頻游戲開發(fā),桌面GUIs和軟件開發(fā)。優(yōu)勢(shì):易于學(xué)習(xí)。Python作為最易于掌握的編程語言而擁有極高人氣;庫。廣泛的工具及功能庫能夠幫助大家輕松完成構(gòu)建工作;物聯(lián)網(wǎng)。Python將隨著物聯(lián)網(wǎng)技術(shù)的普及而進(jìn)一步發(fā)展,目前Raspberry Pi等新型平臺(tái)已經(jīng)將其作為開發(fā)基礎(chǔ)。弊端:速度。作為一種解釋型語言,其速度往往低于編譯語言;移動(dòng)。Python在移動(dòng)計(jì)算領(lǐng)域的表現(xiàn)比較糟糕。利用Python開發(fā)的移動(dòng)應(yīng)用非常罕見;設(shè)計(jì)。Python語言在設(shè)計(jì)上存在一些問題,其屬于動(dòng)態(tài)類語言,因此需要進(jìn)行更多測(cè)試且會(huì)帶來某些只在特定運(yùn)行時(shí)出現(xiàn)的錯(cuò)誤[3]。
(一) 理論教學(xué)和實(shí)踐教學(xué)要有效結(jié)合
針對(duì)學(xué)生的特點(diǎn)與基礎(chǔ), 以培養(yǎng)思維和應(yīng)用能力, 增加可接受度為目標(biāo), 突破傳統(tǒng), 銳意創(chuàng)新, 采用大眾化、通俗化、多元化的案例教學(xué)方法, 形成了以“案例”帶動(dòng)知識(shí)點(diǎn)并貫穿整個(gè)教學(xué)過程的。具體來說就是, 在講授編程語言的過程中,首先由任課教師將一次課或幾次課的相關(guān)內(nèi)容融合在一起編寫一個(gè)或幾個(gè)生動(dòng)的程序?qū)嵗?。在講授相應(yīng)的內(nèi)容之前, 先給同學(xué)們演示實(shí)例, 引起他們的學(xué)習(xí)興趣, 然后再講授相應(yīng)的知識(shí)點(diǎn)。結(jié)合所講授的計(jì)算機(jī)語言可以引入一些典型問題。在講授相應(yīng)問題解法時(shí), 可以結(jié)合同學(xué)們之前學(xué)過的相關(guān)課程的知識(shí)點(diǎn), 如數(shù)據(jù)結(jié)構(gòu)中的鏈表、特殊矩陣、排序等, 使同學(xué)們?cè)趯W(xué)習(xí)編程語言的同時(shí), 將從前所學(xué)的課程融會(huì)其中, 從而激發(fā)學(xué)生學(xué)習(xí)興趣, 鍛煉動(dòng)手能力, 熟練語言的使用,提高編程技巧。
(二) 采用多種考試方式
考試內(nèi)容應(yīng)反映學(xué)生基本理論和基本技能的掌握情況, 以及分析和解決問題的綜合運(yùn)用能力情況, 而不是課堂教學(xué)內(nèi)容的簡(jiǎn)單重復(fù)。要有意識(shí)地培養(yǎng)學(xué)生的創(chuàng)新意識(shí)和創(chuàng)新能力, 使考試真正能夠?qū)W(xué)生知識(shí)、能力、素質(zhì)進(jìn)行全面測(cè)試評(píng)價(jià), 從而促進(jìn)學(xué)生平時(shí)的學(xué)習(xí)。期末考試的成績(jī)由理論考試 30 分, 上機(jī)考試 30 分, 實(shí)驗(yàn) 30 分, 平時(shí) 10 分四部分組成。理論考試在期末進(jìn)行, 卷面滿分 100分, 計(jì)算總分時(shí)乘 30 %。上機(jī)考試在期末進(jìn)行, 讓學(xué)生在計(jì)算機(jī)上編寫程序, 滿分 30 分??紤]到上機(jī)考試覆蓋面有限, 并且為了突出動(dòng)手能力在學(xué)習(xí)中的重要性, 對(duì)于實(shí)驗(yàn)成績(jī)的評(píng)定, 我們可以在平時(shí)的課堂上給同學(xué)們陸續(xù)留10 道編程題, 學(xué)生可以任選 5 道題, 即留即做, 做完老師檢查。通過學(xué)生的演示及對(duì)老師提出問題的回答來判斷該生是否能獨(dú)立完成、完成質(zhì)量、對(duì)相應(yīng)知識(shí)點(diǎn)的理解情況, 按每題 6 分由任課教師給出分?jǐn)?shù), 最后算出 5 道題的總分作為該生的實(shí)驗(yàn)成績(jī)。對(duì)于平時(shí)成績(jī), 考慮該生的平時(shí)情況給出。這樣的考試方式可以既全面考察學(xué)生對(duì)知識(shí)的掌握情況, 又突出了重點(diǎn), 而且可以有效提高學(xué)生的動(dòng)手能力[4]。
(三) 教學(xué)要與時(shí)俱進(jìn)
教師要了解軟件行業(yè)發(fā)展的最新動(dòng)態(tài)和一些新興的熱門職業(yè)的從業(yè)要求, 將相關(guān)內(nèi)容介紹給學(xué)生們。例如, 我國(guó)軟件外包服務(wù)市場(chǎng)經(jīng)過幾年的發(fā)展, 規(guī)模高速增長(zhǎng), 實(shí)力顯著增強(qiáng), 在國(guó)際市場(chǎng)上的知名度也越來越高。中國(guó)軟件行業(yè)協(xié)會(huì)認(rèn)為, 一方面歐美等國(guó)家出于規(guī)避風(fēng)險(xiǎn)及降低成本的考慮, 開始把某些項(xiàng)目向中國(guó)轉(zhuǎn)移; 另一方面國(guó)內(nèi)軟件外包服務(wù)商近幾年開始把觸角延伸到國(guó)外, 并通過收購(gòu)、設(shè)立分支機(jī)構(gòu)等策略“走出去”, 在這一行業(yè)中尤其活躍的風(fēng)險(xiǎn)投資商將為服務(wù)外包的發(fā)展增加推動(dòng)力, 而上市也已經(jīng)成為許多主力軟件與服務(wù)外包服務(wù)商的近期重要目標(biāo)。
在教學(xué)中, 要有效的加入與就業(yè)相關(guān)的最前沿的咨訊, 提高同學(xué)們學(xué)習(xí)的主動(dòng)性、目的性, 增強(qiáng)他們對(duì)未來就業(yè)的自信心, 讓他們認(rèn)識(shí)到從事計(jì)算機(jī)行業(yè)是有發(fā)展有前途的。這就要求任課教師必須了解軟件行業(yè)及就業(yè)的最新動(dòng)態(tài), 例如上網(wǎng)查資料、參加培訓(xùn)學(xué)習(xí)、參加人才招聘會(huì)、去軟件行業(yè)發(fā)展快的地區(qū)去考查等。
另外,國(guó)家現(xiàn)在大力推進(jìn)勞動(dòng)準(zhǔn)入制度和職業(yè)資格證書制度, 這意味著我們的學(xué)生若想畢業(yè)后迅速就業(yè), 就必須在畢業(yè)之前經(jīng)過職業(yè)培訓(xùn), 并取得相關(guān)的職業(yè)資格證書。這樣當(dāng)我們的學(xué)生畢業(yè)后不僅有學(xué)歷證書, 還有一個(gè)或多個(gè)軟件領(lǐng)域的職業(yè)資格證書。作為任課教師, 我們應(yīng)該參加相應(yīng)的考試, 在取得證書的同時(shí), 深入細(xì)致地了解與資格考試相關(guān)的內(nèi)容, 從而進(jìn)行課堂教學(xué)的改革, 有針對(duì)性的強(qiáng)化實(shí)踐鍛煉, 強(qiáng)化職業(yè)技能認(rèn)證的訓(xùn)練, 緊密聯(lián)系用人的第一線。
[1] 史廣.高校計(jì)算機(jī)語言類編程教學(xué)特點(diǎn)及階段探討[J].吉林省教育學(xué)院學(xué)報(bào),2016,32(3):46-48.
[2] 谷靈康.《C#語言》教學(xué)方法研究[J].電腦知識(shí)與技術(shù),2015,11(24):84-86.
[3] 嵩天,黃天羽,禮欣. Python 語言:程序設(shè)計(jì)課程教學(xué)改革的理想選擇[J].中國(guó)大學(xué)教育,2016(2):44-47.
[4] 姚琳,汪紅兵,張敏,等.程序設(shè)計(jì)比賽對(duì)程序設(shè)計(jì)語言教學(xué)的啟發(fā)[J].計(jì)算機(jī)教育,2015(2):103-106.
Discussion on Choice and Teaching Methods of Programming Language in Software Engineering Major
GU Lingkang
(CollegeofComputerandInformation,AnhuiPolytechnicUniversity,WuhuAnhui241000)
With the development of computer technology, a variety of programming languages appear. Especially with the rapid development of software engineering, the choice of programming language and the reform of teaching methods become more and more urgent. In order to meet the needs of employment, we should choose the right programming language, and meanwhile combine the theory teaching with practice teaching effectively. The teaching should keep pace with the times, so as to cultivate the excellent programming personnel that meet the needs of the society.
Software engineering; programming language; teaching reform
2016-12-06
國(guó)家自然科學(xué)基金(項(xiàng)目編號(hào):61300170);安徽省自然科學(xué)基金(項(xiàng)目編號(hào):KJ2015A311);安徽省級(jí)自然科學(xué)研究(項(xiàng)目編號(hào):TSKJ2014B11)
谷靈康(1981-),男,安徽臨泉人,碩士,講師,研究方向?yàn)橛?jì)算機(jī)視覺、圖像處理與識(shí)別,電話:1505327292。
G642
A
1671-4733(2017)01-0090-04
10.3969/j.issn.1671-4733.2017.01.028
淮南職業(yè)技術(shù)學(xué)院學(xué)報(bào)2017年1期