国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

C有C秘

2019-11-17 05:40:23
字體:
供稿:網(wǎng)友

  作者:亞歷山大

零、始

   在象UNIX/linux/BSD這樣的系統(tǒng)上,C是極重要的東西——即使對于從不編程的人也是如此。(因為有時候要安裝以源碼形式提供的軟件,需要自行編譯,而這些軟件通常是用C寫的)但是不論一個人是否熟悉C,他都可能沒有注重到C還有一些隱藏在語法和函數(shù)庫的字里行間的秘密……

一、水

   水是一種自由的物質(zhì)。

   C是一種自由的語言。

   這么說不是因為它有自由的編輯器(EMACS)、自由的編譯器(GCC)和自由的源碼級調(diào)試器(GDB),而是因為C有個規(guī)則很少的語法——少得很輕易把它全部記在自己的腦子里。

   沒有證據(jù)表明Dennis Ritchie(對,就是他和Brian Kernighan完成了C語言,和Ken Thompson完成了UNIX)知道老子曾言“天下多禁忌而民彌貧”,但是他似乎明確的知道一個語言的語法限制的多少,直接影響到制造它的編譯器的難度(以及它的編譯器對軟硬件配置的要求)和學(xué)習(xí)它所需要的時間。所以“C remains a simple and small language, translatable with simple and small compilers. ”(Dennis M. Ritchie ,《The Development of the C Language》)如此一來,C幾乎成為了最為易學(xué)的語言——不過因為一些其它原因(熟練的使用C語言需要對計算機(jī)軟硬件有深刻的理解),C很難學(xué)明白,這是后話。

   當(dāng)然,C的語法太過自由了一些,以至于有一個每年一界的“國際難懂C程序大賽”(http://www.ioccc.org ),專門用來展示寫法奇異,但是能夠運行的C語言程序。

二、木

   樹木緊緊扎根在地上。

   C緊緊扎根在硬件上。

   C的基本數(shù)據(jù)類型和運算符完全都是硬件可直接支持的(在早期硬件不支持浮點數(shù)的時候,C也沒有float和double),硬件可直接支持的數(shù)據(jù)類型和運算也都有C的基本數(shù)據(jù)類型和運算符與之對應(yīng)。這給它帶來了超出一般高級語言的速度和硬件訪問能力,所以可以用C寫出QUAKE這樣的游戲和Linux這樣的操作系統(tǒng)來,用其它的高級語言就不行了。(其它的高級語言確實也可以用于編寫游戲和操作系統(tǒng),但是很難達(dá)到這兩種所要求的性能)

   因為這個,有時候人們稱C為“中級語言”。

三、金

   金屬從礦石中來,卻比礦石輕易加工成需要的外形。

   C從匯編中來,卻比匯編輕易寫出需要的東西。

   盡管C和硬件的結(jié)合性很好,但是它仍然對實際硬件作了一些有益的抽象——比如說線形內(nèi)存訪問。同時它也將需要經(jīng)常處理的工作分離出來加入到函數(shù)庫里。(GLIB里甚至有HASH表這樣有用的東西)

   這些特性將程序員從事必躬親的狀態(tài)中解放出來,不必一天到晚處心積慮的處理一些重復(fù)性的工作,有效的降低了出錯率并保護(hù)了程序員的心情。而且它抽象的不錯——似乎得益于C從誕生以來被不同環(huán)境下不同的編譯器非正式的不完整的實現(xiàn)了許多次,不斷有新的特性被加入,舊的特性被淘汰這種后來被用于編寫Linux的方式。

四、土

   泥土的表現(xiàn)力是非凡的。

   C的表現(xiàn)力也是非凡的。

   Larry Wall(對,他設(shè)計了PERL這個混亂的語言)曾說因為世界是混亂的,所以需要一個混亂的語言來描述,于是他將PERL弄得很混亂以增強(qiáng)表現(xiàn)力。

   C雖然沒有PERL那么混亂,但是二者的混亂程度是同一數(shù)量級的。

   所以盡管三十年來計算機(jī)界發(fā)生了很多變化,仍然沒有什么東西不能用C來描述——包括對象在內(nèi)(基本的做法是用strUCt來表示對象,用函數(shù)指針來表示方法,用將父類作為子類第一個元素的方法完成繼續(xù),用extern和static來完成封裝,實例可到www.gtk.org查閱GTK+的實現(xiàn)方法)。

五、火

   火焰的每一部分之間只有很少的聯(lián)系。

   C的各個文件之間只有很少的聯(lián)系。

   于是程序員們可以在各自的領(lǐng)域里自由的發(fā)揮,并且可以在約定了一個簡單的規(guī)范的情況下自由的利用別人的成果。

   因為彼此不能妨礙,所以不需要任何人為其他人作出犧牲;因為可以充分的重用別人的成果,所以每個人都可以得到更大的力量。這種無論整體還是局部都有最大收益的配合,才是最完美的配合。

   假如Linux不是使用有這樣特性的語言,恐怕就不能發(fā)展成今天這樣了。


六、終

   水、木、金、土、火,這就是C的秘密。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 青神县| 察雅县| 天门市| 城口县| 米林县| 洛浦县| 柳州市| 习水县| 扶沟县| 罗定市| 阿克陶县| 庆云县| 会理县| 冕宁县| 珠海市| 西昌市| 衡南县| 泰兴市| 新乡县| 土默特左旗| 郴州市| 廊坊市| 普格县| 神木县| 壤塘县| 衡水市| 辽宁省| 灵璧县| 于都县| 阳新县| 靖安县| 固阳县| 武冈市| 宁城县| 嵩明县| 贵溪市| 龙川县| 东安县| 武汉市| 绍兴市| 永安市|