第一篇:計(jì)算機(jī)學(xué)習(xí)心得
計(jì)算機(jī)科學(xué)與技術(shù)學(xué)習(xí)心得
原先不管是國(guó)內(nèi)還是國(guó)外都喜歡把這個(gè)系分為計(jì)算機(jī)軟件理論、計(jì)算機(jī)系統(tǒng)、計(jì)算機(jī)技術(shù)與應(yīng)用。后來(lái)又合到一起,變成了現(xiàn)在的計(jì)算機(jī)科學(xué)與技術(shù)。我一直認(rèn)為計(jì)算機(jī)科學(xué)與技術(shù)這門(mén)專業(yè),在本科階段是不可能切分成計(jì)算機(jī)科學(xué)和計(jì)算機(jī)技術(shù)的,因?yàn)橛?jì)算機(jī)科學(xué)需要相當(dāng)多的實(shí)踐,而實(shí)踐需要技術(shù);每一個(gè)人(包括非計(jì)算機(jī)專業(yè)),掌握簡(jiǎn)單的計(jì)算機(jī)技術(shù)都很容易(包括原先Major們自以為得意的程序設(shè)計(jì)),但計(jì)算機(jī)專業(yè)的優(yōu)勢(shì)是:我們掌握許多其他專業(yè)并不“深究”的東西,例如,算法,體系結(jié)構(gòu),等等。非計(jì)算機(jī)專業(yè)的人可以很容易地做一個(gè)芯片,寫(xiě)一段程序,但他們做不出計(jì)算機(jī)專業(yè)能夠做出來(lái)的大型系統(tǒng)。今天我想專門(mén)談一談?dòng)?jì)算機(jī)科學(xué),并將重點(diǎn)放在計(jì)算理論上。
在我大一時(shí)無(wú)意中找到了南京大學(xué)網(wǎng)友sir的帖子“胡侃(理論)計(jì)算機(jī)學(xué)習(xí)”,這個(gè)帖子對(duì)我大學(xué)學(xué)習(xí)起到了至關(guān)重要的指導(dǎo)作用,我在這篇文章成文的時(shí)候正是基于sir的文章做得必要的補(bǔ)充和修改,并得到了sir的支持。再有就是每次和本系司徒彥南兄的交談,都能從中學(xué)到很多東西,在這份材料中也有很多體現(xiàn)。這份材料是我原來(lái)給學(xué)弟學(xué)妹們?nèi)雽W(xué)教育的講稿之一,原有基礎(chǔ)上改進(jìn)了其中我認(rèn)為不太合適的理論,修正了一些觀點(diǎn),在推薦教材方面結(jié)合我的學(xué)習(xí)情況有了較大改變。值得一提的是增加了一些計(jì)算機(jī)理論的內(nèi)容,計(jì)算機(jī)技術(shù)的內(nèi)容結(jié)合我國(guó)的教學(xué)情況和我們學(xué)習(xí)的實(shí)際情況進(jìn)行了重寫(xiě)。這里所作的工作也只是將各位學(xué)長(zhǎng)和同學(xué)們的學(xué)習(xí)體會(huì)以及我在學(xué)習(xí)計(jì)算機(jī)科學(xué)時(shí)的所思所想?yún)R總在一起寫(xiě)了下來(lái),很不成熟。目的就是希望能夠給一些剛?cè)雽W(xué)或者是學(xué)習(xí)計(jì)算機(jī)科學(xué)還沒(méi)有入門(mén)的同學(xué)以一些建議。不期能夠起到多大的作用,但求能為同學(xué)們的學(xué)習(xí)計(jì)算機(jī)科學(xué)與技術(shù)帶來(lái)微薄的幫助。還是那句話,計(jì)算機(jī)科學(xué)博大精深,我只是個(gè)初學(xué)者,不當(dāng)之處希望大家批評(píng)指正。
1、計(jì)算機(jī)理論的一個(gè)核心問(wèn)題--從數(shù)學(xué)談起:
[1]高等數(shù)學(xué)Vs數(shù)學(xué)分析
記得當(dāng)年大一入學(xué),每周四課時(shí)高等數(shù)學(xué),天天作業(yè)不斷(那時(shí)是七天工作制)。頗有些同學(xué)驚呼走錯(cuò)了門(mén):咱們這到底念的是什么系?不錯(cuò),你沒(méi)走錯(cuò)門(mén),這就是計(jì)算機(jī)科學(xué)與技術(shù)系。我國(guó)計(jì)算機(jī)科學(xué)系里的傳統(tǒng)是培養(yǎng)做學(xué)術(shù)研究,尤其是理論研究的人(方向不見(jiàn)得有多大的問(wèn)題,但是做得不是那么盡如人意)。而計(jì)算機(jī)的理論研究,說(shuō)到底了,如網(wǎng)絡(luò)安全學(xué),圖形圖像學(xué),視頻音頻處理,哪個(gè)方向都與數(shù)學(xué)有著很大的關(guān)系,雖然也許是正統(tǒng)數(shù)學(xué)家眼
里非主流的數(shù)學(xué)。這里我還想闡明我的一個(gè)觀點(diǎn):我們都知道,數(shù)學(xué)是從實(shí)際生活當(dāng)中抽象出來(lái)的理論,人們之所以要將實(shí)際抽象成理論,目的就在于想用抽象出來(lái)的理論去更好的指導(dǎo)實(shí)踐,有些數(shù)學(xué)研究工作者喜歡用一些現(xiàn)存的理論知識(shí)去推導(dǎo)若干條推論,殊不知其一:?jiǎn)栴}考慮不全很可能是個(gè)錯(cuò)誤的推論,其二:他的推論在現(xiàn)實(shí)生活中找不到原型,不能指導(dǎo)實(shí)踐。嚴(yán)格的說(shuō),我并不是一個(gè)理想主義者,政治課上學(xué)的理論聯(lián)系實(shí)際一直是指導(dǎo)我學(xué)習(xí)科學(xué)文化知識(shí)的航標(biāo)(至少我認(rèn)為搞計(jì)算機(jī)科學(xué)與技術(shù)的應(yīng)當(dāng)本著這個(gè)方向)。
其實(shí)我們計(jì)算機(jī)系學(xué)數(shù)學(xué)僅學(xué)習(xí)高等數(shù)學(xué)是不夠的(典型的工科院校一般都開(kāi)的是高等數(shù)學(xué)),我們應(yīng)該像數(shù)學(xué)系一樣學(xué)一下數(shù)學(xué)分析(清華計(jì)算機(jī)系開(kāi)的好像就是數(shù)學(xué)分析,我們學(xué)校計(jì)算機(jī)學(xué)院開(kāi)的也是,不過(guò)老師講起來(lái)好像還是按照高等數(shù)學(xué)講),數(shù)學(xué)分析這門(mén)科學(xué),咱們學(xué)計(jì)算機(jī)的人對(duì)它有很復(fù)雜的感情。在于它是偏向于證明型的數(shù)學(xué)課程,這對(duì)我們培養(yǎng)良好的分析能力和推理能力極有幫助。我的軟件工程學(xué)導(dǎo)師北工大數(shù)理學(xué)院的王儀華先生就曾經(jīng)教導(dǎo)過(guò)我們,數(shù)學(xué)系的學(xué)生到軟件企業(yè)中大多作軟件設(shè)計(jì)與分析工作,而計(jì)算機(jī)系的學(xué)生做程序員的居多,原因就在于數(shù)學(xué)系的學(xué)生分析推理能力,從所受訓(xùn)練的角度上要遠(yuǎn)遠(yuǎn)在我們平均水平之上。當(dāng)年出現(xiàn)的怪現(xiàn)象是:計(jì)算機(jī)系學(xué)生的高中數(shù)學(xué)基礎(chǔ)在全校數(shù)一數(shù)二(希望沒(méi)有冒犯其它系的同學(xué)),教學(xué)課時(shí)數(shù)也僅次于數(shù)學(xué)系,但學(xué)完之后的效果卻不盡如人意。難道都是學(xué)生不努力嗎,我看未見(jiàn)得,方向錯(cuò)了也說(shuō)不一定,其中原因何在,發(fā)人深思。
我個(gè)人的淺見(jiàn)是:計(jì)算機(jī)系的學(xué)生,對(duì)數(shù)學(xué)的要求固然跟數(shù)學(xué)系不同,跟物理類差別則更大。通常非數(shù)學(xué)專業(yè)的所?quot;高等數(shù)學(xué)“,無(wú)非是把數(shù)學(xué)分析中較困難的理論部分刪去,強(qiáng)調(diào)套用公式計(jì)算而已。而對(duì)計(jì)算機(jī)系來(lái)說(shuō),數(shù)學(xué)分析里用處最大的恰恰是被刪去的理論部分。說(shuō)得難聽(tīng)一點(diǎn),對(duì)計(jì)算機(jī)系學(xué)生而言,追求算來(lái)算去的所謂”工程數(shù)學(xué)“已經(jīng)徹底地走進(jìn)了誤區(qū)。記上一堆曲面積分的公式,難道就能算懂了數(shù)學(xué)?那倒不如現(xiàn)用現(xiàn)查,何必費(fèi)事記呢?再不然直接用Mathematica或是Matlab好了。退一萬(wàn)步講,即使是學(xué)高等數(shù)學(xué)我想大家看看華羅庚先生的《高等數(shù)學(xué)導(dǎo)論》也是比一般的教材好得多。華羅庚在數(shù)學(xué)上的造詣不用我去多說(shuō),但是他這光輝的一生做得我認(rèn)為對(duì)我們來(lái)說(shuō),最重要的幾件事情:首先是它籌建了中國(guó)科學(xué)院計(jì)算技術(shù)研究所,這是我們國(guó)家計(jì)算機(jī)科學(xué)的搖籃。在有就是他把很多的高等數(shù)學(xué)理論都交給了
做工業(yè)生產(chǎn)的技術(shù)人員,推動(dòng)了中國(guó)工業(yè)的進(jìn)步。第三件就是他一生寫(xiě)過(guò)很多書(shū),但是對(duì)高校師生價(jià)值更大的就是他在病期間在病床上和他的愛(ài)徒王元寫(xiě)了《高等數(shù)學(xué)引論》(王元與其說(shuō)是他的愛(ài)徒不如說(shuō)是他的同事,是中科院數(shù)學(xué)所的老一輩研究員,對(duì)歌德巴赫猜想的貢獻(xiàn)全世界僅次于陳景潤(rùn))這書(shū)在我們的圖書(shū)館里居然找得到,說(shuō)實(shí)話,當(dāng)時(shí)那個(gè)書(shū)上已經(jīng)長(zhǎng)了蟲(chóng)子,別人走到那里都會(huì)閃開(kāi),但我卻格外感興趣,上下兩冊(cè)看了個(gè)遍,我的最大收獲并不在于理論的闡述,而是在于他的理論完全的實(shí)例化,在生活中去找模型。這也是我為什么比較喜歡具體數(shù)學(xué)的原因,正如我在上文中提到的,理論脫離了實(shí)踐就失去了它存在的意義。正因?yàn)槔碚撌菑膶?shí)踐當(dāng)中抽象出來(lái)的,所以理論的研究才能夠更好的指導(dǎo)實(shí)踐,不用于指導(dǎo)實(shí)踐的理論可以說(shuō)是毫無(wú)價(jià)值的。
我在系里最愛(ài)做的事情就是給學(xué)弟學(xué)妹們推薦參考書(shū)。沒(méi)有別的想法,只是希望他們少走彎路。中文的數(shù)學(xué)分析書(shū),一般都認(rèn)為以北大張筑生老師的”數(shù)學(xué)分析新講“為最好。張筑生先生一生寫(xiě)的書(shū)并不太多,但是只要是寫(xiě)出來(lái)的每一本都是本領(lǐng)域內(nèi)的杰作,這本當(dāng)然更顯突出些。這種老書(shū)看起來(lái)不僅是在傳授你知識(shí),而是在讓你體會(huì)科學(xué)的方法與對(duì)事物的認(rèn)識(shí)方法。萬(wàn)一你的數(shù)學(xué)實(shí)在太好,那就去看菲赫金哥爾茨?quot;微積分學(xué)教程”好了--但我認(rèn)為沒(méi)什么必要,畢竟你不想轉(zhuǎn)到數(shù)學(xué)系去。吉米多維奇的“數(shù)學(xué)分析習(xí)題集”也基本上是計(jì)算型的書(shū)籍。書(shū)的名氣很大,倒不見(jiàn)得適合我們,還是那句話,重要的是數(shù)學(xué)思想的建立,生活在信息社會(huì)里我們求的是高效,計(jì)算這玩意還是留給計(jì)算機(jī)吧。不過(guò)現(xiàn)在多用的似乎是復(fù)旦大學(xué)的《數(shù)學(xué)分析》,高等教育出版社的,也是很好的教材。
中國(guó)的所謂高等代數(shù),就等于線性代數(shù)加上一點(diǎn)多項(xiàng)式理論。我以為這有好的一面,因?yàn)榭梢宰寣W(xué)生較早感覺(jué)到代數(shù)是一種結(jié)構(gòu),而非一堆矩陣翻來(lái)覆去。這里不得不提南京大學(xué)林成森,盛松柏兩位老師編的“高等代數(shù)”,感覺(jué)相當(dāng)舒服。此書(shū)相當(dāng)全面地包含了關(guān)于多項(xiàng)式和線性代數(shù)的基本初等結(jié)果,同時(shí)還提供了一些有用的又比較深刻的內(nèi)容,如Sturm序列,Shermon-Morrison公式,廣義逆矩陣等等??梢哉f(shuō),作為本科生如能吃透此書(shū),就可以算是高手。國(guó)內(nèi)較好的高等代數(shù)教材還有清華計(jì)算機(jī)系用的那本,清華出版社出版,書(shū)店里多多,一看就知道。從抽象代數(shù)的觀點(diǎn)來(lái)看,高等代數(shù)里的結(jié)果不過(guò)是代數(shù)系統(tǒng)性質(zhì)的一些例子而已。莫宗堅(jiān)先生的《代數(shù)學(xué)》里,對(duì)此進(jìn)行了深刻的討論。然而莫先生的書(shū)實(shí)在深得很,作為本科生恐怕難以接受,不妨等到自己以后成熟了一些再讀。
正如上面所論述的,計(jì)算機(jī)系的學(xué)生學(xué)習(xí)高等數(shù)學(xué):知其然更要知其所以然。你學(xué)習(xí)的目的應(yīng)該是:將抽象的理論再應(yīng)用于實(shí)踐,不但要掌握題目的解題方法,更要掌握解題思想,對(duì)于定理的學(xué)習(xí):不是簡(jiǎn)單的應(yīng)用,而是掌握證明過(guò)程即掌握定理的由來(lái),訓(xùn)練自己的推理能力。只有這樣才達(dá)到了學(xué)習(xí)這門(mén)科學(xué)的目的,同時(shí)也縮小了我們與數(shù)學(xué)系的同學(xué)之間思維上的差距。
[2]計(jì)算數(shù)學(xué)基礎(chǔ)
概率論與數(shù)理統(tǒng)計(jì)這門(mén)課很重要,可惜大多數(shù)院校講授這門(mén)課都會(huì)少些東西。少了的東西現(xiàn)在看至少有隨機(jī)過(guò)程。到畢業(yè)還沒(méi)有聽(tīng)說(shuō)過(guò)Markov過(guò)程,此乃計(jì)算機(jī)系學(xué)生的恥辱。沒(méi)有隨機(jī)過(guò)程,你怎么分析網(wǎng)絡(luò)和分布式系統(tǒng)?怎么設(shè)計(jì)隨機(jī)化算法和協(xié)議?據(jù)說(shuō)清華計(jì)算機(jī)系開(kāi)有“隨機(jī)數(shù)學(xué)”,早就是必修課。另外,離散概率論對(duì)計(jì)算機(jī)系學(xué)生來(lái)說(shuō)有特殊的重要性。而我們國(guó)家工程數(shù)學(xué)講的都是連續(xù)概率?,F(xiàn)在,美國(guó)已經(jīng)有些學(xué)校開(kāi)設(shè)了單純的“離散概率論”課程,干脆把連續(xù)概率刪去,把離散概率講深些。我們不一定要這么做,但應(yīng)該更加強(qiáng)調(diào)離散概率是沒(méi)有疑問(wèn)的。這個(gè)工作我看還是盡早的做為好。
計(jì)算方法學(xué)(有些學(xué)校也稱為數(shù)學(xué)分析學(xué))是最后一門(mén)由數(shù)理學(xué)院給我們開(kāi)的課。一般學(xué)生對(duì)這門(mén)課的重視程度有限,以為沒(méi)什么用。不就是照套公式嘛!其實(shí),做圖形圖像可離不開(kāi)它,密碼學(xué)搞深了也離不開(kāi)它。而且,在很多科學(xué)工程中的應(yīng)用計(jì)算,都以數(shù)值的為主。這門(mén)課有兩個(gè)極端的講法:一個(gè)是古典的“數(shù)值分析”,完全講數(shù)學(xué)原理和算法;另一個(gè)是現(xiàn)在日趨流行的“科學(xué)與工程計(jì)算”,干脆教學(xué)生用軟件包編程。我個(gè)人認(rèn)為,計(jì)算機(jī)系的學(xué)生一定要認(rèn)識(shí)清楚我們計(jì)算機(jī)系的學(xué)生為什么要學(xué)這門(mén)課,我是很偏向于學(xué)好理論后用計(jì)算機(jī)實(shí)現(xiàn)的,最好使用C語(yǔ)言或C++編程實(shí)現(xiàn)。向這個(gè)方向努力的書(shū)籍還是挺多的,這里推薦大家高等教育出版社(CHEP)和施普林格出版社(Springer)聯(lián)合出版的《計(jì)算方法(Computational Methods)》,華中理工大學(xué)數(shù)學(xué)系寫(xiě)的(現(xiàn)華中科技大學(xué)),這方面華科大做的工作在國(guó)內(nèi)應(yīng)算是比較多的,而個(gè)人認(rèn)為以這本最好,至少程序設(shè)計(jì)方面涉及了:任意數(shù)學(xué)函數(shù)的求值,方程求根,線性方程組求解,插值方法,數(shù)值積分,場(chǎng)微分方程數(shù)值求解。李慶揚(yáng)先生的那本則理論性過(guò)強(qiáng),與實(shí)際應(yīng)用結(jié)合得不太緊,可能比較適合純搞理論的。
[3]也談離散數(shù)學(xué)
每個(gè)學(xué)校本系里都會(huì)開(kāi)一門(mén)離散數(shù)學(xué),涉及集合論,圖論,和抽象代數(shù),數(shù)理邏輯。不過(guò),這么多內(nèi)容擠在離散數(shù)學(xué)
一門(mén)課里,是否時(shí)間太緊了點(diǎn)?另外,計(jì)算機(jī)系學(xué)生不懂組合和數(shù)論,也是巨大的缺陷。要做理論,不懂組合或者數(shù)論吃虧可就太大了。從理想的狀態(tài)來(lái)看,最好分開(kāi)六門(mén)課:集合,邏輯,圖論,組合,代數(shù),數(shù)論。這個(gè)當(dāng)然不現(xiàn)實(shí),因?yàn)闆](méi)那么多課時(shí)。也許將來(lái)可以開(kāi)三門(mén)課:集合與邏輯,圖論與組合,代數(shù)與數(shù)論。(這方面我們學(xué)校已經(jīng)著手開(kāi)始做了)不管課怎么開(kāi),學(xué)生總一樣要學(xué)。下面分別談?wù)勆厦娴娜M內(nèi)容。
古典集合論,北師大出過(guò)一本《基礎(chǔ)集合論》不錯(cuò)。
數(shù)理邏輯,中科院軟件所陸鐘萬(wàn)教授的《面向計(jì)算機(jī)科學(xué)的數(shù)理邏輯》就不錯(cuò)?,F(xiàn)在可以找到陸鐘萬(wàn)教授的講課錄像,http://里可以按編號(hào)下載RFC文檔。從IP的讀起。等到能掌握10種左右常用協(xié)議,就沒(méi)有幾個(gè)人敢小看你了。再做的工作我看放在網(wǎng)絡(luò)設(shè)計(jì)上就比較好了。
數(shù)據(jù)結(jié)構(gòu)的重要性就不言而喻了,學(xué)完數(shù)據(jù)結(jié)構(gòu)你會(huì)對(duì)你的編程思想進(jìn)行一番革命性的洗禮,會(huì)對(duì)如何建立一個(gè)合理高效的算法有一個(gè)清楚的認(rèn)識(shí)。對(duì)于算法的建立我想大家應(yīng)當(dāng)注意以下幾點(diǎn):
當(dāng)遇到一個(gè)算法問(wèn)題時(shí),首先要知道自己以前有沒(méi)有處理過(guò)這種問(wèn)題.如果見(jiàn)過(guò),那么你一般會(huì)順利地做出來(lái);如果沒(méi)見(jiàn)過(guò),那么考慮以下問(wèn)題:
1.問(wèn)題是否是建立在某種已知的熟悉的數(shù)據(jù)結(jié)構(gòu)(例如,二叉樹(shù))上?如果不是,則要自己設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)。
2.問(wèn)題所要求編寫(xiě)的算法屬于以下哪種類型?(建立數(shù)據(jù)結(jié)構(gòu),修改數(shù)據(jù)結(jié)構(gòu),遍
歷,查找,排序...)3.分析問(wèn)題所要求編寫(xiě)的算法的數(shù)學(xué)性質(zhì).是否具備遞歸特征?(對(duì)于遞歸程序設(shè)計(jì),只要設(shè)計(jì)出合理的參數(shù)表以及遞歸結(jié)束的條件,則基本上大功告成.)
4.繼續(xù)分析問(wèn)題的數(shù)學(xué)本質(zhì).根據(jù)你以前的編程經(jīng)驗(yàn),設(shè)想一種可能是可行的解決辦法,并證明這種解決辦法的正確性.如果題目對(duì)算法有時(shí)空方面的要求,證明你的設(shè)想滿足其要求.一般的,時(shí)間效率和空間效率難以兼得.有時(shí)必須通過(guò)建立輔助存儲(chǔ)的方法來(lái)節(jié)省時(shí)間.5.通過(guò)一段時(shí)間的分析,你對(duì)解決這個(gè)問(wèn)題已經(jīng)有了自己的一些思路.或者說(shuō),你已經(jīng)可以用自然語(yǔ)言把你的算法簡(jiǎn)單描述出來(lái).繼續(xù)驗(yàn)證其正確性,努力發(fā)現(xiàn)其中的錯(cuò)誤并找出解決辦法.在必要的時(shí)候(發(fā)現(xiàn)了無(wú)法解決的矛盾),推翻自己的思路,從頭開(kāi)始構(gòu)思.6.確認(rèn)你的思路可行以后,開(kāi)始編寫(xiě)程序.在編寫(xiě)代碼的過(guò)程中,盡可能把各種問(wèn)題考慮得詳細(xì),周密.程序應(yīng)該具有良好的結(jié)構(gòu),并且在關(guān)鍵的地方配有注釋.7.舉一個(gè)例子,然后在紙上用筆執(zhí)行你的程序,進(jìn)一步驗(yàn)證其正確性.當(dāng)遇到與你的設(shè)想不符的情況時(shí),分析問(wèn)題產(chǎn)生的原因是編程方面的問(wèn)題還是算法思想本身有問(wèn)題.8.如果程序通過(guò)了上述正確性驗(yàn)證,那么在將其進(jìn)一步優(yōu)化或簡(jiǎn)化。
9.撰寫(xiě)思路分析,注釋.對(duì)于具體的算法思路,只能靠你自己通過(guò)自己的知識(shí)和經(jīng)驗(yàn)來(lái)加以獲得,沒(méi)有什么特定的規(guī)律(否則程序員全部可以下崗了,用機(jī)器自動(dòng)生成代碼就可以了).要有豐富的想象力,就是說(shuō)當(dāng)一條路走不通時(shí),不要鉆牛角尖,要敢于推翻自己的想法.我也只不過(guò)是初學(xué)者,說(shuō)出上面的一些經(jīng)驗(yàn),僅供大家參考和討論。
關(guān)于人工智能,我覺(jué)得的也是非常值得大家仔細(xì)研究的,雖然不能算是剛剛興起的學(xué)科了,但是絕對(duì)是非常有發(fā)展前途的一門(mén)學(xué)科。我國(guó)人工智能創(chuàng)始人之一,北京科技大學(xué)涂序彥教授(這老先生是我的導(dǎo)師李小堅(jiān)博士的導(dǎo)師)對(duì)人工智能這樣定義:人工智能是模仿、延伸和擴(kuò)展人與自然的智能的技術(shù)科學(xué)。在美國(guó)人工智能官方教育網(wǎng)站上對(duì)人工智能作了如下定義:Artificial Intelligence, or AI for short, is a combination of computer science, physiology, and philosophy.AI is a broad topic, consisting of different fields, from machine vision to expert systems.The element that the fields of AI have in common is the creation of machines that can “think”.這門(mén)學(xué)科研究的問(wèn)題大概說(shuō)有:
(1)符號(hào)主義: 符號(hào)計(jì)算與程序設(shè)計(jì)基礎(chǔ),知識(shí)表達(dá)方法 :知識(shí)與思維,產(chǎn)生式規(guī)則,語(yǔ)義網(wǎng)絡(luò),一階謂詞邏輯問(wèn)題求解方法:搜索策略,啟發(fā)式搜尋,搜尋算法,問(wèn)題規(guī)約方法,謂詞演算:歸結(jié)原理,歸結(jié)過(guò)程專家系統(tǒng):建立專家系統(tǒng)的方 法及工具
(2)聯(lián)接主義(神經(jīng)網(wǎng)絡(luò)學(xué)派):1988年美國(guó)權(quán)威機(jī)構(gòu)指出:數(shù)據(jù)庫(kù),網(wǎng)絡(luò)發(fā)展呈直線上升,神經(jīng)網(wǎng)絡(luò)可能是解決人工智能的唯一途徑。關(guān)于神經(jīng)網(wǎng)絡(luò)學(xué)派,現(xiàn)在很多還是在發(fā)展階段。
我想對(duì)于人工智能的學(xué)習(xí),大家一定不要像學(xué)數(shù)學(xué)似的及一些現(xiàn)成的結(jié)論,要學(xué)會(huì)分析問(wèn)題,最好能利用程序設(shè)計(jì)實(shí)現(xiàn),這里推薦給大家ACM最佳博士論文獎(jiǎng)獲得者涂曉媛博士的著作《人工魚(yú)-計(jì)算機(jī)動(dòng)畫(huà)的人工生命方法》(清華大學(xué)出版社)。搞人工生命的同學(xué)不會(huì)不知道國(guó)際知名的涂氏父女吧。關(guān)于人工智能的書(shū)當(dāng)然首選《Artificial Intelligence A New Synthesis》Nils J.Nilsson.鼻祖嘛!
關(guān)于網(wǎng)絡(luò)安全我也想在這里說(shuō)兩句,隨著計(jì)算機(jī)技術(shù)的發(fā)展,整個(gè)社會(huì)的信息化水平突飛猛進(jìn),計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)日新月異,網(wǎng)絡(luò)成了當(dāng)即社會(huì)各個(gè)工作領(lǐng)域不可缺少的組成部分,只要有網(wǎng)絡(luò)存在,網(wǎng)絡(luò)安全問(wèn)題就是一個(gè)必須解決好的問(wèn)題,學(xué)習(xí)網(wǎng)絡(luò)安全不是簡(jiǎn)簡(jiǎn)單單的收集一些黑客工具黑一黑別人的網(wǎng)站,而是要學(xué)習(xí)他的數(shù)學(xué)原理,實(shí)現(xiàn)原理,搞清底層工作機(jī)制,這樣才能解決大部分的現(xiàn)有問(wèn)題和新出現(xiàn)的安全問(wèn)題??偟膩?lái)說(shuō)信息安全學(xué)的研究還是非常深?yuàn)W的,這方面體會(huì)比較深的要算是在最近的微軟杯程序設(shè)計(jì)大賽中利用.NET平臺(tái)開(kāi)發(fā)的那個(gè)項(xiàng)目My E-business Fairy.NET過(guò)程中了。
[3]閑聊軟件工程 關(guān)于計(jì)算機(jī)科學(xué)的一些邊緣科學(xué)我想談一談軟件工程技術(shù),對(duì)于一個(gè)企業(yè),推出軟件是不是就是幾個(gè)程序員坐在一起,你寫(xiě)一段程序,我寫(xiě)一段程序呢?顯然不是。軟件工程是典型的計(jì)算機(jī)科學(xué)和數(shù)學(xué),管理科學(xué),心理學(xué),社會(huì)學(xué)等學(xué)科的綜合。它使我們這些搞理論和技術(shù)的人進(jìn)入了一個(gè)社會(huì)。你所要考慮的不僅僅是程序的優(yōu)劣,更應(yīng)該考慮程序與軟件的區(qū)別,軟件與軟件產(chǎn)品的區(qū)別,軟件軟件產(chǎn)品的市場(chǎng)前景,如何去更好的與人交流。這方面我還在學(xué)習(xí)階段,以后這方面再寫(xiě)文章吧,先推薦給大家?guī)妆緯?shū):暢銷20年不衰的《人月神話》(清華大學(xué)中文版,中國(guó)電力出版社影印版),《軟件工程-實(shí)踐者研究的方法》(機(jī)械工業(yè)出版社譯本),《人件》(據(jù)說(shuō)每一位微軟公司的部門(mén)經(jīng)理都讀過(guò)這本書(shū),推薦老總們和想當(dāng)老總的同學(xué)都看看,了解一下什么是軟件企業(yè)中的人)以及微軟公司的《軟件開(kāi)發(fā)的科學(xué)與藝術(shù)》和《軟件企業(yè)的管理與文化》(研究軟件企業(yè)的制勝之道當(dāng)然要研究微軟的成功經(jīng)驗(yàn)了!)看完上面的書(shū),結(jié)合自己做的一些團(tuán)隊(duì)項(xiàng)目,我的一些比較深的體會(huì)有這么幾點(diǎn)
1.How important a plan is for a project development.2.How to communicate with your team members in a more effective way.3.How to
solve unexpected situations.4.The importance of unification.5.The importance of doing what you should do.6.The importance of designing before programming.7.The importance of management.8.The importance of thinking what your teammates think.在軟件開(kāi)發(fā)過(guò)程中我們應(yīng)當(dāng)具有以下能力:
1.Like it if you would like to do it.We believe that your attitude toward your work will definitely makes great effect on the project.2.The spirit of group working.Take myself as an example.I am just a part of the team, just a little part.You must make it clear that you are just a member of the team, but your effort will change your project a lot.3.Passion
With passion, you can do your job in a more effective way.4.The ability of solving unexpected problems.5.Learning New things in a very short time
It is the basic requirement for we computer major to learn new technology.6.Creativity
The tools are changing.As for us, what's more important is to use these new tools and technology to enable people and businesses throughout the world to realize their full potential.7.The ability to do your work independently.Every member has his own business.In a team, your work cannot be replaced by others' so you must do your business well in order to assure the project development process.團(tuán)隊(duì)開(kāi)發(fā)當(dāng)中的一些具體精神應(yīng)當(dāng)有:
<1> Success and Failure is not one person's effect.Your team's success is not the contribution of a single person.Success contributes to the whole team.If your project failed, it also is not just because of one person's poor work.It is also your failure.<2> Learn from each other.Every person has his own specialty.Even Bill Gates cannot know all the things about software development.We often learn from each other and gains a lot.The old saying goes like this:
There must be one out of three who can be your teacher.In our team we say: Every person is your teacher.<3> Help those who have problems.Use the group working spirit to overcome all the difficulties.There is no need to explain it.As the old saying: Two heads are better than one.We always find it difficult to solve all the problems just by oneself.<4> Praise them who have got some improvement.In our team, I always praise the members when they have finished something or just solved one problem, and they think that it is interesting and gains a lot.Because they can see their efforts.<5> Say something if needed.這個(gè)是一次軟件大賽當(dāng)中的體會(huì),和大家也做個(gè)交流,不過(guò)不能再說(shuō)了,軟件工程學(xué)說(shuō)起來(lái)寫(xiě)本2000頁(yè)的書(shū)一點(diǎn)也不多,恕我才疏學(xué)淺,不再做過(guò)多論述了。[4]談?wù)剬W(xué)習(xí)態(tài)度的問(wèn)題
關(guān)于計(jì)算機(jī)技術(shù)的學(xué)習(xí)我想是這樣的:學(xué)校開(kāi)設(shè)的任何一門(mén)科學(xué)都有其滯后性,不要總認(rèn)為自己掌握的某門(mén)技術(shù)就已經(jīng)是天下
無(wú)敵手了,雖然現(xiàn)在Java,VB,C,C++用的都很多,怎能保證沒(méi)有被淘汰的一天,我想.NET平臺(tái)的誕生和X#語(yǔ)言的初見(jiàn)端倪完全可以說(shuō)明問(wèn)題。換言之,在我們掌握一門(mén)新技術(shù)的同時(shí)就又有更新的技術(shù)產(chǎn)生,身為當(dāng)代的大學(xué)生應(yīng)當(dāng)有緊跟科學(xué)發(fā)展的素質(zhì)。舉個(gè)例子,就像有些同學(xué)總說(shuō),我做網(wǎng)頁(yè)設(shè)計(jì)就喜歡直接寫(xiě)html,不愿意用什么Frontpage,Dreamweaver。能用語(yǔ)言寫(xiě)網(wǎng)頁(yè)固然很好,但有高效的手段你為什么不使呢??jī)H僅是為了顯示自己的水平高,unique? 我看真正水平高的是能夠以最快的速度接受新事物的人。高級(jí)程序設(shè)計(jì)語(yǔ)言的發(fā)展日新月異,今后的程序設(shè)計(jì)就像人們?cè)谡f(shuō)話一樣,我想大家從xml中應(yīng)是有所體會(huì)了。難道我們真就寫(xiě)個(gè)什么都要用匯編,以顯示自己的水平高,真是這樣倒不如直接用機(jī)器語(yǔ)言寫(xiě)算了。反過(guò)來(lái)說(shuō),想要以最快的速度接受并利用新技術(shù)關(guān)鍵還是在于你對(duì)計(jì)算機(jī)科學(xué)地把握程度。當(dāng)然有一點(diǎn)我們必須指出,就是對(duì)于新技術(shù)要辯證得看,不能盲從。
計(jì)算機(jī)技術(shù)牽扯的內(nèi)容更為廣泛些,一項(xiàng)一項(xiàng)說(shuō)恐怕沒(méi)個(gè)一年半載也說(shuō)不清。我只想提醒大家的還是那句話,技術(shù)與科學(xué)是不能分家的,學(xué)好了科學(xué)同時(shí)搞技術(shù),這才是上上策。猶如英語(yǔ),原先人們與老外交流必須要個(gè)翻譯,現(xiàn)在滿馬路的人都會(huì)說(shuō)英語(yǔ)。就連21世紀(jì)英語(yǔ)演講比賽的冠軍都輪不到英語(yǔ)系的學(xué)生了。計(jì)算機(jī)也是一樣的,我們必須面對(duì)的一個(gè)現(xiàn)實(shí)就是:計(jì)算機(jī)真就只是一個(gè)工具,如果不具備其它方面的素養(yǎng),計(jì)算機(jī)系的學(xué)生雖然不能說(shuō)找不到工作,不過(guò)總有一天當(dāng)其他專業(yè)性人才掌握了計(jì)算機(jī)技術(shù)后將比我們出色許多。原因就在于計(jì)算機(jī)解決的大都是實(shí)際問(wèn)題,實(shí)際問(wèn)題的知識(shí)卻是我們少有的。單一的計(jì)算機(jī)技術(shù)沒(méi)有立足之地。
我想是時(shí)候指出:學(xué)習(xí)每一個(gè)課程之前,都要先搞清這一課程的學(xué)習(xí)目的。這一學(xué)科的應(yīng)用領(lǐng)域。據(jù)我自身所了解到的同齡同學(xué)和低年級(jí)的同學(xué)的學(xué)習(xí)狀況:他們之中很少有人知道學(xué)一個(gè)學(xué)科的學(xué)習(xí)目的,期末考試結(jié)束了也不知道學(xué)這科做什么用。這就失去了讀計(jì)算機(jī)科學(xué)的意義。當(dāng)然這與現(xiàn)存的教育思想不能說(shuō)一點(diǎn)關(guān)系都沒(méi)有。
總的來(lái)說(shuō),從教育角度來(lái)講,國(guó)內(nèi)高校的課程安排不是很合理,強(qiáng)調(diào)理論,又不愿意在理論上深入教育,無(wú)力接受新技術(shù),想避開(kāi)新技術(shù)又無(wú)法避得一干二凈。我覺(jué)得關(guān)鍵問(wèn)題就是國(guó)內(nèi)的高校難于突破現(xiàn)狀,條條框框限制著怎么求發(fā)展。我們雖然認(rèn)識(shí)得到國(guó)外教育的優(yōu)越性,但為什么遲遲不能采取行動(dòng)?哪怕是去粗取精的取那么一點(diǎn)點(diǎn)。我們需要改變。從我們自身角度來(lái)講,多數(shù)人4年下來(lái)既沒(méi)有學(xué)習(xí)計(jì)算機(jī)科學(xué) 的學(xué)術(shù)水平,也沒(méi)有學(xué)習(xí)計(jì)算機(jī)技術(shù)的那種韌勁。在我剛上大一時(shí),我的計(jì)算機(jī)科學(xué)入門(mén)導(dǎo)師,淮北煤炭師范學(xué)院王愛(ài)平教授曾經(jīng)對(duì)我說(shuō)過(guò)這樣一番話:“當(dāng)你選擇了計(jì)算機(jī)這一門(mén)科學(xué),就意味著你踏上了一條不歸路,就意味著你一生都要為之奮斗……你的身后是懸崖,只有向前走,不能往后退。”
有些同學(xué)說(shuō)按照這樣學(xué)習(xí)學(xué)的東西太多,有的未見(jiàn)得有用,我想打個(gè)形象的比方:學(xué)校學(xué)出來(lái)的人都是一個(gè)球體,方方面面的知識(shí)都應(yīng)具備??墒巧鐣?huì)上需要球體的地方很少,反而需要的是磚和瓦,即精通某一行的人才。但是對(duì)于同等體積的物體,用球體來(lái)改造是最方便最省事的。學(xué)校的學(xué)生很多,為了能夠使更多的學(xué)生來(lái)適應(yīng)這個(gè)社會(huì),學(xué)校也就不得以把所有的學(xué)生都打造成一個(gè)球體,然后讓社會(huì)對(duì)這些學(xué)生進(jìn)行再加工,成為真正能夠有用的人才。即使你非常清楚自己的將來(lái)要干什么,并且非常下定決心要走自己的路,這一步你也必須走,世界是在不斷變化的,你不能預(yù)料未來(lái)。想清楚,努力去干吧!
計(jì)算機(jī)科學(xué)博大精深,我只是個(gè)初學(xué)者。前面的路還長(zhǎng),計(jì)算機(jī)科學(xué)需要我們?yōu)橹畩^斗......學(xué)習(xí)計(jì)算機(jī)科學(xué)需要韌性,更需要?jiǎng)?chuàng)新,需要激情。深刻學(xué)習(xí)理論知識(shí),勇于接受新技術(shù)的挑戰(zhàn),這才是我們這一代人應(yīng)具有的素質(zhì)。最后送大家一句話“Wake up every day with a feeling of passion for the difference technology will make in people's life!”。
第二篇:計(jì)算機(jī)學(xué)習(xí)心得
計(jì)算機(jī)學(xué)習(xí)心得
“大學(xué)生計(jì)算機(jī)基礎(chǔ)”是以培養(yǎng)學(xué)生計(jì)算機(jī)技能和信息化素養(yǎng)為目標(biāo),是后期課程學(xué)習(xí)的基礎(chǔ)。由于小學(xué)初中時(shí)候的計(jì)算機(jī)課基本上是被略過(guò)甚至有的地區(qū)由于條件的限制根本就沒(méi)有開(kāi)設(shè)這門(mén)課程,而高中時(shí)沒(méi)怎么要求計(jì)算機(jī),而且高中我們的時(shí)間基本被課本的學(xué)習(xí)所占用。所以對(duì)于計(jì)算機(jī)的基礎(chǔ)知識(shí)是了解很少。而以后我們作為教師雖然對(duì)計(jì)算機(jī)沒(méi)有很高要求,但我們也應(yīng)懂得計(jì)算機(jī)基礎(chǔ)知識(shí)和應(yīng)用。深知這個(gè)道理,所以在計(jì)算機(jī)的學(xué)習(xí)上,尤為注重。下面就簡(jiǎn)單地談一下我自己學(xué)計(jì)算機(jī)的感感受:
一: 循序漸進(jìn)
整個(gè)學(xué)習(xí)過(guò)程應(yīng)采用循序漸進(jìn)的方式,先了解計(jì)算機(jī)的基本知識(shí),如計(jì)算機(jī)的起源、發(fā)展、windows操作系統(tǒng)、XP的桌面操作、電子表格等,使自己能由淺入深,由簡(jiǎn)到繁地掌握他們的使用技術(shù)。這是最好的學(xué)習(xí)模式,但是由于平時(shí)沒(méi)那么多時(shí)間,但是最起碼如計(jì)算機(jī)基本知識(shí)、windows系統(tǒng)、電子表格等必須掌握。
在這方面,老師的教學(xué)安排比較合理??赡芤彩强紤]到我們的基礎(chǔ)薄弱的問(wèn)題,所以老師把計(jì)算機(jī)最基礎(chǔ)的如計(jì)算機(jī)概述放在第一節(jié)課,讓我們對(duì)計(jì)算機(jī)有個(gè)大概的了解。接著再講windows XP 的一些基本概念,然后才把一些常用軟件介紹給我們。雖說(shuō)那些軟件我們平時(shí)也在用,但是里面好多東西都不懂,經(jīng)過(guò)老師講解后方才知道那些軟件還有很大的空間需要我們?nèi)Q小?/p>
計(jì)算機(jī)的理論課讓我們認(rèn)識(shí)到自身對(duì)電腦了解的匱乏,而實(shí)驗(yàn)課則讓我們親身體驗(yàn)摸索。如果老師講授和實(shí)驗(yàn)操作同時(shí)進(jìn)行的話會(huì)更好吧。因?yàn)楹芏鄷r(shí)候我們會(huì)忘記老師講的一部分內(nèi)容,但這主要是我們學(xué)生自己的問(wèn)題,畢竟下來(lái)復(fù)習(xí)不是很好。
二:學(xué)以致用
在學(xué)習(xí)時(shí)始終要與實(shí)際應(yīng)用相結(jié)合。在課堂上學(xué)習(xí)后,老師給我們安排的自主學(xué)習(xí)周其實(shí)挺好的,那樣能讓我們自己去回想鞏固老師所講的內(nèi)容,同時(shí)自己結(jié)合著老師說(shuō)講的去摸索,既能很好的記住又有了實(shí)質(zhì)性的提高。只是需要花費(fèi)的時(shí)間將會(huì)成倍增加。不過(guò)有得必有失就是這個(gè)道理吧。
對(duì)于網(wǎng)上學(xué)習(xí)計(jì)算機(jī),因?yàn)槔锩嬗泻芏噘Y源可以利用,還可以提問(wèn),這對(duì)于我們學(xué)生的學(xué)習(xí)是相當(dāng)便捷的,不懂的可以隨時(shí)提問(wèn),如我的電腦會(huì)莫名其妙地下載一些東西,但我自己又不知道什么原因,因此我發(fā)了一個(gè)帖子,后來(lái)得到老師的完美解答?;蛘咦约涸谟?jì)算機(jī)平臺(tái)上找相應(yīng)資源,還能看到別的同學(xué)的提的問(wèn)題,因?yàn)槟切﹩?wèn)題都是普遍存在的,也就能參考一下了。
就自己而言,如果我有不會(huì)的計(jì)算機(jī)知識(shí),我會(huì)先在平臺(tái)上收尋看有沒(méi)有和自己類似的已解答的問(wèn)題,有的話自然是好,如果都沒(méi)有,我會(huì)發(fā)一個(gè)帖子,期待別人或者老師能給我解答。這樣的學(xué)習(xí)方法,至少挺適合我自己的。這個(gè)平臺(tái)不僅能提供我們解決問(wèn)題的途徑,還可以從別的同學(xué)那獲得經(jīng)驗(yàn),避免犯一些不必要的錯(cuò)誤。學(xué)習(xí)狀態(tài)良好。
第三篇:計(jì)算機(jī)學(xué)習(xí)心得
計(jì)算機(jī)學(xué)習(xí)心得體會(huì)
在未學(xué)習(xí)計(jì)算機(jī)之前,我從不知道它到底是干什么用的,為什么很多很多的人都要迫不及待的地要去學(xué)它,同時(shí)也有人陷入計(jì)算機(jī)的泥潭,不能自拔。自從我觸摸到它的時(shí)候,即老師教給我們?cè)鯓邮褂糜?jì)算機(jī)時(shí),我才明白它的重要性。它涉及了生活的各個(gè)方面以及各個(gè)層次的人都離不開(kāi)它,同時(shí)也明白了它的利與弊。
我在讀小學(xué)的時(shí)候第一次接觸計(jì)算機(jī)覺(jué)得很新鮮。我清晰的記得,當(dāng)時(shí)有一個(gè)清晰的想法,那就是一定要學(xué)好計(jì)算機(jī)。但隨著自己對(duì)電腦接觸的不斷深入,對(duì)計(jì)算機(jī)的認(rèn)識(shí)越來(lái)越深,特別是剛進(jìn)到高中,使用了各種辦公軟件,可是在設(shè)計(jì)和辦公過(guò)程中,當(dāng)遇到一些電腦系統(tǒng)出錯(cuò)導(dǎo)致文件成果丟失的突發(fā)問(wèn)題時(shí)。我才深深地感受到自己計(jì)算機(jī)知識(shí)是多么的欠缺,自己終歸不是學(xué)計(jì)算機(jī)專業(yè)的,對(duì)計(jì)算機(jī)知識(shí)的掌握都是零散的,對(duì)這些突發(fā)問(wèn)題只能束手無(wú)策。于是我暗自發(fā)誓,無(wú)論如何,要學(xué)好計(jì)算機(jī),但上高中是我忙于課業(yè)學(xué)習(xí),沒(méi)有足夠的時(shí)間學(xué)習(xí)計(jì)算機(jī)知識(shí)。這一只是一個(gè)很大的遺憾,所以我在高中時(shí)就決定大學(xué)后一定要好好學(xué)習(xí)計(jì)算機(jī)知識(shí),把落下的都補(bǔ)回來(lái)。
令我開(kāi)心的是,大學(xué)計(jì)算機(jī)課時(shí)很多,我可以好好利用它來(lái)獲取我想要的知識(shí)。在課堂上我用心聽(tīng)講,認(rèn)真做筆記。實(shí)踐課上也好好練習(xí),學(xué)到了很多新的知識(shí)。真的很值啊。
我對(duì)自己也提了很多要求,只為了學(xué)好知識(shí),向全方位人才買(mǎi)件一步。
第四篇:計(jì)算機(jī)學(xué)習(xí)心得
大學(xué)學(xué)習(xí)學(xué)習(xí)心得
現(xiàn)在我已經(jīng)大四將要畢業(yè)了,這個(gè)心得早就應(yīng)該寫(xiě),起碼要半年前寫(xiě),因?yàn)榇笏南聦W(xué)期的生活幾乎沒(méi)有給我?guī)?lái)任何的改觀。在學(xué)習(xí)上,我?guī)缀踅?jīng)歷了該經(jīng)歷的(我這個(gè)年齡),這些學(xué)習(xí)中,只有大學(xué)的學(xué)習(xí)讓我感到一種自主,一種無(wú)法形容的豁然開(kāi)朗的感覺(jué),是計(jì)算機(jī)改變了我,我也盡力去改變計(jì)算機(jī)的一切,盡管我知道這很難,但這是我的職責(zé)。
可以說(shuō),學(xué)習(xí)無(wú)論學(xué)什么都不會(huì)浪費(fèi),很明顯的原因就是,計(jì)算機(jī)兼容了太多的學(xué)科,讓你無(wú)法去想象,你可以提到任何一個(gè),我都能說(shuō)出計(jì)算機(jī)的作用。所以,如果有機(jī)會(huì)我們什么都要學(xué),但不要盲目的學(xué),因?yàn)槟闶菍W(xué)計(jì)算機(jī)專業(yè)的,要學(xué)的主要是計(jì)算機(jī)。
學(xué)計(jì)算機(jī)并兼有多方面知識(shí)的人才確實(shí)很少,這也難怪,上帝造人就是這樣,要達(dá)到這一點(diǎn),要付出很大的代價(jià),需要一些機(jī)遇,我們只需要抓住自己所能創(chuàng)造的機(jī)遇就可以了。
說(shuō)實(shí)話,具我了解,中國(guó)的計(jì)算機(jī)確實(shí)和國(guó)外差的太多,這是多方面原因的,一個(gè)就是人家發(fā)展60幾年的計(jì)算機(jī),被中國(guó)十幾年搞定這顯然是不可能的,中國(guó)人能比國(guó)外人聰明多少??中國(guó)計(jì)算機(jī)教育存在著嚴(yán)重弊端,初等教育和高等教育計(jì)算機(jī)完全脫軌,很多剛上大學(xué)的學(xué)生連計(jì)算機(jī)都沒(méi)有摸過(guò),更別說(shuō)學(xué)了,四年期間的努力很難填補(bǔ)。還有就是,中國(guó)學(xué)生學(xué)習(xí)方向不明確,甚至沒(méi)有目標(biāo)??梢哉f(shuō)很多大學(xué)生對(duì)自己的專業(yè),在四年之間幾乎什么都沒(méi)有學(xué)到,而學(xué)到的是關(guān)系,更確切的說(shuō)是人與人交往的關(guān)系,但這個(gè)學(xué)的還是有好有壞,確切一點(diǎn)就是混。當(dāng)然,光靠專業(yè)實(shí)力來(lái)闖天下固然不行,那么那些生產(chǎn)力的發(fā)展就交給了有專業(yè)實(shí)力的人,所以中國(guó)高級(jí)人才少的很。
我處在中國(guó)軟件萌芽的階段,這階段需要大量的人才,所以很多大學(xué)里沒(méi)有學(xué)到東西的人(學(xué)習(xí)計(jì)算機(jī)的),也不用怕,幾乎都能找到工作,也不會(huì)淪為底層人民,因?yàn)榇蠹叶歼@樣,只是到公司的培訓(xùn),有了突飛猛進(jìn)的發(fā)展。這樣短暫的學(xué)習(xí)永遠(yuǎn)成不了高手,雖然現(xiàn)在我不是個(gè)高手,但我可以這樣說(shuō)。
確實(shí),如果你不是對(duì)計(jì)算機(jī)熱愛(ài)的話,那它對(duì)你是枯燥的,什么都是,但為什么人們都對(duì)異性感興趣呢??這確實(shí)值得研究,如果成功的話,這樣可以改變一個(gè)人,會(huì)不會(huì)帶來(lái)世界末日是另一碼事。
我接觸計(jì)算機(jī)(相對(duì)和我一屆學(xué)生)可以所算是早的,但那時(shí)只是游戲,但我認(rèn)為對(duì)我已經(jīng)足夠了,如果那時(shí)有計(jì)算機(jī)高手在我面前(這是個(gè)幻想,幾乎不可能),那我可能就上不了大學(xué)了,整天沉迷于編程了,相對(duì)來(lái)講,在中國(guó)大學(xué)學(xué)歷大重要了,尤其是好的大學(xué)。我第一次接觸計(jì)算機(jī)是在初中一年,大約九七年,那時(shí)還是DOS系統(tǒng),是486,586流行時(shí)代,當(dāng)時(shí)不知道486,586是什么,但大家都這么叫,而且都知道586比486快,而且要好,我上初三和高一階段,1999年,開(kāi)始有了windows95,那時(shí)都叫95網(wǎng),這是從文字界面到圖形界面的轉(zhuǎn)換,我能感上這個(gè),我是慶幸的,這使我對(duì)計(jì)算機(jī)的發(fā)展有很深的印象,當(dāng)時(shí)也是處在游戲階段,我從來(lái)沒(méi)有想過(guò)做游戲,也沒(méi)有想過(guò)怎么做??梢哉f(shuō)我的童年是在電子游戲上度過(guò)的,在2000年,開(kāi)始有了windows98,2002年我見(jiàn)到了windows me,可是直到我高中畢業(yè)我還是對(duì)計(jì)算機(jī)的基本操作還不會(huì),原因很簡(jiǎn)單我只知道打游戲。我高三那年,是我對(duì)計(jì)算機(jī)編程的萌芽,它的出現(xiàn),讓我產(chǎn)生了極大的興趣,也是游戲把我?guī)?dòng)的,我要感謝文曲星,這樣也許就是個(gè)上天的安排。當(dāng)時(shí)文曲星cc800上有了QBASIC編譯系統(tǒng),而且有一些簡(jiǎn)單的系統(tǒng)函數(shù),可以讓編程者編寫(xiě)自己的程序,我從網(wǎng)上下載了幾個(gè)游戲程序,那些代碼都是公開(kāi)的,而且可以修改,我對(duì)那些程序真的震驚了,雖然我不是很了解,但那些眼花繚亂的游戲開(kāi)始畫(huà)面,和動(dòng)畫(huà)效果,能在這么小的手掌機(jī)上做的這么好,我真的很佩服編程者,我查查一些基本畫(huà)圖函數(shù),自己做了幾個(gè)簡(jiǎn)單的動(dòng)畫(huà),還不錯(cuò),達(dá)到我想要的效果,盡管不是很難,但對(duì)我是個(gè)極大的鼓舞,我很興奮。由于是高三階段,面臨高考,我也沒(méi)有時(shí)間去學(xué)這個(gè)東西,我只能在他們編寫(xiě)的游戲中改改,我可以說(shuō)他們已經(jīng)做的很好了,我很佩服,有些知識(shí)現(xiàn)在我還沒(méi)有接觸到。
一年以后,我來(lái)到了大學(xué),來(lái)學(xué)習(xí)計(jì)算機(jī),其實(shí)大學(xué)里學(xué)習(xí)的主要是理論,實(shí)踐要靠你自己,因?yàn)榇髮W(xué)時(shí)間主要靠你自己支配,學(xué)不學(xué)是你自己的事情。理論很重要,它是你起飛的飛機(jī)場(chǎng),實(shí)踐就是你的雙翼,他們要結(jié)合起來(lái)才可以,因?yàn)槟泔w的累了,還要在飛機(jī)場(chǎng)停下來(lái)歇歇,這就是你理論知識(shí)不足的時(shí)候。大學(xué)的8大專業(yè)課都重要的很,我們不能忽視任何一門(mén),它們是計(jì)算機(jī)的基礎(chǔ)。
下面我就把我從所學(xué)的每個(gè)專業(yè)課中獲得的心得說(shuō)一下。
數(shù)學(xué):
剛到大學(xué)時(shí),學(xué)習(xí)的心態(tài)還停留在高中,不知道為什么而學(xué),學(xué)有什么用,這也是中國(guó)的特色吧!但到后期越深的課程,尤其是計(jì)算機(jī)圖形學(xué)等很多課程都和數(shù)學(xué)是息息相關(guān)的,如果哲學(xué)排在所有學(xué)科的首位,那么數(shù)學(xué)就要排第二,它是那些我們看來(lái)比較變態(tài)的人,把世界的高度抽象,我經(jīng)過(guò)考研后,和參加數(shù)學(xué)建摸輔導(dǎo)后確實(shí)對(duì)數(shù)學(xué)有些了解,但這只是很淺顯的,真正的數(shù)學(xué)內(nèi)涵離我遙遙無(wú)期,我試圖把自己的思想和這條軌道靠攏,但始終很難達(dá)到。說(shuō)實(shí)話,中國(guó)的教育是失敗的,他過(guò)分強(qiáng)調(diào)知識(shí)的結(jié)果,不注重過(guò)程和起始,思維過(guò)程很重要,其實(shí)結(jié)果并沒(méi)有它重要,思維的方式?jīng)Q定著一個(gè)人,從小就聽(tīng)人家說(shuō)1+1=2,但為什么?從什么地方來(lái)去思考,怎么思考,卻很少有人知道。我可能說(shuō)的有點(diǎn)偏題,但這是重要的,也許是我說(shuō)數(shù)學(xué)來(lái)把說(shuō)思維模式引出來(lái)。在講授思維時(shí),這狠難,最根本的是,人們對(duì)思維還存在著爭(zhēng)議,而且不同人的經(jīng)歷也多少要決定人的思維。我在這里只說(shuō)學(xué)習(xí)上的思維。我認(rèn)為人從一出生,就具有某種特長(zhǎng)(這是相對(duì)的),也就是說(shuō)在同等環(huán)境下的人學(xué)習(xí)(我們排除在這種學(xué)習(xí)以前的經(jīng)歷的影響,比如說(shuō)學(xué)習(xí)音樂(lè)),一定會(huì)分出優(yōu)劣,在大家都很努力的情況下。如果有音樂(lè)天賦的人,他不去努力,可能落后于努力而不具有天賦的人,所以勤奮出天才不假,但要用到自己具有天賦的一面,那必然事倍功半。天賦和興趣不是一會(huì)事,但大多數(shù)人,能在有天賦中找到興趣,在興趣中而找不到天賦。所以在大學(xué)階段,(在中國(guó)這種教育,高中階段幾乎不可能),在大多有自己支配的時(shí)間里,你要盡快找出自己的天賦,并發(fā)現(xiàn)這方面的興趣。記住,你在這方面有天賦,不代表你在這方面比任何人都前,但你已經(jīng)比很多人強(qiáng),如果你很努力,你會(huì)走的更高。說(shuō)了這么多,回來(lái)說(shuō)數(shù)學(xué),老師講課很少講數(shù)學(xué)的思維模式,雖然我不清楚真正的數(shù)學(xué)思維模式,但我很清楚老師一定沒(méi)有講,他也很難講出來(lái),因?yàn)楹苌儆腥酥琅nD看蘋(píng)果落地,為什么會(huì)想出萬(wàn)有引力定律,而為什么我們不能。很多人說(shuō)是牛頓愛(ài)思考的結(jié)果,這一點(diǎn)不假,但并不是每個(gè)愛(ài)思考的人能想到,很好問(wèn)題就在這里,這就是我們跟人家的差別,因?yàn)樗季S的東西很難傳授給別人,所以這樣的高人很少,光靠他們留下的書(shū)是很難解決問(wèn)題的。
離散數(shù)學(xué):
離散數(shù)學(xué)包括很多章節(jié),各個(gè)部分聯(lián)系不是很大,而且各個(gè)學(xué)校的教材和所講授的知識(shí)重點(diǎn)也不一樣,但大體要講的都是一樣。我個(gè)人認(rèn)為離散數(shù)學(xué)是最難的,最難的在圖,群等,它們之所以難,是我們很難容入到那種神秘的思考方式,容入思考方式太難了,只有靠我們的感悟,因?yàn)檫@些真正很強(qiáng)的人真的寥寥無(wú)幾,能指導(dǎo)我們的更是很少,我本人始終無(wú)法理解群的真正含義,我也沒(méi)有去查什么相關(guān)資料,但我知道,再抽象的數(shù)學(xué)理論,都不是憑空想象的,它一定有它的現(xiàn)實(shí)基礎(chǔ),它的出現(xiàn)是有來(lái)歷的。
數(shù)據(jù)結(jié)構(gòu):
數(shù)據(jù)結(jié)構(gòu)是十分重要的學(xué)科,它完全是建立在實(shí)踐的基礎(chǔ)上,也就是說(shuō),你要多打代碼。它在一定程度是依賴語(yǔ)言的。我很清楚的知道,第一遍學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu),也就是幾乎很少有實(shí)踐的,大腦幾乎一片空白,也是只有在考試前,反復(fù)的復(fù)習(xí)才知道在講什么,只能手工的模擬執(zhí)行過(guò)程,把算法轉(zhuǎn)化成程序始終是個(gè)迷。但我認(rèn)為這已經(jīng)足夠了,因?yàn)槿魏卫碚撝挥性诶斫馑?,你才能凌駕于它,所以接下來(lái)一個(gè)質(zhì)的飛躍就靠自己,靠自己把那些算法變成代碼,在自己有想法時(shí),能夠把這個(gè)想法用適當(dāng)?shù)臄?shù)據(jù)結(jié)構(gòu)實(shí)現(xiàn),這需要在電腦旁的硬功夫,絕對(duì)是。一個(gè)高級(jí)的程序員,絕對(duì)是個(gè)硬功夫。這種把自己的想法變成代碼,也是你獨(dú)立思考的開(kāi)始,記住思考很重要,他是你在捕捉你的靈感,善于思考的人,靈感來(lái)的很快,而且你的靈感會(huì)告訴你,對(duì)于它,你能把它做出來(lái),這一切都是思考的結(jié)果,我不是個(gè)思想家,但我知道,我每天對(duì)世界萬(wàn)物的沉思,在指引著我發(fā)現(xiàn)那些太多的為什么的答案,這個(gè)世界為什么這個(gè)樣子,它后面究竟隱藏著什么,讓我們大膽的假設(shè)吧!多做程序的人,程序會(huì)改變你的思維,這絕對(duì)錯(cuò)不了。
語(yǔ)言:
我們一共學(xué)了四種語(yǔ)言,VB,C,C++,Java。VB的語(yǔ)法很簡(jiǎn)單,它確實(shí)是我練習(xí)算法的平臺(tái),它使我實(shí)現(xiàn)很多小游戲,對(duì)數(shù)據(jù)結(jié)構(gòu)有了很深的了解,但我本人對(duì)VB不是很感興趣,它只能做些小項(xiàng)目,因?yàn)樗鼮榇蠹姨峁┑挠押媒缑妫钃趿舜蠹彝ㄍ呒?jí)程序員的道路,它封閉了語(yǔ)言太多的細(xì)節(jié)和計(jì)算機(jī)的基理,使你對(duì)它的界面有太大的依賴。C是個(gè)純面向過(guò)程的語(yǔ)言,它的語(yǔ)法不是很難,你用它大約一年半多左右,就完全可以掌握它,記住這需要你的實(shí)踐,大家?guī)缀鯇W(xué)的都是潭浩強(qiáng)的書(shū),這本書(shū)我開(kāi)始認(rèn)為很好,但我看了很多國(guó)外的書(shū),和很多國(guó)外人所打的代碼后,和國(guó)內(nèi)高級(jí)程序員所說(shuō)的話,我只能說(shuō)這本書(shū),只能是你的開(kāi)端,但不能讓你更深層次了解語(yǔ)言。但你要問(wèn)我初學(xué)者用什么書(shū),我還會(huì)介紹這本書(shū)。C的精髓在于指針,你能靈活運(yùn)用指針就幾乎等于你掌握了C語(yǔ)言,這是一種高效的語(yǔ)法支持,快的讓你無(wú)法想象,我很有感觸,在VB下要慢的多。C++是個(gè)很復(fù)雜的語(yǔ)言,你要完全了解它,要在C語(yǔ)言的基礎(chǔ)上,我很少用C++,我相信我會(huì)攻克它的,也許很多人用C++,但了解它真正的機(jī)理估計(jì)不是很多,我看了C++ primer之后的感觸,它確實(shí)很復(fù)雜,也是這本書(shū)太深入了,了解一門(mén)語(yǔ)言,少了編譯知識(shí)確實(shí)不行。
編譯原理:
其實(shí)編譯原理和匯編,操作系統(tǒng),語(yǔ)言都是緊密相關(guān)的,編譯器是在操作系統(tǒng)之上,語(yǔ)言之下。在講編譯器時(shí),除了講編譯源程序成目標(biāo)程序外,還介紹了很多地方都用到的自動(dòng)機(jī)理論,這個(gè)也很重要。在人工智能,很多分析語(yǔ)法,文字類的東西都很重要。編譯原理和語(yǔ)言是相輔相成的,只學(xué)語(yǔ)言不學(xué)編譯,無(wú)法真正的了解語(yǔ)言,而編譯器是在語(yǔ)言基礎(chǔ)上的,沒(méi)有語(yǔ)言的了解更學(xué)不了編譯,現(xiàn)在大多數(shù)高校的編譯原理講的語(yǔ)言都是基于面向過(guò)程的,但我認(rèn)為足夠了,你真正的理解了編譯所講的東西,自己在深入學(xué)習(xí)面向?qū)ο蟮恼Z(yǔ)言,你一定會(huì)很好的把握面向?qū)ο蟮木幾g過(guò)程,很好的掌握面向?qū)ο笳Z(yǔ)言,在語(yǔ)義分析過(guò)后的中間代碼生成和動(dòng)態(tài)存儲(chǔ)空間分配,和匯編有很大的聯(lián)系,我在學(xué)習(xí)匯編時(shí),總是先把要求的題目寫(xiě)成C語(yǔ)言,在轉(zhuǎn)化成匯編語(yǔ)言,這就是不知不覺(jué)的一種中間代碼生成,雖然不完全一樣,但讓你掌握中間代碼生成已經(jīng)足夠了。動(dòng)態(tài)存儲(chǔ)空間分配,主要基于指針?biāo)赶虻膭?dòng)態(tài)空間。因?yàn)榉侵羔樀淖兞吭诰幾g時(shí)就已經(jīng)有內(nèi)存分配了,這也是編譯要做的事。
匯編:
大多數(shù)學(xué)的都是8086,編譯器我推薦用TD,很好的開(kāi)發(fā)環(huán)境。作程序調(diào)試是最主要的,沒(méi)有作過(guò)程序的人是想不到調(diào)試是多么難,好的開(kāi)發(fā)環(huán)境有助于有效的開(kāi)發(fā)程序。個(gè)人認(rèn)為,學(xué)習(xí)匯編要和計(jì)算機(jī)組成聯(lián)系起來(lái),主要是指令系統(tǒng),講CPU時(shí)的知識(shí)。匯編是最低級(jí)的,最快的語(yǔ)言了,有時(shí)為了運(yùn)行速度不得不用匯編來(lái)實(shí)現(xiàn)想要的功能,我認(rèn)為對(duì)匯編的掌握程度,只要你能做出個(gè)遞歸函數(shù)就可以了,你了解了很多指令用法,寄存器的使用,計(jì)算機(jī)存儲(chǔ)數(shù)據(jù)和代碼的方式,函數(shù)調(diào)用的方式,棧是怎么實(shí)現(xiàn)函數(shù)的,你會(huì)有很深刻的發(fā)展,相信我沒(méi)錯(cuò)的,一定要上機(jī)實(shí)現(xiàn)一個(gè)遞歸函數(shù),再加上你對(duì)C語(yǔ)言的了解,和一些編程知識(shí),你就可以擺平幾乎所有的匯編程序了。
數(shù)據(jù)庫(kù)
我在大學(xué)里沒(méi)有接觸過(guò)太大的項(xiàng)目,而且平常編程對(duì)數(shù)據(jù)庫(kù)深入不多,只是達(dá)到了做網(wǎng)上書(shū)店所要求的基本知識(shí),首先是ER圖,各種范式,還有數(shù)據(jù)流圖,怎么用語(yǔ)言插入數(shù)據(jù),刪除,查找等等,實(shí)際上,你要不是搞理論的,深到數(shù)據(jù)的具體存儲(chǔ)效率的級(jí)別,我想這些對(duì)于編程就足夠了,但對(duì)于高級(jí)的數(shù)據(jù)庫(kù)程序員這些是不夠的。
計(jì)算機(jī)組成
對(duì)于學(xué)習(xí)匯編和C語(yǔ)言這個(gè)其實(shí)很重要,因?yàn)檫@些語(yǔ)言還沒(méi)有屏蔽這些硬件細(xì)節(jié),VB就幾乎完全屏蔽了硬件細(xì)節(jié),你不需要了解太多的硬件知識(shí)。但學(xué)習(xí)匯編和C語(yǔ)言并不是要你了解到能作出CPU和連接存儲(chǔ)器,我們只要知道他們的運(yùn)行機(jī)理,但有一點(diǎn)你不要懷疑,那就是電信號(hào)他就是那樣有趣,有趣到你無(wú)法想象它的速度和高低電平的傳遞,但是事實(shí)就是這樣,你不需要懷疑,承認(rèn)它就好了,因?yàn)槲覀冞€不能解釋規(guī)律,只能運(yùn)用它一樣。原理對(duì)軟件程序員就應(yīng)該足夠了,它會(huì)使你更加容易了解操作系統(tǒng)和硬件的工作。
操作系統(tǒng)
大家每個(gè)人對(duì)操作系統(tǒng)都不陌生,所有的計(jì)算機(jī)的課程幾乎都是息息相關(guān)的,他們都有太多的聯(lián)系,有些你可能迷茫,當(dāng)所有的學(xué)完以后,你應(yīng)該有個(gè)豁然開(kāi)朗的感覺(jué),那就是計(jì)算機(jī)的一切不應(yīng)該是個(gè)迷。操作系統(tǒng)和硬件的接口,就是那些硬件提供的指令,通過(guò)這些指令來(lái)操作硬件,就象操作系統(tǒng)定義一樣,他是管理系統(tǒng)資源的,管理硬件的使用,你在學(xué)習(xí)操作系統(tǒng)時(shí),把它看成一個(gè)管理者就可以了,它是一個(gè)有著自己管理方法的管理者,管理這些硬件給每個(gè)進(jìn)程使用,進(jìn)程說(shuō)白了就是一個(gè)應(yīng)用程序在內(nèi)存中或在外存中,有著運(yùn)行權(quán)利的程序?,F(xiàn)在的操作系統(tǒng)是多任務(wù)的,可以運(yùn)行多個(gè)程序,并發(fā)是指單個(gè)CPU而言,每個(gè)進(jìn)程在CPU中輪流執(zhí)行,因?yàn)樗炝?,你根本感覺(jué)不到他們的交替性,就象在同時(shí)運(yùn)行,大多數(shù)教材講并發(fā)比較多,我們大多數(shù)計(jì)算機(jī)都是單CPU的,具體怎么交替運(yùn)行,那就是操作系統(tǒng)管理進(jìn)程使用硬件的方法,不同的操作系統(tǒng)方法不同,但你的方法不要讓其中的一個(gè)進(jìn)程總是得不到想要的硬件使用(活鎖或饑餓),但想出個(gè)好辦法還不發(fā)生死鎖(這里不說(shuō)什么是死鎖了,我畢竟不是再講操作系統(tǒng))也很難,總之,你要學(xué)的就是這些方法,這里說(shuō)的是管理CPU,還有管理內(nèi)存,外設(shè)等等。我在給出進(jìn)程定義時(shí),還說(shuō)了外存,其實(shí)通常就指硬盤(pán),因?yàn)槟愕膬?nèi)存太小,運(yùn)行的程序又多,我要為了讓其他的程序運(yùn)行,只能先把它放在外存,也叫掛起。總之,你學(xué)的就是管理硬件的方法,怎么管理才能有效率,方便用戶使用。如果可以,你也可以設(shè)計(jì)一套管理方法,那你就作出了一個(gè)新的操作系統(tǒng)。
計(jì)算機(jī)網(wǎng)絡(luò)
所有和硬件有關(guān)的最后一個(gè),說(shuō)實(shí)話計(jì)算機(jī)網(wǎng)絡(luò)很雜,你學(xué)第一遍后,把網(wǎng)絡(luò)7層所有管理方法說(shuō)出個(gè)查不多,很難,大多數(shù)學(xué)生都是暈頭轉(zhuǎn)向,網(wǎng)絡(luò)是個(gè)很龐大的系統(tǒng),它從硬件到軟件,被規(guī)定了很正規(guī)的完整體系,這樣大家都遵照這個(gè)規(guī)則才能,使每個(gè)人開(kāi)發(fā)出的軟件和硬件都可以用。記住計(jì)算機(jī)的交互就象人與人的交互,它通過(guò)0和1來(lái)代替人的語(yǔ)言,表情或所有可以可以傳達(dá)信息的東西,也可以說(shuō)是計(jì)算機(jī)通信的暗號(hào),只有雙方都知道了這個(gè)暗號(hào)的含義,雙方才能通信,你和另一個(gè)人怎么通信,那么計(jì)算機(jī)和另一個(gè)計(jì)算機(jī)就怎么通信。例如:我想給你一個(gè)禮物(計(jì)算機(jī)看成我要給你發(fā)送數(shù)據(jù),A發(fā)給B),我要先通知你,看你能不能收(這符合人的交往)(A發(fā)給B一個(gè)0和1組成的編碼,事先兩臺(tái)計(jì)算機(jī)已經(jīng)規(guī)定好了,比如說(shuō)10010011代表看對(duì)方是否能接受),如果這個(gè)請(qǐng)求不丟失的話(丟失有很多處理方法,你自己也可以想一個(gè)處理方法,比如隔一端時(shí)間你沒(méi)有收到對(duì)方是否同意接受,你就重發(fā)信息,總之,只要你肯想象,任何都是可能的),(1)對(duì)方發(fā)送一個(gè)可以接受的消息(比如說(shuō)10010012),你收到了,你就可以發(fā)送,發(fā)送途中又有很多情況,比如說(shuō),你怎么發(fā)送,作車,還是徒步,如果交通堵了怎么辦,是把禮物一起送過(guò)去,還是分開(kāi)送過(guò)去,等等,具體到網(wǎng)絡(luò)里是快速發(fā)送,分開(kāi)發(fā)送,我們學(xué)的就是這些方法。(2)對(duì)方發(fā)送個(gè)不能接受的信息,你是還要立即發(fā)送,還是不發(fā),還是等一會(huì)在發(fā),這些方法很活,你要學(xué)的就是這些方法,如果你可以處理網(wǎng)絡(luò)中出現(xiàn)的任何問(wèn)題,你不學(xué)它也可以。我要告訴你的是,你要學(xué)的就是就是通信協(xié)議(就是實(shí)現(xiàn)規(guī)定好的暗號(hào)),通信方法,出現(xiàn)問(wèn)題怎么處理等,你有好的方法,你可以不學(xué)了,很簡(jiǎn)單,方法就是人發(fā)現(xiàn)的,你比它的好,學(xué)它的干什么,就用你的。
軟件工程 軟件工程是從實(shí)踐中總結(jié)的經(jīng)驗(yàn),對(duì)于很少做過(guò)項(xiàng)目的大學(xué)生來(lái)說(shuō),確實(shí)很難理解,只要你作過(guò)一些項(xiàng)目,比如網(wǎng)上書(shū)店之類的系統(tǒng),你就會(huì)有些了解,它說(shuō)的很對(duì),我很清楚的記得軟件工程分這幾個(gè)過(guò)程:(1)可行性研究,也就是你要做的這個(gè)系統(tǒng)可行不,是否值得去做,做了能得多大效益。(2)總體分析,這個(gè)就是從整體來(lái)規(guī)劃你要作的系統(tǒng),只是個(gè)概況,并沒(méi)有詳細(xì)的階段,把系統(tǒng)大體分成幾個(gè)模塊。(3)詳細(xì)分析,這個(gè)階段就是來(lái)詳細(xì)每個(gè)模塊,把所有的細(xì)節(jié)都要寫(xiě)好。(4)程序編碼(5)測(cè)試(6)售后服務(wù)。
每個(gè)過(guò)程有分很多規(guī)范,因?yàn)橐粋€(gè)項(xiàng)目很多人做,很多公司做,沒(méi)有個(gè)很好的規(guī)范會(huì)亂套的,所以最后很容易合在一起。
我上面所介紹的都是最基礎(chǔ)的,只要你掌握這些,學(xué)任何計(jì)算機(jī)的東西都不成問(wèn)題,關(guān)鍵一個(gè)字那就是思想,也許有些具體你忘記了,但思想你會(huì)永遠(yuǎn)記住,你會(huì)看的時(shí)候也會(huì)很簡(jiǎn)單,和別人討論時(shí)你也知道他們?cè)谡f(shuō)什么。
記住的是一定要在思想上有飛躍,學(xué)會(huì)思考,你的靈感會(huì)讓你抓住問(wèn)題的突破口,凡事多問(wèn)為什么,原因在何處,怎么才能解決,至于怎么才能到達(dá)這個(gè)境界,我沒(méi)有什么太多的高招,因?yàn)槲乙膊皇鞘裁锤呤?,最直接的就是,多看?shū),多思考,多練習(xí)寫(xiě)程序,要在理解的基礎(chǔ)上,拋開(kāi)所有的別人寫(xiě)過(guò)的模板寫(xiě)出自己的想法,自己的程序,如果你參考別人的,那么你知識(shí)在量上有飛躍,質(zhì)上根本沒(méi)有飛躍,即使你方法很苯,你把它實(shí)現(xiàn)了,那你也是成功的,因?yàn)槟闾魬?zhàn)了自己,你在思想上有了飛躍,表面上你沒(méi)人家做的好,那是他有現(xiàn)成的代碼可以使用,當(dāng)沒(méi)有現(xiàn)成的代碼時(shí),你的想象力就發(fā)揮了作用,思考和想象高于一切,你的內(nèi)心得到了升華,你有好的新方法現(xiàn)在就比那些舊的方法好,所以創(chuàng)新很重要,是勤于思考的人的專利,不要死記公式,要問(wèn)問(wèn)公式的來(lái)源,什么都要弄懂,為什么書(shū)上這么講,死記不如不記,死記只能得到眼前的利益,人成功不就在于要長(zhǎng)遠(yuǎn)的考慮嗎??
我認(rèn)為多學(xué)學(xué)哲學(xué)邏輯學(xué),對(duì)人的大腦思維很有幫助的,我說(shuō)的哲學(xué)并不是專指馬克思哲學(xué),很多種,他們都有可以借鑒的一面,如果你站在任何一個(gè)立場(chǎng)去思考問(wèn)題,你就會(huì)覺(jué)得他們似乎說(shuō)的都有道理,就因?yàn)橛行┤肆?chǎng)不同,才發(fā)生的沖突。思想教育是最重要的,也是最難的,尤其學(xué)習(xí)上的思想境界,很難用語(yǔ)言來(lái)溝通,要靠自己勤奮的練習(xí),多加的思考,還記得我說(shuō)金庸的武狹小說(shuō)嗎??那里的功夫?qū)W習(xí)和這里說(shuō)的學(xué)習(xí)就是一樣的。
第五篇:計(jì)算機(jī)學(xué)習(xí)心得
我個(gè)人的這種自以為c語(yǔ)言很牛逼的美夢(mèng)在,大一下學(xué)期的一次偶然比賽后完全破滅。(?_?#)(記得那會(huì)兒大一除了c語(yǔ)言其他都是基礎(chǔ)課(比如:工程制圖,高數(shù),英語(yǔ)等),和計(jì)算機(jī)基本沒(méi)一點(diǎn)關(guān)系。)
還記得,正在我沉醉自己的小天地時(shí),那個(gè)大一下學(xué)期開(kāi)學(xué),一個(gè)同學(xué)喊我去參加一個(gè)校內(nèi)編程比賽。當(dāng)時(shí)滿懷著勝利信心去參加了比賽。結(jié)果。。大家都猜到了,初賽做了一到巨簡(jiǎn)單題目,然后。。復(fù)賽。。一道題沒(méi)做出來(lái)。更慘的說(shuō)應(yīng)該是:一道題都不會(huì)做,最后自己無(wú)聊的看著對(duì)面的一個(gè)mm敲碼。。再后來(lái)才知道是我們學(xué)校acm基地,準(zhǔn)備納新舉行的一個(gè)比賽。并且由于急需納新,那次題目出的是巨簡(jiǎn)單。
悲催的我比完賽后,失敗了!卻還不知道為什么??!。。
后來(lái)我郁悶一個(gè)星期后,在同學(xué)中介紹中,進(jìn)入了當(dāng)時(shí)認(rèn)為”高手如云”的acm基地。
附:當(dāng)時(shí)自己的水平:計(jì)算機(jī)只懂c語(yǔ)言,c語(yǔ)言只會(huì)些一些打印,簡(jiǎn)單幾乎無(wú)循環(huán)的,無(wú)指針的,100行左右代碼。編譯基本自己搞定。邏輯錯(cuò)誤?基本沒(méi)什么邏輯的程
隨后acm學(xué)習(xí),就簡(jiǎn)單說(shuō)說(shuō)。記得當(dāng)大家還都在迷茫中,或忙于考軟件資格證,計(jì)算機(jī)二級(jí)證,或忙于網(wǎng)絡(luò)游戲,或忙于學(xué)習(xí)其他專業(yè)的知識(shí)的時(shí)候。自己不顧外面的一切,每天和其他認(rèn)真上自習(xí)室的同學(xué)一樣,早起晚歸得沉醉在acm中。
在acm基地,開(kāi)始學(xué)習(xí)并鞏固了,計(jì)算機(jī)數(shù)據(jù)結(jié)構(gòu),計(jì)算機(jī)算法,組合數(shù)學(xué)等知識(shí),并不停的寫(xiě)碼!在基地我一直這樣堅(jiān)持了兩年多吧(知道二流學(xué)校的acm的艱苦的同學(xué)可能體會(huì)到,這其中的不易),到最后整個(gè)基地的同學(xué)仍堅(jiān)持學(xué)習(xí)在前線的就只有我一人。于是也很自然的,我在學(xué)校acm系統(tǒng)中,排在了第一。雖然如此,但是越學(xué)我也越清楚這個(gè)算法的水有多深,也逐漸意識(shí)到外面高手真的如云,而且他們的高度,并不是自己所能趕上的。也意識(shí)到了,在算法前進(jìn)的路上我的最大的阻礙是:數(shù)學(xué)??!而更悲劇的是,就我自己的自學(xué)能力,再加上學(xué)校數(shù)學(xué)老師不怎么給力。很難在段時(shí)間內(nèi)彌補(bǔ)自己的這方面的缺陷。
所以大三下學(xué)期,我退出了acm,進(jìn)入了實(shí)驗(yàn)室,做java的小項(xiàng)目。
在這兩三年里,除了acm還有一些是計(jì)算機(jī)基礎(chǔ)知識(shí)讓我對(duì)計(jì)算機(jī)認(rèn)識(shí)更深。
匯編語(yǔ)言讓我明白了,計(jì)算機(jī)的計(jì)算機(jī)制,學(xué)完匯編,于是當(dāng)我不確定c中某種結(jié)果時(shí):我知道將c語(yǔ)言編成匯編語(yǔ)言,然后對(duì)比差別。通過(guò)反匯編理解指針,數(shù)組等類似問(wèn)題差異和區(qū)別。
計(jì)算機(jī)組成原理,操作系統(tǒng),不僅認(rèn)識(shí)到為什么乘法會(huì)比加法費(fèi)時(shí)的原因,內(nèi)存存取方式,調(diào)度,分頁(yè)等等。同時(shí)也就明白如何在c語(yǔ)言上進(jìn)行這些細(xì)微底層的調(diào)優(yōu)。軟件工程,則告訴我如何去大規(guī)模的程序開(kāi)發(fā)的基本設(shè)計(jì)思想。自己并運(yùn)用到一些課程設(shè)計(jì)中去。
于此同時(shí)平時(shí)也更多的關(guān)注了,網(wǎng)上出現(xiàn)的各種c語(yǔ)言本身討論的一些問(wèn)題。這其中有,c混亂代碼,類似這種他編譯器中的float的一個(gè)問(wèn)題,c繪圖,了解關(guān)注類似于結(jié)構(gòu)體最后定義一個(gè)char[1]的這種奇技淫巧。于是針對(duì)c語(yǔ)言本身的書(shū)籍和資料,比如:?c專家編程?、?c缺陷與陷阱?。
附:個(gè)人此時(shí)水平:語(yǔ)言基本只會(huì)c語(yǔ)言和匯編語(yǔ)言;c語(yǔ)言100、200行的代碼寫(xiě)完后基本沒(méi)有編譯錯(cuò)誤,最長(zhǎng)c代碼4000多行。c語(yǔ)言指針操縱多級(jí)的內(nèi)存動(dòng)態(tài)申請(qǐng)維護(hù);內(nèi)存泄漏,程序崩潰自己可以獨(dú)立較快解決。
匯編語(yǔ)言,分文件設(shè)計(jì),3000行,自己完成所有編寫(xiě),和調(diào)試。(目前基本沒(méi)用,很多忘了,呵呵~)
小界面,windows編程基本不懂。所以被當(dāng)時(shí)同學(xué)鄙視了:你有什么牛的?也就時(shí)一些,黑屏的數(shù)字。
到了這個(gè)時(shí)候,可以說(shuō)目前(也就是工作兩年后)我找到的這份工作很大一部分還要?dú)w功與acm!因?yàn)樵诘谝环莨ぷ?,我基本沒(méi)有用到任何可以算上算法的算法,和算上數(shù)據(jù)結(jié)構(gòu)的數(shù)據(jù)結(jié)構(gòu)。(小道消息:這個(gè)工作的社招比例:1:20),好了。后面可能還會(huì)提到acm。
話說(shuō)后來(lái)我離開(kāi)了acm,進(jìn)入實(shí)驗(yàn)室,于是我花了整整一個(gè)暑假,加上一個(gè)月左右的時(shí)間,學(xué)習(xí)了:java,jsp,javascript,包括ssh架構(gòu)一些。
這其中比較艱難的是思想轉(zhuǎn)變:
1、由面向過(guò)程轉(zhuǎn)變?yōu)槊嫦驅(qū)ο螅▌傞_(kāi)始用java寫(xiě)的代碼也是面向過(guò)程的。。),2、由傳統(tǒng)的這種小計(jì)算應(yīng)用轉(zhuǎn)變?yōu)檫@種bs模型。這兩個(gè)思想的提升使我對(duì)今后編寫(xiě)應(yīng)用軟件打下了很好的基礎(chǔ)。
不管怎么樣,自己很快就能熟練寫(xiě)java應(yīng)用,后來(lái)由于就像其他習(xí)慣c的人都非常不喜歡java的這種”拿來(lái)主義”的做法一樣,我后來(lái)一直在盡量不做java方面的開(kāi)發(fā),當(dāng)然也就不會(huì)再進(jìn)一步深入學(xué)習(xí)java方面的知識(shí)。(當(dāng)然,目前來(lái)看,java還是一門(mén)開(kāi)發(fā)應(yīng)用軟件的很給力的一門(mén)語(yǔ)言,細(xì)的我就不再多說(shuō),只是自己當(dāng)初不喜歡)^o^()
隨后大學(xué)里面還有一門(mén)重要的課程:計(jì)算機(jī)網(wǎng)絡(luò)。(不過(guò)大學(xué)網(wǎng)絡(luò)很基礎(chǔ),后來(lái)又簡(jiǎn)單自學(xué)了一些tcpip的那三本書(shū)。)
計(jì)算機(jī)網(wǎng)絡(luò)告訴了我計(jì)算機(jī)互相通信的原理,了解計(jì)算機(jī)底層通信的方式。后來(lái)在工作中碰到的一些簡(jiǎn)單問(wèn)題也就能解決。比如: 如何竊聽(tīng)網(wǎng)絡(luò)數(shù)據(jù)的原理,arp欺騙,java這種bs模型能否獲取客戶端的mac地址(哈哈,自己后來(lái)工作中寫(xiě)腳本自動(dòng)簽到中考慮這個(gè)問(wèn)題),類似這種接口調(diào)試中技巧,webservice的原理以及協(xié)議,大小端問(wèn)題也算)^o^(。
還有一個(gè)是編譯原理,讓我明白作為c語(yǔ)言這種語(yǔ)言的編譯過(guò)程,理解了編譯的幾個(gè)階段。同時(shí)明白,sizeof的值再也不用記了,因?yàn)樽约壕涂梢苑治龀鰜?lái),而且很簡(jiǎn)單,而且理解了各種錯(cuò)誤處于哪個(gè)時(shí)期等都有利于自己對(duì)問(wèn)題的分析。
哈哈,c語(yǔ)言中的scanf,printf高級(jí)應(yīng)用,longjmp等在這后來(lái)時(shí)間也自己再進(jìn)一步學(xué)習(xí)。
于此同時(shí),自己自學(xué)了vb,學(xué)會(huì)了用vc++寫(xiě)動(dòng)態(tài)庫(kù),所以后來(lái)一些桌面小應(yīng)用,都用vb+dll來(lái)做的。所以課程設(shè)計(jì)什么的,都是小意思了。再后來(lái)畢業(yè)設(shè)設(shè)計(jì):用matlab+vb+dll寫(xiě)的,實(shí)際寫(xiě)碼調(diào)試時(shí)間不超過(guò)兩個(gè)星期(約12天),代碼量近6000行。畢業(yè)設(shè)計(jì)拿了年級(jí)第一。另外爆料一下:宿舍一哥們,一個(gè)算法畢設(shè)題目,我?guī)退愣?,總共花了一天;另外一哥們,用我的以前的課程設(shè)計(jì)搞過(guò)。。
附:自己此時(shí)的水平:語(yǔ)言就不說(shuō)了,此時(shí)算的上說(shuō)的出口的還是c語(yǔ)言,其他則是我的工具而已,而且很多我現(xiàn)在依然忘了,(檢起來(lái)也簡(jiǎn)單,呵呵~)
代碼編譯,調(diào)試幾乎不是問(wèn)題。但是此時(shí)對(duì)系統(tǒng)設(shè)計(jì),軟件工程認(rèn)識(shí)還是基本沒(méi)有,對(duì)設(shè)計(jì)模式更不了解,對(duì)社會(huì)上使用的技術(shù)也是,什么不懂。
@@@第一份工作
第一份工作,我沒(méi)怎么去找,(~_~;)后來(lái)去了當(dāng)時(shí)實(shí)習(xí)的公司。公司主要用的架構(gòu)是:oracle+tuxedo+jsp。
當(dāng)然用的也是unix主機(jī)。也就是說(shuō),我畢業(yè)后沒(méi)有做類似嵌入式,windows編成的工作。后期的應(yīng)用也都是,unix下的環(huán)境編成。
ok,這會(huì)兒開(kāi)始了工作期間了。
在剛開(kāi)始實(shí)習(xí)的時(shí)候,自己被安排做一些瑣碎整理的事情,比如:將一個(gè)代碼改為另外一個(gè)格式?
后來(lái),實(shí)習(xí)了兩個(gè)月,我打算離職。后來(lái)主管找我談話,我告訴了自己的想法。后來(lái)答應(yīng)我調(diào)到北京總部的一個(gè)研發(fā)部(一般至少工作一年,并表現(xiàn)很出色才允許調(diào))。另外這兒不得不簡(jiǎn)單提一下為什么。。
當(dāng)時(shí)公司業(yè)務(wù)邏輯層主要用的是c語(yǔ)言,于我同批進(jìn)去的實(shí)習(xí)生,后來(lái)很多人都問(wèn)我c方面的問(wèn)題。這個(gè)被技術(shù)主管看到,所以。。他那次同意了我的要求。
話說(shuō)調(diào)去了北京總部,就是常年的出差開(kāi)始了,大約三個(gè)月后,參加了一個(gè)很大的項(xiàng)目,(200多號(hào)人一年多。)剛開(kāi)始我只是負(fù)責(zé)一個(gè)簡(jiǎn)單的數(shù)據(jù)接口后臺(tái)進(jìn)程的需求調(diào)研和開(kāi)發(fā),當(dāng)時(shí)自己剛?cè)肷鐣?huì),做起事來(lái)相對(duì)有些不好意思。在加上,我這個(gè)正好是一個(gè)接口需求,需要和不同的人溝通。所以問(wèn)題出現(xiàn)了,其它同事看我是個(gè)新人,也不怎么理我,常常找理由推托。最后這個(gè)小需求做的讓我很惱火,自己也沒(méi)太好辦法。
再后來(lái),這個(gè)需求完后,自己負(fù)責(zé)另外較為重要的數(shù)據(jù)接口。在后來(lái)近半年后,自己學(xué)習(xí)很快,很快掌握了,一些unix下的編成,以及調(diào)試技術(shù)。期間,有一個(gè)數(shù)據(jù)接口同事,和領(lǐng)導(dǎo)吵架跑回去了,領(lǐng)導(dǎo)后來(lái)讓我接手,并開(kāi)出了一些優(yōu)惠條件^_^。自己當(dāng)然接下也費(fèi)了一些工作,而以前的工作則交給了另外一有工作經(jīng)驗(yàn)的同事負(fù)責(zé)。后來(lái)我每個(gè)月都回家一趟休假,都被允許了。有時(shí)很多人老員工也沒(méi)被同意哦。
這之后,自己的能力慢慢得到認(rèn)識(shí),以前不理我的同事小組長(zhǎng),也都開(kāi)始主動(dòng)打招呼^_^。在之后,慢慢的有些同事問(wèn)我一些技術(shù)上的問(wèn)題。后來(lái)被部分同事稱為”知識(shí)庫(kù)”。再后來(lái),就不多說(shuō)了,也就是畢業(yè)兩年后,各種原因,離開(kāi)原來(lái)公司。換了一份現(xiàn)在的工作。
附:技術(shù)能力,這期間c語(yǔ)言從自己小程序變成一個(gè)實(shí)實(shí)在在的應(yīng)用的代碼的轉(zhuǎn)變,期間包括,多進(jìn)程,網(wǎng)絡(luò)編程,oracle一些知識(shí)包括:索引優(yōu)化,sql等分析;設(shè)計(jì)模式,等但是期間更多的是提升自我團(tuán)隊(duì)協(xié)作,溝通,時(shí)間管理,設(shè)計(jì)分析等軟素質(zhì)吧。
目前還在學(xué)習(xí)中。?;ヂ?lián)網(wǎng)的知識(shí)。。自己還有很多要學(xué)的。呵呵。不過(guò),學(xué)習(xí)是一件快樂(lè)的事情不是嗎?
最后對(duì)還糾結(jié)在c語(yǔ)言的同學(xué)一點(diǎn)小建議吧:
1、c語(yǔ)言知識(shí)一門(mén)語(yǔ)言,就像java,peil等語(yǔ)言一樣,僅僅是工具,因此不要把c語(yǔ)言看成很難,勤動(dòng)手,多思考。語(yǔ)言終究是為了方便人,而設(shè)計(jì)的,所以他不難。
2、不要僅僅只看c語(yǔ)言,要從c語(yǔ)言看到計(jì)算機(jī)學(xué)科所有的知識(shí)點(diǎn),并用c語(yǔ)言去鞏固它們。為什么是c語(yǔ)言?他的確很合適,進(jìn)入計(jì)算機(jī)有全面理解的一個(gè)入口。并以計(jì)算機(jī)的的角度去思考一些問(wèn)題。
3、算法,數(shù)據(jù)結(jié)構(gòu),在現(xiàn)實(shí)中即使沒(méi)用上,也會(huì)有助于你理解一些系統(tǒng)設(shè)計(jì)。
4、軟件工程,系統(tǒng)設(shè)計(jì)也是很重要的哦。^_^,5、知識(shí)永遠(yuǎn)是學(xué)不完的,計(jì)算機(jī)亦如此,而且越學(xué)越菜。^_^
6、以上建議僅供參考。
和樓主蠻像的,大一時(shí)在寫(xiě)個(gè)二三百行的五子棋就以為自己牛得不行了。然后大二學(xué)了C++與STL之后,一直為自己C++學(xué)得很好,而且比別人多學(xué)了STL而沾沾自喜。然后,直到后來(lái)到大二下學(xué)期接觸了ACM之后才發(fā)現(xiàn)自己就是一弱菜~~ 與樓主不同的是,我們學(xué)校之前沒(méi)有人搞ACM(省賽時(shí)都是臨時(shí)組隊(duì)過(guò)...我是一名大三的學(xué)生,軟件工程專業(yè),從大學(xué)開(kāi)始就開(kāi)始了ACM的旅程,從大一到現(xiàn)在,基本上都是學(xué)的數(shù)論,幾何等等方面的,幾何也就一般般,三維幾何都不是很會(huì),對(duì)于數(shù)論,是我最擅長(zhǎng)的吧,像連分?jǐn)?shù),二次剩余,原根,離散對(duì)數(shù),牛頓二項(xiàng)式定理,費(fèi)馬平方和定理求表為平方和的解,對(duì)于數(shù)學(xué)方面的雖然我感覺(jué)還有很多我不會(huì)的,但是我感覺(jué)在ACM上面已經(jīng)差不多了,至于其他方面的我多少也會(huì)點(diǎn),至少很基礎(chǔ)的都會(huì)吧,現(xiàn)在我想重點(diǎn)學(xué)習(xí)搜索,圖論,DP,字符串,還有很多內(nèi)容。在今年剛剛結(jié)束的亞洲區(qū)域賽杭州站獲得銅牌,以前的省賽,東北賽等等也獲得較好的名次。我畢業(yè)后想直接找工作,所以現(xiàn)在我想一邊學(xué)習(xí)算法,繼續(xù)做題,明年繼續(xù)參加競(jìng)賽,一邊想搞搞工程,我個(gè)人比較喜歡Linux嵌入式的方面的,又喜歡Java 和Lucene搜索引擎方面的。我是想問(wèn),這兩方面哪一個(gè)比較好,比較有前景,然后對(duì)于算法方面的,哪些是以后工作后對(duì)應(yīng)職業(yè)用的比較多的,比如我覺(jué)得數(shù)論在密碼學(xué)方面用的比較多。對(duì)于ACM,我暫時(shí)是不想放棄。求各位學(xué)長(zhǎng)們,或者已經(jīng)工作的大神們給我建建議啊。
ACM程序題對(duì)鍛煉邏輯思維是有很大幫助的,既然你明年還想?yún)⒓颖荣惥筒荒芊艞塐J,相信你們學(xué)校大三的學(xué)生也會(huì)帶大一大二的學(xué)弟學(xué)妹吧,你可以不學(xué)習(xí)新的算法而去整理自己以前所學(xué)的,像DP、DFS什么的整理好,給他們講,可能還會(huì)有新的收獲。ACM很有魔力,相信你心里也是放不下。
ACM不是一份工作,你也不可能拿這個(gè)當(dāng)自己一輩子吃飯的武器,當(dāng)然除非你以后當(dāng)老師什么的,專門(mén)講一門(mén)課程。
Java從事的方面非常多,現(xiàn)在各行各業(yè)都需要Java程序員,真正工作了,你會(huì)發(fā)現(xiàn)ACM里面的算法用的微乎其微,大部分算法已經(jīng)被封裝好了,根本不需要你費(fèi)勁腦汁去敲代碼,你需要的是知道有這個(gè)東西,以及怎么去用,這個(gè)就需要你話費(fèi)很長(zhǎng)一段時(shí)間。很多東西你需要去學(xué)和復(fù)習(xí)鞏固,從基礎(chǔ)的css,sql, js, JQuery,ssh??差不多得花費(fèi)1年多的時(shí)間,如果不報(bào)培訓(xùn)班自己去學(xué)的話,需要你自己制定好一個(gè)規(guī)劃,下載教學(xué)視頻,一步步來(lái),多實(shí)踐。
Linux嵌入式工資比Java的高,但是好工作也相對(duì)難找,我僅僅知道這些,上我去年找工作的時(shí)候聽(tīng)同學(xué)說(shuō)的,對(duì)于這方面我不懂,也就不瞎說(shuō)了自己不知道的了。ACM應(yīng)該是一個(gè)跳板,幫助你進(jìn)一些名企,至于到底干什么,從事什么方面,很可能不會(huì)像你現(xiàn)在想的這么簡(jiǎn)單。大公司、名企對(duì)畢業(yè)生不會(huì)要求技術(shù)多好,隨著時(shí)間累計(jì)技術(shù)都會(huì)提上去的,他們更看好你的潛力和以后對(duì)公司的價(jià)值。最后說(shuō)一句,IT程序員很辛苦,你要做好準(zhǔn)備!加油吧!
算法,數(shù)據(jù)結(jié)構(gòu)是關(guān)鍵,另外還有組合數(shù)學(xué),特別是集合與圖論,概率論也重要。推薦買(mǎi)一本《算法導(dǎo)論》,那本書(shū)行,看起來(lái)超爽??!基本掌握語(yǔ)法還不行啊,語(yǔ)法的超熟練掌握,不然出了錯(cuò)誤很難調(diào)試的!!最重要的是超牛皮的頭腦啦,分析能力,邏輯推理能力很重要。ACM很好玩啦,祝你成功!!
acm是3人一組的,以學(xué)校為單位報(bào)名的,也就是說(shuō)要得到學(xué)校同意,還要有2個(gè)一起搞的。其實(shí)可能是你不知道你們學(xué)校搞acm的地方,建議你好好詢問(wèn)下你們學(xué)校管科技創(chuàng)新方面的人。建議你找?guī)讉€(gè)興趣相同的一起做,互相探討效果好多了,團(tuán)隊(duì)合作也是acm要求的3大能力之一。
數(shù)據(jù)結(jié)構(gòu)遠(yuǎn)遠(yuǎn)不夠的,建議你看算法導(dǎo)論,黑書(shū),oj的話個(gè)人覺(jué)得還是poj好,有水題有好題,而且做的人多,要解題報(bào)告什么的也好找。我們就是一些做acm的學(xué)生一起搞,也沒(méi)老師,這樣肯定能行的。
基礎(chǔ)的話是語(yǔ)言,然后數(shù)據(jù)結(jié)構(gòu),然后算法。
ACM有三個(gè)方向:算法,數(shù)學(xué),實(shí)現(xiàn) 要求三種能力:英文,自學(xué),團(tuán)隊(duì)協(xié)作
簡(jiǎn)單的說(shuō),你要能讀懂英文的題意描述,要有一門(mén)acm能使用的編程語(yǔ)言,要會(huì)數(shù)據(jù)結(jié)構(gòu),有一點(diǎn)數(shù)學(xué)基礎(chǔ),一點(diǎn)編程方面天賦,要有興趣和毅力(最重要),就具有做ACM的基本條件了。
做acm我推薦c,c++也可以,java在某些情況下好用,但是大多數(shù)情況的效率和代碼量都不大好,所以建議主用c++,有些題目用java
還有什么問(wèn)題,可以問(wèn)我啊。
不好意思,沒(méi)見(jiàn)過(guò)用java描述的acm書(shū)籍,大多數(shù)是用偽命令,其他有的用的c,c++,老一些的用pascal。java只是用來(lái)做高精度的一些題的,個(gè)人覺(jué)得不用專門(mén)看這方面的書(shū),java的基本部分學(xué)好就夠用了。所以我還是推薦主用c++,在高精度和個(gè)別題再用java。你可以找找java描述的算法設(shè)計(jì)與分析,這個(gè)好像有
數(shù)據(jù)結(jié)構(gòu):C語(yǔ)言版 清華大學(xué)出版社 嚴(yán)蔚敏 《數(shù)據(jù)結(jié)構(gòu)》
算法:清華大學(xué)出版社 王曉東 《算法設(shè)計(jì)與分析》
麻省理工大學(xué) 中譯本:機(jī)械工業(yè)出版社 《算法導(dǎo)論》
基本上這三本書(shū)就已經(jīng)足夠了,建議一般水平的人先不要看算法導(dǎo)論,待另外兩本書(shū)看的差不多的時(shí)候,再看算法導(dǎo)論加深理解。
另外還有很多針對(duì)性更強(qiáng)的書(shū)籍,不過(guò)針對(duì)性太強(qiáng),這里就不多介紹了。以上一些都是些算法方面的書(shū),最好的方式就是做題與看書(shū)相結(jié)合,很多在線做題的網(wǎng)站,PKU,ZOJ很多,推薦PKU,題目比較多,參與的人比較多。做一段時(shí)間的題,然后看書(shū),研究算法,再做題,這樣進(jìn)步比較快。
還有關(guān)于ACM競(jìng)賽,我有自己的一點(diǎn)話說(shuō)。
首先說(shuō)下ACM/ICPC是個(gè)團(tuán)隊(duì)項(xiàng)目,最后的參賽名額是按照學(xué)校為單位的,所以找到志同道合的隊(duì)友和學(xué)校的支持是很重要的。
剛剛接觸信息學(xué)領(lǐng)域的同學(xué)往往存在很多困惑,不知道從何入手學(xué)習(xí),在這篇文章里,我希望能將自己不多的經(jīng)驗(yàn)與大家分享,希望對(duì)各位有所幫助。
一、語(yǔ)言是最重要的基本功
無(wú)論側(cè)重于什么方面,只要是通過(guò)計(jì)算機(jī)程序去最終實(shí)現(xiàn)的競(jìng)賽,語(yǔ)言都是大家要過(guò)的第一道關(guān)。亞洲賽區(qū)的比賽支持的語(yǔ)言包括C/C++與JAVA。筆者首先說(shuō)說(shuō)JAVA,眾所周知,作為面向?qū)ο蟮耐跖普Z(yǔ)言,JAVA在大型工程的組織與安全性方面有著自己獨(dú)特的優(yōu)勢(shì),但是對(duì)于信息學(xué)比賽的具體場(chǎng)合,JAVA則顯得不那么合適,它對(duì)于輸入輸出流的操作相比于C++要繁雜很多,更為重要的是JAVA程序的運(yùn)行速度要比C++慢10倍以上,而競(jìng)賽中對(duì)于JAVA程序的運(yùn)行時(shí)限卻往往得不到同等比例的放寬,這無(wú)疑對(duì)算法設(shè)計(jì)提出了更高的要求,是相當(dāng)不利的。其實(shí),筆者并不主張大家在這種場(chǎng)合過(guò)多地運(yùn)用面向?qū)ο蟮某绦蛟O(shè)計(jì)思維,因?yàn)閷?duì)于小程序來(lái)說(shuō)這不旦需要花費(fèi)更多的時(shí)間去編寫(xiě)代碼,也會(huì)降低程序的執(zhí)行效率。
接著說(shuō)C和C++。許多現(xiàn)在參加講座的同學(xué)還在上大一,C的基礎(chǔ)知識(shí)剛剛學(xué)完,還沒(méi)有接觸過(guò)C++,其實(shí)在賽場(chǎng)上使用純C的選手還是大有人在的,它們主要是看重了純C在效率上的優(yōu)勢(shì),所以這部分同學(xué)如果時(shí)間有限,并不需要急著去學(xué)習(xí)新的語(yǔ)言,只要提高了自己在算法設(shè)計(jì)上的造詣,純C一樣能發(fā)揮巨大的威力。
而C++相對(duì)于C,在輸入輸出流上的封裝大大方便了我們的操作,同時(shí)降低了出錯(cuò)的可能性,并且能夠很好地實(shí)現(xiàn)標(biāo)準(zhǔn)流與文件流的切換,方便了調(diào)試的工作。如果有些同學(xué)比較在意這點(diǎn),可以嘗試C和C++的混編,畢竟僅僅學(xué)習(xí)C++的流操作還是不花什么時(shí)間的。
C++的另一個(gè)支持來(lái)源于標(biāo)準(zhǔn)模版庫(kù)(STL),庫(kù)中提供的對(duì)于基本數(shù)據(jù)結(jié)構(gòu)的統(tǒng)一接口操作和基本算法的實(shí)現(xiàn)可以縮減我們編寫(xiě)代碼的長(zhǎng)度,這可以節(jié)省一些時(shí)間。但是,與此相對(duì)的,使用STL要在效率上做出一些犧牲,對(duì)于輸入規(guī)模很大的題目,有時(shí)候必須放棄STL,這意味著我們不能存在“有了STL就可以不去管基本算法的實(shí)現(xiàn)”的想法;另外,熟練和恰當(dāng)?shù)厥褂肧TL必須經(jīng)過(guò)一定時(shí)間的積累,準(zhǔn)確地了解各種操作的時(shí)間復(fù)雜度,切忌對(duì)STL中不熟悉的部分濫用,因?yàn)檫@其中蘊(yùn)涵著許多初學(xué)者不易發(fā)現(xiàn)的陷阱。
通過(guò)以上的分析,我們可以看出僅就信息學(xué)競(jìng)賽而言,對(duì)語(yǔ)言的掌握并不要求十分全面,但是對(duì)于經(jīng)常用到的部分,必須十分熟練,不允許有半點(diǎn)不清楚的地方,下面我舉個(gè)真實(shí)的例子來(lái)說(shuō)明這個(gè)道理——即使是一點(diǎn)很細(xì)微的語(yǔ)言障礙,都有可能釀成錯(cuò)誤:
在去年清華的賽區(qū)上,有一個(gè)隊(duì)在做F題的時(shí)候使用了cout和printf的混合輸出,由于一個(gè)帶緩沖一個(gè)不帶,所以輸出一長(zhǎng)就混亂了。只是因?yàn)楫?dāng)時(shí)judge team中負(fù)責(zé)F題的人眼睛尖,看出答案沒(méi)錯(cuò)只是順序不對(duì)(答案有一頁(yè)多,是所有題目中最長(zhǎng)的一個(gè)輸出),又看了看程序發(fā)現(xiàn)只是輸出問(wèn)題就給了個(gè)Presentation error(格式錯(cuò))。如果審題的人不是這樣而是直接給一個(gè) Wrong Answer,相信這個(gè)隊(duì)是很難查到自己錯(cuò)在什么地方的。
現(xiàn)在我們轉(zhuǎn)入第二個(gè)方面的討論,基礎(chǔ)學(xué)科知識(shí)的積累。
二、以數(shù)學(xué)為主的基礎(chǔ)知識(shí)十分重要
雖然被定性為程序設(shè)計(jì)競(jìng)賽,但是參賽選手所遇到的問(wèn)題更多的是沒(méi)有解決問(wèn)題的思路,而不是有了思路卻死活不能實(shí)現(xiàn),這就是平時(shí)積累的基礎(chǔ)知識(shí)不夠。今年World Final的總冠軍是波蘭華沙大學(xué),其成員出自于數(shù)學(xué)系而非計(jì)算機(jī)系,這就是一個(gè)鮮活的例子。競(jìng)賽中對(duì)于基礎(chǔ)學(xué)科的涉及主要集中于數(shù)學(xué),此外對(duì)于物理、電路等等也可能有一定應(yīng)用,但是不多。因此,大一的同學(xué)也不必為自己還沒(méi)學(xué)數(shù)據(jù)結(jié)構(gòu)而感到不知從何入手提高,把數(shù)學(xué)撿起來(lái)吧!下面我來(lái)談?wù)勗诟?jìng)賽中應(yīng)用的數(shù)學(xué)的主要分支。
1、離散數(shù)學(xué)——作為計(jì)算機(jī)學(xué)科的基礎(chǔ),離散數(shù)學(xué)是競(jìng)賽中涉及最多的數(shù)學(xué)分支,其重中之重又在于圖論和組合數(shù)學(xué),尤其是圖論。
圖論之所以運(yùn)用最多是因?yàn)樗淖兓疃?,而且可以輕易地結(jié)合基本數(shù)據(jù)結(jié)構(gòu)和許多算法的基本思想,較多用到的知識(shí)包括連通性判斷、DFS和BFS,關(guān)節(jié)點(diǎn)和關(guān)鍵路徑、歐拉回路、最小生成樹(shù)、最短路徑、二部圖匹配和網(wǎng)絡(luò)流等等。雖然這部分的比重很大,但是往往也是競(jìng)賽中的難題所在,如果有初學(xué)者對(duì)于這部分的某些具體內(nèi)容暫時(shí)感到力不從心,也不必著急,可以慢慢積累。
競(jìng)賽中設(shè)計(jì)的組合計(jì)數(shù)問(wèn)題大都需要用組合數(shù)學(xué)來(lái)解決,組合數(shù)學(xué)中的知識(shí)相比于圖論要簡(jiǎn)單一些,很多知識(shí)對(duì)于小學(xué)上過(guò)奧校的同學(xué)來(lái)說(shuō)已經(jīng)十分熟悉,但是也有一些部分需要先對(duì)代數(shù)結(jié)構(gòu)中的群論有初步了解才能進(jìn)行學(xué)習(xí)。組合數(shù)學(xué)在競(jìng)賽中很少以難題的形式出現(xiàn),但是如果積累不夠,任何一道這方面的題目卻都有可能成為難題。
2、數(shù)論——以素?cái)?shù)判斷和同余為模型構(gòu)造出來(lái)的題目往往需要較多的數(shù)論知識(shí)來(lái)解決,這部分在競(jìng)賽中的比重并不大,但只要來(lái)上一道,也足以使知識(shí)不足的人冥思苦想上一陣時(shí)間。素?cái)?shù)判斷和同余最常見(jiàn)的是在以密碼學(xué)為背景的題目中出現(xiàn),在運(yùn)用密碼學(xué)常識(shí)確定大概的過(guò)程之后,核心算法往往要涉及數(shù)論的內(nèi)容。
3、計(jì)算幾何——計(jì)算幾何相比于其它部分來(lái)說(shuō)是比較獨(dú)立的,就是說(shuō)它和其它的知識(shí)點(diǎn)很少有過(guò)多的結(jié)合,較常用到的部分包括——線段相交的判斷、多邊形面積的計(jì)算、內(nèi)點(diǎn)外點(diǎn)的判斷、凸包等等。計(jì)算幾何的題目難度不會(huì)很大,但也永遠(yuǎn)不會(huì)成為最弱的題。
4、線性代數(shù)——對(duì)線性代數(shù)的應(yīng)用都是圍繞矩陣展開(kāi)的,一些表面上是模擬的題目往往可以借助于矩陣來(lái)找到更好的算法。
5、概率論——競(jìng)賽是以黑箱來(lái)判卷的,這就是說(shuō)你幾乎不能動(dòng)使用概率算法的念頭,但這也并不是說(shuō)概率就沒(méi)有用。關(guān)于這一點(diǎn),只有通過(guò)一定的練習(xí)才能體會(huì)。
6、初等數(shù)學(xué)與解析幾何——這主要就是中學(xué)的知識(shí)了,用的不多,但是至少比高等數(shù)學(xué)多,我覺(jué)得熟悉一下數(shù)學(xué)手冊(cè)上的相關(guān)內(nèi)容,至少要知道在哪兒能查到,還是必要的。
7、高等數(shù)學(xué)——純粹運(yùn)用高等數(shù)學(xué)來(lái)解決的題目我接觸的只有一道,但是一些題目的敘述背景往往需要和這部分有一定聯(lián)系,掌握得牢固一些總歸沒(méi)有壞處。
以上就是競(jìng)賽所涉及的數(shù)學(xué)領(lǐng)域,可以說(shuō)范圍是相當(dāng)廣的。我認(rèn)識(shí)的許多人去搞信息學(xué)的競(jìng)賽就是為了逼著自己多學(xué)一點(diǎn)數(shù)學(xué),因?yàn)閿?shù)學(xué)是一切一切的基礎(chǔ)。
三、數(shù)據(jù)結(jié)構(gòu)與算法是真正的核心
雖然數(shù)學(xué)十分十分重要,但是如果讓三個(gè)只會(huì)數(shù)學(xué)的人參加比賽,我相信多數(shù)情況下會(huì)比三個(gè)只會(huì)數(shù)據(jù)結(jié)構(gòu)與算法的人得到更為悲慘的結(jié)局。
先說(shuō)說(shuō)數(shù)據(jù)結(jié)構(gòu)。掌握隊(duì)列、堆棧和圖的基本表達(dá)與操作是必需的,至于樹(shù),我個(gè)人覺(jué)得需要建樹(shù)的問(wèn)題有但是并不多。(但是樹(shù)往往是很重要的分析工具)除此之外,排序和查找并不需要對(duì)所有方式都能很熟練的掌握,但你必須保證自己對(duì)于各種情況都有一個(gè)在時(shí)間復(fù)雜度上滿足最低要求的解決方案。說(shuō)到時(shí)間復(fù)雜度,就又該說(shuō)說(shuō)哈希表了,競(jìng)賽時(shí)對(duì)時(shí)間的限制遠(yuǎn)遠(yuǎn)多于對(duì)空間的限制,這要求大家盡快掌握“以空間換時(shí)間”的原則策略,能用哈希表來(lái)存儲(chǔ)的數(shù)據(jù)一定不要到時(shí)候再去查找,如果實(shí)在不能建哈希表,再看看能否建二叉查找樹(shù)等等——這都是爭(zhēng)取時(shí)間的策略,掌握這些技巧需要大家對(duì)數(shù)據(jù)結(jié)構(gòu)尤其是算法復(fù)雜度有比較全面的理性和感性認(rèn)識(shí)。
接著說(shuō)說(shuō)算法。算法中最基本和常用的是搜索,主要是回溯和分支限界法的使用。這里要說(shuō)的是,有些初學(xué)者在學(xué)習(xí)這些搜索基本算法是不太注意剪枝,這是十分不可取的,因?yàn)樗兴阉鞯念}目給你的測(cè)試用例都不會(huì)有很大的規(guī)模,你往往察覺(jué)不出程序運(yùn)行的時(shí)間問(wèn)題,但是真正的測(cè)試數(shù)據(jù)一定能過(guò)濾出那些沒(méi)有剪枝的算法。實(shí)際上參賽選手基本上都會(huì)使用常用的搜索算法,題目的區(qū)分度往往就是建立在諸如剪枝之類的優(yōu)化上了。
常用算法中的另一類是以“相似或相同子問(wèn)題”為核心的,包括遞推、遞歸、貪心法和動(dòng)態(tài)規(guī)劃。這其中比較難于掌握的就是動(dòng)態(tài)規(guī)劃,如何抽象出重復(fù)的子問(wèn)題是很多題目的難點(diǎn)所在,筆者建議初學(xué)者仔細(xì)理解圖論中一些以動(dòng)態(tài)規(guī)劃為基本思想所建立起來(lái)的基本算法(比如Floyd-Warshall算法),并且多閱讀一些定理的證明,這雖然不能有什么直接的幫助,但是長(zhǎng)期堅(jiān)持就會(huì)對(duì)思維很有幫助。
四、團(tuán)隊(duì)配合
通過(guò)以上的介紹大家也可以看出,信息學(xué)競(jìng)賽對(duì)于知識(shí)面覆蓋的非常廣,想憑一己之力全部消化這些東西實(shí)在是相當(dāng)困難的,這就要求我們盡可能地發(fā)揮團(tuán)隊(duì)協(xié)作的精神。同組成員之間的熟練配合和默契的形成需要時(shí)間,具體的情況因成員的組成不同而不同,這里我就不再多說(shuō)了。
五、練習(xí)、練習(xí)、再練習(xí)
知識(shí)的積累固然重要,但是信息學(xué)終究不是看出來(lái)的,而是練出來(lái)的,這是多少前人最深的一點(diǎn)體會(huì),只有通過(guò)具體題目的分析和實(shí)踐,才能真正掌握數(shù)學(xué)的使用和算法的應(yīng)用,并在不斷的練習(xí)中增加編程經(jīng)驗(yàn)和技巧,提高對(duì)時(shí)間復(fù)雜度的感性認(rèn)識(shí),優(yōu)化時(shí)間的分配,加強(qiáng)團(tuán)隊(duì)的配合。總之,在這里光有紙上談兵是絕對(duì)不行的,必須要通過(guò)實(shí)戰(zhàn)來(lái)鍛煉自己。
大家一定要問(wèn),我們?nèi)ツ睦镎翌}做,又如何檢驗(yàn)程序是否正確呢?這大可不必?fù)?dān)心,現(xiàn)在已經(jīng)有了很多網(wǎng)上做題的站點(diǎn),這些站點(diǎn)提供了大量的題庫(kù)并支持在線判卷,你只需要把程序源碼提交上去,馬上就可以知道自己的程序是否正確,運(yùn)行所使用的時(shí)間以及消耗的內(nèi)存等等狀況。下面我給大家推薦幾個(gè)站點(diǎn),筆者不建議大家在所有這些站點(diǎn)上做題,選擇一個(gè)就可以了,因?yàn)槊總€(gè)站點(diǎn)的題都有一定的難易比例,系統(tǒng)地做一套題庫(kù)可以使你對(duì)各種難度、各種類型的題都有所認(rèn)識(shí)。
1、Ural:
Ural是中國(guó)學(xué)生對(duì)俄羅斯的Ural州立大學(xué)的簡(jiǎn)稱,那里設(shè)立了一個(gè)Ural Online Problem Set,并且支持Online Judge。Ural的不少題目算法性和趣聞性都很強(qiáng),得到了國(guó)內(nèi)廣大學(xué)生的厚愛(ài)。根據(jù)“信息學(xué)初學(xué)者之家”網(wǎng)站的統(tǒng)計(jì),Ural的題目類型大概呈如下的分布:
題型 搜索 動(dòng)態(tài)規(guī)劃 貪心 構(gòu)造 圖論 計(jì)算幾何 純數(shù)學(xué)問(wèn)題 數(shù)據(jù)結(jié)構(gòu) 其它
所占比例 約10% 約15% 約5% 約5% 約10% 約5% 約20% 約5% 約25%
這和實(shí)際比賽中的題型分布也是大體相當(dāng)?shù)?。有興趣的朋友可以去看看。
2、UVA:
UVA代表西班牙Valladolid大學(xué)(University de Valladolid)。該大學(xué)有一個(gè)那里設(shè)立了一個(gè)PROBLEM SET ARCHIVE with ONLINE JUDGE,并且支持ONLINE JUDGE,形式和Ural大學(xué)的題庫(kù)類似。不過(guò)和Ural不同的是,UVA題目多的多,而且比較雜,而且有些題目的測(cè)試數(shù)據(jù)比較刁鉆。這使得剛到那里做題的朋友往往感覺(jué)到無(wú)所適從,要么難以找到合適的題目,要么Wrong Answer了很多次以后仍然不知道錯(cuò)在那里。如果說(shuō)做Ural題目主要是為了訓(xùn)練算法,那么UVA題目可以訓(xùn)練全方位的基本功和一些必要的編程素質(zhì)。UVA和許多世界知名大學(xué)聯(lián)合辦有同步網(wǎng)上比賽,因此那里強(qiáng)人無(wú)數(shù),不過(guò)你先要使自己具有聽(tīng)懂他們?cè)谡f(shuō)什么的素質(zhì):)
3、ZOJ:
ZOJ是浙江大學(xué)建立的ONLINE JUDGE,是中國(guó)大學(xué)建立的第一個(gè)同類站點(diǎn),也是最好和人氣最高的一個(gè),筆者和許多班里的同學(xué)就是在這里練習(xí)。ZOJ雖然也定位為一個(gè)英文網(wǎng)站,但是這里的中國(guó)學(xué)生比較多,因此讓人覺(jué)得很親切。這里目前有500多道題目,難易分配適中,且涵蓋了各大洲的題目類型并配有索引,除此之外,ZOJ的JUDGE系統(tǒng)是幾個(gè)網(wǎng)站中表現(xiàn)得比較好的一個(gè),很少出現(xiàn)Wrong Answer和Presentation error混淆的情況。這里每月也辦有一次網(wǎng)上比賽,只要是注冊(cè)的用戶都可以參加。
說(shuō)起中國(guó)的ONLINE JUDGE,去年才開(kāi)始參加ACM競(jìng)賽的北京大學(xué)現(xiàn)在也建立了自己的提交系統(tǒng);而我們學(xué)校也是去年開(kāi)始參加比賽,現(xiàn)在也有可能推出自己的提交系統(tǒng),如果能夠做成,到時(shí)候大家就可以去上面做題了。同類網(wǎng)站的飛速發(fā)展標(biāo)志著有越來(lái)越多的同學(xué)有興趣進(jìn)入信息學(xué)的領(lǐng)域探索,這是一件好事,同時(shí)也意味著更激烈的競(jìng)爭(zhēng)。