- C++程序設計基礎教程
- 張曉如 華偉
- 2261字
- 2020-06-12 16:21:25
1.1 計算機程序設計語言
計算機程序是人們為解決某個實際問題而編寫的需要計算機完成的一系列操作指令的有序集合。程序設計語言是人與計算機交流的工具,是計算機可以識別的語言,具有特定的詞法與語法規則。計算機程序設計語言能夠使程序員準確地定義計算機需要使用的數據,并精確定義在不同情況下應當采取的行動。計算機語言從其發展歷程看,可以分成機器語言、匯編語言、高級語言3個階段,其中高級語言又可分為面向過程與面向對象的程序設計語言等。
1.1.1 機器語言與匯編語言
機器語言是直接用二進制代碼指令表達的計算機語言,指令是由0和1組成的一串代碼,它們有一定的位數,并分成若干段,各段的代碼表示不同的含義。例如,某臺計算機的字長為16位,即用16個二進制位表示一條指令或其他信息。16個0和1可組成各種排列組合,通過線路變成電信號,讓計算機執行各種不同的操作。例如,將100與200相加的機器語言程序由下列兩條指令實現。
1101 1000 0110 0100 0000 0000 0000 0101 1100 1000 0000 0000
雖然機器語言能被計算機直接識別和執行,但對于人類來說卻十分晦澀難懂,更難以記憶與編寫。在計算機發展的初期,程序員只能用機器語言編寫程序,在這一階段,計算機編程語言與人類的自然語言之間存在巨大的鴻溝,軟件開發難度大、周期長,修改維護困難。
為了解決機器語言編程的困難,程序員使用類似英文縮寫的助記符來表示指令,從而產生了程序設計的匯編語言(Assembly Language)。例如,使用ADD、SUB助記符分別表示加、減運算指令。將100與200相加的匯編語言實現如下。
MOV AX, 100 ADD AX, 200
使用匯編語言編寫的程序,機器不能直接識別,要由一種程序將匯編語言翻譯成機器語言,這種起翻譯作用的程序叫匯編程序,匯編程序是系統軟件中的語言處理系統軟件,匯編程序將匯編語言翻譯成機器語言的過程稱為匯編。匯編語言實質上仍是機器語言,同樣屬于低級語言。
匯編語言是面向具體機型的,它離不開特定計算機的指令系統,因此,不同型號的計算機有不同結構的匯編語言,而且,對于同一問題編制的匯編語言程序在不同類型的計算機之間是互不相通的。
雖然匯編語言比機器語言提高了一步,使編程語言與人類自然語言之間的鴻溝略有縮小,但仍然與人類的自然表達方式相差甚遠,而且由于匯編語言的抽象層次太低,一個簡單的任務需要大量的語句實現,程序員還需考慮大量的機器細節,因此使用匯編語言編程的難度仍然很大。
1.1.2 高級語言
為了進一步方便編程,人們開發了更加接近人類自然語言習慣的高級語言,程序使用更有意義和容易理解的語句,使程序更容易描述具體的事物與過程,編程效率大大提高。例如,仍然是將100與200相加,其高級語言可描述如下。
100+200
高級語言與計算機的硬件結構及指令系統無關,有更強的表達能力,可方便地表示數據的運算和程序的控制結構,能更好地描述各種算法,而且容易學習掌握。但用高級語言編譯生成的程序代碼一般比用匯編語言設計的程序代碼要長,執行的速度也慢。
與匯編語言相比較,高級語言不但將許多相關的機器指令合成為單條指令,并且去掉了與具體操作有關,但與完成工作無關的細節,如使用堆棧、寄存器等,這大大簡化了程序中的指令。同時,由于省略了很多細節,編程者也就不需要具備太多的專業知識。
使用高級語言編寫的程序,需要相應的編譯器翻譯成機器語言程序才可執行。
1.1.3 面向過程與面向對象的程序設計語言
早期的計算機主要用于數值計算,其軟件設計的主要工作是設計計算方法或解決問題的過程,因此早期的高級程序設計語言是一種面向過程的程序語言。隨著計算機應用的日漸普及,人們需要利用計算機來解決更為復雜的問題,相應的程序軟件也更加龐大,許多大型軟件的開發遇到了嚴重的困難。20世紀60年代產生的結構化程序設計方法為上述困難提供了較好的解決手段。
結構化程序設計方法的基本思想是:對要解決的整個問題采用自頂向下、分而治之、逐步求精的方法分解模塊化功能。其程序結構按功能劃分為若干基本模塊,各模塊功能盡可能地簡單并且相對獨立。每一個模塊內部均是由順序、選擇和循環3種基本結構組成。在結構化計算機程序中,各模塊以子程序或函數的方式設計,各模塊之間的聯系通過子程序或函數間的相互調用實現。
結構化程序設計方法將復雜的系統分解成易于實現和控制的子任務,顯著減少了軟件開發的復雜性,提高了軟件的可靠性、可測試性和可維護性。結構化程序設計方法的一系列優點使得高級程序設計語言獲得了更為廣泛的應用,先后出現了BASIC、ALGOL、COBOL、Pascal、Ada和C語言,其中應用最為廣泛、影響最大的是C語言。
結構化程序設計方法是面向過程的,其程序特點是描述問題的數據與解決問題的過程(數據處理的方法)相互獨立,當數據結構改變時,所有相關的處理過程都要進行相應的修改。同時,由于圖形界面的應用,使得軟件開發過程越來越復雜,從而催生了面向對象的程序設計方法(Object Oriented Program,OOP)。
面向對象程序設計方法的基本思想是:將描述問題的數據與解決問題的方法封裝成一個不可分離的整體——對象。在面向對象的程序設計方法中,一個問題用一個對象來表示,對象內部包含了描述問題的數據以及對這些數據操作的方法。程序設計時,抽象出同類型對象的共性,形成類。類是抽象的“概念”,對象是類的實例。
正如結構化程序設計方法對計算機技術應用產生的巨大影響和促進那樣,OOP方法更加強烈地影響、推動和促進計算機技術應用的更大發展。1986年在美國舉行了首屆“面向對象編程、系統、語言和應用(OOPSLA)”國際會議,使面向對象受到世人矚目。現在,除了一些純粹的面向對象的程序設計語言,如Smalltalk、Java等外,早期的一些高級程序語言也擴展了面向對象的功能。C++就是在C語言基礎之上擴展出來的面向對象的程序設計語言。
- Vue.js 3.x快速入門
- C#高級編程(第10版) C# 6 & .NET Core 1.0 (.NET開發經典名著)
- 高手是如何做產品設計的(全2冊)
- Mobile Application Development:JavaScript Frameworks
- Delphi程序設計基礎:教程、實驗、習題
- 自己動手實現Lua:虛擬機、編譯器和標準庫
- Python深度學習
- Practical DevOps
- 深入淺出Windows API程序設計:編程基礎篇
- Hands-On C++ Game Animation Programming
- 領域驅動設計:軟件核心復雜性應對之道(修訂版)
- Getting Started with Hazelcast(Second Edition)
- Java EE企業級應用開發教程(Spring+Spring MVC+MyBatis)
- Django 5企業級Web應用開發實戰(視頻教學版)
- C語言程序設計實訓教程與水平考試指導