C語言程序設計之漫談編程語言
C語言程序設計之漫談編程語言
C語言1.1 信息技術發展趨勢
目前信息技術主要經歷了互聯網、移動互聯網以及以大數據、雲計算、物聯網、人工智能、區塊鏈為代表的新興技術三個階段。
互聯網主要是連接了世界各地的筆記本、臺式機以及背後提供後臺服務的服務器集群,其中絕大多數筆記本和臺式機都運行著Windows,macOS系統,而服務器主要是以類Unix(CentOS,Ubuntu)占據主要市場優勢。
移動互聯網主要是連接了世界各地的移動設備(最典型的就是手機),它們絕大多數都運行著Android,IOS系統。
當然隨著用戶數據的爆發式增長,以海量數據為基礎的大數據、雲計算技術在各行各業也有一定的用武之地。
而物聯網會連接所有智能設備,包括智能家居、汽車、電視等嵌入式設備。
人工智能會類似工業革命再次改變現有的工作和生活形態,例如無人自動駕駛會解放司機。
而區塊鏈經歷了比特幣、以太坊、和EOS三個發展階段,通過區塊鏈技術的應用可以實現節約成本,提高效率的目的,從而實現改變各行各業。
1.2 編程語言發展史
計算機程序設計語言經歷了機器語言到匯編語言和高級程序設計語言三個階段,其特點是使得程序員用編程語言開發、測試、部署應用程序越來越方便、高效。
-
機器語言
計算機發展的最早期,程序員編寫程序采用二進制的指令(010010101)來實現的,而每種CPU都有各自不同的指令系統(SPARC/Intel X86/ARM),因此在不同的機器上使用不同的機器語言實現。其特點是性能特別高效,而面向機器編程也就意味著不能移植,需要手動處理底層硬件的差異性,而且二進制的指令難以理解和維護。 -
匯編語言
隨著時代和計算機技術的發展,匯編語言和編譯器的出現解決了機器語言需要記住非常多的二進制機器指令的難題,但是還是沒有從根本上解決移植性的問題,只是將機器指令轉換為易懂的英文單詞,然後由編譯器編譯成機器指令,因為計算機終歸揭底只能識別0001110100110機器指令,而且匯編語言是面向機器的,不同機器(SPARC/Intel X86/ARM)的匯編指令是不相同的。 -
高級程序設計語言
高級程序設計語言的高級之處體現在開發人員在編寫程序時無需關心計算機底層硬件差異而只需要專註於業務模塊實現即可。甚至是可以實現 一次編譯,到處運行,這裏以Java為例子:通過實現不同平臺的JVM,編譯生成的字節碼文件可以在任意的JVM上運行。
高級語言通常都需要編譯器或者是解釋器將源碼編譯或者解釋後執行。
高級語言主要分為面向過程和面向對象兩種,其中典型的面向過程語言就是C,面向對象的編程語言有Java,C++等等。
1.3 主流編程語言及其應用場景介紹
1.3.1 Tiobe編程語言排行版
首先從Tiobe官網獲取最新(2018年7月)的編程語言排行榜的前20名,如下圖所示
從上圖所知,Java/C/C++分別排在前三名, 隨後緊跟著Python,C#,PHP,JavaScript等等,每種語言都有不同的應用場景和擅長的領域。
那麽作為一個初學者,面對如此之多的編程語言,到底應該先從哪門語言上車呢?
本人強烈建議先從C語言開始。
因為C語言是高級編程語言的鼻祖,後期的C++,Java,Objective-C,Go,Python都在語法上模仿了C語言,掌握了C語言可以快速學習其他語言。而且程序的核心:數據結構、算法都是通用的,語言總歸只是工具而已。
1.3.2 就業方向
如果你想從事操作系統底層、硬件驅動開發、那麽需要掌握匯編+C語言技術棧。
如果你想從事大型互聯網(淘寶、京東)應用開發,那麽需要掌握Java技術棧。
如果你想從事中小心互聯網應用(知乎、春雨醫生)開發,那麽需要掌握Python/PHP技術棧。
如果你想從事移動應用(Android,IOS)開發,那麽需要掌握Java/Kotlin和Swift/Objective-C技術棧。
如果你想從事前端開發,需要掌握以HTML5+CSS3+JavaScript為基礎的前端技術棧。
如果你想從事區塊鏈應用開發,需要掌握Go和C++語言技術棧。
如果你想從事人工智能應用開發,需要掌握python語言技術棧。
如果你想從事大數據、雲計算應用開發,需要掌握Java,Scala,Python技術棧。
C語言程序設計之漫談編程語言