在Cloudmetrx 公司,我們大量的使用C語(yǔ)言。鑒于不久前,UNIX傳奇人物、C語(yǔ)言的創(chuàng)始人Dennis Ritchie 的過(guò)世,我們向C語(yǔ)言表示致敬是再合適不過(guò)的了。
考慮到我們還使用了其它的語(yǔ)言——Clojure,Node.js和其它很流行的平臺(tái),這種大量的依賴(lài)C語(yǔ)言的現(xiàn)象更顯得不平常。并不是這種語(yǔ)言更古老,更“受人尊敬”,我們才會(huì)傾向于使用這種語(yǔ)言和技術(shù)。只是因?yàn)楫?dāng)面對(duì)高性能的計(jì)算時(shí),沒(méi)有任何語(yǔ)言能跟C語(yǔ)言相比。有人提出了Java,但這些人錯(cuò)了。沒(méi)有什么語(yǔ)言能跟C語(yǔ)言相比。
以我的觀點(diǎn),C語(yǔ)言這么多年來(lái)依舊保持流行的原因在于它的相對(duì)自由的編程范式。大多數(shù)的語(yǔ)言,無(wú)論是好的還是差的,都生來(lái)伴隨著一些鼓勵(lì)使用的編程范式——面向?qū)ο蟮?,函?shù)式的,等。于是硬件的設(shè)計(jì)就趨向?qū)@種范式進(jìn)行最好的支持。
而C語(yǔ)言,并不去逼迫硬件進(jìn)行改造。它提供了你對(duì)硬件進(jìn)行粗放型訪(fǎng)問(wèn)的能力。你可以對(duì)硬件做你任何想做的操作。沒(méi)有任何什么編程范式帶來(lái)的約束——你也可以強(qiáng)制自己使用任何范式。
在邱奇-圖靈論題(Church–Turing thesis)中,C語(yǔ)言就是圖靈機(jī)(Turing)。C語(yǔ)言基本上就是數(shù)學(xué)加上你可以在上面書(shū)寫(xiě)的紙帶。所有的算法都是跟兩種基本操作有關(guān):對(duì)紙帶的讀和寫(xiě),然后做小型的算法操作。
當(dāng)時(shí),世界上所有參考這個(gè)理論生產(chǎn)的計(jì)算設(shè)備看起來(lái)都類(lèi)似圖靈機(jī),但卻經(jīng)常被按照Church形式使用。Church論述中的lambda運(yùn)算考慮的是將計(jì)算行為做有意義的優(yōu)雅的表現(xiàn),這是面向人類(lèi)的;而圖靈機(jī)考慮的計(jì)算行為是面向基于晶體管和電子管的機(jī)器的。這是兩種自然的方向;C語(yǔ)言更傾向于追求駕馭真實(shí)硬件的能力,代價(jià)是損失可讀性和優(yōu)雅性。
從誕生到流行,并持續(xù)數(shù)十年保持活躍,創(chuàng)造這樣的一種技術(shù)是何等的豐功偉績(jī)。我不認(rèn)為C語(yǔ)言的自由范式是成功的唯一理由。它的語(yǔ)法也是同樣的精彩 ——盡管這種語(yǔ)言是復(fù)雜的,盡管內(nèi)存管理是復(fù)雜的,C語(yǔ)言使這些變得極其的清晰,讓你知道事情是如何的進(jìn)行的。C語(yǔ)言的語(yǔ)法還影響了其它很多種語(yǔ)言——從 Perl到Java到Javascript——這都是它的語(yǔ)法的清晰和實(shí)用的證明。
雖然C語(yǔ)言很強(qiáng)大,但不失編寫(xiě)的樂(lè)趣。坐下來(lái)花5個(gè)小時(shí)用vim編寫(xiě)C程序?qū)ξ襾?lái)說(shuō)是一件很享受的事。就像是你在駕駛一輛手動(dòng)檔的汽車(chē),你感覺(jué)它跑的越來(lái)越快。經(jīng)過(guò)一個(gè)月的使用Python比較,C語(yǔ)言駕駛起來(lái)就像帶有噴氣機(jī)引擎的寶馬。它的速度是風(fēng)馳電掣的;你可以運(yùn)行time計(jì)算,結(jié)果會(huì)讓你張大嘴巴——百萬(wàn)分之一秒!驚奇。
但C語(yǔ)言并不是一直這樣可贊。C語(yǔ)言有時(shí)會(huì)變成淘氣使壞的女孩,讓你絕望,困惑,不得不使用gdb。但是在一天的最后,你還是會(huì)回來(lái)?yè)肀——它的速度太誘人了。
在Cloudmetrx公司,我們所有的金融相關(guān)的邏輯處理都是使用的C語(yǔ)言,除bootstrapping。沒(méi)有C語(yǔ)言這樣驚人的處理速度,我們即時(shí)運(yùn)算的產(chǎn)品是不可能實(shí)現(xiàn)的,我們不可能去處理這樣大規(guī)模的負(fù)載。事實(shí)上,我們的一個(gè)用C寫(xiě)的標(biāo)價(jià)的模塊和一個(gè)用Java寫(xiě)的模塊的速度差別是明顯的。雖然不是很大,但足夠明顯;明顯得對(duì)于實(shí)時(shí)金融分析來(lái)說(shuō)顯得太明顯。
這就是C語(yǔ)言,一個(gè)淘氣的女孩,一個(gè)速度妖姬。向你致敬!
更多信息請(qǐng)查看IT技術(shù)專(zhuān)欄