精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

為什么C語言偏偏成了大學的必修課

C語言編程學習基地 ? 來源:工程師李察 ? 2019-04-28 11:26 ? 次閱讀

這是一本給非計算機專業的大學生的C語言的書。“我不是學計算機的,為啥要學C語言?”這個問題每年在中華大地都會被問上幾百萬次。被問的對象可能是老師,也可能是師哥師姐。師哥師姐往往也就是故作明了的表情,復述一遍隱約記得的老師的話。而這些話多半都是比較高瞻遠矚的,例如“將來可能會用到”,“鍛煉編程思維有好處”,“C語言是學編程的基礎”等等。這些話沒有錯,所謂“技不壓身”,多學點兒東西肯定比不學要有好處。但問題是,如果把學C語言的精力用來學學其它與專業相關度更高的東西,是不是會更好呢?既然如此,干嘛還學C語言呢?

最實在的答案,是何祚庥院士的:“誰叫你不幸生在中國了?”

大學里除了要拿到“畢業證”和“學位證”以外,還要過“四級”和“二級”,否則可能會被扣發兩證,或找工作受阻,難以“落戶”等。這里的二級指的是“全國計算機等級考試二級”,是一個面向“程序員”,“考核計算機基礎知識和使用一種高級計算機語言編寫程序以及上機調試的基本技能”的考試。雖然社會只需要少量的人會編程序,但莫名其妙的是幾乎所有的大學生都想(或被要求)過二級,導致程序設計課程成為了必修課。

二級考試可選的語言包括C、C++Java、Delphi、Visual Basic、Visual FoxPro和Access。為什么偏偏要學最古老的C呢?這里的原因復雜多樣,每個學校都有各自的解讀,就不一一列舉了。總之,中國一定是世界上“認識”C語言的人口最多的國家,二級考試功不可沒。

反正既然此課已開,不學也不行,精力已經搭上,就還是認真了解一下C語言吧。雖然有些無奈,但好在C語言確實是一個有趣的家伙,而且越了解越覺得有趣。如果不信,請往下看……

游戲、黑客和C語言

1969年的美國貝爾實驗室,是當時科技界的夢工廠,集結著世界上最富創造力的科學家和工程師,包括數位諾貝爾獎獲得者,他們一起創造了無數影響著全人類的發明。比如數碼相機的核心——CCD就是那一年在貝爾實驗室誕生的。

這幫家伙的成就貌似高不可攀,但其實也都是凡人,在某些方面和我們也是非常相似的。比如當他們見到一臺強大的計算機時,心里最先想到的也是用它來玩游戲。那個時代,計算機是大型機構才能擁有的奢侈品,在這上面玩游戲實在暴殄天物。但誰在乎呢,追求快樂是最重要的,所以他們為了痛快地玩游戲而沒少動腦筋。

那時候是沒有商業游戲的,所以想有游戲玩,首先要發揮DIY精神,自己編。自己編的游戲被別人喜歡,是當時最有面子的事情。有一個叫Ken Thompson(以下尊稱為ken)的工程師,26歲,游手好閑,看到阿波羅11號載人登月成功,覺得挺酷,自己也想試試,就設計了一個叫“Space Travel”的游戲。在游戲中,玩家駕駛著宇宙飛船,在虛擬的太陽系里穿梭,欣賞美景的同時,還可以在各個行星、衛星表面降落。這個游戲先是在Mutlics系統上編寫,后來又在GECOS系統上重寫。能運行這兩個系統的機器都是笨重的大型機,雖然運算能力出眾,但顯示效果很差,而且機時費非常高,玩一次,公司要支付75美元(當時美國人均月收入大約200美元)。這要是被老板發現了,可不是鬧著玩的。于是他伙同28歲的同事,Dennis M. Ritchie(以下尊稱為dmr),滿大樓地尋找免費的“游戲機”。功夫不負有心人,還真被他們找到了一臺。

PDP-7小型機,DEC制造,擁有當時最先進的圖形處理能力。彼時的計算機主要用來處理數據,圖形能力并不太重要,所以PDP-7更多的時候是靜靜地躺著,很少被使用,直到ken和dmr這對骨灰級的玩家發現了它。

游戲開始了。但是,游戲的運行需要操作系統的支持。PDP-7當時還是“裸機”,沒有能在其上運行的操作系統。偉大的DIY精神再次發揮作用,他倆挽起袖子開始為PDP-7編寫操作系統,并給這個系統起了一個名字——Unix。直到今天,Unix仍然是最被信任的操作系統,它既支撐著軍隊、政府、電力、電信和銀行等大型機構的關鍵業務,也是蘋果Mac系列電腦的動力之源,甚至iPhone、iPod Touch的魅力也部分拜其所賜。

Unix起初是用匯編語言編寫的,那是一種更接近機器而不是人的語言。計算機能直接讀懂的語言叫機器語言,它所有的語句都是由“0”和“1”兩個數字構成的,根本就不是給人看的。當最后一個機器語言程序員瘋掉以后,人們終于開始琢磨怎么讓計算機認識人語。基本思路是做一個翻譯程序,直接把人語翻譯成機器語言。這種翻譯程序被命名為“編譯器”。但是直接理解人語太難了,直到現在還沒能實現,所以就折中一下,設計一種盡量接近人語,還能被精確翻譯為機器語言的語言。這種語言就是我們常說的編程語言,學編程的過程,其實就是學用編程語言說話給編譯器聽的過程。第一種編程語言肯定是最接近機器而遠離人類的,它就是匯編語言。雖然看上去有幾分像人語,比如加法叫“ADD”,減法叫“SUB”,但它的語法完全是機器的,每一行語句都和一條機器指令嚴格對應,這個特點使得針對一種計算機編寫的匯編程序不能在另一種計算機上使用,因為這兩種計算機的機器語言是不同的。用專業術語來說,匯編語言缺少“可移植性”。

Unix的優雅加上Space Travel的吸引力,使很多人希望他們的計算機上也能安裝Unix,玩玩Space Travel。于是ken和dmr決定改用高級語言編寫Unix,這樣它就可以在更多類型的機器上運行。

高級語言是除了機器語言和匯編語言以外幾乎所有編程語言的統稱。它的特點是更接近人語,而與機器語言基本沒有瓜葛。不同的高級語言編譯器可以把同樣的代碼翻譯成適應不同機器的指令,因而高級語言大多具有很好的可移植性。

故事講到這里,該這本書的主角——C語言,登場了。決定使用高級語言后,在語言的選擇上,ken和dmr遇到了麻煩。當時可供選擇的高級語言有很多,包括直到現在還在被使用的BASIC和Fortran等,但都沒被看上眼。DIY基因再次發揮作用,他倆決定自己設計一種好用的高級語言,用來重寫Unix。那一年是1972年,ken繼續完善Unix,dmr以ken早年設計的B語言為基礎,開始設計新語言,兩人一起開發編譯器。這個新語言被隨隨便便地命名為——C語言。

1983年,因為Unix和C語言的巨大成功,ken和dmr共同獲得了計算機界的最高獎——圖靈獎。玩游戲玩到這等境界,古今也就只有這兩人吧。

Unix和C,得中其一,便能富可敵國。然而,他倆從一開始就沒有去想申請專利、商標、軟件著作權等法律保護,而是把所有的一切,包括源代碼,都隨心所欲地到處散播。對他們來說,自己寫的程序有人使用,是最大的快樂,也是最大的財富。也正因為如此,很多機構和個人都能自如地為Unix和C做貢獻,極大地促進了它們的發展。

從上面的故事,我們可以發現他倆的很多可愛之處:做事情以興趣為出發點,并不在乎未來會怎樣;極富鉆研精神,信奉“自己動手,豐衣足食”;樂于分享,不計回報。他們的這些特點正是正宗“黑客精神”的集中體現。他倆也被奉為黑客圈子里的英雄,甚至是開山鼻祖,大家都尊稱他倆為ken和dmr(必須小寫)。幾十年過去了,黑客圈子里再沒有第二個人敢叫“ken”,這個英語圈里司空見慣的名字。

Unix和C至今仍是年輕黑客被圈子接受前必須苦練的三大技藝之一和之二(之三是隨便一種腳本語言)。由黑客設計,被黑客推崇,所以C語言自身也處處閃耀著黑客精神的光芒。這種光芒使它能夠永葆青春。

C語言,不老的傳說

最受歡迎的歌一定是被聽得最多的,最受歡迎的語言一定是被用得最多的。C語言現在用得多嗎?在業界,一般的答案是:如果一件事可以用X語言做,就一定不要用C語言做。

這里的X可以代指任何語言。天啊,這好象是在說“如果可以聽X的歌,就一定不要聽周杰倫的歌”。這是在評價周杰倫還是曾軼可啊?

哪個編程語言是最受歡迎的?每個人都會有自己的主觀看法。還是用客觀的數據說話吧。

TIOBE在2016年8月公布的程序設計語言受歡迎程度的趨勢圖(最新的統計圖請訪問上面網址)。可以看到,C語言始終處于前兩位,而且最近大有再次奪回第一位的勢頭。

能不用就不用,還如此受歡迎,這就有些讓人費解了。dmr曾經說過一句話:“C詭異離奇,缺陷重重,并獲得巨大成功。”因為詭異且有缺陷,所以會被盡量避免使用,取而代之的是彌補了這些缺陷的語言;因為確實獲得了巨大成功,所以它至今仍大受歡迎。一個成功的例證是,圖x-x中列舉的當今最受歡迎的10種語言,除去C語言,剩下的9種中,有7種都直接使用、間接引用或部分借鑒了C語言的語法(比如,它們語句的結尾都要有一個“;”),只有Visual Basic和Python的語法里找不到C的影子。憑這等世界第一的影響力,受到歡迎也就在情理之中了,盡管它是那么的讓人愛恨交織。

C語言的愛與恨

C語言設計原則的第一條是:“信任程序員。”對程序設計語言了解不多的人,不會覺得這句話怎樣。但對真正的程序員來說,憑這句話就足以對C語言愛一輩子,愛得死去活來。

C語言一夫當道的年代,計算機相當昂貴,但速度比不上現今的手機,內存都是以KB為單位計算。所以,那時候對程序最基本的要求就是效率。C語言完全滿足人們對效率的苛求,精心設計的代碼可以極大地節約計算機資源,又不像匯編語言那樣難用,所以受到程序員的歡迎。后來,硬件越來越便宜,性能越來越高,程序的運行效率已經不是追求的主要目標,安全性、穩定性和是否易于維護等變得重要起來,C語言的弊端便顯現了。

C語言給程序員最大的發揮空間,讓他們自由地在代碼中揮灑激情和創意,從不去質疑這些代碼是否會帶來危害,因為它“信任程序員”,相信程序員的決定一定是正確的,即便有錯誤,也一定能自己修正。無限制的自由,在某些人的手中是創造力的源泉,而在另外一些人手中,卻能成為混亂的根源。隨著軟件系統規模的膨脹,需要的程序員越來越多,綜合水準越來越低,出現錯誤的概率越來越大,而每一個低級的錯誤都可能會引發大災難。很多人把這種亂象產生的原因歸罪于C,開始懷疑它,甚至恨它,卻從不反省自己糟糕的編碼能力。于是有人說,給這匹野馬加上韁繩吧,別讓它再恣意狂奔。但是C拒絕了鎖鏈,于是很多語言穿上C的外衣,自己掛上鎖鏈,站了出來。因為它們看上去很像C,所以大家很容易接受;因為它們掛著鎖鏈,所以它們不再信任程序員,而是指手畫腳地告訴程序員,這件事情該怎么做,那件事情不能怎么做。如果程序員不聽它們的,它們就拒絕工作。這樣亂象解除了,開發速度加快了,多人合作容易了,錯誤減少了,對程序員能力的需求降低了,因而工資也降低了,老板開心了,業界繁榮了。平心而論,“一件事情可以用X語言做,就一定不要用C語言做”確實是一個很好的策略,盡管程序員會失去一些自由,但在合法的范圍內仍有一定的空間可以發揮創造力,而且這些創造力很少創造出負面效果,綜合起來能讓老板、程序員、用戶皆大歡喜。但程序員,尤其是受人尊敬的程序員,他們的血液中天生就充滿著不安分,向往自由的黑客生活,所以他們會一邊撫摸著身上的傷口,一邊懷念那個魯莽卻無往不利的老將軍,懷念在他手下無拘無束的日子,懷念被他激發出的層層潛能。這個老將軍是程序員心中永遠的戰神。

C語言教給我們的事

現在,還需要使用C語言的地方大概只限于下面三個領域:

C語言仍然是編寫操作系統的不二之選。它為操作系統而生,能更直接地與計算機底層打交道,精巧、靈活、高效。最重要的,操作系統的開發者都是最頂尖的程序員,他們有充足的能力和經驗駕馭C語言。

在對程序的運行效率有苛求的地方,比如嵌入式領域,C語言也是首選。不過,嵌入式系統現在的硬件性能也已經足夠強大,而功能要求越來越高,所以C語言的生存空間正在縮小。

在需要繼承或維護已有的C代碼的地方,還需要C語言。有很多影響深遠的軟件和程序庫最早都是用C開發的,所以還要繼續應用C。但是,它們中的很多已經開始使用其它語言重寫,那些C的代碼早晚有一天會被拋棄。

應用面如此窄,學它能有多大用處呢?

如果單純從“用不上”這個角度得出“學C語言沒有用”的結論,是有失公允的。即便對計算機及相關專業而言,C語言的“用處”也不算大。學習C語言的意義在于,它為我們打開一扇了解計算機的窗口。在幾乎做任何事情都離不開計算機的今天,越了解計算機也就意味著越能利用好計算機。

美國卡內基梅隆大學計算機科學系前系主任周以真教授在2006年發表了一篇著名的文章——《計算思維》。文中談到“計算機科學的教授應當為大學新生開一門稱為‘怎么像計算機科學家一樣思維’的課,面向非專業的,而不僅僅是計算機科學專業的學生”,這是因為“機器學習已經改變了統計學。……計算生物學正在改變著生物學家的思考方式。類似地, 算博弈理論正改變著經濟學家的思考方式,納米計算改變著化學家的思考方式,量子計算改變著物理學家的思考方式”,所以“計算思維代表著一種普遍的認識和一類普適的技能,每一個人,不僅僅是計算機科學家,都應熱心于它的學習和運用”。

不過遺憾的是,我們現在還很少有學校開設這樣的課程。所以程序設計課在某種程度上肩負了傳播計算思維的責任。這也是對于不需要使用C語言的學生而言,最大意義之所在。

總之,不管你該不該學C,適不適合學C,既然這門課已經開了,而且有不錯的老師帶領,那么就好好抓住這個機會吧,別把時間浪費了。也許一個學期之后,你會發現自己在程序設計方面的天賦,進而在這方面努力,最后成為一名受人尊敬的黑客呢。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • JAVA
    +關注

    關注

    19

    文章

    2960

    瀏覽量

    104557
  • C語言
    +關注

    關注

    180

    文章

    7601

    瀏覽量

    136238
  • C++
    C++
    +關注

    關注

    22

    文章

    2104

    瀏覽量

    73502

原文標題:為什么C語言偏偏成了大學的必修課?

文章出處:【微信號:cyuyanxuexi,微信公眾號:C語言編程學習基地】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    C語言與Java語言的對比

    C語言和Java語言都是當前編程領域中的重要成員,它們各自具有獨特的優勢和特點,適用于不同的應用場景。以下將從語法特性、內存管理、跨平臺性、性能、應用領域等多個方面對C
    的頭像 發表于 10-29 17:31 ?215次閱讀

    抗振抗沖擊是工業級連接器的“必修課”,解讀BD系列連接器的抗振性能

    一款工業級連接器,從來都不是在溫室內躺平,它通常需要在各種復雜惡劣的環境中經受歷練。比如振動與沖擊應力就是工業級連接器在各種應用場景中時常要面對的挑戰,因而抗振抗沖擊是所有工業級連接器的“必修課
    的頭像 發表于 10-25 08:04 ?164次閱讀
    抗振抗沖擊是工業級連接器的“<b class='flag-5'>必修課</b>”,解讀BD系列連接器的抗振性能

    單片機結合鴻蒙系統打造完美的工業家居互聯

    鴻蒙系統研發是中華名族的驕傲,深入了解學習,推廣傳播,致力于將鴻蒙系統推廣到大中專院校,成為一個必修課
    發表于 10-24 10:23

    芯片封裝工藝集成工程師的必修課程指南

    隨著信息技術的飛速發展,芯片作為現代電子設備的核心部件,其重要性日益凸顯。而芯片封裝工藝集成工程師作為芯片制造過程中的關鍵角色,需要掌握一系列復雜的課程知識,以確保芯片的性能、穩定性和可靠性。本文將從多個方面詳細闡述芯片封裝工藝集成工程師需要掌握的課程知識。
    的頭像 發表于 10-24 10:09 ?261次閱讀
    芯片封裝工藝集成工程師的<b class='flag-5'>必修課</b>程指南

    天璣9400 支持MediaTek Xtra Range 3.0技術,Wi-Fi 7技術讓信號多穿兩層樓

    隨著聯發科全大核旗艦芯片的發布,手機游戲進入到后滿幀時代,且拿捏3A已經成為旗艦芯片的必修課
    的頭像 發表于 10-11 10:01 ?242次閱讀
    天璣9400 支持MediaTek Xtra Range 3.0技術,Wi-Fi 7技術讓信號多穿兩層樓

    順應數字化趨勢!Flexus X 實例助力中小企業開啟數字轉型“必修課

    當前,我國數字經濟已進入快速發展期。據國家數據局發布的《數字中國發展報告(2023 年)》顯示,2023 年數字經濟核心產業增加值估計超過 12 萬億元,占 GDP 比重 10%左右,數字經濟在國民經濟中的地位越發穩固,支撐作用更加明顯。大力發展數字經濟,促進數字經濟和實體經濟深度融合,是當下及未來的一個重要方向,而中小企業作為國民經濟的重要組成部分,占據我國企業數量的 90%以上,加快中小企業數字化進程,對促進數字技術和實體經濟深
    的頭像 發表于 09-11 11:33 ?219次閱讀
    順應數字化趨勢!Flexus X 實例助力中小企業開啟數字轉型“<b class='flag-5'>必修課</b>”

    焊接達人必修課:探究金屬材料焊接性的六大要素

    金屬材料焊接性,是指金屬材料對焊接加工的適應性和焊后使用時的可靠性。金屬材料的焊接性,主要取決于材料的化學成分、結構和性能等。其中,化學成分的影響最大。下面,我們將詳細探討影響金屬材料焊接性的主要因素。
    的頭像 發表于 08-08 11:22 ?430次閱讀
    焊接達人<b class='flag-5'>必修課</b>:探究金屬材料焊接性的六大要素

    汽車軟件開發者的必修課:ASPICE 4.0主要特點、優勢及與之前版本的變化之處

    ASPICE(汽車SPICE)4.0是專為汽車行業量身定制的過程評估模型,旨在確保軟件和系統開發過程的質量和可靠性。它是更廣泛的 ISO/IEC 330xx 系列標準的一部分,源自通用 SPICE(軟件流程改進和能力確定)框架。 ASPICE 4.0 的主要特點 過程參考模型 (PRM):ASPICE 4.0定義了一組與汽車軟件和系統開發相關的流程。這些流程涵蓋了從需求獲取到維護的整個生命周期。PRM全面概述了每個過程中的基本活動和預期結果。 過程評估模型 (PAM):PAM 為評估這些流程的成
    的頭像 發表于 06-26 13:20 ?632次閱讀
    汽車軟件開發者的<b class='flag-5'>必修課</b>:ASPICE 4.0主要特點、優勢及與之前版本的變化之處

    3倍ROI,騰訊云卷出一個降本增效神器

    既省,又可靠。從粗放到精細化,是企業在數字化轉型中的必修課。Forrester的研究表明,在復雜多變的國際國內形勢為我國經濟發展帶來巨大的不確定性的宏觀背景下,我國數字化轉型進程也已經進入了深水
    的頭像 發表于 06-19 08:05 ?139次閱讀
    3倍ROI,騰訊云卷出一個降本增效神器

    PLC編程語言C語言的區別

    在工業自動化和計算機編程領域中,PLC(可編程邏輯控制器)編程語言C語言各自扮演著重要的角色。盡管兩者都是編程語言,但它們在多個方面存在顯著的區別。本文將從多個維度深入探討PLC編程
    的頭像 發表于 06-14 17:11 ?2555次閱讀

    如何促進半導體并購,避免雷聲大雨點小呢?

    中國半導體產業經過多年發展取得巨大成績,無論是從產業周期、經濟規律還是當下形勢,都應進入并購整合階段,這是產業發展的必然,也是中國半導體做大做強的必修課
    的頭像 發表于 04-23 11:32 ?479次閱讀

    plc編程語言c語言的聯系 c語言和PLC有什么區別

    PLC編程語言C語言的聯系 PLC(可編程邏輯控制器)是一種針對自動化控制系統的特殊計算機。PLC編程語言是為了控制和管理自動化生產過程中的各種設備而設計的。與之相比,
    的頭像 發表于 02-05 14:21 ?3895次閱讀

    c語言,c++,java,python區別

    C語言C++、Java和Python是四種常見的編程語言,各有優點和特點。 C語言
    的頭像 發表于 02-05 14:11 ?2254次閱讀

    vb語言c++語言的區別

    VB語言C++語言是兩種不同的編程語言,雖然它們都屬于高級編程語言,但在設計和用途上有很多區別。下面將詳細比較VB
    的頭像 發表于 02-01 10:20 ?2079次閱讀

    高壓變頻器日常維護必修課

    高壓變頻器被廣泛應用于冶金、電力、化工等工業場 景,主要用于高壓交流電機的變頻調速。作為工業傳動領域的主要核心產品,高壓變頻器保持穩定、可靠的運行狀態尤為重要。因此,為了減少因變頻器維護不當或者現場 運行環境不良造成變頻器意外停機,需要加強變頻器的日常檢查與維護。 1 如果不進行規范、定期的檢查和維護會有什么不良后果 案例分析:某鋼鐵廠高壓變頻器旁路柜事故 設備狀況:已連續帶負荷運行56小時,事故發生時 變頻器的
    的頭像 發表于 12-18 14:10 ?812次閱讀
    高壓變頻器日常維護<b class='flag-5'>必修課</b>