c語言可以做網(wǎng)站嗎 誰叫你不幸生在中國了?——何祚庥
2021-06-13
誰讓你不幸出生在中國? ——何作秀(中國科學院院士)
這是一本面向非計算機專業(yè)的大學生的C語言書籍。 “我不是計算機系學生,為什么要學C語言?”這個問題在中國大陸每年被問上百萬次。
提問的對象可能是老師,也可能是哥哥姐姐。師兄師姐經(jīng)常用裝腔作勢的語氣,重復著他們依稀記得的老師的話。這些話大多是有遠見的,比如“以后可能會用到”、“鍛煉編程思維是好的”、“C語言是學習編程的基礎”等等。
這些話沒有錯。所謂“一技之長”,多學絕對比不學好。但問題是,如果把學習C語言的精力用來學習其他與專業(yè)更相關的東西,會不會更好?既然如此,你為什么還要學C語言?
最實在的答案來自何作秀院士:“誰讓你不幸出生在中國?”
大學除了拿到“畢業(yè)證”和“學位證”外,還必須通過“四級”和“二級”,否則可能會被減免兩證,或者被阻止找工作,而且很難“安定下來”。等待。這里的二級是指“全國計算機等級考試二級”,是針對“程序員”的考試,“考核計算機基礎知識和使用高級計算機語言編寫程序和計算機調試的基本技能”。
雖然社會只需要少數(shù)人就能編程,但令人費解的是,幾乎所有大學生都希望(或被要求)通過二級,這使得編程課程成為必修課。
2 考試可用的語言包括 C、C++、Java、、、和。為什么要學最老的C?這里的原因復雜多樣,每個學校都有自己的解釋,我就不一一列舉了??傊袊欢ㄊ鞘澜缟稀岸盋語言最多的國家,二級考試是必須的。
總之,這門課既然開了,不學是不可能學的,精力都被占用了,那我們就來仔細看看C語言吧。雖然有點無奈,但好在C語言確實是個有趣的家伙,越了解越覺得有趣。不信請往下看...
游戲、黑客和 C 語言
1969 年的美國貝爾實驗室是當時科技界的夢工廠。它聚集了世界上最具創(chuàng)造力的科學家和工程師,其中包括幾位諾貝爾獎獲得者。他們一起創(chuàng)造了無數(shù)的發(fā)明。比如數(shù)碼相機的核心CCD,當年在貝爾實驗室誕生。
這些家伙的成就看似遙不可及,但其實都是凡人,在某些方面和我們非常相似。例如,當他們看到一臺功能強大的計算機時,他們首先想到的就是用它來玩游戲。在那個時候,電腦是一種奢侈品,只有大型組織才能擁有,在電腦上玩游戲是一件很可怕的事情。不過誰在乎呢,追求快樂才是最重要的,所以他們不會為了玩游戲開心而動腦筋。
那個時候還沒有商業(yè)游戲,所以要玩游戲,首先要發(fā)揮自己的DIY精神,自己動手制作。自己編的游戲被人喜歡了,這在當時是最值得尊敬的。
有一個工程師叫(以下簡稱ken)。他今年26歲,很閑。他看到阿波羅11號載人登月,覺得很酷。我想嘗試一下,所以我設計了一個“”游戲。在游戲中,玩家駕駛宇宙飛船,穿梭于虛擬太陽系,欣賞美景,還可以降落在各種行星和衛(wèi)星的表面。這個游戲先寫在系統(tǒng)上,后來改寫在系統(tǒng)上。
能運行這兩個系統(tǒng)的機器都是笨重的大型機。雖然它們具有出色的計算能力,但它們的顯示效果很差,機器時間成本非常高。該公司必須為一款游戲支付 75 美元(當時美國的平均月收入約為 200 美元)。這要是被老板發(fā)現(xiàn)了,可不是開玩笑的。于是他與他 28 歲的同事 M.(以下簡稱 dmr)合作,在大樓里到處尋找免費的“游戲機”。努力得到了回報,他們真的找到了。
DEC 制造的 PDP-7 小型機具有當時最先進的圖形處理能力。那個時候電腦主要是用來處理數(shù)據(jù)的,圖形能力不是很重要,所以PDP-7更經(jīng)常安靜地躺著,很少使用,直到ken和dmr的鐵桿玩家發(fā)現(xiàn)了它。 .
比賽開始了。但是,游戲的運行需要操作系統(tǒng)的支持。 PDP-7在當時還是一個“裸機”,沒有可以在其上運行的操作系統(tǒng)。偉大的DIY精神再次發(fā)揮作用。他們挽起袖子開始為 PDP-7 編寫操作系統(tǒng),并給這個系統(tǒng)起了個名字——Unix。
直到今天,Unix 仍然是最受信任的操作系統(tǒng)。它不僅支持軍隊、政府、電力、電信、銀行等大型組織的重點業(yè)務,也是蘋果Mac系列電腦,甚至iPod的魅力之源,部分歸功于它。
Unix 最初是用匯編語言編寫的,這是一種更接近機器而不是人的語言。計算機可以直接理解的語言稱為機器語言。它的所有句子都是由兩個數(shù)字“0”和“1”組成的,根本不適合人類。
當最后一個機器語言程序員發(fā)瘋時,人們終于開始思考如何讓計算機識別人類語言?;舅枷胧侵谱饕粋€翻譯程序,將人類語言直接翻譯成機器語言。這個翻譯程序被命名為“編譯器”。
但是直接理解人類語言太難了,直到現(xiàn)在還沒有實現(xiàn),所以我做了一個妥協(xié),設計了一種盡可能接近人類語言并且可以準確翻譯成機器語言的語言。這種語言就是我們常說的編程語言。學習編程的過程,其實就是學習向編譯器說一門編程語言的過程。
第一種編程語言絕對是最接近機器,遠離人類的。它是匯編語言。雖然它看起來有點像人類語言,比如加法叫做“ADD”,減法叫做“SUB”,但它的語法完全是機器化的,每一行語句都嚴格對應一條機器指令。這個特性使它適用于一種計算機編譯后的匯編程序不能在另一臺計算機上使用,因為兩臺計算機的機器語言不同。
從技術角度來說,匯編語言缺乏“可移植性”。
Unix 的優(yōu)雅和 Unix 的吸引力,讓很多人希望在自己的電腦上安裝 Unix 來獲得樂趣。因此 ken 和 dmr 決定用高級語言編寫 Unix,以便它可以在更多類型的機器上運行。
高級語言是除機器語言和匯編語言外幾乎所有編程語言的統(tǒng)稱。它的特點是更接近人類語言,與機器語言基本無關。不同的高級語言編譯器可以將相同的代碼翻譯成適應不同機器的指令,所以大多數(shù)高級語言都具有很好的可移植性。
故事到此結束,本書的主角C語言出現(xiàn)了。在決定使用高級語言后,ken和dmr在語言選擇上遇到了麻煩。
當時有很多高級語言可供選擇,包括那些直到現(xiàn)在還在使用的語言,但沒有一個被認真對待。 DIY基因再次發(fā)揮作用,他們決定設計一種易于使用的高級語言來重寫Unix。
那是 1972 年。Ken 繼續(xù)改進 Unix?;贙en早年設計的B語言,dmr開始設計新的語言。兩人共同開發(fā)了一個編譯器。這種新語言被隨意命名為-C 語言。
1983 年,由于 Unix 和 C 的巨大成功,ken 和 dmr 獲得了計算機行業(yè)最高獎項圖靈獎。玩到這種程度的游戲,古今只有這兩種人。
Unix 和 C,如果你有其中之一,你就可以在敵國發(fā)財。但是,他們從一開始就沒有考慮申請專利、商標、軟件著作權等法律保護。相反,他們將所有內容(包括源代碼)傳播到他們想要的任何地方。
對他們來說,使用自己的程序是最大的幸福和最大的財富。正因為如此,許多組織和個人可以自由地為 Unix 和 C 做出貢獻,極大地促進了它們的發(fā)展。
從上面的故事中,我們可以看出他們的很多可愛之處:以興趣為出發(fā)點做事,不計較未來;很有研究精神,信奉“自己動手,豐衣足食”;樂于分享,不求回報。
他們的這些特點,是正宗“黑客精神”的集中體現(xiàn)。他們也被視為黑客界的英雄,甚至是山岳的締造者。每個人都恭敬地稱他們?yōu)?ken 和 dmr(必須是小寫)。幾十年過去了,黑客圈里沒有第二個人敢叫“ken”這個英文圈里很常見的名字。
Unix 和 C 仍然是年輕黑客在被圈子接受之前必須努力練習的三項技能中的一項和兩項(第三項是任何腳本語言)。由黑客設計,為黑客所推崇,C語言本身處處閃耀著黑客精神。這種光讓它永遠年輕。
其實作為一個開發(fā)者,有一個學習氛圍和一個交流圈是很重要的。這里推薦一個C語言C++交流群。無論您是新手還是轉行,歡迎入駐,大家共同交流,共同成長。
C語言,一個不老的傳奇
最流行的歌曲一定是最常聽到的,最流行的語言一定是最常用的。 C語言現(xiàn)在用的多嗎?業(yè)界普遍的回答是:如果一件事可以用X語言來做,就一定不能用C語言來做。
這里的 X 可以指任何語言。天啊,這好像是在說“能聽X的歌,就不能聽周杰倫的歌”。這是在評價周杰倫還是曾軼可?
哪種編程語言最受歡迎?每個人都會有自己的主觀看法。讓我們用客觀數(shù)據(jù)說話。
2016 年 8 月公布的編程語言流行趨勢圖(最新統(tǒng)計數(shù)據(jù)請訪問上方網(wǎng)站)??梢钥闯?,C語言一直位居前二,最近又有重新奪回第一的勢頭。
如果你不需要它,你不需要它,它如此受歡迎,這有點令人費解。 dmr 曾經(jīng)說過:“C 很奇怪很奇怪,它有很多缺陷,并且取得了巨大的成功?!币驗樗殴智矣腥毕?,所以會盡量避免,取而代之的是一種彌補這些缺陷的語言;因為它確實取得了巨大的成功。 ,所以今天還是很流行的。
一個成功的例子是圖 xx 中列出的 10 種最流行的語言。除C語言外,其余9種語言中有7種是直接使用、間接引用或部分借用C語言的。語法(比如語句末尾必須有“;”),只是語法找不到C的影子。 以這個世界第一的影響力,受到歡迎是合情合理的,即使它愛恨交織。
C語言的愛與恨
C 語言設計的第一原則是:“信任程序員”。對編程語言不太了解的人不會想到這句話。但是對于真正的程序員來說,這句話足以讓C語言愛一輩子,愛到死。
在C語言當?shù)赖臅r代,電腦相當昂貴c語言可以做網(wǎng)站嗎,但速度不如現(xiàn)在的手機快,內存以KB計算。因此,當時對程序最基本的要求就是效率。
C 語言完全滿足了人們對效率的需求。精心設計的代碼可以大大節(jié)省計算機資源,而且不像匯編語言那樣難用,所以很受程序員歡迎。
后來硬件越來越便宜,性能越來越高。計劃的效率不再是追求的主要目標。安全性、穩(wěn)定性和易維護性變得重要,C 語言的缺點也變得明顯。 .
C 語言給了程序員最大的發(fā)揮空間,讓他們在代碼中自由發(fā)揮自己的熱情和創(chuàng)造力,從不質疑代碼是否會帶來危害,因為它“信任程序員”,相信程序員的決定一定是正確的,即使有錯誤,也必須自己改正。
無限的自由,在一些人手中是創(chuàng)造力的源泉,在另一些人手中,它可能是混亂的源泉。隨著軟件系統(tǒng)規(guī)模的擴大,需要的程序員越來越多,綜合水平越來越低,出錯的概率越來越高,每一個低級的錯誤都可能造成災難。
很多人把造成這種混亂的原因歸咎于 C,開始懷疑它,甚至討厭它,但從來沒有反思過他們糟糕的編碼能力。
所以有人說c語言可以做網(wǎng)站嗎,給這匹野馬放韁繩,不要讓它狂奔。但是C拒絕了鎖鏈,這么多語言披上了C的外衣,掛上了鎖鏈,站了起來。因為長得很像C,所以大家很容易接受;因為他們被鎖住了,他們不再信任程序員,而是告訴程序員如何做這件事,如何做那件事。
如果程序員不聽他們的,他們就會拒絕工作。這樣,混亂得到解決,開發(fā)速度加快,多人合作更容易,錯誤減少,對程序員能力的需求減少,工資也減少,老板高興,行業(yè)繁榮。
平心而論,“一件事可以用X語言做,你一定不能用C語言做”確實是一個很好的策略。程序員雖然會失去一些自由,但在合法范圍內還是有一定的空間的。可以有創(chuàng)意,而這些創(chuàng)意很少會產生負面影響,結合起來讓老板、程序員和用戶開心。但是程序員,尤其是受人尊敬的程序員,他們的血液里天生就有躁動,向往自由的黑客生活。
所以在撫摸他們身上的傷口的同時,他們會懷念那個肆無忌憚卻無敵的老將軍,懷念他手下的無拘無束的日子,懷念他激發(fā)出的層層潛力。這位老將軍是程序員心中永遠的戰(zhàn)神。
C 語言教會了我們什么
現(xiàn)在,還需要用到C語言的地方大概僅限于以下三個方面:
C 語言仍然是編寫操作系統(tǒng)的最佳選擇。它為操作系統(tǒng)而生,可以更直接地處理電腦底層,精致、靈活、高效。最重要的是,操作系統(tǒng)的開發(fā)者是頂尖的程序員,他們有足夠的能力和經(jīng)驗來駕馭C語言。
在程序運行效率要求較高的地方,比如嵌入式領域,C語言也是首選。但是,目前嵌入式系統(tǒng)的硬件性能已經(jīng)足夠強大,功能要求越來越高,C語言的生存空間正在縮小。
在需要繼承或維護現(xiàn)有 C 代碼的地方,還需要 C 語言。有許多影響深遠的軟件和程序庫最初是用 C 開發(fā)的,因此 C 將繼續(xù)使用。然而,其中許多已經(jīng)用其他語言重寫了,這些 C 代碼總有一天會被拋棄。
應用這么窄,學起來有多大用處?
從“不可用”的角度得出“學習C語言沒用”的結論是不公平的。即使是計算機及相關專業(yè),C語言的“用處”也不是很大。學習C語言的意義在于它為我們打開了一扇了解計算機的窗口。在幾乎所有東西都離不開電腦的今天,越了解電腦,就越能用好電腦。
卡內基梅隆大學計算機系原系主任周以真教授2006年發(fā)表著名文章——《計算思維》。 “像計算機科學家一樣思考”適用于大學新生。它針對的是非專業(yè)人士,而不僅僅是計算機科學專業(yè)的學生。這是因為“機器學習統(tǒng)計已更改。
計算生物學正在改變生物學家的思維方式。同樣,計算博弈論正在改變經(jīng)濟學家的思維方式,納米計算正在改變化學家的思維方式,量子計算正在改變物理學家的思維方式?!币虼?,“計算思維代表了一種普遍的理解和一種這樣普遍的技能,每個人,而不僅僅是計算機科學家,應該對它的學習和應用充滿熱情”。
不幸的是,我們仍然很少有學校提供此類課程。因此,編程課程在一定程度上肩負著傳播計算思維的責任。這對于不需要使用C語言的同學來說,也是最大的意義。
總之,學不學C,學C適合不適合自己,既然這門課已經(jīng)開并且有好老師帶領,那就趁著這個機會不要浪費時間了。也許一個學期后,你會發(fā)現(xiàn)自己在編程方面的天賦,然后在這方面努力,最后成為受人尊敬的程序員。
————————
看到這里,是不是對編程語言和C語言有了新的認識~
如果你喜歡這篇文章,動動小指點贊然后去吧~