- 高質量程序設計指南:C++/C語言
- 林銳 韓永泉編著
- 1125字
- 2019-01-09 14:08:57
3.1 程序設計語言
程序設計語言實際上就是一套規范的集合,主要包括該語言使用的字符集、直接和間接支持的數據類型集合、運算符集合、關鍵字集合、指令集合、語法規則,以及對特定構造的支持,例如,函數(過程)的定義、抽象數據類型的定義、繼承、模板、異常處理等。這些內容就是一個語言的構造或者說特征集??梢?,語法只是語言的一部分,它指導程序員如何把語言的各種構造組合起來形成一系列可以解決實際問題的可執行命令,這就是程序。一種語言對于它的各種構造的支持是通過各種關鍵字集合及其語法規則來實現的。
就拿標準C語言來說,它支持函數設計,但是語言本身并沒有提供任何現成的函數可以直接調用(你可能認為sizeof是一個函數,其實它是一個運算符)。它支持用戶定義struct、union、enum等,但是它本身并沒有提供任何具體的struct、union、enum類型供程序員使用。
有人會問,我們學習C語言的時候總是首先學習它的“格式化I/O”,以便看到自己程序的運行成果,難道“格式化I/O”不是C語言的組成部分嗎?
確實不是!
標準C語言沒有提供I/O的實現,只是定義了標準的I/O函數接口,所有的I/O工作都是通過庫函數來完成的,在這一點上它不同于BASIC。標準C++語言繼承了C的I/O庫函數接口,并且重新定義了自己的面向對象的I/O系統。
現在你該明白了,I/O系統并不是C++/C語言本身的組成部分,函數庫和類庫也不是它們的組成部分。那么為什么要提供它們呢?實際上應該說是語言實現(參見本章3.2節)按照標準接口提供了它們的一個實現版本,算是語言實現的附加產品。它們都是用語言支持的基本特征開發出來的(有的直接使用了匯編語言),目的是方便程序員進行程序設計,使他們從煩瑣的底層硬件操作中解脫出來而專注于高層的業務邏輯處理。
作為一種語言,它必須定義它能夠支持的所有合法的語法結構及其組合應用,而語言實現同樣要能夠接受所有可能的合法的代碼。但是對于面向實際應用的程序員而言,完全沒有必要學習和使用那些過于復雜的、高難度的和罕見的語法結構及其組合。就像C++之父Bjarne Stroustrup說的那樣:“你使用一個語言特征是因為你需要它,而不是因為它存在”。
學習一門程序設計語言,并不需要掌握其全部的語法,關鍵是要學習使用語言來解決實際問題的方法。例如,C語言的格式化I/O非常復雜,有不少程序員努力去記住那么多的格式控制符號,其實完全沒有必要!還有C運算符的優先級和結合率,也沒有必要把它們完全搞清楚,遇到這種問題時只需要按照自己要求的計算順序多使用“()”就可以解決。很多人在學習程序設計語言時常常沉迷于語法,這是學習的誤區!
如果記不住很多語法細節,你可以查閱手冊,但是程序設計的道理、解決實際問題的方法是沒有地方可查閱的。如果你所掌握的語法和程序設計方法能夠高效地解決實際工作中的各種問題,那么表明你已經掌握了這門語言。
- JBoss Weld CDI for Java Platform
- 少兒人工智能趣味入門:Scratch 3.0動畫與游戲編程
- UML和模式應用(原書第3版)
- JavaScript+jQuery開發實戰
- 數據結構(Python語言描述)(第2版)
- Podman實戰
- TypeScript實戰指南
- Learning Zurb Foundation
- Symfony2 Essentials
- 精通Linux(第2版)
- Node.js全程實例
- Arduino家居安全系統構建實戰
- Mastering Git
- 持續輕量級Java EE開發:編寫可測試的代碼
- C# Multithreaded and Parallel Programming