成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為什么要學習和使用 C 語言?

開發(fā) 開發(fā)工具 后端
對于理工 科學生來說,這個答案可能很簡單,因為這是一門必修課。而對于程序員來說選擇一門編程語言,在某種程度上,對職業(yè)生涯的發(fā)展會產(chǎn)生重大的影響,所以必須慎 之又慎。那么,為什么要選擇一門誕生了將近半個世紀的語言?本文不是老生常談的廢話,如:"C 語言是編程的基礎(chǔ)"、"學好 C 語言,走遍天下都不怕"等等,本文力爭詳盡而又有理的回答這個問題,旨在成為最好的為什么要學習和使用 C 的文章。

一、前言

對于理工 科學生來說,這個答案可能很簡單,因為這是一門必修課。而對于程序員來說選擇一門編程語言,在某種程度上,對職業(yè)生涯的發(fā)展會產(chǎn)生重大的影響,所以必須慎 之又慎。那么,為什么要選擇一門誕生了將近半個世紀的語言?本文不是老生常談的廢話,如:"C 語言是編程的基礎(chǔ)"、"學好 C 語言,走遍天下都不怕"等等,本文力爭詳盡而又有理的回答這個問題,旨在成為***的為什么要學習和使用 C 的文章。

二、C 語言

C 語言是由美國 AT&T 貝爾實驗室的研究員 Dennis Ritchie 在 B 語言的基礎(chǔ)上,最初作為改造 Unix 操作系統(tǒng)的開發(fā)語言,并伴隨著 Unix 操作系統(tǒng)興起而流行,后來,隨著微型計算機的發(fā)展,C 開始被移植到其他操作系統(tǒng)平臺上,成為獨立的程序設(shè)計語言。

下圖摘自 TIOBE 編程語言排行榜,過去 30 年 90% 時間里 C 都是獨領(lǐng)風騷的,僅偶爾被 Java 超越:

為什么要學習和使用 C 語言?

技術(shù)分享

那么是因為一門語言一直位于排行榜的***名就該去學習和使用嗎?顯然不是,人云亦云是程序員的大忌。為操作系統(tǒng)而生的標簽注定了 C 不可能平庸,實話實說,C 是一門很難學習和使用的編程語言,沒有編譯原理、操作系統(tǒng)和計算機體系結(jié)構(gòu)扎實的基礎(chǔ)知識,根本不可能把 C 學的明白、用的順手。C 作為一門工程實用性極強的語言,提供了對操作系統(tǒng)和內(nèi)存的精準控制,高性能的運行時環(huán)境,源碼級的跨平臺編譯等優(yōu)點,才是我們必須學習和使用 C 的理由。

同時,幸運的是 C 也是個有趣的東西,對編程的認知越深,就會越覺得有意思,我簡單列舉一些 C 的優(yōu)點:

2.1)結(jié)構(gòu)化設(shè)計語言,語法清晰、結(jié)構(gòu)簡單,模塊化使得程序的各個部分除了必要的信息交流外彼此獨立,便于開發(fā)、調(diào)試以及調(diào)試。

2.2)運算符多,把括號、賦值、強制類型轉(zhuǎn)換等都作為運算符處理,靈活使用各種運算符可以實現(xiàn)在其它高級語言中難以實現(xiàn)的運算。

2.3)數(shù)據(jù)結(jié)構(gòu)豐富,能實現(xiàn)各種復(fù)雜的數(shù)據(jù)類型的運算,引入指針、結(jié)構(gòu)體概念使程序效率更高。

2.4)為操作系統(tǒng)而生,可以像匯編語言一樣對位、字節(jié)和地址進行操作,允許直接訪問物理地址對硬件進行操作,把高級語言的基本結(jié)構(gòu)和語句與低級語言的實用性結(jié)合起來。

2.5)程序執(zhí)行效率高,一般比匯編程序生成的目標代碼效率低 10%~20%。

2.6)可移植性好,C 語言抽象了針對 CPU 編程的細節(jié),能廣泛應(yīng)用于針對大型操作系統(tǒng)和系統(tǒng)軟件的編寫。

2.7)具備強大的繪圖功能,和 C++ 一樣也可以寫出很優(yōu)雅的二維、三維圖形和動畫。

有人說,C 是 C++ 的子集,C 能做到的事,C++ 一樣能做到,并且還可以做的更好,如:三大面向?qū)ο筇匦浴UI 編程,誠然,我承認在 GUI 編程領(lǐng)域 C++ 占據(jù)著絕對的統(tǒng)治地位,至今無人能撼動。但真的有必要用 C++ 來替代 C 完成工作嗎?很多時候 C++ 解決問題的思路真的比 C 更先進嗎?

三、C 和 C++ 比較

寫到這一 段的時候我有一種戰(zhàn)戰(zhàn)兢兢、如履薄冰的感覺,畢竟 C、C++ 是廣大程序員都很熟悉東西,打起嘴炮來也是極其恐怖的,其實在關(guān)乎信仰的問題上,任何的爭論都是無止境的,也是無意義的。我希望大家不要把大量精力用來爭 論純粹的語言優(yōu)劣上,而是去思考如何的正確的把事情做好,什么是正確的做事——快速高效的開發(fā),保障快速穩(wěn)定的運行,快速簡單的維護。

下圖是嘴炮大神 Linus Torvalds 當年抨擊 C++ 和他周圍那些 C++ 大牛程序員們的犀利言辭,其實我個人并不欣賞 Linus 的個人風格,我還是希望大家能心平氣和的談?wù)?C 相比 C++ 的一些優(yōu)點和現(xiàn)狀:

為什么要學習和使用 C 語言?

技術(shù)分享

3.1)隱式操作:C 簡單直接、結(jié)構(gòu)清晰,每行代碼都能清楚的被反匯編成相應(yīng)的語句,系統(tǒng)會嚴格按照你的代碼去執(zhí)行。而 C++ 則不盡然,簡單的語句也說不清楚究竟有多少次構(gòu)造和拷貝,這樣編寫底層代碼是完全不行的,底層需要精準和嚴格的控制。

3.2) 語言接口:現(xiàn)代軟件工程項目的開發(fā),不但對性能有很高要求,對于語言接口的對接能力也有很高要求,因為偌大的一個項目很少僅使用一種語言來進行開發(fā),對于 底層,C++ 對內(nèi)存和硬件的控制不如 C 簡潔精準;對于很多動態(tài)語言和中間件,如:PHP、Python 和 Apache、Redis,都受了 C 的很大影響,甚至就是 C 開發(fā)出來的東西,對接起來非常方便。沒錯兒,其實 C++ 采用迂回的方式也能對接的,但是,遠遠不如 C 方便,開發(fā)和維護成本非常高。

3.3)硬件層:

3.2.1>分配內(nèi)存:系統(tǒng)加電后運行,經(jīng)過匯編初始化棧,然后再跳轉(zhuǎn)到 C 語言的 start_init() 函數(shù)去,這時候內(nèi)存分配機制都還沒有建立,C++ 如何定義類?如何實例化對象?

3.2.2>標準庫依賴:C 的所有特性都可以不依賴任何庫運行,如有必要,可以按照特定需求自己編寫庫。

3.2.3>處理器兼容:C++ 的類是依賴基地址+偏移地址的尋址方式,很多微處理器只有簡單的給定地址尋址,不支持一條語句實現(xiàn) base + offset 的尋址機制,很多 C++ 代碼編譯出來需要更多的指令來運算地址,導(dǎo)致性能下降了太多。

3.4)應(yīng)用層:C++ 在做應(yīng)用層尤其是 GUI 編程,這是 C++ 的傳統(tǒng)強項,我一直堅持 C 也能優(yōu)雅的做出圖像和動畫,但開發(fā)效率確實較 C++ 低很多,最近有個很火的 RUST 語言,號稱是未來唯一能取代 C++ 的編程語言,感興趣的同學可以多關(guān)注下。

四、總結(jié)

為什么要學習和使用 C 語言?

下面我列舉了 10 多個目前熱門的發(fā)展方向,粗略的介紹了下列項目里最常用的編程語言:技術(shù)分享

由上圖可知,操作系統(tǒng)、編譯原理、數(shù)據(jù)結(jié)構(gòu)與算法等等基礎(chǔ)知識,是深入理解、掌握和靈活運用 C 的重要前提,現(xiàn)階段程序員職業(yè)生涯超過一半的熱門方向直接或間接與 C 有關(guān),我想,學好 C 的重要性也就不言而喻了。

責任編輯:王雪燕 來源: 碼迷
相關(guān)推薦

2010-01-22 15:14:37

學習C++

2017-04-05 18:10:05

R語言開發(fā)Ross

2010-11-03 09:22:00

C語言

2010-01-20 14:03:12

C++程序

2019-11-15 13:10:17

潘石屹Python語言

2012-04-11 09:19:08

Haskell編程

2022-11-28 09:58:58

C++開發(fā)

2012-06-18 14:51:09

Python

2015-05-12 11:04:42

Java EE學習Java EE

2018-08-02 15:24:05

RPCJava微服務(wù)

2021-03-08 11:28:59

人工智能深度學習Python

2022-01-17 16:09:43

Go語言開發(fā)

2012-06-12 09:47:17

C語言

2020-09-04 15:34:07

C編程語言開發(fā)

2022-12-26 00:25:06

2022-06-30 08:03:13

Prisma數(shù)據(jù)庫工具開源

2021-02-23 10:19:46

編程技能開發(fā)

2010-01-21 10:34:08

SUN-JAVA認證

2021-06-17 06:19:20

存儲SQL數(shù)據(jù)庫

2021-11-19 09:49:00

CC++語法糖
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 精品日韩一区二区三区av动图 | 99精品欧美一区二区三区综合在线 | 日本精品免费 | 最新国产精品 | 中文字幕免费观看 | 一级大片网站 | 久久国产美女视频 | 中文字幕在线免费 | 国产精品免费观看 | 成人黄色电影在线播放 | 日韩视频一区二区在线 | 九九导航 | 久久亚| 狠狠操狠狠操 | 久草新在线 | 欧美精品啪啪 | 亚洲国产aⅴ成人精品无吗 国产精品永久在线观看 | 久久久久国产一区二区三区四区 | 国产a爽一区二区久久久 | 日韩欧美视频免费在线观看 | 国产午夜一级 | 在线一区观看 | 欧美日韩国产一区二区三区 | 黄色在线免费观看 | 青青伊人久久 | 亚洲精彩视频在线观看 | 成人在线视频网 | 成人午夜精品一区二区三区 | 日韩一级黄色片 | 欧美中文字幕在线 | 亚洲综合国产 | 亚洲啊v在线 | 夜夜夜夜夜夜曰天天天 | 国产精品视频999 | 色视频www在线播放国产人成 | 国产精品色 | 亚洲九九精品 | 看av电影| 欧美日韩精品区 | 毛片网站在线观看 | 国产精品99久久久久久久久 |