常常有小夥伴問我,你是作C/C++的,那學C語言能夠作什麼呢?尤爲是還在學校的同窗,感受本身學了好久,什麼也作不了,一度懷疑本身是否是不適合程序員這個方向。
開始我都是直接說能夠開發嵌入式啊,作操做系統啊,開發數據庫啊等等,說到這,其實你們就應該明白了,C語言是接近底層的,他的不少應用都是處在摸不着看不見的後臺,這對於初學編程的同窗確實太不友好了,你們都喜歡所見即所得的效果,要不python怎麼這麼火呢!python
可是,做爲編程排行榜經典不衰的語言,我仍是想好好說下,到底學C語言能夠作什麼?程序員
有數據爲證
仍是採用我喜歡的類比學編程的方法,這個也是學編程很好的方法之一,舉一反三的道理。shell
在計算機高速發展的最近幾十年中,出現了上百種編程語言,有的編程語言是針對某個領域專門設計的,例如:數據庫
PHP是在服務器端執行的腳本語言,與C語言相似,是經常使用的網站編程語言。
JavaScript一種直譯式腳本語言,是一種動態類型、弱類型、基於原型的語言,內置支持類型。它的解釋器被稱爲JavaScript引擎,爲瀏覽器的一部分,普遍用於客戶端的腳本語言,最先是在HTML(標準通用標記語言下的一個應用)網頁上使用,用來給HTML網頁增長動態功能。
Objective-C 只能用於蘋果產品的開發,包括 iPhone、iPad、Mac、MacBook 等,Swift 改進了Objective-C,是一種新的編程語言,用於編寫 iOS 和 OS X 應用。
Visual Basic(簡稱VB)是Microsoft公司開發的一種通用的基於對象的程序設計語言,爲結構化的、模塊化的、面向對象的、包含協助開發環境的事件驅動爲機制的可視化程序設計語言。是一種可用於微軟自家產品開發的語言。
而大部分的編程語言不是針對某個特定領域設計的,它們能作不少事情,比較通用化。可是在長期的實踐過程當中,這些編程語言也找到了適合本身的位置,例如:編程
Java語言做爲靜態面向對象編程語言的表明,極好地實現了面向對象理論,容許程序員以優雅的思惟方式進行復雜的編程。Java 能夠用於網站後臺開發、Android 開發、PC軟件開發,在大數據領域也有應用;
Python是一種計算機程序設計語言。是一種面向對象的動態類型語言,最初被設計用於編寫自動化腳本(shell),隨着版本的不斷更新和語言新功能的添加,愈來愈多被用於獨立的、大型項目的開發。主要用於系統運維、網站後臺開發、數據分析、人工智能、雲計算等領域;
Go(又稱 Golang)是 Google 的 Robert Griesemer,Rob Pike 及 Ken Thompson 開發的一種靜態強類型、編譯型語言。Go 語言語法與 C 相近。Go語言除了用於服務器、通信等較底層的開發,還能用於網站後臺開發。
C語言也是一門通用性的語言,歷史很悠久,就目前而言,C語言主要用於較底層的開發。
除了Windows、Linux、Mac、Unix等大型操做系統,還有freertos,ucos等嵌入式系統等操做系統的內核都使用C語言開發;瀏覽器
開發硬件驅動,這部分也是C語言的強項,固然也有不少C語言的就業機會;服務器
單片機和嵌入式屬於軟硬件的結合,有不少使用C語言的地方;運維
開發系統組件或服務,用於支撐上層應用;編程語言
開發lua腳本,能夠作到無縫銜接。模塊化
不少高級語言使用的庫,底層也是C語言編寫的,主要是考慮運行效率的部分。
固然,C語言也能用於PC軟件開發,作出相似 QQ、迅雷、Chrome 等帶界面的程序,可是因爲C語言開發效率低,第三方庫較少,實際項目中已經沒有程序員這麼作了,你們已經轉向了 C++。
初學者的疑問
既然C語言能作這麼多事情,爲何不少初學者學完C語言之後仍然很是迷茫,只能編寫沒有界面的控制檯程序呢?
這是由於,C語言僅僅是一個工具,它的標準庫也很簡單,只提供了最基本的功能,若是但願開發出實用的程序,每每還須要學習其餘方面的知識。例如:
開發硬件驅動要學習數字電路,瞭解 Windows 或 Linux 內核,閱讀硬件廠商的接口說明書;
從事嵌入式開發要學習數字電路、模擬電路、ARM、Linux、Qt等;
開發PC軟件要學習Windows編程,瞭解 GTK。
能夠這麼說,若是隻會C語言,基本上是找不到工做的,讀者要選定一個方向,繼續學習其餘知識。後面你會發現,C語言不過是冰山一角,是一項基本技能而已,程序員要學習的東西還不少。
另外,學習C語言並不必定要從事與C語言有關的開發工做。C語言是一門簡單、底層、較早的編程語言,後來的不少語言在語法上都和C語言相似,稱爲「類C語言」,例如 Java、C++、C#、PHP、JavaScript 等,學完C語言再學這些語言都很容易上手。
而且,C語言可以讓你更加深入的認識內存和編譯原理,瞭解程序的每個細節,夯實基本功,站得「低」才能望的遠,因此優秀的程序員都會學習C語言。