自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

我們?yōu)槭裁匆獙W(xué)C語(yǔ)言?

開(kāi)發(fā) 后端
C語(yǔ)言,似乎是一門很久遠(yuǎn)的語(yǔ)言了。但是身為程序員的我們,都對(duì)C語(yǔ)言有所了解。究竟我們?yōu)槭裁匆獙W(xué)習(xí)C?

C是寫(xiě)操作系統(tǒng)最常使用的編程語(yǔ)言(譯注:沒(méi)有之一)。Unix是用C寫(xiě)的第一個(gè)操作系統(tǒng)。后來(lái)Microsoft Windows,Mac OS X,還有GNU/Linu也都是用C寫(xiě)的。C不僅是操作系統(tǒng)的語(yǔ)言,也是其它幾乎所有今天最流行的高級(jí)語(yǔ)言的先驅(qū)和靈感來(lái)源。事實(shí)上,Perl,PHP,Python和Ruby都是用C寫(xiě)的。

通過(guò)類推的方式,讓我們這么說(shuō)你一直在學(xué)的西班牙語(yǔ)、意大利語(yǔ)、法語(yǔ)或者葡萄語(yǔ)。你想過(guò)知道點(diǎn)拉丁語(yǔ)會(huì)很有用嗎?因?yàn)槔≌Z(yǔ)是所有這些語(yǔ)言的基礎(chǔ),了解了C,你就能理解和欣賞建構(gòu)在傳統(tǒng)C之上的整個(gè)編程語(yǔ)言家族。懂得C,就擁有了自由。  

為什么是C,而不是匯編語(yǔ)言?

匯編語(yǔ)言提供了速度和最大的編程可控性,C提供的是可移植性。  

不同的處理器必須采用不同的匯編語(yǔ)言來(lái)編程,必須選擇其中一種,只能學(xué)習(xí)其中一種,這太*了。事實(shí)上,面對(duì)眾多的計(jì)算機(jī)架構(gòu),C的一個(gè)主要優(yōu)勢(shì)在于其通用性和可移植性,而將硬件層的大多控制留給了匯編語(yǔ)言。  

例如,C程序可以編譯運(yùn)行在如下設(shè)備上,HP 50g計(jì)算器(ARM處理器)、TI-89計(jì)算器(68000處理器)、Palm OS Cobalt智能手機(jī)(ARM處理器)、原始的iMac(PowerPC)、Arduino(Atmel AVR)和Intel iMac(Intel Core 2 Duo)。這些設(shè)備每個(gè)都有自己的專有匯編語(yǔ)言,并且完全不兼容于任何其它一個(gè)設(shè)備的匯編語(yǔ)言。  

匯編語(yǔ)言,很強(qiáng)大,但很難去編寫(xiě)大型應(yīng)用程序,很難以邏輯方式去閱讀和解釋。C是一種編譯語(yǔ)言,可以產(chǎn)生快速有效的可執(zhí)行文件。C也是一個(gè)小型“所見(jiàn)即所得”語(yǔ)言:一個(gè)C語(yǔ)句最多對(duì)應(yīng)著幾個(gè)匯編語(yǔ)句,其它都以庫(kù)函數(shù)的形式提供。  

所以這就是C是如此流行的語(yǔ)言的原因?  

就像推度多米諾骨牌一樣,下一代的程序跟隨著它的先輩的足跡。用C設(shè)計(jì)的操作系統(tǒng)通常都有用C設(shè)計(jì)的系統(tǒng)庫(kù)。這些系統(tǒng)庫(kù)反過(guò)來(lái)用于構(gòu)建高級(jí)庫(kù)(如OpenGL,或者GTK),這些庫(kù)的設(shè)計(jì)者通常又會(huì)采用系統(tǒng)庫(kù)所使用的語(yǔ)言。高級(jí)庫(kù)又被應(yīng)用級(jí)開(kāi)發(fā)者用來(lái)設(shè)計(jì)字處理程序、游戲、媒體播放器等諸如此類。他們多數(shù)會(huì)選擇采用高級(jí)庫(kù)所使用的語(yǔ)言來(lái)編程。這種模式就這樣如此如此進(jìn)行...  

為什么是C,而不是另一個(gè)高級(jí)語(yǔ)言?

C最主要的設(shè)計(jì)是用于生成可移植代碼,同時(shí)保持性能又能最小化腳印,而這本來(lái)就是“高級(jí)”接口打算在操作系統(tǒng)或者其它程序上發(fā)揮的作用。作為一種既穩(wěn)定又成熟的語(yǔ)言,其特性長(zhǎng)期來(lái)看未必會(huì)消失,而是移植到了大多(如果不是所有)的平臺(tái)上。  

例如,C程序能夠編譯運(yùn)行在這些設(shè)備上,包括HP 50g計(jì)算器(ARM處理器)、TI-89計(jì)算器(68000處理器)、Palm OS Cobalt智能手機(jī)(ARM處理器)、原始的iMac(PowerPC)、Arduino(Atmel AVR)和Intel iMac(Intel Core 2 Duo)。幾乎所有流行的編程語(yǔ)言都至少能運(yùn)行在這些設(shè)備的其中一種上,而C可能是唯一可以運(yùn)行在三種以上的這些設(shè)備的編程語(yǔ)言。  

一個(gè)最有力的理由是內(nèi)存分配。不像大多計(jì)算機(jī)語(yǔ)言,C允許程序員直接寫(xiě)內(nèi)存。在C中如結(jié)構(gòu)體、指針和數(shù)組,這些設(shè)計(jì)的目的就是用一種高效且機(jī)器無(wú)關(guān)的方式去構(gòu)建和操作內(nèi)存。尤其是,C給出了在數(shù)據(jù)結(jié)構(gòu)的內(nèi)存層上的控制方法。此外,動(dòng)態(tài)內(nèi)存分配是程序員掌控,這必然意味著內(nèi)存重分配成為了程序元的負(fù)擔(dān)。而Java和Perl之類的語(yǔ)言則將程序員從對(duì)內(nèi)存分配和指針的擔(dān)心之中解救出來(lái)。一般而言這是件好事,因?yàn)閷?xiě)高級(jí)程序時(shí)處理內(nèi)存一個(gè)很容易出錯(cuò)的過(guò)程。然而,當(dāng)處理低層代碼時(shí),例如操作系統(tǒng)控制一個(gè)設(shè)備的部分,C提供了一個(gè)統(tǒng)一清晰的接口。在其它的高級(jí)語(yǔ)言如Java中則沒(méi)有這些性能。  

Perl、PHP、Python和Ruby這些語(yǔ)言可能很強(qiáng)大,能支持許多C缺省不支持的特性,而一般這些語(yǔ)言是不能用自己實(shí)現(xiàn)的。恰恰相反,這些語(yǔ)言多數(shù)最初都是依賴C(或者另一種高性能編程語(yǔ)言)寫(xiě)成,而且使用之前必須先要移植到新平臺(tái)上。  

與所有編程語(yǔ)言一樣,是否優(yōu)先選擇C語(yǔ)言要視技術(shù)和商業(yè)需求而定

【編輯推薦】

  1. C語(yǔ)言對(duì)象編程構(gòu)思
  2. C語(yǔ)言中的面向?qū)ο笏枷?/span>
  3. C語(yǔ)言中的DIV的用法及DIVAB概念解析
  4. 詳解Linux系統(tǒng)下搭建C語(yǔ)言開(kāi)發(fā)環(huán)境
  5. 妙趣橫生的算法(C語(yǔ)言實(shí)現(xiàn))
責(zé)任編輯:彭凡 來(lái)源: 譯言
相關(guān)推薦

2022-11-28 09:58:58

C++開(kāi)發(fā)

2010-01-22 15:14:37

學(xué)習(xí)C++

2012-04-11 09:19:08

Haskell編程

2019-11-15 13:10:17

潘石屹Python語(yǔ)言

2015-05-25 15:31:56

C語(yǔ)言學(xué)習(xí)和使用 C 語(yǔ)言

2017-04-05 16:40:45

2021-01-26 05:37:08

分庫(kù)分表內(nèi)存

2014-05-30 15:56:26

iOS 8WWDC2014

2021-05-17 08:20:22

職場(chǎng)晉升轉(zhuǎn)型

2017-11-21 14:41:29

編程語(yǔ)言Python

2021-03-26 10:04:38

數(shù)據(jù)結(jié)構(gòu)技術(shù)

2017-04-05 18:10:05

R語(yǔ)言開(kāi)發(fā)Ross

2023-12-08 10:59:49

2021-06-21 10:04:12

微軟密碼Arsenault

2015-02-26 09:41:50

2016-08-22 13:31:05

前端架構(gòu)前后端分離

2022-01-19 22:51:57

設(shè)計(jì)匿名用戶

2016-09-27 21:25:08

Go語(yǔ)言Ken Thompso

2020-10-14 08:33:23

Prometheus監(jiān)控體系

2015-11-02 09:19:10

程序員JavaScript
點(diǎn)贊
收藏

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