只用1個獨立的C語言檔案就寫出Web伺服器!這個60歲程式設計師大有來頭

只用1個獨立的C語言檔案就寫出Web伺服器!這個60歲程式設計師大有來頭

只靠一個C語言的檔案,就能寫出一個Web伺服器。前陣子這個檔案,在程式設計師的討論群裡很紅。

有網友直接問:他的GitHub帳號是哪個?但也有網友質疑說,雖然只有一個C語言的檔案,但是想要寫出一個Web伺服器,恐怕要有幾萬行程式碼吧?

錯,只有2592行,而且完全開源!於是就有朋友打算回去抄程式碼。 

這個神一般的程式碼是誰寫的,背後到底是何方神聖?

只用1個獨立的C語言檔案就寫出Web伺服器!這個60歲程式設計師大有來頭

Richard Hipp,一個已經60歲的神級工程師。

你或許沒有聽過他的名字,但你當前使用的手機,一定有幾十甚至上千個他開發的資料庫:SQLite。比如,很多即時通訊軟體的聊天記錄就存在這裡面。可以說,它是世界上裝機最多的數據庫,沒有之一。

SQLite是一款輕型的資料庫,最初版本的大小只有900KB左右。它最大的特點就是嵌入式,支援Windows/Linux/Unix等等主流的系統,同時能夠跟很多程式語言相結合,比如 Tcl、C#、PHP、Java等,還有ODBC接口。

所以,SQLite可以應用在非常多產品中,除了手機APP、電腦瀏覽器,甚至連電視機上盒中也有它的身影。並且,與同類資料庫Mysql、PostgreSQL相比,它的執行速度也更快。

只用1個獨立的C語言檔案就寫出Web伺服器!這個60歲程式設計師大有來頭

如此強大的資料庫,Richard Hipp是怎麼設計出來的呢?

這還要追溯到20多年前,他接下國防公司通用動力的一個計畫說起。

當時,他要解決如何在導彈的小型電腦上安裝資料庫的問題。美國海軍所使用的Informix資料庫體積太大、無法安裝,而且它是一個單獨執行的程式,即使想方設法安裝成功,執行的效率也不高,甚至還要耗費大量人力來操控。 

由此,Richard想:「為什麼不能直接從磁碟上讀取資料呢?」這樣既能提高執行效率,也能減小數據庫大小。

於是,他用C語言寫了一個小檔案,它可以被嵌入到任何程式中,並且大小只有900KB左右!假設要啟動導彈上一個GPS程式,這個檔案只需在其內部創建一個小資料庫,就能來管理相應的資料。

第一版SQLite就這樣誕生了。之後,Richard對SQLite進行過多次更新。

2001年,SQLite剛發佈第二版後不久,摩托羅拉就給他打來合作的電話,希望把SQLite應用在他們的手機上。而後,2005年,Richard直接開源了SQLite,並於同年獲得Google O'Reilly 開源獎。

所以,你就能明白為啥這個新伺服器,只有一個C語言的檔案了吧。(這很Richard風格)

而他最新發佈的網路伺服器Althttpd,其實從2004年就開始用來執行SQLite官網了。

只用1個獨立的C語言檔案就寫出Web伺服器!這個60歲程式設計師大有來頭

官網上介紹,Althttpd的處理能力還可以。截至到2018年,Althttpd在SQLite官網每天處理約50萬個HTTP請求(每秒5、6個),每天能夠提供50GB的內容(約4.6兆比特/秒)。

不過,對於這位大神來說,還有比程式更難的事情。

只用1個獨立的C語言檔案就寫出Web伺服器!這個60歲程式設計師大有來頭

那就是讓他的妻子Ginger Wyrick嫁給他。他也是出了名的愛妻魔人,甚至在結婚之後,公司也改名了 ,Hipp, Wyrick & Company。並將所有股份轉讓給她。

Richard在接受採訪時自我調侃過,有時候,他一度還不得不從她那購買一半的股票。

 

參考鏈接:
[1]https://sqlite.org/althttpd/doc/trunk/althttpd.md
[2]https://changelog.com/podcast/201
[3]https://hackernoon.com/the-story-of-dwayne-richard-hipp-and-the-development-of-sqlite-in-1999-yc4v356q

Qbitai
作者

量子位(Qbitai)專注於人工智慧及前沿科技領域,提供技術研發趨勢、科技企業動態、新創公司報道等最新資訊,以及機器學習入門資源、電腦科學最新研究論文、開源程式碼和工具的相關報導。

使用 Facebook 留言
發表回應
謹慎發言,尊重彼此。按此展開留言規則