为什么C++是Google 大部分开源项目的主要编程语言?

2024-12-04 17:21:35
推荐回答(1个)
回答(1):

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 (http://code.google.com/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报告的。