'為什麼你覺得C語言什麼都不能做,學了沒用?不可能的'

"
"
為什麼你覺得C語言什麼都不能做,學了沒用?不可能的


對於大部分初學者,學習C語言的目的是希望做一名合格的程序員,開發出靠譜的軟件來。但是學了C語言的基本語法後,發現只能開發“黑底白字”的DOS程序,完全沒有漂亮的界面和生動的交互。於是學數據結構,學算法,學操作系統,越陷越深,越來越難,最後迷茫了,不知道學C語言能做什麼,認為學習編程很難,開始懷疑自己,甚至想放棄。

其實,這是很多初學者都會踩到的一個坑!C語言本身是一門很簡單的語言,提供的實用功能不多,大部分要藉助操作系統、第三方庫、單片機來完成。也就是說,只學C語言基本什麼也做不了,也基本找不到工作。

C語言是一門通用性的語言,並沒有針對某個領域進行優化,在實際項目中,C語言主要用於較底層的開發,例如:

  • Windows、Linux、Unix 等操作系統的內核90%以上都使用C語言開發;
  • 開發硬件驅動,讓硬件和操作系統連接起來,這樣用戶才能使用硬件、程序員才能控制硬件;
  • 單片機和嵌入式屬於軟硬件的結合,有很多使用C語言的地方;
  • 開發系統組件或服務,用於支撐上層應用;
  • 編寫PHP擴展,增強PHP的功能;
  • 如果對軟件某個模塊(例如算法和搜索部分)的效率要求較高,也可以使用C語言來開發。


既然C語言的應用這麼多,為什麼很多讀者覺得它什麼也做不了呢?

我們先說一個概念,就是庫(Library)。庫就是編程專家寫好的代碼,我們可以拿來直接使用,這樣能夠節省開發成本,提高開發效率,並且庫代碼的執行效率、嚴謹性、安全性和規範性要明顯優於我們自己編寫的代碼,市場上有很多優秀的庫,有的收費,有的免費,我們要善於利用這些庫,儘量不要重複造輪子。

庫一般分為兩種:

  • 編程語言的開發者在開發編程語言的時候,一般都要預先寫好常用的代碼,或者說常用的功能,例如輸入輸出、數學計算、文件操作、網絡操作、日期時間、錯誤處理、字符串處理等,這些由官方編寫的庫稱為標準庫(Standard Library),它們隨編程語言一起發佈,可以認識是編程語言的一部分。
  • 有一些組織機構或者個人也會開發一些庫,有的是為了盈利,有的是業餘愛好,有的是本公司正在使用的代碼,開源出來造福人類,這些庫稱為第三方庫(Third-party Library)。


第三方庫不是由官方開發,沒有質量把控,良莠不齊,但是有相當一部分也非常優秀,已經得到了大家的認可,已經應用在大公司的項目開發中,這些庫能夠和標準庫媲美。

標準庫是我們在學習編程語言時就要一起學習的,例如C語言的輸入輸出、文件操作、日期時間、字符串處理、內存管理等都是標準庫提供的功能,它們並不是C語言語法的內容。

如果一門編程語言的標準庫強大,初學者經過簡單的學習後就很容易開發出實用的項目。例如Java,它的標準庫包含了GUI(圖形界面)、圖形處理、網絡通信、網絡服務器、HTML解析、HTTP協議、多線程、多進程、正則表達式、壓縮文件、加密解密、數據校驗、音頻視頻處理、數據庫操作、XML操作等常用功能,初學者學了以後立馬就能夠開發網站、開發PC軟件,感覺很實用,也感覺學到了東西。Python、C#、VB、PHP、JavaScript、Ruby 等都是非常實用的語言,學了就能做出東西來。

反觀C語言,它的標準庫只有輸入輸出、文件操作、日期時間、數學計算等基本功能,都是在黑黑的控制檯下進行的,跟網站、PC軟件、APP等八竿子打不著,所以初學者覺得C語言沒有用。

那麼,C語言到底能不能開發網站、PC軟件或者APP呢?

C語言的標準庫肯定不能幹這些事情啦,就得依靠第三方庫了,遺憾的是,C語言的第三方庫大都也是底層庫,支持應用開發的庫寥寥無幾,只有一個 GTK 庫能夠開發出 PC 軟件來,而沒有與網站開發和APP開發相關的庫。

GTK 庫在PC軟件開發中也很少用了,PC軟件開發已經是 C++、C#、VB、Java、Delphi 的天下了。換句話說,開發PC軟件基本不使用C語言,而是使用 C++、C#、VB、Java、Delphi 等其它語言。

記住,C語言幾乎不用來做軟件、網站、APP等這些應用層開發,其它的編程語言能夠更好地完成任務,沒必要非得使用C語言,C語言基本都是用來做底層開發,也就是看不見摸不著的、在後臺默默提供服務的那些項目,而這樣的項目對初學者來說基本沒有實用價值,初學者也不知道它們該怎麼使用。

初學者想要的C語言沒有,C語言能做的初學者用不到,就是這種矛盾導致初學者非常迷茫。

有人可能會問,C語言不是還可以用來開發單片機或者嵌入式嗎?是的沒錯,但是這個方向是軟硬件結合的,不是在我們的電腦上進行開發,而是在特殊的開發板上進行開發,並且還需要學習數字電路、模擬電路、彙編、ARM、Linux 等方面的知識,只學C語言也沒有用武之地。

如果你覺得學了C語言沒用,那麼恭喜你,你是對的,應用層的開發一般真的用不上它。

但是,沒用也要學,學習C語言並不一定是要應用它,C語言可以夯實你的編程基礎,尤其是數據結構、算法、內存、線程、進程、通信、操作系統等底層的計算機知識,沒有C語言基礎是學不好的。

這些底層知識並不一定能夠直接應用在實際開發中,但是它們會讓你有底氣,會讓你透徹地理解編程概念,會讓你站的“低”看得遠,會讓你避免很多低級錯誤,會讓你心中有“架構師”的思維。不學C語言是碼農,學了C語言是程序員。

"
為什麼你覺得C語言什麼都不能做,學了沒用?不可能的


對於大部分初學者,學習C語言的目的是希望做一名合格的程序員,開發出靠譜的軟件來。但是學了C語言的基本語法後,發現只能開發“黑底白字”的DOS程序,完全沒有漂亮的界面和生動的交互。於是學數據結構,學算法,學操作系統,越陷越深,越來越難,最後迷茫了,不知道學C語言能做什麼,認為學習編程很難,開始懷疑自己,甚至想放棄。

其實,這是很多初學者都會踩到的一個坑!C語言本身是一門很簡單的語言,提供的實用功能不多,大部分要藉助操作系統、第三方庫、單片機來完成。也就是說,只學C語言基本什麼也做不了,也基本找不到工作。

C語言是一門通用性的語言,並沒有針對某個領域進行優化,在實際項目中,C語言主要用於較底層的開發,例如:

  • Windows、Linux、Unix 等操作系統的內核90%以上都使用C語言開發;
  • 開發硬件驅動,讓硬件和操作系統連接起來,這樣用戶才能使用硬件、程序員才能控制硬件;
  • 單片機和嵌入式屬於軟硬件的結合,有很多使用C語言的地方;
  • 開發系統組件或服務,用於支撐上層應用;
  • 編寫PHP擴展,增強PHP的功能;
  • 如果對軟件某個模塊(例如算法和搜索部分)的效率要求較高,也可以使用C語言來開發。


既然C語言的應用這麼多,為什麼很多讀者覺得它什麼也做不了呢?

我們先說一個概念,就是庫(Library)。庫就是編程專家寫好的代碼,我們可以拿來直接使用,這樣能夠節省開發成本,提高開發效率,並且庫代碼的執行效率、嚴謹性、安全性和規範性要明顯優於我們自己編寫的代碼,市場上有很多優秀的庫,有的收費,有的免費,我們要善於利用這些庫,儘量不要重複造輪子。

庫一般分為兩種:

  • 編程語言的開發者在開發編程語言的時候,一般都要預先寫好常用的代碼,或者說常用的功能,例如輸入輸出、數學計算、文件操作、網絡操作、日期時間、錯誤處理、字符串處理等,這些由官方編寫的庫稱為標準庫(Standard Library),它們隨編程語言一起發佈,可以認識是編程語言的一部分。
  • 有一些組織機構或者個人也會開發一些庫,有的是為了盈利,有的是業餘愛好,有的是本公司正在使用的代碼,開源出來造福人類,這些庫稱為第三方庫(Third-party Library)。


第三方庫不是由官方開發,沒有質量把控,良莠不齊,但是有相當一部分也非常優秀,已經得到了大家的認可,已經應用在大公司的項目開發中,這些庫能夠和標準庫媲美。

標準庫是我們在學習編程語言時就要一起學習的,例如C語言的輸入輸出、文件操作、日期時間、字符串處理、內存管理等都是標準庫提供的功能,它們並不是C語言語法的內容。

如果一門編程語言的標準庫強大,初學者經過簡單的學習後就很容易開發出實用的項目。例如Java,它的標準庫包含了GUI(圖形界面)、圖形處理、網絡通信、網絡服務器、HTML解析、HTTP協議、多線程、多進程、正則表達式、壓縮文件、加密解密、數據校驗、音頻視頻處理、數據庫操作、XML操作等常用功能,初學者學了以後立馬就能夠開發網站、開發PC軟件,感覺很實用,也感覺學到了東西。Python、C#、VB、PHP、JavaScript、Ruby 等都是非常實用的語言,學了就能做出東西來。

反觀C語言,它的標準庫只有輸入輸出、文件操作、日期時間、數學計算等基本功能,都是在黑黑的控制檯下進行的,跟網站、PC軟件、APP等八竿子打不著,所以初學者覺得C語言沒有用。

那麼,C語言到底能不能開發網站、PC軟件或者APP呢?

C語言的標準庫肯定不能幹這些事情啦,就得依靠第三方庫了,遺憾的是,C語言的第三方庫大都也是底層庫,支持應用開發的庫寥寥無幾,只有一個 GTK 庫能夠開發出 PC 軟件來,而沒有與網站開發和APP開發相關的庫。

GTK 庫在PC軟件開發中也很少用了,PC軟件開發已經是 C++、C#、VB、Java、Delphi 的天下了。換句話說,開發PC軟件基本不使用C語言,而是使用 C++、C#、VB、Java、Delphi 等其它語言。

記住,C語言幾乎不用來做軟件、網站、APP等這些應用層開發,其它的編程語言能夠更好地完成任務,沒必要非得使用C語言,C語言基本都是用來做底層開發,也就是看不見摸不著的、在後臺默默提供服務的那些項目,而這樣的項目對初學者來說基本沒有實用價值,初學者也不知道它們該怎麼使用。

初學者想要的C語言沒有,C語言能做的初學者用不到,就是這種矛盾導致初學者非常迷茫。

有人可能會問,C語言不是還可以用來開發單片機或者嵌入式嗎?是的沒錯,但是這個方向是軟硬件結合的,不是在我們的電腦上進行開發,而是在特殊的開發板上進行開發,並且還需要學習數字電路、模擬電路、彙編、ARM、Linux 等方面的知識,只學C語言也沒有用武之地。

如果你覺得學了C語言沒用,那麼恭喜你,你是對的,應用層的開發一般真的用不上它。

但是,沒用也要學,學習C語言並不一定是要應用它,C語言可以夯實你的編程基礎,尤其是數據結構、算法、內存、線程、進程、通信、操作系統等底層的計算機知識,沒有C語言基礎是學不好的。

這些底層知識並不一定能夠直接應用在實際開發中,但是它們會讓你有底氣,會讓你透徹地理解編程概念,會讓你站的“低”看得遠,會讓你避免很多低級錯誤,會讓你心中有“架構師”的思維。不學C語言是碼農,學了C語言是程序員。

為什麼你覺得C語言什麼都不能做,學了沒用?不可能的



初學者必須C語言開始嗎?


建議從C語言開始,然後學習數據結構、算法、內存、線程、進程、通信、操作系統等基本的概念,它們是學習編程的基礎,不管是應用層開發還是底層開發,這些知識都是必須的。

如果你非要跳過C語言,從其他語言開始,比如 Java、Python、PHP、JavaScript、C# 等,也不是不可以;但是,在學習的過程中你會有一種霧裡看花、空中樓閣的感覺,很多東西只會用,卻理解不了,深入不了,原因就是沒有計算機基礎,沒學會走就想跑了,這個時候,還得老老實實回來學習C語言。


如何學習底層知識


關於數據結構、算法、內存、線程、進程、通信、操作系統等這些基本的知識,重要的是理解概念,知道計算機是怎麼回事,千萬不要深入細節,把自己繞進去,耽誤一兩年的功夫,要儘早跳出來去做應用開發,找到興趣點,獲得成就感。

這個時候,C語言主要的作用是讓你入門,瞭解編程語言的基本語法,強化編程思維,學習計算機底層知識,為以後的職業生涯打下堅實的基礎,而不是用它來做實際開發。

在實際開發中,遇到問題,或者哪裡理解不透了,可以再來回顧這些底層知識,這個時候就可以深入細節了。因為有了實際開發經驗,再學習底層知識就知道哪裡是重點了,不會像無頭的蒼蠅一樣亂飛,什麼都學。


【拓展】C語言為什麼沒有應用層開發的庫


C語言是一門“古老”的語言了,它只支持面向過程編程,不支持面向對象編程和泛型編程,在中大型的應用層項目開發中,C語言已經顯得捉襟見肘了,C++、Java、Python、C# 等其他編程語言能夠更好地勝任,為C語言開發應用層的庫簡直是費力不討好,所以幾乎沒人這麼做。

GTK 算是一個應用層的庫,但是它也比較老了,新版的 GTK+ 已經支持 C++ 了,不再僅僅支持C語言了。

我們先不管面向過程、面向對象、泛型這些晦澀的編程概念,簡單地理解就是,C語言支持的特性少,用起來費勁,開發效率低,而 C++、Java、Python、C# 等支持的特性多,用起來方便,開發效率高。

C語言的優勢是運行效率極高,這正是底層開發所看重的。底層開發有時候就是一個模塊,或者是一個服務,規模不算大,但是對效率有嚴格的要求,此時用C語言就非常合適,所以針對底層開發的C語言庫較多,因為它們有非常大的實用價值。

最後,想學習編程的小夥伴們可以關注+轉發+私信回覆:“資料”就可以拿到一份我為大家準備的編程學習資料!

C語言

注:加.群要求

1、零基礎,目前遇到困難不知從何下手可以加。

2、在公司待久了,過得很安逸,但跳槽時面試碰壁。需要在短時間內進修、跳槽拿高薪的可以加。

3、基礎非常紮實,但對目前主流技術欠缺,需要突破技術瓶頸的可以加。

4、覺得自己很牛B,一般需求都能搞定。但是所學的知識點沒有系統化,很難在技術領域繼續突破的可以加。

5.企業一線C/C++高級大牛直播講解知識點,分享知識,多年工作經驗的梳理和總結,帶著大家全面、科學地建立自己的技術體系和技術認知!

"
為什麼你覺得C語言什麼都不能做,學了沒用?不可能的


對於大部分初學者,學習C語言的目的是希望做一名合格的程序員,開發出靠譜的軟件來。但是學了C語言的基本語法後,發現只能開發“黑底白字”的DOS程序,完全沒有漂亮的界面和生動的交互。於是學數據結構,學算法,學操作系統,越陷越深,越來越難,最後迷茫了,不知道學C語言能做什麼,認為學習編程很難,開始懷疑自己,甚至想放棄。

其實,這是很多初學者都會踩到的一個坑!C語言本身是一門很簡單的語言,提供的實用功能不多,大部分要藉助操作系統、第三方庫、單片機來完成。也就是說,只學C語言基本什麼也做不了,也基本找不到工作。

C語言是一門通用性的語言,並沒有針對某個領域進行優化,在實際項目中,C語言主要用於較底層的開發,例如:

  • Windows、Linux、Unix 等操作系統的內核90%以上都使用C語言開發;
  • 開發硬件驅動,讓硬件和操作系統連接起來,這樣用戶才能使用硬件、程序員才能控制硬件;
  • 單片機和嵌入式屬於軟硬件的結合,有很多使用C語言的地方;
  • 開發系統組件或服務,用於支撐上層應用;
  • 編寫PHP擴展,增強PHP的功能;
  • 如果對軟件某個模塊(例如算法和搜索部分)的效率要求較高,也可以使用C語言來開發。


既然C語言的應用這麼多,為什麼很多讀者覺得它什麼也做不了呢?

我們先說一個概念,就是庫(Library)。庫就是編程專家寫好的代碼,我們可以拿來直接使用,這樣能夠節省開發成本,提高開發效率,並且庫代碼的執行效率、嚴謹性、安全性和規範性要明顯優於我們自己編寫的代碼,市場上有很多優秀的庫,有的收費,有的免費,我們要善於利用這些庫,儘量不要重複造輪子。

庫一般分為兩種:

  • 編程語言的開發者在開發編程語言的時候,一般都要預先寫好常用的代碼,或者說常用的功能,例如輸入輸出、數學計算、文件操作、網絡操作、日期時間、錯誤處理、字符串處理等,這些由官方編寫的庫稱為標準庫(Standard Library),它們隨編程語言一起發佈,可以認識是編程語言的一部分。
  • 有一些組織機構或者個人也會開發一些庫,有的是為了盈利,有的是業餘愛好,有的是本公司正在使用的代碼,開源出來造福人類,這些庫稱為第三方庫(Third-party Library)。


第三方庫不是由官方開發,沒有質量把控,良莠不齊,但是有相當一部分也非常優秀,已經得到了大家的認可,已經應用在大公司的項目開發中,這些庫能夠和標準庫媲美。

標準庫是我們在學習編程語言時就要一起學習的,例如C語言的輸入輸出、文件操作、日期時間、字符串處理、內存管理等都是標準庫提供的功能,它們並不是C語言語法的內容。

如果一門編程語言的標準庫強大,初學者經過簡單的學習後就很容易開發出實用的項目。例如Java,它的標準庫包含了GUI(圖形界面)、圖形處理、網絡通信、網絡服務器、HTML解析、HTTP協議、多線程、多進程、正則表達式、壓縮文件、加密解密、數據校驗、音頻視頻處理、數據庫操作、XML操作等常用功能,初學者學了以後立馬就能夠開發網站、開發PC軟件,感覺很實用,也感覺學到了東西。Python、C#、VB、PHP、JavaScript、Ruby 等都是非常實用的語言,學了就能做出東西來。

反觀C語言,它的標準庫只有輸入輸出、文件操作、日期時間、數學計算等基本功能,都是在黑黑的控制檯下進行的,跟網站、PC軟件、APP等八竿子打不著,所以初學者覺得C語言沒有用。

那麼,C語言到底能不能開發網站、PC軟件或者APP呢?

C語言的標準庫肯定不能幹這些事情啦,就得依靠第三方庫了,遺憾的是,C語言的第三方庫大都也是底層庫,支持應用開發的庫寥寥無幾,只有一個 GTK 庫能夠開發出 PC 軟件來,而沒有與網站開發和APP開發相關的庫。

GTK 庫在PC軟件開發中也很少用了,PC軟件開發已經是 C++、C#、VB、Java、Delphi 的天下了。換句話說,開發PC軟件基本不使用C語言,而是使用 C++、C#、VB、Java、Delphi 等其它語言。

記住,C語言幾乎不用來做軟件、網站、APP等這些應用層開發,其它的編程語言能夠更好地完成任務,沒必要非得使用C語言,C語言基本都是用來做底層開發,也就是看不見摸不著的、在後臺默默提供服務的那些項目,而這樣的項目對初學者來說基本沒有實用價值,初學者也不知道它們該怎麼使用。

初學者想要的C語言沒有,C語言能做的初學者用不到,就是這種矛盾導致初學者非常迷茫。

有人可能會問,C語言不是還可以用來開發單片機或者嵌入式嗎?是的沒錯,但是這個方向是軟硬件結合的,不是在我們的電腦上進行開發,而是在特殊的開發板上進行開發,並且還需要學習數字電路、模擬電路、彙編、ARM、Linux 等方面的知識,只學C語言也沒有用武之地。

如果你覺得學了C語言沒用,那麼恭喜你,你是對的,應用層的開發一般真的用不上它。

但是,沒用也要學,學習C語言並不一定是要應用它,C語言可以夯實你的編程基礎,尤其是數據結構、算法、內存、線程、進程、通信、操作系統等底層的計算機知識,沒有C語言基礎是學不好的。

這些底層知識並不一定能夠直接應用在實際開發中,但是它們會讓你有底氣,會讓你透徹地理解編程概念,會讓你站的“低”看得遠,會讓你避免很多低級錯誤,會讓你心中有“架構師”的思維。不學C語言是碼農,學了C語言是程序員。

為什麼你覺得C語言什麼都不能做,學了沒用?不可能的



初學者必須C語言開始嗎?


建議從C語言開始,然後學習數據結構、算法、內存、線程、進程、通信、操作系統等基本的概念,它們是學習編程的基礎,不管是應用層開發還是底層開發,這些知識都是必須的。

如果你非要跳過C語言,從其他語言開始,比如 Java、Python、PHP、JavaScript、C# 等,也不是不可以;但是,在學習的過程中你會有一種霧裡看花、空中樓閣的感覺,很多東西只會用,卻理解不了,深入不了,原因就是沒有計算機基礎,沒學會走就想跑了,這個時候,還得老老實實回來學習C語言。


如何學習底層知識


關於數據結構、算法、內存、線程、進程、通信、操作系統等這些基本的知識,重要的是理解概念,知道計算機是怎麼回事,千萬不要深入細節,把自己繞進去,耽誤一兩年的功夫,要儘早跳出來去做應用開發,找到興趣點,獲得成就感。

這個時候,C語言主要的作用是讓你入門,瞭解編程語言的基本語法,強化編程思維,學習計算機底層知識,為以後的職業生涯打下堅實的基礎,而不是用它來做實際開發。

在實際開發中,遇到問題,或者哪裡理解不透了,可以再來回顧這些底層知識,這個時候就可以深入細節了。因為有了實際開發經驗,再學習底層知識就知道哪裡是重點了,不會像無頭的蒼蠅一樣亂飛,什麼都學。


【拓展】C語言為什麼沒有應用層開發的庫


C語言是一門“古老”的語言了,它只支持面向過程編程,不支持面向對象編程和泛型編程,在中大型的應用層項目開發中,C語言已經顯得捉襟見肘了,C++、Java、Python、C# 等其他編程語言能夠更好地勝任,為C語言開發應用層的庫簡直是費力不討好,所以幾乎沒人這麼做。

GTK 算是一個應用層的庫,但是它也比較老了,新版的 GTK+ 已經支持 C++ 了,不再僅僅支持C語言了。

我們先不管面向過程、面向對象、泛型這些晦澀的編程概念,簡單地理解就是,C語言支持的特性少,用起來費勁,開發效率低,而 C++、Java、Python、C# 等支持的特性多,用起來方便,開發效率高。

C語言的優勢是運行效率極高,這正是底層開發所看重的。底層開發有時候就是一個模塊,或者是一個服務,規模不算大,但是對效率有嚴格的要求,此時用C語言就非常合適,所以針對底層開發的C語言庫較多,因為它們有非常大的實用價值。

最後,想學習編程的小夥伴們可以關注+轉發+私信回覆:“資料”就可以拿到一份我為大家準備的編程學習資料!

C語言

注:加.群要求

1、零基礎,目前遇到困難不知從何下手可以加。

2、在公司待久了,過得很安逸,但跳槽時面試碰壁。需要在短時間內進修、跳槽拿高薪的可以加。

3、基礎非常紮實,但對目前主流技術欠缺,需要突破技術瓶頸的可以加。

4、覺得自己很牛B,一般需求都能搞定。但是所學的知識點沒有系統化,很難在技術領域繼續突破的可以加。

5.企業一線C/C++高級大牛直播講解知識點,分享知識,多年工作經驗的梳理和總結,帶著大家全面、科學地建立自己的技術體系和技術認知!

為什麼你覺得C語言什麼都不能做,學了沒用?不可能的

"

相關推薦

推薦中...