當前位置:成語大全網 - 新華字典 - 為什麽C++是Google 大部分開源項目的主要編程語言?

為什麽C++是Google 大部分開源項目的主要編程語言?

Google的C++開源代碼項目

v8 - V8 JavaScript Engine

V8 是 Google 的開源 JavaScript 引擎。

V8 采用 C++ 編寫,可在谷歌瀏覽器(來自 Google 的開源瀏覽器)中使用。

V8 根據 ECMA-262 第三版中的說明使用 ECMAScript,並在使用 IA-32 或 ARM 處理器的 Windows XP 和 Vista、Mac OS X 10.5 (Leopard) 以及 Linux 系統中運行。

V8 可以獨立運行,也可以嵌入任何 C++ 應用程序中。

nativeclient - Native code for web apps

Native Client是壹個在Web應用程序中運行本地代碼(目前只支持x86架構)的開源的研究性技術,提供更好的“富客戶端”用戶體驗。它允許網絡開發者編寫更強大的Web程序,這些程序直接通過系統運行而不用通過瀏覽器來進行,據Google稱,它到最後將允許網絡開發者開發和桌面軟件壹樣的的web程序,這些程序將帶來更快的速度。Native Client類似於微軟的ActiveX技術,它還能在Linux和Mac OS X下運行。目前它尚未支持IE,僅支持Google Chrome, Firefox, Safari 和Opera。

tesseract-ocr - An OCR Engine that was developed at HP Labs between 1985 and 1995... and now at Google.

OCR(Optical Character Recognition):光學字符識別,是指對圖片文件中的文字進行分析識別,獲取的過程。

Tesseract:開源的OCR識別引擎,初期Tesseract引擎由HP實驗室研發,後來貢獻給了開源軟件業,後經由Google進行改進,消除bug,優化,重新發布。當前版本為3.01.

google-glog - Logging library for C++

Google glog是壹個基於程序級記錄日誌信息的c++庫,編程使用方式與c++的stream操作類似,例:

LOG(INFO) << "Found " << num_cookies << " cookies";

double-conversion - Binary-decimal and decimal-binary routines for IEEE doubles.

從V8引擎中抽出的有關數值計算相關的代碼,包括大數計算,數值到字符串轉換等

googletest - Google C++ Testing Framework

gtest測試框架[1]是在不同平臺上(Linux,Mac OS X,Windows,Cygwin,Windows CE和Symbian)為編寫C++測試而生成的。它是基於xUnit架構的測試框架,支持自動發現測試,豐富的斷言集,用戶定義的斷言,death測試,致命與非致命的失敗,類型參數化測試,各類運行測試的選項和XML的測試報告。

googlemock - Google C++ Mocking Framework

googlemock  mock技術,在c++單元測試可以隨意修改函數行為的技術。 

googlemock是google基於gtest開發的mock框架,適用於c++單元測試。

libphonenumber - Google's phone number handling library, powering Android and more

壹個專門用於處理電話號碼的庫

google-diff-match-patch - Diff, Match and Patch libraries for Plain Text

google-diff-match-patch這個類庫提供了強大的算法用於純文本內容的差異比較,匹配,打補丁,實現同步純文本所需要執行壹些操作。支持多種語言包括:Java、JavaScript、C++、C#、Objective C、Lua和Python。

libkml - a KML library written in C++ with bindings to other languages

libKML是解析,生成和操作KML的庫。使用OGC KML2.2標準。

KML,是 Keyhole 標記語言(Keyhole Markup Language)的縮寫,是壹種采用 XML 語法與格式的語言,用於描述和保存地理信息(如點、線、圖像、多邊形和模型等),可以被 Google Earth 和 Google Maps 識別並顯示。您可以使用 KML 來與其他 Google Earth 或 Google Maps 用戶分享地標與信息。當然,您也可以從 Google Earth 社區 等相關網站獲得有趣的 KML 文件。Google Earth 和 Google Maps 處理 KML 文件的方式與網頁瀏覽器處理 HTML 和 XML 文件的方式類似。像 HTML 壹樣,KML 使用包含名稱、屬性的標簽(tag)來確定顯示方式。因此,您可將 Google Earth 和 Google Maps 視為 KML 文件瀏覽器。單擊此處可獲得更多信息。

gdata-cpp-util - Google Data APIs C++ utility library

壹個Google Data APIs 的工具庫,可以GET/POST/PUT/DELETE

lutok - Lightweight C++ API for Lua

是壹個 Lua 的 C++ wrapper

Lua 是壹個小巧的腳本語言。是巴西裏約熱內盧天主教大學(Pontifical Catholic University of Rio de Janeiro)裏的壹個研究小組,由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo所組成並於1993年開發。 其設計目的是為了嵌入應用程序中,從而為應用程序提供靈活的擴展和定制功能。Lua由標準C編寫而成,幾乎在所有操作系統和平臺上都可以編譯,運行。Lua並沒有提供強大的庫,這是由它的定位決定的。所以Lua不適合作為開發獨立應用程序的語言。Lua 有壹個同時進行的JIT項目,提供在特定平臺上的即時編譯功能。

dcs-bwt-compressor - Data compressor program and library

dcsbwt是壹個基於Burrower-Wheeler變換的數據壓縮程序庫

treetree - generic n-ary trees for C++

TreeTree (/p/treetree/)是壹個只包含頭文件的 C++ Library。它實現了壹個通用的 樹形結構容器類(遵守 STL約定),並且實現了 operator >> 和 operator <<。

它的底層包含壹個雙向鏈表。在前項指針和後項指針以外,每個樹節點還包含第三個指針--指向所有子節點的列表。這個實現高效,並且 API 非常清晰。TreeTree 可以表達任何使用Lisp的S表達式能表達的東西(例如推理樹(inference trees, programs)等)。

可以使用前序和後序遍歷,只遍歷某個節點的子節點,或者只是在葉子節點遍歷。示例的選項還包含遍歷子樹(如f(g(x,y),z) 前序遍歷,是f(g(x,y),z), g(x,y),x,y和z.

ctemplate - Powerful but simple template language for C++

ctemplate (Google-ctemplate)的設計哲學是輕量級,快速,且邏輯和界面分離,因此和ClearSilver和Teng是有壹些差異的。比如Ctemplate就沒有模板函數,沒有條件判斷和循環語句(當然,它可以通過變通的方式來實現)。 ctemplate大體上分為兩個部分,壹部分是模板,另壹部分是數據字典。模板定義了界面展現的形式(V),數據字典就是填充模板的數據(M),妳自己寫業務邏輯去控制界面展現(C),典型的MVC模型。

sparsehash - An extremely memory-efficient hash_map implementation

Google Sparse Hash 是 Google 壹個很節省內存的 hash map 實現

gflags - Commandline flags module for C++

Google GFlags 是壹個命令行標記的處理庫,它可以替代“getopt()”,其內置對C++的支持比如string。

protobuf - Protocol Buffers - Google's data interchange format

Google Protocol Buffer 是壹個平臺無關、語言無關的結構化數據的序列化與反序列化工具。

protocol buffer,可以用來在跨進程、跨機器,不同操作系統,不同編程語言之間進行數據交換。類似於微軟的COM IDL或者XML,但是解析速度更快,需要傳輸字節數更少。(c+

+, java, python)

gperftools - Fast, multi-threaded malloc() and nifty performance analysis tools

TCMalloc,heap檢測,是壹個google用於性能檢測的工具。(c++)

google-breakpad - Crash reporting

breakpad,壹個項目的開始需要做壹些什麽樣的基礎設施,crash dump和運行logging毫無疑問都是應該有的,這個項目就是負責在crash的時候收集信息,發出crash dump報告的。