第一章 C++ 计算机语言
計算機語言是指人類與計算機之間通訊的語言,更準確的講,應該是程序員對計算機下達的指令。人類的語言是雙向溝通,計算機語言則是單向的指令輸入。計算機內(nèi)部所使用的由"0"和"1"組成的二進制數(shù)。早期的計算機語言就是計算機控制指令,每條指令為一組二進制數(shù)。不同類型的計算機有不同的計算機指令集,使用的二進制數(shù)也就不同。
備注:X86是微處理器(CPU)執(zhí)行的計算機語言指令集,它是Intel通用計算機系列的指令集合,它定義了芯片的基本運算規(guī)則!我們個人電腦大部分屬于X86平臺。ARM不同于X86架構(gòu)的復雜指令集(CISC),ARM是一種精簡指令集(RISC)。ARM處理器適用于低功耗的移動通訊設(shè)備。我們的手機幾乎都是基于ARM平臺。不同平臺上運行的程序是不一樣的,如何垮平臺成為程序開發(fā)的一個重點。
程序員使用一串由"0"和"1"組成的指令序列交給計算機執(zhí)行,這種計算機能夠識別的語言,稱為機器語言。機器語言非常難于記憶和識別,于是人們就創(chuàng)造了高級語言。高級語言是一種獨立于計算機硬件,面向過程或?qū)ο蟮恼Z言。高級語言更接近于人類自然語言和數(shù)學語言!主流的高級語言包括有:C、C++、C#、Java、Python、PHP等等。
備注:TIOBE每月會更新一次開發(fā)語言使用排行榜,大家有時間可以看看。這些高級語言都有各自的特點,適用于不同的行業(yè)領(lǐng)域。計算機語言都是人們在遇到某一個行業(yè)領(lǐng)域的問題,使其更加快捷方便的解決而被創(chuàng)造出來的。雖然計算機語言原則上可以解決大部分的問題,但是它還是在特定的行業(yè)領(lǐng)域更加優(yōu)秀一些。例如C/C++語言適用于底層硬件打交道,現(xiàn)在的物聯(lián)網(wǎng)應用很多都是使用C/C++開發(fā)的。Java語言主要用于Web和企業(yè)級應用,因為它有很多開源的技術(shù)解決方案支持。另外,Java還可以用于安卓手機應用的開發(fā)!C#語言則是Windows平臺桌面級應用開發(fā)的首選。在游戲開發(fā)領(lǐng)域,Unity引擎的腳本語言就是C#,而UE4引擎一般使用 C++語言。
高級語言不能被計算機直接識別,但可以用編譯、解釋兩種方式執(zhí)行。編譯性語言只需編譯一次就可以把源程序編譯成機器語言,后面的執(zhí)行無需重新編譯,直接使用之前的編譯結(jié)果就可以。因此其執(zhí)行的效率比較高,但比較依賴編譯器,因此跨平臺性差一些。C/C++屬于編譯型語言。解釋性語言源代碼不能直接編譯成機器語言,而是先翻譯成中間代碼,再由解釋器對中間代碼進行解釋運行。程序每次運行都要翻譯成機器語言。運行效率一般相對比較低,依賴解釋器,但跨平臺性好一些。C#和Java屬于解釋性語言!
C/C++編譯型語言在程序執(zhí)行前有一個專門的編譯過程,這個過程將源程序編譯為計算機可執(zhí)行的二進制文件,每次運行不需要進行重新編譯。C/C++的編譯過程可分為預編譯,編譯,鏈接三個重要步驟。編譯過程就是將源代碼轉(zhuǎn)變?yōu)橛嬎銠C可以執(zhí)行的機器指令,簡單理解就是將代碼逐條翻譯為機器指令即可。這個過程是由編譯器完成的!C++編譯器是一個與標準化C++高度兼容的編譯環(huán)境。在Linux系統(tǒng)下有GCC編譯器,而Windows下常用Microsoft Visual C++(VC編譯器),當然還有其他開源的C++編譯器!
.NET 框架是由微軟開發(fā)的軟件開發(fā)平臺,其中最主要的兩個組成部分是公共語言運行時 (CLR) 和框架類庫 (FCL)。C#編程語言是為微軟公司的.NET框架上的程序而設(shè)計的,它是一種由C和C++衍生出來的面向?qū)ο蟮木幊陶Z言。它使得程序員可以快速地編寫各種基于.NET平臺的應用程序。C#所開發(fā)的程序源代碼并不是編譯成能夠直接在操作系統(tǒng)上執(zhí)行的二進制機器語言,而是被編譯成為中間代碼,然后通過.NET框架的虛擬機(CLR)執(zhí)行。
備注:我們一般使用Visual Studio來進行C++和C#語言的應用開發(fā)。Microsoft Visual Studio(簡稱VS)是微軟公司的開發(fā)工具包系列產(chǎn)品,它包括了整個軟件生命周期中所需要的大部分工具,如UML工具、代碼管控工具、集成開發(fā)環(huán)境(IDE)等等。
Java語言中,JDK(Java Development Kit) 是Java開發(fā)工具包,它提供了Java的開發(fā)環(huán)境,還提供了編譯器javac等工具,用于將 java 文件編譯為class文件。JRE(Java Runtime Enviroment)是Java的運行環(huán)境,是運行Java程序所必須環(huán)境的集合,包括 Java 虛擬機、Java 平臺核心類等等。JRE用于解析 class 文件使其得到運行。
備注:Java的集成開發(fā)工具比較多,例如Eclipse,NetBeans等等。Eclipse 是一個開放源碼的項目,是著名的跨平臺的自由集成開發(fā)環(huán)境(IDE),最初主要用來 Java 語言開發(fā),后來通過安裝不同的插件 Eclipse 可以支持不同的計算機語言,比如 C++ 和 Python 等開發(fā)工具。
C++語言是從C語言發(fā)展而來的,C++是C的一個超集。事實上,任何合法的C程序都是合法的C++程序,有時候兩者經(jīng)常混合在一起!標準的 C++ 由三個重要部分組成:
1. ?核心語言,包括數(shù)據(jù)類型、變量/常量、控制結(jié)構(gòu)、函數(shù)、類等等。
2. ?C++標準庫,提供了大量的函數(shù),用于操作字符串、輸入輸出、文件等等。
3. ?標準模板庫(STL),提供了大量的方法,用于操作數(shù)據(jù)結(jié)構(gòu)(堆、棧、樹等)等等。
備注:我們的學習都是從第一部分“核心語言”開始的,不僅C++語言,其他的Java或C#語言也都是如此,而且這些部分在所有高級語言中共性很大,甚至關(guān)鍵字名稱也都一樣。至于后期的C++標準庫和模板庫都是根據(jù)實際的使用情況再進一步學習,其他高級語言的學習路徑也是如此。因此,大家只要熟悉了一門語言后,再去學習另一門語言,會是很輕松的一件事!幸運的是,其他的語言(C#和Java)相比C++語言來講,還是比較簡單的!
最后講兩個概念,一個是SDK,一個是API。我們使用高級語言進行程序開發(fā)的時候,基本不接觸底層的代碼實現(xiàn),高級語言已經(jīng)幫我們將這些底層基礎(chǔ)操作完成,并通過API的形式開放給我們使用。API(Application Programming Interface)就是應用程序接口,具體的理解就是一些類和函數(shù),這些類和函數(shù)可以幫助我們實現(xiàn)一些功能。例如C++中的fopen用于打開硬盤上的一個文件,并返回該文件對象,我們不需要知道它是如何打開這個文件的,只需要使用返回的文件對象對這個文件操作即可。高級語言提供的這些類和函數(shù),都會一起打包到SDK中,因此我們需要去官方下載并安裝SDK。SDK(Software Development Kit)就是軟件開發(fā)工具包,.NET中的fcl和Java中的jdk就是軟件開發(fā)工具包。當然,像Visual Studio這種集成開發(fā)環(huán)境,他們可以幫我們一起安裝SDK和解釋器。學習語言的過程,就是我們一步一步熟悉其語言API的過程。另外,還有一些構(gòu)建在語言之上的SDK,用于實現(xiàn)其他方面的功能,例如DirectX就是微軟的多媒體編程接口,它主要用于游戲開發(fā)。同樣的,我們也要安裝DirectX的SDK以及學習其API。
?
備注:這是我們游戲開發(fā)系列教程的第一個課程,主要是編程語言的基礎(chǔ)學習,優(yōu)先學習C++編程語言,然后進行C#語言,最后才是Java語言,緊接著就是使用C++和DirectX來介紹游戲開發(fā)中的一些基礎(chǔ)理論知識。我們游戲開發(fā)系列教程的第二個課程是Unity游戲引擎的學習。課程中如果有一些錯誤的地方,請大家留言指正,感激不盡!
總結(jié)
以上是生活随笔為你收集整理的第一章 C++ 计算机语言的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: layui: layuiAdmin if
- 下一篇: 软件工程包括三个要素:方法、工具和过程