程序設(shè)計(jì)學(xué)習(xí)方法
程序設(shè)計(jì)學(xué)習(xí)方法
程序設(shè)計(jì)就是讓計(jì)算機(jī)為解決某個(gè)問題而使用某種程序設(shè)計(jì)語言編寫程序代碼,并最終得到相應(yīng)結(jié)果的過程。那么,程序設(shè)計(jì)學(xué)習(xí)方法有哪些?下面是學(xué)習(xí)啦小編為你搜集到的相關(guān)內(nèi)容,希望可以幫助到你。
程序設(shè)計(jì)學(xué)習(xí)方法
1學(xué)習(xí)目的
要學(xué)習(xí)程序設(shè)計(jì),必須明確學(xué)習(xí)的目的,也就是學(xué)習(xí)程序設(shè)計(jì)是為了什么。是為了了解計(jì)算機(jī),還是為了自己的發(fā)展或者是因?yàn)閭€(gè)人愛好。程序的實(shí)現(xiàn)不是一時(shí)愛好就可以完成的。一般來說在學(xué)習(xí)程序設(shè)計(jì)方法和語言時(shí)掌握基本理論及語法時(shí)比較容易,但是在實(shí)際應(yīng)用時(shí)卻覺得無從下手。如何編寫符合要求的程序、如何編寫高質(zhì)量的程序更是程序設(shè)計(jì)人員所面臨的難題。這就要求學(xué)習(xí)者仔細(xì)體會(huì),在反復(fù)實(shí)踐的過程中掌握程序設(shè)計(jì)技巧,通過不斷的克服困難來提高自己的程序設(shè)計(jì)能力。這是一個(gè)長(zhǎng)期的過程,所以必須有堅(jiān)定的恒心才能開始學(xué)習(xí)。
2基礎(chǔ)知識(shí)
在學(xué)習(xí)程序設(shè)計(jì)之前必須有一定的基礎(chǔ)。作為一個(gè)優(yōu)秀的程序設(shè)計(jì)人員,數(shù)學(xué)是十分重要的。數(shù)學(xué)是自然科學(xué)的基礎(chǔ),計(jì)算機(jī)科學(xué)實(shí)際上是數(shù)學(xué)的一個(gè)分支。數(shù)學(xué)主要能讓人懂得一種分析問題的方法,然后再通過程序設(shè)計(jì)去實(shí)現(xiàn)它。計(jì)算機(jī)內(nèi)部的許多原理也都牽涉到比較復(fù)雜的數(shù)學(xué)知識(shí),它是用來解決現(xiàn)實(shí)問題的最高效的工具。很多程序設(shè)計(jì)的初學(xué)者對(duì)數(shù)學(xué)覺得不屑一顧,覺得對(duì)于程序設(shè)計(jì)沒有什么關(guān)系,實(shí)際上優(yōu)秀程序設(shè)計(jì)人員和一般程序設(shè)計(jì)人員拉開檔次在很大程度上就取決于數(shù)學(xué)能力的強(qiáng)弱。一些項(xiàng)目有時(shí)需要很復(fù)雜的數(shù)學(xué)建模和利用數(shù)學(xué)對(duì)于系統(tǒng)效率進(jìn)行分析,而這些項(xiàng)目對(duì)于一般的程序員是很困難的。正確應(yīng)用數(shù)學(xué)知識(shí)有時(shí)候能使程序的效率產(chǎn)生質(zhì)的飛躍。如果一個(gè)程序設(shè)計(jì)人員在數(shù)學(xué)上很薄弱,這點(diǎn)必須引起足夠重視,有了一定的數(shù)學(xué)基礎(chǔ),當(dāng)別人對(duì)于某些項(xiàng)目感到無從下手時(shí),而自己卻能夠完成,這個(gè)時(shí)候自己的價(jià)值也就體現(xiàn)出來了。真正優(yōu)秀的程序設(shè)計(jì)人員最基本的一點(diǎn)就是要能夠通過自己的知識(shí)來解決一般程序設(shè)計(jì)人員所無法完成的問題,而數(shù)學(xué)能力就是一個(gè)很重要的因素。
3語言的學(xué)習(xí)
3.1 語言學(xué)習(xí)的基礎(chǔ)
程序設(shè)計(jì)語言五花八門,究竟該如何學(xué)習(xí),應(yīng)該學(xué)習(xí)哪一門。首先,從C開始學(xué)習(xí)。當(dāng)然這里要提醒一下,千萬不要一開始就學(xué)VB、VC之類的東西,一開始就學(xué)這些東西,有可能把自己引入一個(gè)錯(cuò)誤的學(xué)習(xí)方向而忽略了真正應(yīng)該掌握的東西。不要被VC、BCB、BC、MC、TC等詞匯所迷惑,這些都是集成開發(fā)環(huán)境,而程序設(shè)計(jì)人員要學(xué)的是一門語言。學(xué)C主要是學(xué)過程化的程序設(shè)計(jì),學(xué)會(huì)把自己的程序分成許多的函數(shù),養(yǎng)成良好的程序設(shè)計(jì)習(xí)慣,培養(yǎng)一種程序設(shè)計(jì)思想。學(xué)習(xí)程序設(shè)計(jì)最好的方法之一就是閱讀源代碼,可以多看一下專家的程序,不一定要懂意思,主要是學(xué)習(xí)別人程序的格式,比如變量如何起名,怎么劃分函數(shù)。除了掌握基本的控制語句外,還應(yīng)該學(xué)習(xí)一些很簡(jiǎn)單的I/O函數(shù)和數(shù)學(xué)函數(shù)。C的學(xué)習(xí)主要就是學(xué)會(huì)使用函數(shù),提高代碼重用性,認(rèn)識(shí)面向過程的程序設(shè)計(jì)方法,對(duì)結(jié)構(gòu)化程序設(shè)計(jì)有一定的認(rèn)識(shí)。對(duì)于指針之類的東西如果實(shí)在看不懂可以先不去管,有的問題反過來看也許會(huì)感覺容易很多。
3.2 語言學(xué)習(xí)的鞏固
當(dāng)自己能夠比較自如的用C編寫一些小的計(jì)算程序時(shí),就可以開始數(shù)據(jù)結(jié)構(gòu)的學(xué)習(xí)了。數(shù)據(jù)結(jié)構(gòu)可以一點(diǎn)一點(diǎn)慢慢看,并不需要專門空出一段時(shí)間來專門研究,這樣的目的是讓自己能夠很好地掌握它。要學(xué)會(huì)用數(shù)據(jù)結(jié)構(gòu)的知識(shí)來規(guī)范自己的程序設(shè)計(jì)和提高程序的效率。這主要是因?yàn)槌绦蛟O(shè)計(jì)者必須足夠的重視數(shù)據(jù)結(jié)構(gòu)。如果說計(jì)算機(jī)專業(yè)的學(xué)生與非計(jì)算機(jī)專業(yè)的最根本的差別是什么,那絕對(duì)是數(shù)據(jù)結(jié)構(gòu)。數(shù)學(xué)大家都一樣學(xué)了,主要看自己學(xué)得好壞。對(duì)數(shù)據(jù)結(jié)構(gòu)的掌握與運(yùn)用能力是衡量程序設(shè)計(jì)能力的一個(gè)很重要的指標(biāo)。有的人對(duì)于看了鏈表、堆棧、樹、廣義表這些東西就頭痛,然而這些東西往往能使程序的效率比別人高出百倍,所以硬著頭皮也要學(xué)習(xí)。當(dāng)然,看第一遍書是不能記住和掌握全部知識(shí)的,必須看第二遍、第三遍,甚至更多。如果覺得對(duì)樹、鏈表、堆棧之類的東西和排序,遞歸之類的算法已經(jīng)十分清楚,就可以開始學(xué)習(xí)C++了。
3.3 語言學(xué)習(xí)的提高
學(xué)習(xí)前一定要有個(gè)正確的認(rèn)識(shí),那就是C和C++是兩個(gè)不同的東西,不要因?yàn)镃++是從C發(fā)展來的,更不要因?yàn)镃和C++中有一些語法和關(guān)鍵字看上去相同,就認(rèn)為它們的意義和作用完全一樣,C++絕不是所謂的C的單純的“擴(kuò)充”,如果C++一開始就起名叫Z語言,程序設(shè)計(jì)者一定不會(huì)把C和Z語言聯(lián)系得那么緊密,其實(shí)主要學(xué)習(xí)的正是C++和C不同的地方。學(xué)習(xí)C++是為了學(xué)習(xí)面向?qū)ο蟮某绦蛟O(shè)計(jì)。這個(gè)時(shí)候要求對(duì)于指針應(yīng)該有一定程度的掌握,當(dāng)然如果有匯編的基礎(chǔ)更好,主要抓住C++和C相比的一些新特性,對(duì)于封裝、繼承和多態(tài)之類的特性要注意理解掌握,而且要通過具體的實(shí)例來便于理解,如果沒有搞懂就堅(jiān)決不要往下學(xué)習(xí),直到理解為止。這些基本的概念掌握以后就可以看一些別人設(shè)計(jì)的程序,學(xué)習(xí)別人怎么利用面向?qū)ο蟮姆椒▉碓O(shè)計(jì)程序,這個(gè)也是與別人之間拉開檔次的一個(gè)環(huán)節(jié),可以和數(shù)據(jù)結(jié)構(gòu)放在同等重要的地位。
從C到C++是從面向過程的程序設(shè)計(jì)轉(zhuǎn)化到了面向?qū)ο蟮某绦蛟O(shè)計(jì),應(yīng)該說是一種提高,通過封裝、繼承和多態(tài)之類的特性,更高程度上提高了程序設(shè)計(jì)的效率,但是對(duì)于程序設(shè)計(jì)來說,語言主要就是指語法結(jié)構(gòu),而真正重要的是程序設(shè)計(jì)的步驟。
4 程序設(shè)計(jì)步驟
很多人無論學(xué)習(xí)什么,都有一種習(xí)慣,就是找訣竅。有的秘訣可以讓自己事半功倍,而有的秘訣則就是沒有秘訣。學(xué)習(xí)程序設(shè)計(jì)的秘訣就是:程序設(shè)計(jì),程序設(shè)計(jì),再程序設(shè)計(jì)。在程序設(shè)計(jì)的過程中,任何時(shí)刻都不要認(rèn)為自己手中的書已經(jīng)足夠了,看得懂的書,要仔細(xì)看,看不懂的書,也要仔細(xì)看,也正是這些看不懂的東西才有它們所特有的價(jià)值,每個(gè)人都看得懂的內(nèi)容是沒有辦法拉開檔次的。
4.1程序設(shè)計(jì)的思想
編寫程序的時(shí)候,開始的想法是非常重要的,也就是程序設(shè)計(jì)的思想。前邊討論的是對(duì)于語言的學(xué)習(xí),其實(shí)學(xué)習(xí)一門語言或者開發(fā)工具,語法結(jié)構(gòu)功能調(diào)用是次要的,最主要的是學(xué)習(xí)它的思想。譬如學(xué)習(xí)VC,就是要學(xué)習(xí)WINDOWS的內(nèi)在機(jī)理如何,什么是消息循環(huán),如何進(jìn)行消息影射,什么是窗口注冊(cè),什么是Callback,什么是線成;學(xué)習(xí)Java是要知道什么是面向?qū)ο螅裁词抢^承,什么是封裝,什么是多態(tài);學(xué)習(xí)DELPHI,VB就要知道如何快速開發(fā),如何模塊重用,如何統(tǒng)一界面和數(shù)據(jù)。關(guān)鍵是一個(gè)思想,有了這些思想,那么程序設(shè)計(jì)者就可以觸類旁通。譬如有了C/C++的知識(shí),PASCAL、VB就可以基本上掌握了要領(lǐng),這也讓大家知道學(xué)習(xí)C++原來也不是在浪費(fèi)時(shí)間。有了C++的基礎(chǔ),其它什么都能應(yīng)變自如,DELPHI可以很快地學(xué)完,JAVA也可以邊做邊學(xué),就連剛剛發(fā)布或者以后將會(huì)出現(xiàn)的的程序設(shè)計(jì)語言也可以理解。
語法是不同的,但算法是相同的。在寫程序之前,一定要想好這個(gè)程序如何來實(shí)現(xiàn),對(duì)于程序設(shè)計(jì)人員來說思路是非常重要。
曾經(jīng)有一個(gè)人參加計(jì)算機(jī)展覽,每天他進(jìn)門時(shí)都對(duì)門衛(wèi)說:
“先警告你,我是偷盜高手,我入室偷盜的本領(lǐng)聞名遐邇。這次展覽會(huì)也在劫難逃。”
警衛(wèi)因此大動(dòng)干戈,因?yàn)槔锩嬗袃r(jià)值百萬的計(jì)算機(jī)設(shè)備,所以他牢牢盯緊了這個(gè)人,但是這個(gè)人只是從一個(gè)攤位逛到另一個(gè)攤位,一邊平靜地喃喃自語。
當(dāng)這個(gè)人離開時(shí),警衛(wèi)搜了他的身,但是什么也沒有發(fā)現(xiàn)。
展覽會(huì)的第二天,這個(gè)人又對(duì)警衛(wèi)說:“昨天我滿載而歸,但是今天我會(huì)收獲更大。”所以警衛(wèi)更加小心地盯緊他,但是這樣做完全于事無補(bǔ)。
展覽會(huì)的最后一天,警衛(wèi)再也不能忍住他的好奇心了。“小偷先生,”他說,“你說我驚慌不安,請(qǐng)告訴我,你到底偷了什么?”。
這個(gè)人笑笑說:“我在偷展覽會(huì)上各個(gè)軟件高手的程序設(shè)計(jì)思路。”
這雖然是個(gè)笑話,但是程序設(shè)計(jì)思路確實(shí)是相當(dāng)?shù)闹匾仨氃趧傞_始的時(shí)候有個(gè)實(shí)現(xiàn)程序的思路,才能夠保證程序正常的編寫,一個(gè)好的思路更是一個(gè)好的程序的開始。
4.2程序的質(zhì)量
有了好的思路后,可以規(guī)范程序設(shè)計(jì)的格式和提高程序的效率,達(dá)到事半功倍的效果。
最好的程序當(dāng)然是最大限度地節(jié)省時(shí)間和空間,也以此來評(píng)價(jià)一個(gè)程序的質(zhì)量。那么有了好的想法后,如何提高程序的質(zhì)量呢?下面舉一個(gè)我國古代的例子。
有一家三兄弟全是郎中。其中有一人是名醫(yī),人們問他:“你們兄弟三人誰的醫(yī)術(shù)最高?”
他回答說:“我常用猛藥給病危者醫(yī)治,偶爾有些病危者被我救活,于是我的醫(yī)術(shù)遠(yuǎn)近聞名,成了名醫(yī)。我二哥通常在人們剛剛生病的時(shí)候馬上就治愈他們,臨近村莊的人都知道他的醫(yī)術(shù)。我大哥深知人們生病的原因,所以能夠防止家里人生病,他的醫(yī)術(shù)只有我們家里才知道。”
編寫程序有的時(shí)候就如郎中治病,治病就是讓人身體健康,給程序治病就是提高程序質(zhì)量,消除程序的缺陷,不斷補(bǔ)充程序的功能。與上述三個(gè)郎中很相似,消除程序缺陷也有三種基本方式,那究竟該使用哪種方法呢?第一種方法就是等程序?qū)懞煤?,發(fā)現(xiàn)缺陷再一個(gè)一個(gè)修改,有的時(shí)候一個(gè)程序也會(huì)因?yàn)闊o法修改或者無法添加某個(gè)功能而不得不重頭開始設(shè)計(jì)并實(shí)現(xiàn);第二種方法則是在實(shí)現(xiàn)過程中一發(fā)現(xiàn)問題就立刻修改擴(kuò)充,采用中庸之道,這種方法應(yīng)該說是一種比較可行的方法;第三種則是比較理想的一種方法,科技發(fā)展的速度之快,很難在設(shè)計(jì)之前就想到將來要添加什么功能,所以對(duì)于一個(gè)程序設(shè)計(jì)人員來講第二種方法應(yīng)該說是最可行的,也是最普遍的。
4.3程序的維護(hù)
《程序設(shè)計(jì)之道》中有這樣一段話:
項(xiàng)目經(jīng)理去拜訪一個(gè)程序設(shè)計(jì)大師時(shí)看到:程序設(shè)計(jì)大師編寫軟件時(shí),手指在鍵盤上快速飛舞。程序編譯時(shí)沒有一條錯(cuò)誤信息,程序運(yùn)行起來就象一陣微風(fēng)吹過。
“太精彩了!你的技巧已經(jīng)無可挑剔了。”項(xiàng)目經(jīng)理夸道。
“技巧?”,大師轉(zhuǎn)過身說,“我所遵循的是道——它超乎所有的技巧。當(dāng)我開始程序設(shè)計(jì)時(shí)我看到的是整個(gè)一大塊的程序,三年后我看到的是子過程?,F(xiàn)在我什么也看不到了。我的整個(gè)存在是沒有任何形式的虛無。我感覺很悠閑,總之,事實(shí)上是我的程序自己在寫,有時(shí)我看到一些問題,我看到它們,就停下來靜靜地觀察它們,然后我改變了一行代碼,難題就象一陣輕煙一樣化為烏有。然后我編譯程序。坐在那里享受工作的喜悅。閉了一會(huì)眼睛然后退出系統(tǒng)。”
項(xiàng)目經(jīng)理說:“什么時(shí)候我的程序員才能都達(dá)到這樣的境界!”
程序設(shè)計(jì)大師如是說:
“既使一個(gè)程序只有三行長(zhǎng),也總有一天需要去維護(hù)它”。
《程序設(shè)計(jì)之道》[James]是一本在全世界流傳的關(guān)于程序員的寓言,講的是早期程序員的故事,風(fēng)趣而富有哲理。當(dāng)然書中很多觀點(diǎn)現(xiàn)在看來明顯是錯(cuò)誤的甚至是荒.唐的,但是有的觀點(diǎn)還是有那么一些道理的。一個(gè)程序即使功能再小,代碼再短,也必須在不斷的維護(hù)和更新中,才能成為一個(gè)程序。一個(gè)程序設(shè)計(jì)人員要經(jīng)?;仡欁约阂郧皩戇^的程序,并嘗試重寫,把自己學(xué)到的新知識(shí)運(yùn)用進(jìn)去,而且要不斷地對(duì)自己寫的程序提出更高的要求,哪怕程序版本號(hào)不斷地提高。
5 結(jié)論
總之,程序設(shè)計(jì)能力的高低主要還是由以下幾點(diǎn)決定:①程序設(shè)計(jì)的習(xí)慣;②數(shù)學(xué)應(yīng)用能力,其中包括邏輯思維,分析問題的能力;③對(duì)數(shù)據(jù)結(jié)構(gòu)的認(rèn)識(shí)能力;④經(jīng)驗(yàn)的多少,包括各種語言的掌握能力。
其實(shí),最主要的一點(diǎn)還是要認(rèn)真勤奮,為自己的目標(biāo)而不怕困難不斷前進(jìn),這不只是對(duì)程序設(shè)計(jì)而言,學(xué)習(xí)其他所有的東西都應(yīng)如此。