C++ Applications
2011年6月18日更新
这里有一个有关系统、应用程序和库的列表,列表中的全部或者大部分代码用C++编写,当然,该列表并不全面。即使我如何努力,我也不能列举一个含有 1000个主要由C++编写的程序列表,但是这里的列表可能包含我听说过程序之中的第1000个。这是一个包括系统、应用程序和库的列表,读者可能熟悉其中的一些,新手可能有个概念C++能做什么,或者我仅仅觉得它很“酷”。
这里有一个本文翻译的中文连接。
我(Bjarne Stroustrup)不能保证该列表的完全准确,但是我相信它是准确的,我信任那些发给我例子的人,不过我个人并没有见到源代码。我宁愿C++风格的代码,而不是大部分代码用C编写却尽力避免列出C或者C程序而称谓C++。列表中很多细节的描述来自开发人员和用户而不是我。
该列表的组织形式实在有点说不过去。我把那些明显和一个公司有关的应用程序列在该公司名下,但是有一些系统没有用这样的组织方式。
我并不知道列表中所有的缩写都什么意思。我也的确列出了一些C++的应用,即使他们依赖于C++的扩展,我欣赏更多的例子--尤其主要的应用。如果你发给我一个有URL地址的例子会更好一点。我并没有列出某些应用、系统或者库,除非我认为他们会让很多人感兴趣--我并不想尝试给出一个很完整的列表。 我不会列出一种尚没有得到广泛应用的软件(抱歉)。这个列表意味着主要的应用,但在包含新产品方面则不太全面。我并不想表示“公平”,比如给出某个应用而 不是某特定领域的所有产品--该列表试图给出一个整体印象,而不是帮助你选择某个产品。我尽量少重新描述某个产品,但会删除那些明显的广告性用语。
请注意我并不常看各项,有些可能有些陈旧了,方便时请发给我更新。
感谢发给我例子的诸位朋友,欢迎给出更多的例子和纠正错误。
其他人的列表:
明显跟一个组织相关的应用:
- 12D解决方案:计算机辅助系统,用于勘察、民用工程等等。
- Adobe系统: 所有主要的应用用C++开发:
- Photoshop & ImageReady,
- Illustrator,
- Acrobat,
- InDesign,
- GoLive,
- Frame (mostly C, some C++)
- Alias|Wavefront: Maya. Maya 自从开发出来以后一直用于制作电影特效, 包括星球大战前传I,蜘蛛侠,指环王,精灵鼠小弟等。“我爱三维动画”。
- Amadeus: 正在运行中最大的欧洲非军用数据中心 (每秒超过5000个交易,连接20万个终端,24/7负载)大多数开发用C++语言。所有基于Unix服务器的应用全部用C++开发,例如:
- 汽车预订
- 客户简介服务
- 电子订票
- TCP/IP 前端
- Amazon.com: 大型电子商务应用软件。
- Apple: OS X 操作系统使用很多语言开发,但是几个重要的部分用C++开发的。两个比较诱人的部分分别是,
- 搜索器(Finder)
- IOKit设备驱动 (IOKit 是内核里面仅有使用C++的地方)
还有,
- AppleWorks
- iPod用户接口(Pixo应用框架用C++写的)
- 成千上万的Macintosh应用程序估计半数以上用C++开发的。
- Frameworks: 有3个广泛使用的Macintosh应用框架工程用C++开发,分别是Apple's MacApp(一些MacApp应用), Symantec's Think Class Libraries和 Metrowerks' PowerPlant。还有一些比较小(市场份额)的框架已经开发出来。
- Arium: 资源点;Intel和ARM系统硬件调试和仿真(包括多处理器系统)。
- AT&T: 美国最大的电信供应商。
- 1-800 服务
- 配置系统
- 网络失败应急系统
- Autodesk: 在CAD领域有很多重要应用。
- BeOS: 一个多处理器多媒体个人操作系统。
- BigFix, Inc.: BigFix 是一个用来发布技术支持信息的通信系统。很多公司用它做技术支持支持硬件和软件,例如Autodesk和eMachines. 所有的BigFix 产品都用C++开发。
- Bloomberg: 为投资者提供实时的金融信息。
- Cabot Communications: 便携式游戏机和数字电视软件 (包括ISO MHEG-5)。
- Caldera: 系统管理软件的OpenWBEM的WBEM标准开源实现 (www.openwbem.com)。用了较多的C++98标准特性,是我见过的除了标准团体外用C++98特性最多的。
- callas Software: PDF文件的分析、纠错和优化软件,有pdfInspektor, Acrobat Preflight以及其他插件。
- CERN: 数据分析-尤其用于大规模高能物理实验-使用了ROOT工具集和库。
- Codemill: SuperDoc: 一种掌上操作系统文件阅读器,能显著的平滑字体。
- SecurityContext: 一种 Win32 COM组件,用来简化当前线程的上下文安全查询。
- Map: 一种Win32 COM 组件用于COM变量数据类型线程安全映射(类似于std::map那样),例如:用于IIS网络应用程序的数据缓存。
- Code Synthesis Tools: 提供XSD, 一种用于C++的XML 数据捆绑产生器,支持内存内和流对象处理模型。XSD 用可移植性好的C++编写,用了很多的C++编译器编译。XSD广泛用于电信、金融、高性能计算以及集成电路设计。
- Coverity: C/C++静态源代码分析工具,用于查找Linux的bug。
- CoWare: 系统/芯片规范。
- Credit Agricole Indosuez Cheuvreux: 欧洲证券交易市场订单跟踪软件,全部用C++编写。
- Dantz Development Corporation: Retrospect用于备份Windows的软件。
- D-Cubed: 用于几何约束解决、动作模拟、碰撞检测、隐藏线消除和形态管理的组件,重点是精确性和速度,在CAD领域获得了广泛应用 (例如 CATIA, SolidWorks, AutoCAD, NX, SolidEdge)。
- D E Shaw: 金融分析和贸易软件。
- Digiquant: Internet网络管理系统(IMS), IP网络基础设施软件服务. 一些AAA服务器拓展, 服务准备, 引擎标定, 和端口服务,用C++编写。
- Dassault Systems: Catia v5,很领先的CAD软件, 在此之上,所有近来的空中客车 (A380, ...),还有波音787的软件全部用C++编写,使用了 STL。
- Doxygen: 一种文档生成工具。
- 荷兰交通部, 公用工程, 水资源管理:浪涌屏障控制。BOS控制系统的保护屏障Maeslant使得Rotterdam免受洪灾。该项极高极高级安全系统(按照IEC 61508,最高的安全级别)使用C++, Z和PROMELA 编写。这里有一些漂亮的图片。
- Efficient Networks:(Siemens的子公司)出售量超过800万套,它的PPPoE 用户端软件用于Macintosh, Windows and Linux系统。新的Macintosh 上开发全部用C++,Windows上开发用的C/C++。下面这些产品用C++开发:
- EnterNet: PPPoE 用户端驱动和应用设置
- Tango Qualifier:用户环境预攫取预测
- Tango Installer:向导型安装器
- Tango Access: PPPoE用户端驱动和应用设置
- Tango Support:用户层网络诊断工具
- Ericsson:
- TelORB–面向对象的分布式操作系统
- 分布式RAM数据库, TSP应用的基础
- 服务器平台
- TDMA-CDMA HLR
- GSM-TDMA-CDMA移动网关
- AAA服务器
- Facebook: 几个高性能高可靠性的组件。
- FASTprotocol: 一个用于金融交易的协议,有很多实现,其中包括Quickfast (开源) 和用于俄罗斯贸易系统的 FIX/FAST .
- FlightGear: 一种开源飞行模拟器,使用JSBSim,飞行动态数学模型之一,用于FlightGear以及其它模拟器。
- Geant4: 粒子干涉模拟,用于高能物理、核物理试验,太空和医疗应用的工具箱。Geant4 工程世界范围内100多位科学家合作,进行10余次试验,分别在欧洲、俄罗斯、日本、加拿大和美国。涉及到几所国内和国际的机构和组织参与。整个软件全部用C++编写,已经开发了面向对象方法和工具。源代码大约500K行,包含了一个相当广集合的实现,有顶尖水准的电磁和格点强子物理交互算法和理论模型。
- Google: 网络搜索引擎等。
- Chromium 浏览器
- Google文件系统
- MapReduce 大聚簇数据处理
- Haiku OS: 系统的主要部分(包括内核的绝大部分) 用 C++编写。它是BeOS停止开发后的继任者。
- Havoc: 实时的物理用特效以及游戏。"Havok, 跟Guinness类似,爱尔兰制作。"
- HP: 下面是很小一部分关于HP的C++应用:
- C, C++, Fortran90 HP IA64 平台编译器和连接器 (加了1百万行C++源代码).
- SAM (HP的系统管理应用)
- 一些HP-UX的网络库
- Java虚拟机核心
- Openview的一部分
- Non-stop XML语法分析器 (来自最初的compaq)
- IBM:
- OS/400.
- K42: 一种高性能开源的一般性操作系统内核,用于缓存耦合多处理器。
- Image Systems: TrackEye 和TEMA, 世界上领先的动作分析程序(基于数字图形处理)。被大多数汽车厂商用于碰撞效果测试的分析。也被汽车和飞行器厂商用于新模型的性能,“简而言之用于高速系列”。
- Intel:
- Intuit: Quicken (个人理财软件)
- ILOG: 在ILOG上, C++编写的库用于:
- 图形. 该库用来编写可移植性GUI和高级图行机制
- 优化. 该库用来编写受限编程和/或单一算法
- 规则. 该库用来编写规则引擎处理突发事件
下面是一些用户: 克莱斯勒,法国电力,CENA,北电网络,SAP,阿尔卡特公司,雷诺,Manugistics,Communaut urbaine(里昂交通管制),Parc科技有限公司,巴克莱全球投资(BGI),TLC(运输,Informatik,与物流,GmbH咨 询)Deutsche Bahn子公司,国防部的联合作战支援空运中心(JOSAC),Telefonica,思科,尼桑,浦项制铁,索尼银行, isMobile ,美国西南航空公司, Novient ,沃达丰商贸通,Sabre Holdings公司,法国电信,爱立信公司,德国电信,朗讯科技,MCI WorldCom,西门子,First Union Home Equity Bank,巴恩,惠普, Adonix ,Peugeot, ARINC,McHugh.
- KLA-Tencor: 半导体制造系统。
- Looksmart主要用C++编写. 所有有关搜索和浏览网页的产品用C++编写,每天的用户超过5百万。
- MAN B&W Diesel A/S: Purveyers 引擎用于大型和巨型轮船(例如货柜船和油轮)。
- 两个巨大的柴油机(超过10万马力)电子控制燃料注入系统和排气阀控制系统。中等规模的严格实时嵌入式系统,完全24/7分布式容错恢复 。除了几百行汇编,其余全部用高质量的C++代码编写。
- 发动机和船板机器的几个巨大的支撑系统全部用C++编写。
- 几个内部的高级商业应用,用于发动机设计和设计信息存储。
- Medimage: 所有产品,从医疗图像显示系统到从一个机器到其他机器通信服务软件,通信用不论用modem还是TCP/IP都用C++编写 。该产品支持的平台有Mac OS和Windows。
- Mentor Graphics: 从19世纪80年代开始Mentor Graphics应用程序开发开始使用C++,包括:
- Calibre: 软件用于IC物理验证、生产和解析
- Formal Pro:正式验证等同检查器,能运行几百万网关ASIC和IC
- FastScan: ASIC 和IC的自动测试模式生成工具
- FlexTest: 优化测试涵盖的测试模式产生
- TestKompress: 减少ATE内存和时间消耗的工具集
- MachTA/PA:高速、精确、大容量晶体管电路模拟,用于DSM和混合信号IC设计时间能量分析
- Metrowerks是一个软件开发工具大名鼎鼎的供应商。CodeWarrior 集成开发环境(IDE), RAD插件和PowerPlant以及对象类库全部用C++编写,网站上列举了一个很酷的应用,例如: 3D映像,实时网络会议,卫星控制技术。
- Microsoft: 一般而言微软的产品都带有不同程度的VC++色彩 (使用老版本将自动导致安全检查失败),下面列出一些:
- Windows XP, Vista, Win7
- Windows NT(NT4 and 2000)
- Windows 9x(95, 98, Me)
- Microsoft Office(Word, Excel, Access, PowerPoint, Outlook)
- Internet Explorer(包括Outlook Express)
- Visual Studio (Visual C++, Visual Basic, Visual FoxPro) (Visual Studio的一些部分,诸如和.NET框架一起装配的基类库用C#编写,但是C#编译器用C++编写)
- Exchange
- SQL
还有一些”微型”产品,例如:
- FrontPage
- Money
- Picture It
- Project
- 所有的游戏
- mIRC: 聊天. "用户超过一百万"
- Morgan Stanley: 它的金融模型的一个大块.
- Mozilla: Firefox浏览器和Thunderbird客户邮件(开源)。
- MySQL: MySQL服务器(大约25万行C++代码)和MySQL聚簇集,它是世界上最出名的开源数据库。
- NASA: 很多项目,包括
- JPL (Jet Propulsion Lab, NASA): 火星探测器自动驱动系统(包括场景分析和路由计划)。C++上火星了!还有很多地面(即地球上)支持软件。
- James Webb Telescope 詹姆斯韦伯是哈勃望远镜的继承人。
- 国际空间站的软件的(许多)部分。
- 以色列国家人口统计局:主要用C++来开发, 一些组件内嵌了SQL。每月几百万的交易,从出生到死亡的注册、日常生活、护照保险、签证等等,用于8百万国民和外国工人。
- Netopia:
- Timbuktu Pro–Macintosh和Windows的远程控制, 文件交换以及辅助工具. Timbuktu Pro大约有1千万个结点,5百家公司的70%资金用它周转。这些年来Mac版本获得了很多嘉奖,Windows 版本获得了2002年度世界级PC世界大奖。
- netOctopus --Macintosh 和Windows基于网络的系统管理。"4千站点 ... 每个站点大约安装了150个agent (管理系统),这就有60万个系统".
- eSite–几个网页公司为广告客户提供的网站服务器平台。
- eCare–基于网络的客户支持。Macintosh和Windows客户端用C++编写。
- Nokia:
- 移动通信无线基站/网络网桥: FlexiGGSN (网关GPRS支撑结点)和FlexiSGSN (服务器GPRS支撑结点)。
- MSC/HLR
- N-series的大多数软件(和其它"智能电话")。
- Nullsoft: 所有Nullsoft产品用C++编写 (Winamp, NSI等),很多是开源的。
- Programming Research: QAC++: C++程序的分析产品。
- Propellerhead Reason: Reason 是一个虚拟演艺台,涵盖了把你的思想变成音乐需要的所有的工具和设备。
- Radiometer Medical A/S: 高级医疗设备和应用,保守的估计每天世界范围内有1千家医院使用。
- Rain Bird Corporation: Maxicom2灌溉控制系统.从一个中心PC机Maxicom2 就能控制大片的商业用地和分散地段。距离遥远的控制器间通信通过拨号电话、蜂窝电话、无线、光纤等进行。应用场所包括:主要娱乐公园、国际机场、几所大学、郡公园和公司首脑大楼。
- Reliable Software: Co-op,一个P2P版本的控制系统。
- Renaissance Technologies: 金融分析和贸易软件。
- SAP DB: 一个"企业开源数据库" 用Pascal, C, C++编写,较新部分和重写部分用的C++,Release 7.4版本中3392源文件中1088个用C++编写。
- Scansoft: Dragon自然演说。一个获奖奖励演说听说系统,最初开发自"Dragon系统"。
- SGI: OpenInventor, 一个建立在OpenGL上的3D 图形图像框架和工具箱。Open Inventor是VRML (虚拟现实模型语言) 标准的基础。
- Siemens: 主要医疗系统(为了方便和移植,一般用 ACE)。
- Sophis: 交叉资产、证券投资以及风险管理解决方案: "sed在世界范围内引领了金融机构"。
- Southwest airlines: 他们的网站, 机票预订, 票务状态, 频繁 flyer程序等。
- Sun:
- HotSpot Java虚拟机用C++编写(这是一个技术前沿的性能换代产品,用来取代用C编写的传统虚拟机。)
- Sun公司编译器的主要部分用C++编写, 尤其是C++ 前端、Fortran 95前端的一部分和SPARC后端。
- 为了匹配和稳定的需要,Solaris操作系统的一部分用C++编写, 但外接口看起来像C。
- OpenOffice "开源Office系列": "[...] 整个技术基于平台无关的特性。不足10%的代码平台相关,它们作为一个抽象层服务于上层软件组件,由于C++编译器在主要平台上都有,C++就作为了实现它的语言。这就使得the OpenOffice.org technology可以用于不同的平台上" "[...] 这是一个主要用C++实现的复杂应用,部署了模板和异常处理,支持独立的语言捆绑,基于架构的分布式组件。
- Symbian OS: rationale: "[...]从内核到外,用C++编写了所有代码。 这是世界上蜂窝电话最流行的操作系统之一。
- Thomson Reuters: Eikon 是一款金融专业者的桌面旗舰产品。主要用C++开发 (有些部分用了 C#)。大约4百万行代码。
- UIQ Technology: UIQ, 一个移动电话的开源软件用户接口平台,世界上顶尖手机厂商在使用它,用于Symbian系统的手机上。UIQ 3用于索尼爱立信子M600, P990和W950。
- Karlsruhe大学: L4Ka: pistachio, 一个微内核纯用C++实现。
- Vodaphone: 移动电话基础设施,包括服务和计费。
- wxWidgets (正式一点称为wxWindows): 跨平台widget集合/工具箱 (开源)。
- WAM!NET: "传输管理器" ISDN和TCP/IP为基础的数据传输软件, 正式的名字是4-Sight ISDN 管理器–集成了ISDN 支持,使用软件可以连接WAM!NET的托管广域网。
- ZeroC: 提供ICE, 一个用C++映射的分布式OO计算基础设施。ICE用可移植性好的C++编写,用很多C++编译器编译。ICE用于游戏和大批量的训练模拟。
应用领域和应用程序不是跟单个组织相关的有:
- CDE桌面(很多UNIX系统的标准桌面)用C++编写。
- 计算几何: CGAL开源项目, 计算几何算法库, 提供艺术几何数据结构状态和算法。主要设计目标是高性能、健壮性和灵活性。为了完成后者设计目标,设计者使用泛型编程理念,使得CGAL看起来感觉象STL。商业上的支持者是 GeometryFactory。
- CORBA ORBs: MICO, omniORB, Orbix, TAO。
- 游戏: 末日三引擎,塞拉利昂在线:Birthright,Hellfire,Football Pro, Bullrider I和II ,Trophy Bear, Kings Quest,Antara,霍伊尔纸牌游戏套件,SWAT,还有很多...Blizzard: 星际争霸,星际争霸:母巢之战,暗黑一,暗黑破坏神II :毁灭之王,魔兽争霸III ,魔兽世界。Quicksilver:上海第二王朝,上海麻将麻将要点,Starfleet Command, Invictus ,PBS's Heritage:文明与犹太人,Master of Orion III, CS-XII,微软:所有游戏。EA:视频游戏引擎。Byond: 一个世界级开发平台。
- 图形交互界面:
- Virtual Harlem (Illinois 大学项目,在Chicago和Central Missouri州立大学)它是一个学习环境,允许学生经历19世纪二三十年代的Harlem Renaissance作为文化旅行。Virtual Harlem 建立在高级的VR称为Yggdrasil的脚本框架上。Yggdrasil用C++编写,使用其他C++库和框架。
- SGI's OpenGL Performer图形库。
- CAVElib VR库。
- CAVEGui 是一个图形接口工具,它提供跟CAVE应用程序的交互。
- CAVERNsoft G2 一个开源的C++ ready2ware工具箱,用以开发协作网络的应用。
- COANIM (或Collaborative Animator)是一个通过AGAVE查看3D内容的应用软件。AGAVE背后的整体概念是用来附加一个低成本基于PC图形的工作站去存取栅格结点从而投影立体计算机图形允许合作者之间分享3D内容。
- Coin是一个带有C++编程接口的高级3D图形库。Coin 用场景图形数据结构渲染实时图形,适合于各种科学工程图形可视化应用。
- Agave: 存取栅格增强虚拟环境
- Virtual Harlem (Illinois 大学项目,在Chicago和Central Missouri州立大学)它是一个学习环境,允许学生经历19世纪二三十年代的Harlem Renaissance作为文化旅行。Virtual Harlem 建立在高级的VR称为Yggdrasil的脚本框架上。Yggdrasil用C++编写,使用其他C++库和框架。
- KDE,Linux上用C++编写的桌面。K Desktop Environment,是一个强大的开源图形桌面环境,用于Unix工作站上。它是Linux桌面环境的旗舰产品。它包含了300种用C++编写的不同的包,包括一个Office族、一个浏览器、开发工具、游戏以及多媒体应用。
- 一种主要的弹道导弹防御系统用C++编写。
- 电话系统: 我认为很容易找到用非C++语言编写的系统,但是至少在欧洲这里:
- C++是Alcatel 传输系统唯一的开发语言, 既用于网络管理 (用ILog Views),也用于真正的传输设备上。FWIW, 德国主要的传输结点(法兰克福, 柏林, 慕尼黑以及德国北部的另一个地方,我认为) 100%用C++编写. 在德国,所有跨越不同的区域的电话呼叫都经过这些中的某部机器。
- T-Mobile(德国最大的蜂窝电话操作器)用C++编写了计费系统和多数的WAP端口--动态分配IP地址等。
- 放下这些暂且不说, 任何人在德国使用电话就要依赖于C++编写的代码--有很多用户呢:-)。那怎么才算一个用户?德国的主电话传输结点用C++编写(我十分确信法国也如此)。我不相信在该国家谁不用电话--这能算8千万(算上法国有1亿4千万)C++使用者吗?
- SETI@home一个巨大的合作项目,用来分析外星生命迹象的数据。其中的一部分用C++编写。
- Poco网络开发支撑库。这里是一个popo的用户列表。
(English version): http://www.research.att.com/~bs/applications.html