怎么正確有效的學(xué)習(xí)計(jì)算機(jī)語(yǔ)言
怎么正確有效的學(xué)習(xí)計(jì)算機(jī)語(yǔ)言
無(wú)論對(duì)于何種計(jì)算機(jī)編程語(yǔ)言,其核心編程思想都是一樣的,所以想要學(xué)好計(jì)算機(jī)語(yǔ)言需要找到正確的學(xué)習(xí)方法。那么怎么正確有效的學(xué)習(xí)計(jì)算機(jī)語(yǔ)言?以下是學(xué)習(xí)啦小編分享給大家的學(xué)習(xí)計(jì)算機(jī)語(yǔ)言的方法,希望可以幫到你!
學(xué)習(xí)計(jì)算機(jī)語(yǔ)言的方法
學(xué)練相結(jié)合
在學(xué)習(xí)新知識(shí)的同時(shí),充分利用身邊的電腦,做到邊學(xué)新知識(shí)邊上機(jī)操作練習(xí),這樣對(duì)于加強(qiáng)知識(shí)的穩(wěn)固具有十分重要的作用。
深入學(xué)習(xí)細(xì)節(jié)過(guò)程中,對(duì)于電腦編程的學(xué)習(xí),即要從整體把握,又要深入細(xì)節(jié)當(dāng)中,了解并掌握知識(shí)的核心理念。
努力學(xué)好一門(mén)計(jì)算機(jī)編程語(yǔ)言。根據(jù)電腦編程語(yǔ)言的相通性,當(dāng)充分掌握一門(mén)計(jì)算機(jī)編輯語(yǔ)言后,對(duì)于其它語(yǔ)言的掌握時(shí)間將明顯減少。
最好先從低層(級(jí))語(yǔ)言學(xué)起,這樣就可以有效的掌握計(jì)算機(jī)的硬件低層知識(shí),從而為更高級(jí)語(yǔ)言的學(xué)習(xí)打下良好的基礎(chǔ)。
嘗試自己編寫(xiě)若干個(gè)功能模塊,從而加強(qiáng)對(duì)計(jì)算機(jī)編程語(yǔ)言基礎(chǔ)能力的加強(qiáng)以及應(yīng)用,并為新知識(shí)的學(xué)習(xí)奠定基礎(chǔ)。
向別人學(xué)習(xí),多看看別人寫(xiě)的代碼,了解應(yīng)用計(jì)算機(jī)編程解決問(wèn)題的通用方法,從中提煉解決問(wèn)題的通用方法。
學(xué)好C語(yǔ)言的建議
要讀就讀好書(shū),否則不如不讀
所有初學(xué)者面臨的第一個(gè)問(wèn)題便是:如何選擇教材。好的開(kāi)始是成功的一半,選擇一本優(yōu)秀的教材是事半功倍的關(guān)鍵因素。不幸的是,學(xué)校通常會(huì)幫你指定一本很差勁的C語(yǔ)言課本;而幸運(yùn)的是,你還可以再次選擇。
有興趣大家可以百度一下:)Kernighan和Ritchie的《The C Programming Language》(中譯名《C程序設(shè)計(jì)語(yǔ)言》)堪稱經(jīng)典中的經(jīng)典,不過(guò)舊版的很多內(nèi)容都已過(guò)時(shí),和現(xiàn)在的標(biāo)準(zhǔn)C語(yǔ)言相去甚遠(yuǎn),大家一定要看最新的版本,否則不如不看。另外,即使是最經(jīng)典最權(quán)威的書(shū),也沒(méi)有辦法面面俱到,所以手邊常備一本《C語(yǔ)言參考手冊(cè)》是十分必要的。《C語(yǔ)言參考手冊(cè)》就是《C Reference Manual》,是C語(yǔ)言標(biāo)準(zhǔn)的詳細(xì)描述,包括絕大多數(shù)C標(biāo)準(zhǔn)庫(kù)函數(shù)的細(xì)節(jié),算得上是最好的標(biāo)準(zhǔn)C語(yǔ)言的工具書(shū)。
順便提一句,最新的《C程序設(shè)計(jì)語(yǔ)言》是根據(jù)C89標(biāo)準(zhǔn)修訂的,而《C語(yǔ)言參考手冊(cè)》描述的是C99標(biāo)準(zhǔn),二者可能會(huì)有些出入,建議按照C99標(biāo)準(zhǔn)學(xué)習(xí)。還有一本《C和指針》,寫(xiě)得也是相當(dāng)?shù)夭诲e(cuò),英文名是《Pointerson C》,特別地強(qiáng)調(diào)指針的重要性,算是本書(shū)的一個(gè)特點(diǎn)吧。不過(guò)這本書(shū)并不十分適合初學(xué)者,如果你曾經(jīng)學(xué)過(guò)C語(yǔ)言,有那么一些C語(yǔ)言的基礎(chǔ)但又不是很扎實(shí),那么你可以嘗試一下這本書(shū)。我相信,只要你理解了指針,C語(yǔ)言便不再神秘。
如果你已經(jīng)啃完了一本C語(yǔ)言教材,想要更進(jìn)一步,那么有兩本書(shū)你一定要看。首先是《C Traps and Pitfalls》(中譯名《C陷井與缺陷》),很薄的一本小冊(cè)子,內(nèi)容非常非常地有趣。要注意一點(diǎn),這本書(shū)是二十多年前寫(xiě)成的,里面提到的很多C語(yǔ)言的缺陷都已被改進(jìn),不過(guò)能夠了解一些歷史也不是什么壞事。然后你可以挑戰(zhàn)一下《Expert C Programming》(中譯名《C專家編程》),書(shū)如其名,這本書(shū)頗具難度,一旦你仔細(xì)讀完并能透徹理解,你便可以放心大膽地在簡(jiǎn)歷上寫(xiě)“精通C語(yǔ)言”了。
切記一個(gè)原則,不要讀自己目前還看不懂的書(shū),那是浪費(fèi)生命。如果你看不懂,那你一定是缺失了某些必需基礎(chǔ)知識(shí)。此時(shí),你要仔細(xì)分析自己需要補(bǔ)充哪些內(nèi)容,然后再去書(shū)店尋找講述的這些內(nèi)容的書(shū)籍。把基礎(chǔ)知識(shí)補(bǔ)充完畢再回頭來(lái)學(xué)習(xí),才會(huì)真正的事半功倍。
Unix/Linux還是Windows,這是個(gè)很大的問(wèn)題
不同的編程環(huán)境會(huì)造就出不同思維的程序員。Windows的程序員大多依賴集成開(kāi)發(fā)環(huán)境,比如Visual Studio,而Unix程序員更加鐘愛(ài)Makefile與控制臺(tái)。顯而易見(jiàn),集成開(kāi)發(fā)環(huán)境更容易上手,在Windows上學(xué)習(xí)C語(yǔ)言,只需要會(huì)按幾個(gè)基本的Visutal C++工具欄按鈕就可以開(kāi)始寫(xiě)Hello, World!了,而在Unix下,你需要一些控制臺(tái)操作的基本知識(shí)。有人也許認(rèn)為Unix的環(huán)境更簡(jiǎn)潔,但習(xí)慣的力量是很大的,大家都很熟悉Windows的基本操作,而為了學(xué)習(xí)C語(yǔ)言去專門(mén)裝一個(gè)Unix系統(tǒng),似乎有點(diǎn)不劃算。
對(duì)于一個(gè)只懂得Windows基本操作、連DOS是什么都不知道的新手而言,盡快做一些有趣而有意義的事情才是最重要的。用C語(yǔ)言寫(xiě)一個(gè)小程序遠(yuǎn)比學(xué)習(xí)ls、cat等命令有趣,況且我們要專注于C語(yǔ)言本身,就不得不暫時(shí)忽略一些東西,比如編譯鏈接的過(guò)程、Makefile的寫(xiě)法等等等等。
所以我建議初學(xué)者應(yīng)該以Visual C++ 6.0(不是VisualC++ .NET)或者Dev C++作為主要的學(xué)習(xí)環(huán)境,而且千萬(wàn)不要在IDE的使用技巧上過(guò)多糾纏,因?yàn)榻窈竽阋欢ㄒD(zhuǎn)向Unix環(huán)境的。Visual C++ 6.0使用很方便,調(diào)試也很直觀,但其默認(rèn)的編譯器對(duì)C標(biāo)準(zhǔn)的支持并不好,而Dev C++使用gcc編譯器,對(duì)C99的標(biāo)準(zhǔn)都支持良好。使用順帶提一下,很多大學(xué)的C語(yǔ)言課程還在使用Turbo C 2.0作為實(shí)驗(yàn)環(huán)境,這是相當(dāng)不可取的,原因其一是TC 2.0對(duì)C標(biāo)準(zhǔn)幾乎沒(méi)有支持,其二是TC 2.0編譯得到的程序是16位的,這對(duì)今后理解32位的程序會(huì)造成極大的困擾(當(dāng)然,用djgpp之類(lèi)的東西可以使TC 2.0編譯出32位程序,不過(guò)那過(guò)于復(fù)雜了)。
等你學(xué)完一本C語(yǔ)言的教材,你一定要轉(zhuǎn)向Unix平臺(tái)繼續(xù)學(xué)習(xí),幾乎所有的C語(yǔ)言高級(jí)教程都是基于Unix平臺(tái)的(比如《C專家編程》)。轉(zhuǎn)變的過(guò)程是痛苦的,你需要面對(duì)的是各種紛繁復(fù)雜的命令,完全不同于Windows平臺(tái)的思考方式,但是這種痛苦是值得的。Unix與C是共生的,Unix的思考方式和習(xí)慣更加符合C語(yǔ)言的思考方式和習(xí)慣。在Unix下,你可以找到無(wú)數(shù)優(yōu)秀的源代碼供你盡情閱讀,你可以方便地查看某個(gè)庫(kù)函數(shù)的聯(lián)機(jī)手冊(cè),還可以看到最優(yōu)秀的代碼風(fēng)格(說(shuō)到代碼風(fēng)格,我會(huì)專門(mén)寫(xiě)一篇文章詳細(xì)敘述)。歸結(jié)起來(lái)就是一句話:初學(xué)C語(yǔ)言,建議使用Windows系統(tǒng)和集成開(kāi)發(fā)環(huán)境,在準(zhǔn)備向“高手”方向努力時(shí),請(qǐng)先轉(zhuǎn)向Unix平臺(tái)。
萬(wàn)事俱備,你就是東風(fēng)
書(shū)已選定,環(huán)境配置完成,正所謂萬(wàn)事俱備,只欠你自己的努力了。請(qǐng)從書(shū)的前言開(kāi)始,仔細(xì)地閱讀手頭的教材,很多人看書(shū)喜歡直接從第一章開(kāi)始看,這是錯(cuò)誤的做法。前言是作者對(duì)整本書(shū)的大體介紹,作者一般會(huì)告訴你需要什么基礎(chǔ)才能夠順利閱讀本書(shū),這可以幫助你檢驗(yàn)自己的基礎(chǔ)知識(shí)是否已經(jīng)具備??赐昵把裕€要瀏覽一下目錄,了解一下書(shū)的整體結(jié)構(gòu),順便給自己安排一下學(xué)習(xí)計(jì)劃。學(xué)習(xí)C語(yǔ)言,必需注意每一個(gè)細(xì)節(jié),書(shū)上的例子代碼一定要自己親自敲一遍,編譯執(zhí)行輸出都跟書(shū)上說(shuō)的一致才能算是學(xué)完了一個(gè)例子,如果不一致,就要仔細(xì)找原因。出了書(shū)本上有的例子,自己還要“創(chuàng)造”一些例子,比如學(xué)習(xí)運(yùn)算符優(yōu)先級(jí)的時(shí)候,可以寫(xiě)幾個(gè)相同的表達(dá)式,在不同的位置加上括號(hào),看看有哪些不同的行為,比如*p++和(*p)++,又比如a = b == c、(a = b) == c和a = (b == c)等等。自己抄的書(shū)上的例子以及改造之后的例子,還有自己“創(chuàng)造”的例子,都應(yīng)該仔細(xì)地歸類(lèi)保存,并且要在源代碼中寫(xiě)上簡(jiǎn)短的注釋,闡述這個(gè)例子的意圖。
例子之后就是習(xí)題了,我建議初學(xué)者把所有的習(xí)題都獨(dú)立做一遍,然后對(duì)照答案的代碼,看看自己的代碼有那些不足,再試著修改自己的代碼。很多人不重視習(xí)題,這是極大的錯(cuò)誤,因?yàn)樽髡咄ǔ?huì)在習(xí)題中說(shuō)明一些重要的道理,而不是單純地檢驗(yàn)前面的知識(shí)。也許你認(rèn)為這樣學(xué)習(xí)太慢,其實(shí)不然。學(xué)得細(xì)致就不用走回頭路,等你學(xué)到后面才發(fā)現(xiàn)自己前面沒(méi)搞清楚,那才是真的得不償失。一般說(shuō)來(lái),整本書(shū)讀完,你應(yīng)該完成數(shù)千行乃至上萬(wàn)行的代碼,無(wú)論是原封不動(dòng)照抄書(shū)上的,還是自己心血來(lái)潮寫(xiě)就的,都是今后繼續(xù)學(xué)習(xí)的一筆財(cái)富。以我自己舉例,閱讀《Windows核心編程》時(shí)(我只閱讀了3/4的內(nèi)容),除了抄書(shū)上的代碼,還自己寫(xiě)了很多例子,一共有5574行(用unix下的wc工具統(tǒng)計(jì)),時(shí)隔多日,我早已記不清Windows的系統(tǒng)編程了,但只要花幾分鐘翻出以前的代碼看看,便會(huì)重新了然于胸。所謂好記性不如爛筆頭,就是這個(gè)道理。
仔細(xì)讀書(shū)、認(rèn)真抄寫(xiě)源代碼、獨(dú)立完成習(xí)題外加更進(jìn)一步的實(shí)驗(yàn),最后將所有的代碼留下,成為自己的經(jīng)驗(yàn)和財(cái)富,絕對(duì)的辛苦,也絕對(duì)的事半功倍。當(dāng)然,這種方式只適合學(xué)習(xí)需要精通的技術(shù),如果不是學(xué)習(xí)C語(yǔ)言,你還要具體情況具體分析。還有非常非常重要的一點(diǎn)沒(méi)有提及──代碼風(fēng)格。從最開(kāi)始學(xué)習(xí)就必須強(qiáng)迫自己模仿最優(yōu)秀的代碼風(fēng)格。因?yàn)榇a風(fēng)格太重要內(nèi)容也太多,我會(huì)用專門(mén)的一篇文章來(lái)詳細(xì)討論,請(qǐng)大家關(guān)注《程序員之路──關(guān)于代碼風(fēng)格》。
題目是關(guān)于C語(yǔ)言,其實(shí)我主要想說(shuō)說(shuō)程序該怎么學(xué),或者一點(diǎn)感悟罷了,在這里,我只想引用身邊的幾個(gè)人的例子,來(lái)談一下對(duì)程序?qū)W習(xí)的理解,我對(duì)程序產(chǎn)生興趣,是聽(tīng)說(shuō)程序可以作游戲,那時(shí)候是在初一,然而借來(lái)一本G-BASIC簡(jiǎn)明教材后,我便傻了眼,陌生的詞匯,古怪的邏輯,都是些天文的中文譯本,頭疼了好一陣子。然而當(dāng)時(shí)又沒(méi)有別的閑書(shū)可看,我就整天捧著那一本書(shū),什么方法都試過(guò)了,甚至倒著看過(guò)了,都沒(méi)看出什么眉目,自己又沒(méi)有電腦,只能不停地大膽地想象,然后滿腦子的疑惑……
在這里停一下,上面說(shuō)的便是我學(xué)習(xí)的風(fēng)格:總要經(jīng)歷一番波折,瞎折騰幾下,然后才會(huì)有偶然間的明悟-開(kāi)竅了!我甚至沒(méi)見(jiàn)過(guò)幾個(gè)人有我這么笨,現(xiàn)在明白過(guò)來(lái)了,我總是一開(kāi)始把事情想得過(guò)于復(fù)雜,造成狗咬刺猬的難堪的局面,然而竟然有意想不到的收獲!但是不建議大家模仿這種風(fēng)格,起碼追女朋友的時(shí)候不能這樣,生活中很多機(jī)會(huì)在于接手的那一瞬間,失去就永遠(yuǎn)找不回來(lái)了。
現(xiàn)在回來(lái),后來(lái)偶然間,我看懂了一行代碼,是print 語(yǔ)句,當(dāng)時(shí)興奮得要命,又仔細(xì)看了這個(gè)看了那個(gè),一下子看懂了很多東西,像是在霎那間被什么給擊中似的,立刻間醍醐灌頂。。。。
初三在學(xué)校學(xué)了FOXBASE,基本上自學(xué)的,我發(fā)現(xiàn)了一件奇怪的事,我這人是出了名的記性不好,然而當(dāng)時(shí)背程序中的命令卻是過(guò)目不忘,到現(xiàn)在還記得很多,也許是感興趣吧,也感謝我的微機(jī)老師給我提供自由上機(jī)的機(jī)會(huì)!后來(lái)我又自學(xué)了QBASIC,初四暑假又學(xué)了一點(diǎn)C,那時(shí)學(xué)C遇到不少困難,當(dāng)時(shí)我們學(xué)校機(jī)房連C語(yǔ)言都沒(méi)有,我只好悶在家里,一本二級(jí)C教材,一本配套習(xí)題,整天發(fā)呆地想,把自己的腦袋當(dāng)電腦cpu使,有時(shí)進(jìn)入死循環(huán),有時(shí)又徹底崩潰。我花十幾天看完了一本書(shū),做完了一本題,然而腦袋里充滿了疑惑,由于沒(méi)有上機(jī)實(shí)踐的機(jī)會(huì),我就憑自己的猜測(cè)與推理己慢慢建立了一大堆理論,十分得意與自信,但后來(lái)證明大部分是錯(cuò)的,害我花了很長(zhǎng)時(shí)間去糾正,這是后話??墒牵€是那句話不破不立,不阻不行。就像我現(xiàn)在有了電腦,整天泡在互聯(lián)網(wǎng)的海洋里,感受著快餐文化,好久都沒(méi)靜下心來(lái)好好想點(diǎn)東西了.
高中還上過(guò)幾節(jié)電腦課,只不過(guò)忙于應(yīng)付高考,我將學(xué)程序的打算放棄了,到這里我該說(shuō)下一個(gè)人了。高中時(shí)坐我旁邊一女生,她的文曲星里有BASIC,我偶爾拿過(guò)來(lái)編了幾個(gè)小程序玩,她看到后很感興趣,令人驚訝的是,她只看了三五個(gè)程序,聽(tīng)我講了幾個(gè)命令的功能,就能根據(jù)自己的想象編出小動(dòng)畫(huà)來(lái),她此前是絕沒(méi)有學(xué)過(guò)程序的!我曾一度懷疑過(guò)她的智商,然而她程序是如此之快,卻讓我的眼都瞪大了好幾圈,比我當(dāng)年高了好幾個(gè)境界!我后來(lái)經(jīng)常在想,是不是我當(dāng)時(shí)的方法不對(duì),程序到底應(yīng)該怎樣學(xué)。。。
一晃就到了大學(xué),我碰到另一個(gè)讓我佩服的人,跟我一樣是學(xué)計(jì)算機(jī)的,他是偶爾看到我在編動(dòng)畫(huà),然后十分感興趣,便開(kāi)始自學(xué)。他令人吃驚的是,指針,結(jié)構(gòu)體,位運(yùn)算等等,都沒(méi)搞懂(更不用說(shuō)算法和數(shù)據(jù)結(jié)構(gòu)),只學(xué)了三種程序結(jié)構(gòu),現(xiàn)在只學(xué)了C半年,便自己能編出貪吃蛇,俄羅斯方塊,掃雷,還有很多叫不出名字的小游戲來(lái),現(xiàn)在又在寫(xiě)黑白棋,我知道我確實(shí)是走了不少?gòu)澛贰?/p>
計(jì)算機(jī)編程語(yǔ)言C++ 語(yǔ)言淺析
C++是C語(yǔ)言的繼承,它既可以進(jìn)行C語(yǔ)言的過(guò)程化程序設(shè)計(jì),又可以進(jìn)行以抽象數(shù)據(jù)類(lèi)型為特點(diǎn)的基于對(duì)象的程序設(shè)計(jì),還可以進(jìn)行以繼承和多態(tài)為特點(diǎn)的面向?qū)ο蟮某绦蛟O(shè)計(jì)。C++擅長(zhǎng)面向?qū)ο蟪绦蛟O(shè)計(jì)的同時(shí),還可以進(jìn)行基于過(guò)程的程序設(shè)計(jì),因而C++就適應(yīng)的問(wèn)題規(guī)模而論,大小由之。
C++不僅擁有計(jì)算機(jī)高效運(yùn)行的實(shí)用性特征,同時(shí)還致力于提高大規(guī)模程序的編程質(zhì)量與程序設(shè)計(jì)語(yǔ)言的問(wèn)題描述能力。
一、發(fā)展歷程
世界上第一種計(jì)算機(jī)高級(jí)語(yǔ)言是誕生于1954年的FORTRAN語(yǔ)言。之后出現(xiàn)了多種計(jì)算機(jī)高級(jí)語(yǔ)言。1970年,AT&T的Bell實(shí)驗(yàn)室的D.Ritchie和K.Thompson共同發(fā)明了C語(yǔ)言。研制C語(yǔ)言的初衷是用它編寫(xiě)UNIX系統(tǒng)程序,因此,它實(shí)際上是UNIX的“副產(chǎn)品”。它充分結(jié)合了匯編語(yǔ)言和高級(jí)語(yǔ)言的優(yōu)點(diǎn),高效而靈活,又容易移植。
1971年,瑞士聯(lián)邦技術(shù)學(xué)院N.Wirth教授發(fā)明了Pascal語(yǔ)言。Pascal語(yǔ)言語(yǔ)法嚴(yán)謹(jǐn),層次分明,程序易寫(xiě),具有很強(qiáng)的可讀性,是第一個(gè)結(jié)構(gòu)化的編程語(yǔ)言。
20世紀(jì)70年代中期,Bjarne Stroustrup在劍橋大學(xué)計(jì)算機(jī)中心工作。他使用過(guò)Simula和ALGOL,接觸過(guò)C。他對(duì)Simula的類(lèi)體系感受頗深,對(duì)ALGOL的結(jié)構(gòu)也很有研究,深知運(yùn)行效率的意義。既要編程簡(jiǎn)單、正確可靠,又要運(yùn)行高效、可移植,是Bjarne Stroustrup的初衷。以C為背景,以Simula思想為基礎(chǔ),正好符合他的設(shè)想。1979年,Bjame Sgoustrup到了Bell實(shí)驗(yàn)室,開(kāi)始從事將C改良為帶類(lèi)的C(C with classes)的工作。1983年該語(yǔ)言被正式命名為C++。自從C++被發(fā)明以來(lái),它經(jīng)歷了3次主要的修訂,每一次修訂都為C++增加了新的特征并作了一些修改。第一次修訂是在1985年,第二次修訂是在1990年,而第三次修訂發(fā)生在c++的標(biāo)準(zhǔn)化過(guò)程中。在20世紀(jì)90年代早期,人們開(kāi)始為C++建立一個(gè)標(biāo)準(zhǔn),并成立了一個(gè)ANSI和ISO(Intemational Standards Organization)國(guó)際標(biāo)準(zhǔn)化組織的聯(lián)合標(biāo)準(zhǔn)化委員會(huì)。該委員會(huì)在1994年1月25曰提出了第一個(gè)標(biāo)準(zhǔn)化草案。在這個(gè)草案中,委員會(huì)在保持Stroustrup最初定義的所有特征的同時(shí),還增加了一些新的特征。
在完成C++標(biāo)準(zhǔn)化的第一個(gè)草案后不久,發(fā)生了一件事情使得C++標(biāo)準(zhǔn)被極大地?cái)U(kuò)展了:Alexander stepanov創(chuàng)建了標(biāo)準(zhǔn)模板庫(kù)(Standard Template Library,STL)。STL不僅功能強(qiáng)大,同時(shí)非常優(yōu)雅,然而,它也是非常龐大的。在通過(guò)了第一個(gè)草案之后,委員會(huì)投票并通過(guò)了將STL包含到C++標(biāo)準(zhǔn)中的提議。STL對(duì)C++的擴(kuò)展超出了C++的最初定義范圍。雖然在標(biāo)準(zhǔn)中增加STL是個(gè)很重要的決定,但也因此延緩了C++標(biāo)準(zhǔn)化的進(jìn)程。
委員會(huì)于1997年11月14日通過(guò)了該標(biāo)準(zhǔn)的最終草案,1998年,C++的ANSI/IS0標(biāo)準(zhǔn)被投入使用。通常,這個(gè)版本的C++被認(rèn)為是標(biāo)準(zhǔn)C++。所有的主流C++編譯器都支持這個(gè)版本的C++,包括微軟的Visual C++和Borland公司的C++Builder。
二、編程開(kāi)發(fā)
集成開(kāi)發(fā)環(huán)境(IDE)
Visual Studio (Visual C++)
C++ Builder
kDevelop
Anjuta
Code::Blocks:開(kāi)放源碼的全功能的跨平臺(tái)C/C++集成開(kāi)發(fā)環(huán)境。
Visual Mingw
Ideone
Eclipse CDT
Compilr
Code Lite
Netbeans C++
集成開(kāi)發(fā)環(huán)境(IDE),功能齊全,調(diào)試功能很強(qiáng),程序編好后,可以立刻在環(huán)境中調(diào)試以獲得初步測(cè)試結(jié)果,然后,可以方便地做成beta版形式,拿到實(shí)際環(huán)境中進(jìn)一步測(cè)試,最后做成軟件發(fā)行版。
編譯器
Dev C++
Ultimate++
Digital Mars
C-Free
MinGW
Tiny C Compiler
三、語(yǔ)言特點(diǎn)
支持?jǐn)?shù)據(jù)封裝和數(shù)據(jù)隱藏
在C++中,類(lèi)是支持?jǐn)?shù)據(jù)封裝的工具,對(duì)象則是數(shù)據(jù)封裝的實(shí)現(xiàn)。C++通過(guò)建立用戶定義類(lèi)支持?jǐn)?shù)據(jù)封裝和數(shù)據(jù)隱藏。
在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,將數(shù)據(jù)和對(duì)該數(shù)據(jù)進(jìn)行合法操作的函數(shù)封裝在一起作為一個(gè)類(lèi)的定義。對(duì)象被說(shuō)明為具有一個(gè)給定類(lèi)的變量。每個(gè)給定類(lèi)的對(duì)象包含這個(gè)類(lèi)所規(guī)定的若干私有成員、公有成員及保護(hù)成員。完好定義的類(lèi)一旦建立,就可看成完全封裝的實(shí)體,可以作為一個(gè)整體單元使用。類(lèi)的實(shí)際內(nèi)部工作隱藏起來(lái),使用完好定義的類(lèi)的用戶不需要知道類(lèi)是如何工作的,只要知道如何使用它即可。
支持繼承和重用
在C++現(xiàn)有類(lèi)的基礎(chǔ)上可以聲明新類(lèi)型,這就是繼承和重用的思想。通過(guò)繼承和重用可以更有效地組織程序結(jié)構(gòu),明確類(lèi)間關(guān)系,并且充分利用已有的類(lèi)來(lái)完成更復(fù)雜、深入的開(kāi)發(fā)。新定義的類(lèi)為子類(lèi),成為派生類(lèi)。它可以從父類(lèi)那里繼承所有非私有的屬性和方法,作為自己的成員。
支持多態(tài)性
采用多態(tài)性為每個(gè)類(lèi)指定表現(xiàn)行為。多態(tài)性形成由父類(lèi)和它們的子類(lèi)組成的一個(gè)樹(shù)型結(jié)構(gòu)。在這個(gè)樹(shù)中的每個(gè)子類(lèi)可以接收一個(gè)或多個(gè)具有相同名字的消息。當(dāng)一個(gè)消息被這個(gè)樹(shù)中一個(gè)類(lèi)的一個(gè)對(duì)象接收時(shí),這個(gè)對(duì)象動(dòng)態(tài)地決定給予子類(lèi)對(duì)象的消息的某種用法。多態(tài)性的這一特性允許使用高級(jí)抽象。
繼承性和多態(tài)性的組合,可以輕易地生成一系列雖然類(lèi)似但獨(dú)一無(wú)二的對(duì)象。由于繼承性,這些對(duì)象共享許多相似的特征。由于多態(tài)性,一個(gè)對(duì)象可有獨(dú)特的表現(xiàn)方式,而另一個(gè)對(duì)象有另一種表現(xiàn)方式。
四、工作原理
C++語(yǔ)言的程序因?yàn)橐w現(xiàn)高性能,所以都是編譯型的。但其開(kāi)發(fā)環(huán)境,為了方便測(cè)試,將調(diào)試環(huán)境做成解釋型的。即開(kāi)發(fā)過(guò)程中,以解釋型的逐條語(yǔ)句執(zhí)行方式來(lái)進(jìn)行調(diào)試,以編譯型的脫離開(kāi)發(fā)環(huán)境而啟動(dòng)運(yùn)行的方式來(lái)生成程序最終的執(zhí)行代碼。
生成程序是指將源碼(C++語(yǔ)句)轉(zhuǎn)換成一個(gè)可以運(yùn)行的應(yīng)用程序的過(guò)程。如果程序的編寫(xiě)是正確的,那么通常只需按一個(gè)功能鍵,即可搞定這個(gè)過(guò)程。該過(guò)程實(shí)際上分成兩個(gè)步驟。
第一步是對(duì)程序進(jìn)行編譯,這需要用到編譯器(compiler)。編譯器將C++語(yǔ)句轉(zhuǎn)換成機(jī)器碼(也稱為目標(biāo)碼);如果這個(gè)步驟成功,下一步就是對(duì)程序進(jìn)行鏈接,這需要用到鏈接器(linker)。鏈接器將編譯獲得機(jī)器碼與C++庫(kù)中的代碼進(jìn)行合并。C++庫(kù)包含了執(zhí)行某些常見(jiàn)任務(wù)的函數(shù)(“函數(shù)”是子程序的另一種稱呼)。例如,一個(gè)C++庫(kù)中包含標(biāo)準(zhǔn)的平方根函數(shù)sqrt,所以不必親自計(jì)算平方根。C++庫(kù)中還包含一些子程序,它們把數(shù)據(jù)發(fā)送到顯示器,并知道如何讀寫(xiě)硬盤(pán)上的數(shù)據(jù)文件。
猜你喜歡:
1.怎么學(xué)好一門(mén)計(jì)算機(jī)語(yǔ)言