程式語言這麼多,為什麼就只有C 語言能一直得到 SQLite 的青睞?

2020-12-09 騰訊網

C 語言是最好的

SQLite 在 2000 年 5 月 29 日發布,並一直使用 C 語言實現。C 語言一直是實現 SQLite 這類軟體庫的最佳語言,目前還沒有計劃使用其他程式語言重新開發 SQLite。

C 語言是實現 SQLite 的最佳語言,原因有四:性能、兼容性、低依賴性、穩定性。

性能

像 SQLite 這樣低級庫速度必須要快。確實,SQLite 的速度很快,甚至比文件系統要快上 35%。

C 語言非常適合用來開發這種對速度有要求的代碼。C 語言有時被稱為「可移植的彙編語言」。它讓開發人員能夠儘可能地靠近底層硬體,同時仍然可以保持跨平臺可移植性。

有些語言聲稱自己「與 C 語言一樣快」,但卻沒有一門語言敢聲稱在作為通用目的編程時比 C 語言快,因為真的沒有。

兼容性

幾乎所有系統都能夠調用用 C 語言編寫的庫,但不一定都能調用使用其他語言實現的庫。

例如,使用 Java 開發的 Android 應用程式也能調用 SQLite(通過適配器)。如果使用 Java 開發 SQLite,那麼對 Android 來說可能會更加方便,因為接口會更簡單。但是,在 iPhone 上,應用程式是用 Objective-C 或 Swift 開發的,它們都不能調用使用 Java 編寫的庫。因此,如果使用 Java 開發,SQLite 將無法在 iPhone 上使用。

低依賴性

使用 C 語言開發的庫沒有太多運行時依賴。SQLite 的最低配置只依賴標準 C 庫的以下幾個例程:memcmp()、strcmp()、memcpy()、strlen()、memmove()、strncmp()、memset()。

對於更完整的版本,SQLite 還使用了 malloc() 和 free() 之類的例程以及用於打開、讀取、寫入和關閉文件的作業系統接口。但即便如此,依賴項的數量仍然非常少。相比之下,其他「現代」語言通常需要加載數兆字節帶有成千上萬個接口的運行時。

穩定性

C 語言陳舊乏味,是一門眾所周知且易於理解的語言。這正好契合了 SQLite 的要求。如果沒有 C 語言這樣的語言,開發一個小型、快速、可靠的資料庫引擎是很困難的。

為什麼 SQLite 不使用面向對象語言來開發?

一些程式設計師無法想像怎麼可以使用非「面向對象」的語言來開發像 SQLite 這樣的複雜系統。那麼為什麼 SQLite 沒有用 C++ 或 Java 來開發?

使用 C++ 或 Java 編寫的庫通常只能由以相同語言開發的應用程式使用。使用 Haskell 或 Java 開發的應用程式很難調用 C++ 庫。反過來,用 C 語言編寫的庫可以在其他程式語言中調用。

面向對象是一種設計模式,而不是一種程式語言。你可以使用任何語言(包括彙編語言)實現面向對象編程,只是某些語言(例如 C++ 或 Java)讓面向對象變成變得更容易而已。但你仍然可以用像 C 這樣的語言進行面向對象編程。

面向對象並不是唯一有效的設計模式。很多程式設計師被教導使用純粹的面向對象方式進行思考。對象通常是分解問題的好方法,但對象不是唯一的方法,而且不一定是分解問題的最佳方法。有時候,過程式的代碼更容易編寫,更易於維護和理解,並且比面向對象的代碼運行地更快。

最初在開發 SQLite 時,Java 還只是一門年輕而不成熟的語言。C++ 比較成熟一些,但正在經歷成長的痛苦時期,當時很難找到兩種能夠以相同方式工作的 C++ 編譯器。所以,在當時 C 語言絕對是一個更好的選擇。現在這種情況沒有那麼明顯,但現在重新開發 SQLite 幾乎沒有任何好處。

看到這裡,你是不是對「C語言」又有了一點新的認知呢~

相關焦點

  • C語言怎麼樣?今天聊聊C語言的發展史!
    C語言發展史的點點滴滴。 任何一種新事物的出現都不是來自於偶然,而是時代所驅使的必然結果。 如果你問我:C語言有多偉大。那麼,我可能會想一下,說:多偉大我不知道,但是我知道很偉大。
  • 為什麼說Python是人工智慧和機器學習的首選程式語言?
    有很多程式語言都可用於人工智慧(AI)或機器學習(ML)項目,如Java,C#等。但在所有這些程式語言中,Python似乎是最受歡迎的語言之一,這主要是因為開發人員可以輕鬆地使用Python處理複雜的編碼挑戰。
  • 程式語言新寵兒——Julia誕生記
    讓我們來一同走進它:為什麼要創建Julia程式語言?用一句話來說,因為我們求知若渴、不斷追求。換句話說,他們懂的不僅僅是皮毛,比起其他人,開發R語言要多的多。而C語言對我們來說卻是一塊荒島。我們非常熱愛這些語言,他們是如此的完美和強大。我們在科學計算、機器學、數據挖掘,大型線性代數和分布式並行計算做了大量的研究工作——可以說每個項目都有各自的優勢,甚至給其他人產生畏懼。任何一個項目都會權衡考量。我們貪婪,我們想要的更多。
  • 信息學競賽需要掌握哪些程式語言知識
    信息學競賽現在已經受到越來越多的人的關注,怎麼走進信息學競賽的大門呢?一、程式語言選擇信息學聯賽主要考的是程序設計,選擇合適的參賽程式語言是首要選擇,信息學競賽的程式語言有三種:pascal語言、c語言、c++語言,pascal語言將於2022年停止在信息學競賽中使用,所以現在學習pascal語言意義不大,剩下的只有選擇c語言和c++語言,實際考試中絕大多數考生選擇
  • 為什麼會有這麼多種程序設計語言?
    為了解釋「為什麼會有這麼多種程序設計語言」這個問題,想讓我們來看一份較新的最流行程式語言流行榜:排行榜上排名前十的依次是:C、Java、Object-C、C++、C#、PHP、Python、JavaScript、Perl和VB。下面我會根據這份排行榜來回答我們的問題。
  • 開課吧:C語言現在的就業形勢如何?前景怎麼樣?
    根據近幾年的程序語言排行榜來看,C語言的排名一直很靠前,這是為什麼呢?程式語言排行榜第一,C語言簡潔緊湊、靈活方便C語言一共只有32個關鍵字,第三:目前在嵌入式領域主要使用的程式語言就是C/C++兩大類了,而隨著時代的發展,嵌入式也越發的強大了起來,這樣就使得C語言可以保持比較強大的後勁。c語言也可以用來做一些伺服器項目,開發效率不會比cpp和Java低多少,主要還得看架構師對於項目的布局。
  • TIOBE發布的2018年終計算機程式語言流行度排行
    TIOBE發布的2018年終計算機程式語言流行度排行今年終計算機程式語言流行度排行剛發布,我看了一下,python漲勢明顯啊,我估計再過幾年python藉助人工智慧的發展,隨時準備超越c。那麼python的缺點是什麼呢?
  • C語言編程:驗證哥德巴赫猜想
    a = b + c(其中a是大於等於6的整數,b和c是素數)這個問題就等價於:對於一個給定的大於等於4的偶數a,怎麼找到素數b和c呢?可以用循環的方法,把b的值從3循環到a-3,那麼對應的c的值就是a-3到3。然後我們分別對每一組的b和c值進行是否是素數的判斷。
  • 計算機程式語言的發展簡史,人工智慧與雲計算程式語言!
    學習一兩門計算機程式語言也如當初學習英文一樣的火熱,隨著人工智慧AI和雲計算的不斷發展,Python語言和Scala語言已經成為這兩個領域裡面最為火熱的程式語言了,可以預知未來學習計算機程式語言的人也一樣會如同學習英文一樣的成為一種新常態,並且成為一種穩定的常態。以下筆者將以自己的學習認知,簡單的闡述一下計算機程式語言的發展。
  • 誰位居IEEE Spectrum 程式語言排行榜榜首?
    近些年,Python 的火熱有目共睹,作為一種功能強大的高級程式語言,在2018 年的時候它的流行程度就得到了大幅提高。 Stack Overflow網站程式語言瀏覽量統計數字 Python不僅在 IEEE Spectrum 程式語言排行榜中,還是在其他榜單如
  • 3月程式語言排行榜出爐,C語言暴走,PHP表現優秀!
    近日,3月程式語言排行榜出爐了。Python排名第四,GO語言僅排名第17位。在此榜單中,作為程式語言常青樹的C語言表現最為優秀,簡直是暴走的節奏。對於此次3月程式語言排行榜,程式設計師網友們紛紛發表了各自的一些看法:網友一:C/C++永遠都不會淘汰~網友二:千年的編程萬年的C!其他語言都是兒子,懂的自懂,不解釋!網友三:大php在此,爾等還不膜拜~網友四:漢語是最強大的語言!!
  • Python成程式語言首選,人工智慧是其最大推力
    2018年,python程式語言榮獲「年度程式語言」稱號!在2018年獲得了最多的排行積分,贏得了3.62%佔比,其次是VisualBasic .NET和Java。Python如今確實已經成為大型程式語言的一部分。
  • c 語言的創始人 - CSDN
    Python 之父最近幾年,隨著人工智慧的飛速發展,Python擊敗C語言,位列排行榜第二,成為最受歡迎的程序設計語言之一。Python語言的由來,源自計算機編程天才吉多•範羅蘇姆(Guido van Rossum)在假期時觀看的一部英國劇《Monty Python飛行馬戲團》。
  • ARM中ADS環境下C語言和彙編語言混合編程及示例
    稍大規模的嵌入式程序設計中,大部分的代碼都是用C來編寫的,主要是因為C語言具有較強的結構性,便於人的理解,並且具有大量的庫支持。但對於一寫硬體上的操作,很多地方還是要用到彙編語言,例如硬體系統的初始化中的CPU 狀態的設定,中斷的使能,主頻的設定,RAM控制參數等。
  • 戲說程式語言發展史
    從1951年2014年,人類一共發明了幾百種程式語言,每一種語言的出現都帶有某些新特徵。1801年,Jacquard織布機是第一臺可進行程序控制的織布機。C語言的設計目標是提供一種簡易的方式進行編程、但是,它也相當複雜。對於英語不好的同學來說,簡直是天大的傷害。
  • 「記」詳解C語言之格式
    ,在它的主體設計完成後,Thompson和Ritchie用它完全重寫了UNIX,且隨著UNIX的發展,c語言也得到了不斷的完善。為了利於C語言的全面推廣,許多專家學者和硬體廠商聯合組成了C語言標準委員會,並在之後的1989年,誕生了第一個完備的C標準,簡稱「C89」,也就是「ANSI c」,截至2020年,最新的C語言標準為2017年發布的 「C17」。
  • C語言編程培訓好嗎
    C語言編程培訓好嗎,美裡湖校區位於槐蔭區西沙路490號,校園環境優美,現代化設施先進。C語言編程培訓好嗎, 精通遊戲開發中的常用算法和數據結構,對面向對象編程有深刻理解,熟練使用各種設計模式。多年項目開發經驗,精通C、OC、JAVA等多種程式語言,了解Windows、Linux、Mac OS等作業系統環境。
  • 十三種程式語言和它們名稱背後的故事
    儘管這種情況並不多見,但命名過程中尤其令人頭大的就是面對著一種新型程式語言。由他一手打造的這款新型腳本語言派生自ABC程式語言,其誕生源自Rossum在聖誕節假期中的興趣之作。  當需要為這種全新語言選擇名稱時,van Rossum希望選擇一個「簡短、獨特而且略帶神秘色彩」的字眼。他從著名英國喜劇團體Monty Python(巨蟒)身上得到了靈感,他本人也是該劇團的鐵桿粉絲。
  • C語言基礎:二進位和計算機語言雜談(編程新手福利)
    因為計算機底層就是很多很多開關,如何用電來表示這些開關呢,其實有很多個方案,比如用固定的電壓表示開和關,比如220v表示開,12v表示關,但是電壓是很不穩定的,用電多了會降低,少了會升高,所以用具體電壓值表示開和關是很不方便的,人們採用了另外一種方案:電壓的高低。不用具體的數值,只用一個大致的範圍表示開和關,比如4-5v表示高電平,0v表示低電平,這樣就得到一個表示開和關的穩定的衡量標準了。
  • 世界程式語言排行榜
    請注意這個排行榜只是反映某個程式語言的熱門程度,並不能說明一門程式語言好不好,或者一門語言所編寫的代碼數量多少。本文引用地址:http://www.eepw.com.cn/article/269656.htm  該指數可以用來檢查你的編程技能是否仍然是最新的或作出什麼開始建立一個新的軟體系統時,程式語言應採取的戰略決策。在 TIOBE 指數的定義可以在這裡找到。