色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

為什么要學習C語言的詳細分析

C語言編程學習基地 ? 2017-12-19 14:54 ? 次閱讀

這是一本給非計算機專業的大學生的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,既然這門課已經開了,而且有不錯的老師帶領,那么就好好抓住這個機會吧,別把時間浪費了。也許一個學期之后,你會發現自己在程序設計方面的天賦,進而在這方面努力,最后成為一名受人尊敬的黑客呢。

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

    關注

    180

    文章

    7605

    瀏覽量

    136993

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

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

收藏 人收藏

    評論

    相關推薦

     美國站群vps云服務器缺點詳細分析

    美國站群VPS云服務器在提供多項優勢的同時,也存在一些缺點。主機推薦小編為您整理發布美國站群vps云服務器缺點詳細分析
    的頭像 發表于 12-12 10:43 ?102次閱讀

    復合機器人在3c電子行業的應用

    時代在發展科技在進步,復合機器人在3C電子行業中的應用已經變得越來越廣泛,它們以高效、精確和靈活的特點,為3C電子產品的生產帶來了顯著的變革。以下是對復合機器人在3C電子行業應用的詳細分析
    的頭像 發表于 12-06 18:12 ?207次閱讀
    復合機器人在3<b class='flag-5'>c</b>電子行業的應用

    C語言指針學習筆記

    本文從底層內存分析,徹底讓讀者明白C語言指針的本質。
    的頭像 發表于 11-05 17:40 ?248次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>指針<b class='flag-5'>學習</b>筆記

    如何分析美國站群服務器的成本效益?

    美國站群服務器的成本效益分析是一個復雜但至關重要的過程,它涉及到多個方面的考量。主機推薦小編為您推薦美國站群服務器成本效益的詳細分析
    的頭像 發表于 10-30 11:23 ?120次閱讀

    C語言與Java語言的對比

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

    C語言關鍵字--typedef

    C語言關鍵字使用方法學習指南!
    的頭像 發表于 10-07 12:44 ?275次閱讀

    固態電池使用壽命

    固態電池的使用壽命是一個受到多方因素影響的復雜問題,以下是對其使用壽命的詳細分析
    的頭像 發表于 09-15 11:53 ?2824次閱讀

    按照這樣學習C語言,成為卷王不是夢!

    在計算機編程領域,C語言被譽為一種強大而靈活的編程語言,掌握好C語言不僅可以讓你輕松駕馭各種編程任務,還能夠為你的職業生涯打下堅實的基礎。但
    的頭像 發表于 07-06 08:04 ?325次閱讀
    按照這樣<b class='flag-5'>學習</b><b class='flag-5'>C</b><b class='flag-5'>語言</b>,成為卷王不是夢!

    作物長勢監測儀是什么?詳細分析

    監測儀
    博科儀器
    發布于 :2024年07月05日 16:24:37

    深度學習常用的Python庫

    深度學習常用的Python庫,包括核心庫、可視化工具、深度學習框架、自然語言處理庫以及數據抓取庫等,并詳細分析它們的功能和優勢。
    的頭像 發表于 07-03 16:04 ?658次閱讀

    NMOS LDO原理概括 NMOS LDO原理詳細分析

    NMOS LDO詳細工作原理見圖2-17,圖中是NMOS的輸出特性曲線,讓我們結合圖2-16圖2-17分析。假設一開始LDO工作狀態在A點,當負載電流突然增加時Vo下降,Vi不變,由于VDS
    的頭像 發表于 06-17 17:09 ?1.8w次閱讀
    NMOS LDO原理概括 NMOS LDO原理<b class='flag-5'>詳細分析</b>

    什么是步進電機的細分控制?步進電機為什么細分,如何細分

    什么是步進電機的細分控制?步進電機為什么細分,如何細分? 步進電機的細分控制是一種控制技術,通過對電機驅動信號的
    的頭像 發表于 02-18 09:39 ?7733次閱讀

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

    操作系統、嵌入式系統等對性能要求較高的場景。C語言的語法相對簡單,學習曲線較平緩,也是學習其他高級語言的入門
    的頭像 發表于 02-05 14:11 ?2429次閱讀

    vb語言c++語言的區別

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

    如何解決C語言中的“訪問權限沖突”異常?C語言引發異常原因分析

    一些措施來解決和防止其發生。本文將詳細介紹C語言中訪問權限沖突異常的原因以及解決方法。 一、訪問權限沖突異常的原因分析 訪問權限沖突異常可分為兩類:訪問私有成員和訪問未定義成員。下面分
    的頭像 發表于 01-12 16:03 ?5807次閱讀
    主站蜘蛛池模板: 国产精品女上位好爽在线短片| 久久精视频| 琪琪婷婷五月色综合久久| 北原夏美 快播| 校园刺激全黄H全肉细节文| 精品第一国产综合精品蜜芽| 最近的中文字幕2019国语| 飘雪韩国在线观看免费高清完整版| 国产不卡在线观看视频| 亚洲国产精品无码2019| 蜜桃色欲AV久久无码精品| 成人免费视频网站www| 亚洲免费高清视频| 欧美男女爱爱| 国内精品视频一区二区在线观看 | 在线自拍亚洲视频欧美| 人人射人人爱| 久草国产在线播放| 单亲妈妈3韩国电影免费观看| 亚洲精品一区二区在线看片| 欧美日韩黄色| 九色PORNY真实丨国产大胸| 打开双腿狠狠蹂躏蜜桃臀| 伊人久久国产精品| 午夜伦理伦理片在线观| 年轻的搜子8中字在线观看| 国产午夜三级一区二区三| FERRCHINA内入内射| 一本道高清码| 我的好妈妈BD免费观看 | 色妺妺免费影院| 绿巨人www| 国产婷婷综合在线视频中文| 9久久免费国产精品特黄| 亚洲色欲色欲www474ee| 日本美女毛茸茸| 蜜桃传媒在线观看| 精品国产露脸久久AV麻豆| 国产精品久久久亚洲偷窥女厕| 99精品视频在线观看| 永久免费无码AV国产网站|