国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

C++入門解惑——為什么學習C++

2019-11-17 05:44:21
字體:
來源:轉載
供稿:網友

  為什么學習C++

0.Why Shall I Learn C++?

C++作為一門較為成熟重量級的語言,吸引了許許多多編程學習者。單從市面上編程書籍中C++的書所占的比例即可見一斑。當然,近年來隨著java、C#的興起與逐漸發(fā)展,也出現(xiàn)了一些不同的聲音,認為C++并非高效應用編程的首選,而且硬件的迅速發(fā)展也會使虛擬平臺的速度劣勢淡化,而其優(yōu)良的可移植性及安全性將使之成為新的語言主流……

但無論怎么說,C++強大靈活的語言機制、深邃的內涵、廣博豐富的外延使它成為一個時代的經典語言,其中體現(xiàn)出的編程思想的美感使深入學習過它的人為之感嘆;且不論過時與不過時的老掉牙問題,單從學習的角度說,這是一門非常值得品味的語言,盡管我認為無論過去、現(xiàn)在還是將來,天底下不存在哪一門語言非學不可才能成為高手(思想最重要,“不會XXX語言不算真正的高手”之類的言論實在無聊之至),然而假如在這個時代你錯過了C++,我還是有一點點遺憾,究竟你錯過了一個共享經典的機會(一點點而已,可能有些主觀,呵呵)。至于實用性,自然,C++不是唯一的選擇(Andrew Koenig 曾在《C++沉思錄》中多次強調C++設計的最終基準是實用性,但我們很多人在開發(fā)桌面應用程序時似乎更喜歡VB、Delphi等RAD)。總言之,這個方面我們答應會有多種選擇,但從思想的深化(學習方面)角度上說,C++或許會給你相當多的啟發(fā),即使你實際開發(fā)中更喜歡使用其它語言的RAD。

1.本系列的定位

1.Position

這個系列主要是面向C++的“純”初學者,他們頭一回接觸C++,甚至同時也是頭一回走進PRogramming的世界。現(xiàn)在市面上C++的好書很多,網絡又發(fā)達,所以現(xiàn)今的初學者比較有福氣,不像當初,找得一本C++書已經是挺“可以”了,哪里知道什么好與不好,書再爛,懷疑的也是自己的腦子(恐怕連“爛書”這個詞還沒發(fā)明吧)。現(xiàn)在不同,讀者不難找到一本輕便抑或詳盡的書籍結合自身情況學習。但究竟書籍本身要考慮到內容組織的系統(tǒng)化,因而不可避免地,暫時或者永久性地存在一些讀者熱切想知道但卻未出現(xiàn)的盲點,或者是略有提及但卻不深入。假如身邊有位老師,自然不成問題,但或許更多的愛好者們都是像我這樣自己“過來”的(呵呵),碰到茫然之處便頭腦發(fā)癢,自己又搔不著,多少有些許不爽。本系列的目的就是“搔癢”,癢非必是傷,因此解決的可能是一些過來人看來無關緊要的甚至“弱智”的問題,但我相信這都是許許多多的初學者都非常想了解卻無從尋覓的東西。至于哪些是“東西”哪些不是,可能判定有些主觀,我暫且從自己學習的曲線中搜尋;同時也非常希望朋友們針對自己入門過程中的困惑與我通過郵件聯(lián)系(kusk@163.com),至于本人,同樣也是一位初學者,只不過可能混的時間久了,稍有些經驗而已,但錯誤可能會出現(xiàn),也非常歡迎指正提出:你的關注將是我最大的動力^_^

2.什么是C++

2.What is C++?

可能現(xiàn)在還會有許多初學者分不清C++、VC、MFC、C++ Builder這些基本的概念,經常聽到類似于“VB還不夠強,我明天要開始學VC”這樣的言論,有些書店也還是錯誤地赫然掛著“Visual C++語言”、“C++ Builder語言”的分類牌。其實C++指的僅僅是一門計算機語言,它規(guī)定了書定程序的語法,例如:如何使用變量、常量,如何撰寫語句,如何讓計算機作出判定,如何讓某些特定的功能反復執(zhí)行若干次(循環(huán)),如何把一些復雜的“打包”成一個簡單的模塊(函數/子程序)以便調用,等等。可以說,語言是獨立于計算機的,它只是一系列人為制定的規(guī)則,假如你愿意的話自然也可以拿出紙筆自己設計一門D++之類的新語言。

不過單有規(guī)則還不行,要真正能寫出程序并投入運行,你應該讓計算機學會用上你的D++語言。目前的計算機絕大多數只能直接識別二進制的機器語言,所以通常的作法是寫一個負責翻譯的程序,它可以自動地把你輸入的D++程序轉化成二進制程序,這樣計算機就可以執(zhí)行它了。這個負責翻譯的程序,通常我們稱為編譯器。當一門語言流行開之后,會有一些軟件廠商注重到:噫,D++似乎很受歡迎啊,我們應當馬上推出D++的編譯器占領市場。于是各個廠商推出了自己的D++編譯器,為了區(qū)分,不同廠商的編譯器都有不同的名字,例如,可能會是“Visual D++”、“D++ Builder”、“Better D++”等等。

通常最原始的編譯手段是命令行方式,假如我想編譯一個hello.dpp的源程序,那么我可能要進入DOS命令行方式,假如編譯器的名字是dpp32,我需要鍵入類似于dpp32 hello.dpp hello.exe之類的麻煩的東西指示它。假如有多個源文件,還要作更新編譯、鏈接等動作,可能還要根據不同的需要加上許多晦澀難記的參數,這樣一來就會十分麻煩。好一點的話可以寫一個稱為maikfile的文件,它可以把這些設定儲存好,讓編譯器自己識別而不必每次鍵入。但命令行方式的往返切換還是不夠快捷,因此聰明的編譯廠商通常會為我們非凡設計一個稱為“集成編譯環(huán)境(IDE)”的編譯平臺:它可以看作一個附加了許多方便我們使用D++的功能的編輯軟件,例如,我們可以不必切換回命令行方式后動編譯,而只要單擊“編譯”圖標或者按下相應的快捷鍵,編譯器就會自動為我們編譯,當然我們也可以在這個軟件中設定編譯的選項。此久,這個編輯軟件還非凡加入了一些好用的功能,比如它會聰明地將D++程序中的要害字顯示成另一種顏色,數字又是另一種顏色……這樣做的好處是便于我們分析程序,及時發(fā)現(xiàn)輸入錯誤,等等。強大的編譯環(huán)境還集成了代碼分析、跟蹤調試等功能,比命令行模式好用多了。但別忘了,真正“造”出程序的,還是那些最原始的命令行程序。

除此以外,由于現(xiàn)在的操作系統(tǒng)日趨復雜,假如從零開始編制程序,往往要做許多重復而無用的勞動。因此各個編譯廠商通常會在編譯平臺中提供一套已經完成的程序庫,用于構建程序的相關聯(lián)模塊的集合稱為應用程序框架,Windows下常見的應用程序框架有MFC、VCL等,還有一些跨平臺框架,如Qt。框架可能集成在編譯平臺中,也可以單獨發(fā)行。當然,框架的使用是可選擇的,VC中附帶了MFC,你可以使用它,也可以不用。

3.學習編程的一般步驟

3.How to Learn Progrmming Step by Step

學習語言到應用編程,大約可以分為三步:1.學習語言的語法、標準庫、思想;2.學習相關操作系統(tǒng)的API(應用程序編程接口);3.學習類庫使用。有一定經驗后,三者可以交替進行,相互加深。此外還要學習一些基礎理論,像設計模式、算法與數據結構等。

附:另外幾個常見的概念——答neverdown1983網友問

問:標準庫和類庫有什么區(qū)別? 那個應用程序編程接口(API)能不能解釋一下?謝謝了!

我想先說說庫(Library)吧,想必這個概念諸位都有所了解,在下多羅嗦幾句再說一下:所謂庫,就是許多程序代碼的集合:編程的時候,會有許多常用的功能,假如每個用到這些功能的程序都要從頭寫一遍,則會出現(xiàn)無謂地重復勞動;因此人們把這些常用的功能編寫好,并按一定的邏輯關系組織、封裝起來,便于編程時直接調用,就成為了庫。

庫中的程序模塊是怎么放置的呢?

嗯,首先,我們很自然會想到把那些常用的功能封裝成一個個相應的函數,這樣程序要用到這些功能的時候,我們就調用相應的函數。這些函數組成的庫自然可以叫做函數庫,顯然函數庫的思想是面向過程的;

其次,我們也可以把要實現(xiàn)的任務封裝成一個個類(class),例如要某個庫包含文件操作的功能,設計者可能會寫一個File類,它或許會有open、close、reset、read、write等方法,內部也可能會有一些保存文件信息的數據結構,等等。這些由各種類組成的庫稱為類庫,它是面向對象的。

因此,按組織思想分,庫可以分為函數庫、類庫等。

至于標準庫與非標準庫,則是另一種分類方式。假如某個庫是C++語言標準所“規(guī)定”要有的,如STL(即標準模板庫,我們在C++中常用的vector、list之類的容器以及相關算法都屬于STL的一部分),是語言中的一部分,則稱為C++的標準庫(被標準化了的,無論VC、C++ Builder還是其它什么C++編譯平臺,都要求包含它才算是“真正”的C++)。當然,標準庫的范圍比較窄,除此之外的諸如MFC、VCL、Qt等都是其它軟件廠商(或組織)自己編寫的,不是C++標準所規(guī)定(單純介紹C++的書也不會介紹它們),不是語言的一部分,所以不是標準庫。

應用程序編程接口(application Programming Interface)是操作系統(tǒng)為程序員提供的功能。你要在一個操作系統(tǒng)上編寫程序,一舉一動都要依靠操作系統(tǒng):你要讀一個文件,或者在屏幕上畫一個點,最終都是要求操作系統(tǒng)替你實現(xiàn)的,而這些“要求”的方式,或者說是“與操作系統(tǒng)打交道”的方式,就是通過編程接口。在DOS中,程序員要實現(xiàn)的功能最終是通過中斷的方式“告訴”操作系統(tǒng),從而讓其替你完成的,因此可以說中斷是DOS系統(tǒng)的API;到了更復雜的Windows系統(tǒng),由于中斷過于簡單與低級,所以Windows為程序員提供的是一系列的函數,這些函數已經被編譯好,大多放在各個隨系統(tǒng)一起安裝好的.dll文件中,大多數情況下,Windows下的編譯器會將我們的程序與這些函數庫鏈接好;很自然地,它們就被稱為API函數。Windows的API函數成千上萬,與DOS區(qū)區(qū)十幾幾十條的中斷相比實在是復雜多了,從而提供了比DOS更多、更完善的服務。不過學習的時候不可能把這些函數的名稱、調用方法、參數表之類全部記得一清二楚,一般對部分最常用的函數有個大概的把握就可以;其它的一般是隨用隨查,這方面MSDN是一個相當好(而且大概也是最權威)的資料集。


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 怀化市| 苍梧县| 南宫市| 腾冲县| 鸡东县| 瑞丽市| 同心县| 榆中县| 西昌市| 尤溪县| 绍兴市| 库伦旗| 贡觉县| 宝清县| 高州市| 福贡县| 汉中市| 花莲市| 巩留县| 花垣县| 长寿区| 兴和县| 喀什市| 吴堡县| 三明市| 离岛区| 历史| 佳木斯市| 鄂托克前旗| 阿图什市| 文化| 宝清县| 武穴市| 汾西县| 晋中市| 巴彦淖尔市| 呈贡县| 威信县| 苗栗市| 旬邑县| 张家界市|