我們為什麼要學C語言?
學長學姐眼中的C語言
有效入門
作為計算機類專業,編程自然是必不可少的,C語言作為一門很有代表性的程序語言,十分適合入門使用。
編程語言是進行編程的一種工具,在學習C語言的過程中,能夠同時學習相應的編程知識。並且在編程思路和編寫過程中,語句容易理解。
承上啟下
低級語言指的是計算機可以直接讀取的語言,或是貼近於底層代碼的彙編語言,而高級語言則是可以被人類有效理解,融入了人類的思維邏輯的語言。
而C語言則是兼顧了兩方面的特徵,低級是因為它可以代替機器語言或彙編語言編寫高速運行的軟體,並且在硬體方面十分靈活,高級是因為具有高級語言的基本語法和結構,因此可以叫他中級語言。
學好了C語言,就是打好了編程語言的基礎,日後想學習彙編或者高級語言都可以輕鬆的學會。
程序前輩
C語言作為上世紀七十年代的產物流傳至今,在運行時間、運行空間上都有極大的優勢,因此它也成為了很多語言的母語言。
事實上,絕大部分語言都是用C語言寫出來的,比如Java、Python還有php等。還有其他一些語言比如C++則是建立在C語言的基礎上寫成的。而且目前幾乎所有的操作系統均是由C語言編寫的。
信息安全的二進位方向
信息安全有很多方向,其中二進位安全主要是研究一些操作系統和編譯型語言產生的漏洞和錯誤,C語言之所以對二進位重要是因為C語言更接近於系統底層,也是使用最廣泛編譯型語言。
程序高速運行領域的編寫
有些領域要求程序可以快速高效的運行,這就需要和硬體有較大的相關性,比如單片機程序、嵌入式系統軟體和通信程序,包括後端伺服器的開發等環節也需要使用C語言編寫
幫助學習數據結構演算法
數據結構和演算法是編寫程序的很重要的一個環節,簡單來講,數據結構決定了程序的部分性質和構造方法,演算法則是體現在程序的執行效率和佔用空間兩方面,通過C語言,能夠逐步了解這些知識,對學習Python、php等高級語言,理解底層數據結構和演算法都有很重要的幫助。
老師眼中的c語言
一、老而彌堅,仍然無可代替
「
C語言作為上世紀七十年代的產物,因為其對存儲空間的利用率優秀、執行效率高等特點,直至今日仍然是最重要的高級程序語言(沒有之一)。
例如,現有的幾乎所有的操作系統都是由C語言編寫的;一些較為成熟的編譯器是(至少是部分)藉助C語言實現的;嵌入式、驅動程序等開發場景,同樣也是C語言的「主場」。
此外,正因為C語言的強大,使得它成為了很多更晚出現的高級程序語言的母語言。例如,C++是在C語言的基礎上構建的,Java是C語言的「孩子」,而以Python、PHP為代表的腳本語言同樣也要管C語言叫「爸爸」。
這樣的C語言,怎能不學?
」
二、 「恰到好處」地不夠高級
「
一般來說,我們把程序語言分為由計算機直接讀取解析的機器語言和更接近自然語言、對人類(也就是身為程序猿的諸君!)更「友好」的高級程序語言。而在這其中,C語言的地位較為特殊:它的確是一種高級程序語言,但是相比於後來者而言,又顯得不那麼高級。
幸運的是,對於初學者來說,C語言的不夠高級卻是「恰到好處」——它向下兼容著機器語言,你可以在使用C語言時內聯地寫入彙編指令,更不用說C語言中位於最底層的那些函數方法往往本身就是用彙編寫成的;
與此同時,C語言又具有結構體這樣的複雜數據組織方法,這在你將來學習面向對象編程時,會在類、對象等概念的理解上給予非常大的幫助。
所以,學好C語言,就為系統地學習計算機程序打好了基礎。你想學習彙編還是學習高級語言?可以,都行,沒問題。
」
三、學習數據結構的有效「實驗場」
「
程序=演算法+數據,所以不用說,演算法和數據結構是學習計算機的關鍵。而在這一方面,學習C語言能夠養成良好的習慣,而不至於在複雜的實踐環境中忽略掉一些重要的因素(其中很多都是安全相關的)。
舉例來說,腳本語言往往會讓使用者忘掉數據類型的存在,那麼為你處理好這些細節、保證程序實現正確的「助手」是誰呢?還不是C語言啦!
於是,當學習者深入掌握了C語言後,再看更為高級的Java、Python等時,就開始像庖丁解牛,「未嘗見全牛也」,而見筋骨脈絡啦。
怎麼樣,眼饞不眼饞?
」
四、學習軟體和系統安全的最佳入口
「
記住,高級程序語言是給計算機和軟工專業那些可愛的小白兔們用的——畢竟這些玩具的設計本就是為了對他們屏蔽掉軟體的底層細節。對於信息安全(特別是系統安全方向)的學子,不懂底層,何以登堂入室?
C語言更接近於系統底層,也是使用最廣泛編譯型語言,這對於學習和研究操作系統和代碼編譯過程中存在的安全問題,不要太重要!
所以,就算為了將來不被安全口的面試官吐槽,C語言也得肝一下是不是。
」
排版 | 韋薇
審核 | 何佳傑
TAG:這不是網信院科協 |