李俊芳
(集寧師范學院 計算機系,內(nèi)蒙古 烏蘭察布 012000)
互聯(lián)網(wǎng)時代,對信息的關注與把握日益滲透在人們的日常生活中,人們越來越發(fā)現(xiàn)自己無法脫離這種信息化的生活方式,人們的生活依賴于信息的收集、處理以及傳送.
很多時候,我們需要將自己所接收的信息進一步處理、分析,獲取信息并對它進行加工處理,使之成為有用信息并發(fā)布出去的過程,稱為信息處理.信息處理的過程主要包括信息的獲取、儲存、加工、發(fā)布和表示.人腦其實就相當一臺計算機通過記憶力來儲存信息,通過四維來管理和處理信息,但是畢竟人腦的功能是有限的,處理數(shù)據(jù)能力也趕不上計算機,所以人們開始希望能夠通過計算機來管理信息,通過一個管理軟件來幫助人們來完成工作.
另外,計算機軟件的在近幾年得到了非常大的發(fā)展,特別是在經(jīng)濟全球化的出現(xiàn)之后,自從新世紀以來,信息技術在企業(yè)中得到了越來越廣泛的應用,無論是在企業(yè)的經(jīng)營與生產(chǎn)中,還是在企業(yè)內(nèi)部管理以及對產(chǎn)品的設計與制造,企業(yè)信息化轉(zhuǎn)變極大地提高了企業(yè)的競爭力,很多企業(yè)也逐漸認識到計算機在企業(yè)中的作用,并且對企業(yè)的幫助等等,很多企業(yè)也逐漸增加了it部,以便對企業(yè)里的計算機軟件和硬件來進行支撐工作,企業(yè)也注意到信息化的發(fā)展和處理信息的重要性,目前,很多企業(yè)已經(jīng)認同了通過應用軟件來實現(xiàn)對企業(yè)的管理.我們知道,企業(yè)信息化主要包含了廣泛利用信息技術,讓企業(yè)在生產(chǎn)與管理等方面,用以通過這些方法來實現(xiàn)信息化,這是一個十分廣泛的概念.
企業(yè)的信息化不僅運用于內(nèi)部,企業(yè)與企業(yè)之間的合作也離不開信息技術.例如企業(yè)與其他合作對象互相交流數(shù)據(jù),企業(yè)與客戶之間的業(yè)務往來,這些均是企業(yè)信息化發(fā)展的一部分.以上我們通過辦公軟件來揭示計算機軟件對人們生活和工作的影響,而軟件是通過算法研究開發(fā)的,這么說來計算機是跟這時代一同進步的,而計算機算法設計也不斷推陳出新,要想計算機的應用得到充分發(fā)展,計算計算法的研究和教學是非常重要的.
要想研究從ACM/ICPC看計算機算法設計教學改革,首先什么是ACM/ICPC?下面我們首先了解ACM.ACM國際大學生程序設計競賽 (英文全稱:ACM International Collegiate Programming Contest(ACM-ICPC或ICPC)主辦方為美國計算機協(xié)會(ACM),是國際大學生程序設計競賽的標志,這是一項旨在展示大學生團隊精神、創(chuàng)新能力以及在壓力下編寫程序、分析和解決問題能力的年度競賽.
ACM國際大學生程序設計競賽由IBM公司贊助,已經(jīng)經(jīng)過了超過30年的發(fā)展,目前已經(jīng)發(fā)展成為最具影響力的大學生計算機競賽.ACM國際大學生程序設計競賽首屆舉行在1970年,在美國德克薩斯大學,首屆賽事的主辦方是the Alpha Chapter of the UPE Computer Science Honor Society.這種方式是一種全新的培養(yǎng)計算機編程人才的方式,這種比賽不僅刺激學生們對新技術的求知欲望和學習欲望,還能培養(yǎng)對于一個軟件的更深的理解,不僅僅是停留在只要程序運行出所要達到的結果就行了,而是對于程序而言僅僅執(zhí)行出來結果只是最淺層次的要求,而最有造詣的是如何設計這樣的程序,要時間復雜度和空間復雜度做到最小,除了可以鍛煉上述一些技能以外,我認為最重要的是鍛煉了學生們的團隊精神和團隊的執(zhí)行力,如何領導一個團隊,如何做一個稱職的leader,如何做一好一個開發(fā)者,總之要想完成比賽,必須分工明確,齊心協(xié)力才能夠達成.因此,美國以及加拿大各大學很快便開始積極響應賽事.尤其是在1977年,首次總決賽在ACM計算機科學會議期間舉辦,這也促使了競賽演變發(fā)展成為多國參與的國際性比賽,并且一年便有一屆舉辦.相比最初的幾屆,參賽隊伍不再只有美國及加拿大的大學,競賽逐漸發(fā)展成為一項世界范圍內(nèi)的競賽.2002年美國夏威夷的第26屆、2005年上海的第29屆和2010在哈爾濱的第34屆的全球總決賽上,來自中國大陸的上海交通大學代表隊則在三奪冠軍,浙江大學參賽隊在美國當?shù)貢r間2011年5月30下午2時結束的第35屆ACM國際大學生程序設計競賽全球總決賽榮獲全球總冠軍,成為除上海交通大學之外唯一獲得ACM國際大學生程序設計競賽全球總決賽冠軍的亞洲高校,目前,這也是來自亞洲的參賽大學取得的最佳成績.如今,最初的北美大學一枝獨秀的局勢不再,已經(jīng)演變成亞歐對抗局面的競爭格局.
ACM/ICPC比賽方式是以團隊的型式,以學校為單位,每個學校有一個隊組成,一個隊有三名學生,比賽要求是非常嚴格的,這個隊的比賽隊員必須是這個學校的,而且還是在校就讀學生,不能畢業(yè)的或者其他學校的學生,編寫程序是這樣的,試題的規(guī)則是例如:C、D個小組如果都必須在規(guī)定時間內(nèi)完成兩道程序題,而且要運行處結果,在編寫程序過程中既要保證程序的編寫質(zhì)量又要保證程序的編寫速度,如果D隊在C隊沒有完成之前把兩道題都完成的話,那么D隊獲勝!反之C隊獲得勝利.
要想研究算法,就得知道什么是算法?算法可以簡單理解成解決問題的方法.在計算機科學中,算法是很重要的概念.它指明了問題的處理、求解過程,是對給定問題解決方案的準確而完整的描述.其實,我們做任何事情都有相應的算法.例如,電視機的操作說明,就是使用電視機的算法;航模的安裝步驟示意圖,就是制作航模的算法.把算法交給計算機執(zhí)行是一件很復雜的事情,其中最大的障礙就是人類自己的交流不暢和人機之間的語言不通.為了更好地合作,人們需要把算法正確、清晰、簡潔地表達出來.自然語言(漢語、英語等)、流程圖、程序設計語言等都可以用來描述算法.簡單講述把算法交給計算機執(zhí)行的一般步驟.人們通常用自然語言、流程圖、程序設計語言來描述算法.
ACM/ICPC比賽主要是用C、C++、Pascal或Java這幾種語言參賽,首先是c語言,一個程序開發(fā)者必須要學習C語言,這是為什么呢?因為C語言是所有語言的基礎,另外C語言是一種輕量級的,很有表達力的語法,能很好的展現(xiàn)馮·諾曼機器的能力.馮·諾曼機器架構就是你每天都用的計算機的架構的標準:一個CPU、內(nèi)存、硬盤、一條總線.多核計算機并沒有帶來本質(zhì)上的變化.馮?諾曼機是一個很方便,很便宜,上世紀五十年代的實現(xiàn)圖靈機的技術,圖靈機是執(zhí)行計算的最知名的抽象模型.然后是C++,跟c比,在設計大型系統(tǒng)上面有著很大優(yōu)勢,OO的思想便于建模,很方便設計.執(zhí)行效率也不見得低c++的優(yōu)勢在哪里跟Java比,效率要高很多 (眾所周知,java程序很費資源)c++的優(yōu)勢在學好C++,以后去任何公司都是可以的,不過現(xiàn)在中國使用C還是最多的c++的優(yōu)勢在哪里做外包的話,都用到數(shù)據(jù)庫應用程序開發(fā)(各種管理系統(tǒng))使用c++或者java c++的優(yōu)勢在哪里通信(qq,迅雷,華為,中信),都是C++,這個領域是C++的強項c++的優(yōu)勢在哪里手機,JAVA隨著GOOGLE的平臺,將有很大前途,但是NOKIA使用的平臺,還是C/C++用于開發(fā)c++的優(yōu)勢在哪里汽車、冰箱……都是嵌入式系統(tǒng),使用C和匯編居多c++的優(yōu)勢在哪里服務器端后臺編程,還是C++的天下.Pascal語言還是一種自編譯的語言,這就使它的可靠性大大提高了.在Pascal的各個版本中,尤以Turbo Pascal的功能最為強大.Pascal具有簡潔的語法,結構化的程序結構.它是結構化編程語言,于70年代在ALGOL基礎上研制出來的.它具有豐富的數(shù)據(jù)類型并提供了數(shù)據(jù)類型定義設施,其控制結構體現(xiàn)了結構程序設計原則.它最初是為系統(tǒng)地教授程序設計而設計的,特點是簡明化和結構化,適合教學科學計算與系統(tǒng)軟件的研制.如今,在許多學校的計算機語言課上,學的都是Pascal語言,用的都是Turbo Pascal.至今,Pascal還是國際信息學奧林匹克競賽中最受歡迎的編程語言之一.Pascal是最早出現(xiàn)的結構化編程語言,具有豐富的數(shù)據(jù)類型和簡潔靈活的操作語句,適于描述數(shù)值和非數(shù)值的問題.另外在數(shù)學領域,pascal異常很強大.java不用多說是非常強大的語言,java不同于前三種語言,java語言是面向?qū)ο笳Z言,那么什么是面向?qū)ο笳Z言呢?通俗的說:“如果有一輛汽車,你不需要學會制造汽車,也就是說你不用懂得汽車的構造,只要會駕駛會使用它,就可以開著它上路,來為你服務”.也就是說程序開發(fā)者如果想實現(xiàn)一個功能,程序開發(fā)者只要是調(diào)用公共類里的方法,不需要知道這些方法是怎么編寫的,只要使用它即可.所以隨著時代的發(fā)展,編程語言也逐漸變得容易,程序的復用性越來越高.
隨著計算機熱,各大院校都開始開設軟件工程專業(yè),為了是讓更多的棟梁之才學習計算機編程,從事軟件開發(fā)行業(yè),軟降工程是計算機科學與技術系的一門專業(yè)課程,通過本課程的學習使學生掌握軟件工程的基本概念、基本原理、實用的開發(fā)方法和技術;了解軟件工程各領域的發(fā)展動向;如何用工程化的方法開發(fā)軟件項目,以及在開發(fā)過程中應遵循的流程、準則、標準和規(guī)范.在領域培養(yǎng)高級軟件開發(fā)人員和系統(tǒng)分析員打下堅實的基礎.通過軟件工程課程的教學,應使學生系統(tǒng)掌握軟件工程的基本概念,軟件設計中的過程抽象,軟件設計中的控制結構,軟件設計中的數(shù)據(jù)類型,軟件設計過程,軟件開發(fā)和維護模型,抽象和信息隱藏,結構化設計和過程設計,軟件設計的實現(xiàn)策略和語言,面向?qū)ο蟮姆治鲈O計方法,面向?qū)ο蠼⒛P?,軟件測試、軟件管理等.通過軟件工程課程的教學,應注意培養(yǎng)學生以下能力:進行抽象思維和邏輯推理的理性思維能力;綜合運用軟件工程的知識和方法進行分析和解決問題的能力;會應用一些方法(Jackson、McCabe、Coad、Booch、OMT) 進行基本問題描述,如應用Jackson方法進行對算法進行結構化分析、OMT進行面向?qū)ο蟪绦蚍治龅?;較強的自主學習能力,提高學生學習軟件工程的積極性,激發(fā)學習興趣,增強學習的信心;主動探索和獨立思考的能力,提高學生的創(chuàng)新意識.通過軟件工程課程教學,應注重培養(yǎng)學生以下素質(zhì):深入理解軟件工程基本概念和基本方法,掌握用軟件工程的知識解決實際問題的方法與手段,對各種問題能以多角度探尋解決問題的道路的素養(yǎng);主動將軟件工程原理應用到具體的實踐中去的素養(yǎng);善于對現(xiàn)實世界中現(xiàn)象和過程進行合理的簡化和量化,建立數(shù)學模型的素養(yǎng);能用準確、簡明、規(guī)范的語言表達軟件工程思想的素養(yǎng);能夠在軟件項目開發(fā)中尋找新的方法與思路,并不斷地豐富軟件項目開發(fā)的技術與方法的素養(yǎng).
以上我們通過ACM/ICPC方面來分析軟件算法的教學設計,也了解了很多編程語言的特性優(yōu)勢以及劣勢,另外我也了解隨著社會的發(fā)展,計算機的發(fā)展,計算機和計算機網(wǎng)絡逐漸成為我們?nèi)粘I畹谋匦杵?計算機給我們帶來工作管理上革命性質(zhì)的變化,計算機網(wǎng)絡則是把這種變化發(fā)揮到極致的技術.軟件編程則是改變了我們的工作和生活的方式.
〔1〕June jam rich Parsons,Dan O ja.計算機文化.北京:機械工業(yè)出版社,2001.
〔2〕山東省教育廳組編.計算機文化基礎.東營:中國石油大學出版社,2006.
〔3〕Silberschatz,楊冬青,唐世渭,等.數(shù)據(jù)庫系統(tǒng)概論.北京:機械工業(yè)出版社,2000.