回 帖 发 新 帖 刷新版面

主题:C++的应用(C++ Applications)

维护这篇文章处于最新状态有些困难,尝试一下这里[url]http://www.cppblog.com/Chipset/archive/2008/12/17/69625.html[/url],这个版本可能更新一点。
                                                                          2008年12月2日更新

[size=3]    这里有一个有关系统、应用程序和库的列表,列表中的全部或者大部分代码用C++编写,当然,该列表并不全面。即使我如何努力,我也不能列举一个含有1000个主要由C++编写的程序列表,但是这里的列表可能包含我听说过程序之中的第1000个。这是一个包括系统、应用程序和库的列表,读者可能熟悉其中的一些,新手可能有个概念C++能做什么,或者我仅仅觉得它很“酷”。
    [这里有一个本文翻译的中文连接]

    我(Bjarne Stroustrup)不能保证该列表的完全准确,但是我相信它是准确的,我信任那些发给我例子的人,不过我个人并没有见到源代码。我宁愿C++风格的代码,而不是大部分代码用C编写却尽力避免列出C或者C程序而称谓C++。列表中很多细节的描述来自开发人员和用户而不是我。

    该列表的组织形式实在有点说不过去。我把那些明显和一个公司有关的应用程序列在该公司名下,但是有一些系统没有用这样的组织方式。

    我并不知道列表中所有的缩写都什么意思。我也的确列出了一些C++的应用,即使他们依赖于C++的扩展,我欣赏更多的例子--尤其主要的应用。如果你发给我一个有URL地址的例子会更好一点。我并没有列出某些应用、系统或者库,除非我认为他们会让很多人感兴趣--我并不想尝试给出一个很完整的列表。我不会列出一种尚没有得到广泛应用的软件(抱歉)。这个列表意味着主要的应用,但在包含新产品方面则不太全面。我并不想表示“公平”,比如给出某个应用而不是某特定领域的所有产品--该列表试图给出一个整体印象,而不是帮助你选择某个产品。我尽量少重新描述某个产品,但会删除那些明显的广告性用语。

    谢谢所有发给我例子的人!欢迎给出更多的例子,欢迎纠正错误。

其他人的列表:

    * 谁在使用Boost?
    * ACE和TAO用户
    * 不断更新中的主要工业应用和工具。 

明显跟一个组织相关的应用:

    * 12D 解决方案:计算机辅助系统,用于测量、民用工程等等。
    * Adobe系统:所有主要的应用用C++开发
          o Photoshop和ImageReady,
          o Illustrator,
          o Acrobat,
          o InDesign,
          o GoLive,
          o Frame (大部分C, 部分C++) 
    * Alias|Wavefront: Maya. Maya 自从开发出来以后一直用于制作电影特效, 包括星球大战前传I,蜘蛛侠,指环王,精灵鼠小弟等。“我爱三维动画”。
    * Amadeus: 正在运行中最大的欧洲非军用数据中心 (每秒超过5000个交易,连接20万个终端,24/7负载)大多数开发用C++语言。所有基于Unix服务器的应用全部用C++开发,例如:
          o 汽车预订
          o 客户端服务
          o 电子订票
          o TCP/IP 前端 
    * Amazon.com:大型电子商务应用软件。
    * Apple:OS X 操作系统使用很多语言开发,但是几个重要的部分用C++开发的。两个比较诱人的部分分别是,
          o 搜索器(Finder)
          o IOKit设备驱动 (IOKit 是内核里面仅有使用C++的地方)

还有,

          o AppleWorks
          o iPod用户接口(Pixo应用框架用C++写的)
          o 成千上万的Macintosh应用程序估计半数以上用C++开发的。
          o Frameworks: 有3个广泛使用的Macintosh应用框架工程用C++开发,分别是Apple's MacApp, Symantec's Think Class Libraries和 Metrowerks' PowerPlant。
    * Arium:资源点,Intel和ARM系统硬件调试和仿真(包括多处理器系统)。
    * AT&T:美国最大的电信供应商
          o 1-800 服务
          o 配置系统
          o 网络失败应急系统 
    * Autodesk:在CAD领域有很多市场 。
    * BeOS:一种多处理器多媒体个人操作系统。
    * BigFix, Inc.: BigFix 是一个用来发布技术支持信息的通信系统。很多公司用它做技术支持支持硬件和软件,例如Autodesk和eMachines. 所有的BigFix 产品都用C++开发。
    * Bloomberg:为投资者提供实时的金融信息。
    * Cabot Communications: 便携式游戏机和数字电视软件 (包括ISO MHEG-5).
    * Caldera:系统管理软件的OpenWBEM的WBEM标准开源实现 (www.openwbem.com)。用了较多的C++98标准机制。
    * callas Software:PDF文件的分析纠错和优化软件,有pdfInspektor, Acrobat Preflight以及其他插件。
    * CERN:数据分析-尤其用于大规模高能物理实验-使用了ROOT工具集和库。
    * Codemill:SuperDoc: 一种掌上操作系统文件阅读器,能显著的平滑字体。
          o SecurityContext: 一种 Win32 COM组件,用来简化当前线程的上下文安全查询。
          o Map: 一种Win32 COM 组件用于COM变量数据类型线程映射,例如:用于IIS网络应用数据缓存
    * Code Synthesis Tools: 提供XSD, 一种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。
    * 荷兰交通部, 公用工程, 水资源管理:浪涌屏障控制。BOS控制系统的保护屏障Maeslant使得Rotterdam免受洪害。该项极高极高级安全系统(按照IEC 61508,最高的安全级别)使用C++, Z和PROMELA 编写。[这里有一些漂亮的图片。]
    * Efficient Networks:(Siemens的子公司)出售量超过800万套,它的PPPoE 用户端软件用于Macintosh, Windows and Linux系统。新的Macintosh 上开发全部用C++,Windows上开发用的C/C++。下面这些产品用C++开发:
          o EnterNet: PPPoE 用户端驱动和应用设置
          o Tango Qualifier:用户环境预攫取预测
          o Tango Installer:向导型安装器
          o Tango Access: PPPoE用户端驱动和应用设置
          o Tango Support:用户层网络诊断工具
    * Ericsson:
          o TelORB–面向对象的分布式操作系统
          o 分布式RAM数据库, TSP应用的基础
          o 服务器平台
          o TDMA-CDMA HLR
          o GSM-TDMA-CDMA移动网关
          o AAA服务器
    * FlightGear:开源飞行模拟器使用了JSBSim
    * Geant4:粒子干涉模拟,用于高能物理、核物理试验,太空和医疗应用的工具箱。Geant4 工程世界范围内100多位科学家合作,进行10余次试验,分别在欧洲、俄罗斯、日本、加拿大和美国。用C++编写,源代码超过500K行。
    * Google: 网络搜索引擎等
          o Chromium 浏览器
          o Google文件系统
          o MapReduce 大聚簇数据处理
    * Havoc:实时的物理用特效以及游戏
    * HP:下面是很小一部分C++应用
          o C, C++, Fortran90 HP IA64 平台编译器和连接器 (加了1百万行C++源代码).
          o SAM (HP的系统管理应用)
          o 一些HP-UX的网络库
          o Java虚拟机内核
          o Openview的一部分
          o Non-stop XML语法分析器 (来自最初的compaq) 
    * IBM:
          o OS/400.
          o K42: 一种高性能开源的多处理器操作系统内核 
    * Image Systems: TrackEye 和TEMA, 世界上顶尖动作分析软件 (基于数字图像处理)。多数汽车厂商用它分析碰撞试验效果,也有的汽车厂商和飞机厂商用它来分析新模型性能。
    * Intel:
          o Vtune 性能分析软件
          o 编译器和优化器
          o 很多芯片的设计和制造软件
    * Intuit: Quicken (个人理财软件).
    * ILOG: 在ILOG上, C++编写的库用于:
          o 图形. 该库用来编写可移植性GUI和高级图行机制
          o 优化. 该库用来编写控制程序行为应用
          o 规则. 该库用来编写规则引擎

[/size][续]

回复列表 (共43个回复)

沙发

[接][size=3]
下面是一些用户:

    * 克莱斯勒,法国电力,CENA,北电网络,SAP,阿尔卡特公司,雷诺,Manugistics,Communaut urbaine(里昂交通管制),Parc科技有限公司,巴克莱全球投资(BGI),TLC(运输,Informatik,物流,GmbH咨询)Deutsche Bahn子公司,国防部的联合作战支援空运中心(JOSAC),Telefonica,思科,尼桑,浦项制铁,索尼银行, isMobile ,美国西南航空公司, Novient ,沃达丰TeleCommerce ,Sabre Holdings公司,法国电信,爱立信公司,德国电信,朗讯科技,MCI WorldCom,西门子,First Union Home Equity Bank,巴恩,惠普, Adonix ,Peugeot, ARINC公司,McHugh.
    * JPL (Jet Propulsion Lab, NASA): 火星探测器自动驱动系统 (包括场景分析和路线预测)以及很多地面支持软件。
    * KLA-Tencor: 半导体制造系统
    * Looksmart:主要用C++编写. 所有有关搜索和浏览网页的产品用C++编写,每天的用户超过5百万。
    * MAN B&W Diesel A/S:用于大型和巨型轮船。
          o 两个巨大的柴油机(超过10万马力)电子控制燃料注入系统和排气阀控制系统。中等规模的严格实时嵌入式系统,完全24/7分布式容错恢复 。除了几百行汇编,其余全部用高质量的C++代码编写。
          o 发动机和船板机器的几个巨大的支撑系统全部用C++编写。
          o 几个内部的高级商业应用,用于发动机设计和设计信息存储。 
    * Medimage:所有产品,从医疗图像显示系统到从一个机器到其他机器通信服务软件,通信用不论用modem还是TCP/IP都用C++编写 。该产品支持的平台有Mac OS和Windows。
    * Mentor Graphics: 从19世纪80年代开始Mentor Graphics应用程序开发开始使用C++,包括:
          o Calibre: 软件用于IC物理验证、生产和解析
          o Formal Pro:正式验证等同检查器,能运行几百万网关ASIC和IC
          o FastScan: ASIC 和IC的自动测试模式生成工具
          o FlexTest: 优化测试涵盖的测试模式产生
          o TestKompress: 减少ATE内存和时间消耗的工具集
          o MachTA/PA:高速、精确、大容量晶体管电路模拟,用于DSM和混合信号IC设计时间能量分析
    * Metrowerks: 一个软件开发工具大名鼎鼎的供应商。CodeWarrior 集成开发环境(IDE), RAD插件和PowerPlant以及对象类库全部用C++编写,网站上列举了一个很酷的应用,例如: 3D映像,实时网络会议,卫星控制技术。
    * Microsoft: 一般而言微软的产品都带有不同程度的VC++色彩,多数是6.0和7.0,但确有一些仍旧用了5.0(一些产品像Windows XP使用更新的编译器编译),下面列出一些:
          o Windows XP
          o Windows NT(NT4 and 2000)
          o Windows 9x(95, 98, Me)
          o Microsoft Office(Word, Excel, Access, PowerPoint, Outlook)
          o Internet Explorer(包括Outlook Express)
          o Visual Studio (Visual C++, Visual Basic, Visual FoxPro) (Visual Studio的一些部分,诸如基类库配装.NET框架用C#编写,但是C#编译器用C++编写)
          o Exchange
          o SQL 

还有一些”微型”产品,例如:

          o FrontPage
          o Money
          o Picture It
          o Project
          o 所有的游戏
    * Morgan Stanley:金融模型的一个大块.
    * Mozilla: Firefox浏览器和Thunderbird客户邮件(开源).
    * MySQL: MySQL服务器(大约25万行C++代码)和MySQL聚簇集,它是世界上最出名的开源数据库。
    * Nokia:
          o 移动通信无线基站/网桥: FlexiGGSN (网关GPRS支撑结点)和FlexiSGSN (服务器GPRS支撑结点).
          o MSC/HLR 
    * 以色列国家人口统计局:主要用C++来开发, 一些组件内嵌了SQL。每月几百万的交易,从出生到死亡的注册、日常生活、护照保险、签证等等,用于8百万国民和外国工人。
    * Netopia:
          o Timbuktu Pro–Macintosh和Windows的远程控制, 文件交换以及辅助工具. Timbuktu Pro大约有1千万个结点,5百家公司的70%资金用它周转。这些年来Mac版本获得了很多嘉奖,Windows 版本获得了2002年度世界级PC世界大奖。
          o netOctopus --Macintosh 和Windows基于网络的系统管理。"4千站点 ... 每个站点大约安装了150个agent (管理系统),这就有60万个系统".
          o eSite–几个网页公司为广告客户提供的网站服务器平台。
          o eCare–基于网络的客户支持。Macintosh和Windows客户端用C++编写. 
    * Nullsoft:所有Nullsoft产品用C++编写 (Winamp, NSI等),很多是开源的。
    * Programming Research: QAC++: C++的分析产品。
    * Radiometer Medical A/S:高级医疗设备和应用,保守的估计每天世界范围内有1千家医院使用。
          o Bloog-gas分析器: 基于数据库应用的医学血样分析设备,除了GUI外,该应用软件完全用C++编写。
          o Blood-gas设备管理系统:分布式数据管理应用全部用C++编写(TAO CORBA中使用ACE框架),用于监视和汇报。 
    * 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:
          o HotSpot Java虚拟机用C++编写(这是一个技术前沿的性能换代产品,用来取代用C编写的传统虚拟机。)
          o Sun公司编译器的主要部分用C++编写, 尤其是C++ 前端、Fortran 95前端的一部分和SPARC后端。
          o 为了匹配和稳定的需要,Solaris操作系统的一部分用C++编写, 但外接口看起来像C。
          o OpenOffice "开源Office系列": "[...] 整个技术基于平台无关的特性。不足10%的代码平台相关,它们作为一个抽象层服务于上层软件组件,由于C++编译器在主要平台上都有,C++就作为了实现它的语言。这就使得the OpenOffice.org technology可以用于不同的平台上" "[...] 这是一个主要用C++实现的复杂应用,部署了模板和异常处理,支持独立的语言捆绑,基于架构的分布式组件。 
    * Symbian OS: rationale: "[...]从内核到外,用C++编写了所有代码。 这是世界上蜂窝电话最流行的操作系统之一。
    * UIQ Technology: UIQ, 一个移动电话的开源软件用户接口平台,世界上顶尖手机厂商在使用它,用于Symbian系统的手机上。UIQ 3用于索尼爱立信子M600, P990和W950.
    * University of 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用于游戏和大批量的训练模拟。 
[/size][续]

板凳

[接][size=3]
应用和应用领域不是跟单个组织相关的有:

    * 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: 一个世界级开发平台。
    * 图形交互界面:
          o 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 (or the Collaborative Animator)是一个通过AGAVE查看3D内容的应用软件。AGAVE背后的整体概念是用来附加一个低成本基于PC图形的工作站去存取栅格结点从而投影立体计算机图形允许合作者之间分享3D内容。
                + Coin是一个带有C++编程接口的高级3D图形库。Coin 用场景图形数据结构渲染实时图形,适合于各种科学工程图形可视化应用。
                + Agave: 存取栅格增强虚拟环境 
    * Linux上用C++编写的KDE: K Desktop Environment,是一个强大的开源图形桌面环境,用于Unix工作站上。它是Linux桌面环境的旗舰产品。它包含了300种用C++编写的不同的包,包括一个Office族、一个浏览器、开发工具、游戏以及多媒体应用。
    * 一种主要的弹道导弹防御系统用C++编写。
    * 电话系统: 我认为很容易找到用非C++语言编写的系统,但是至少在欧洲这里:
          o C++是Alcatel 传输系统唯一的开发语言, 既用于网络管理 (用ILog Views),也用于真正的传输设备上。FWIW, 德国主要的传输结点(法兰克福, 柏林, 慕尼黑以及德国北部的另一个地方,我认为) 100%用C++编写. 在德国,所有跨越不同的区域的电话呼叫都经过这些中的某部机器。
          o T-Mobile(德国最大的蜂窝电话操作器)用C++编写了计费系统和多数的WAP端口--动态分配IP地址等。

放下这些暂且不说, 任何人在德国使用电话就要依赖于C++编写的代码--有很多用户呢:-)。那怎么才算一个用户?德国的主电话传输结点用C++编写(我十分确信法国也如此)。我不相信在该国家谁不用电话--这能算8千万(算上法国有1亿4千万)C++使用者吗?

    * SETI@home:一个巨大的合作项目,用来分析外星生命迹象的数据。其中的一部分用C++编写。
    *网络开发支撑库Poco,这里有一个poco的用户列表[http://pocoproject.org/poco/wiki/tiki-index.php?page=WhoUsesPoco]。

(English version)Trace back: http://www.research.att.com/~bs/applications.html[/size][完]

3 楼

经C++创始人Bjarne Stroustrup博士同意,我翻译了"C++ Applications"这篇文章,由于水平所限,翻译错误之处在所难免,欢迎读者批评指正。

由于网页编辑器功能太弱,粘贴过程中失去了所有的超级连接(估计几千个),以及一些字体字形等通通丢失,因此看上去可能很别扭,请见谅。

本文的原始版本见我的博客http://www.cppblog.com/chipset/
http://chipset04180.blog.163.com/
本文的英文版见http://www.research.att.com/~bs/applications.html


[color=0000FF]欢迎转载此文,但希望注明出处[/color]http://www.programfan.com/club/post-289979.html

4 楼

牛逼!这么多的专用名字,你都捣鼓出来了!

厉害。

(我就不荐置顶了——免得别人说俺们俩互吹、作弊~~~)

5 楼

ps:viki.vim用来写网页形式的东西,比较方便。

6 楼

Bjarne Stroustrup说等我翻译完挂到网上了,给他一个连接。不过pfan有点慢,即使有人在它的主页上看到这个中文版本的连接了,也连接不到这里。

翻译这篇文章着实费了点劲,主要原因是C++应用涉及到各个领域,很多专业术语根本查不到汉语意思是什么。再者就是很多简写和缩写,连Bjarne Stroustrup也不知道什么意思,因为是别人发给他的,我只能凑合着给出英语吧。

7 楼

[quote]Bjarne Stroustrup说等我翻译完挂到网上了,给他一个连接。不过pfan有点慢,即使有人在它的主页上看到这个中文版本的连接了,也连接不到这里。[/quote]

呵呵,好玩!

8 楼

[quote]ps:viki.vim用来写网页形式的东西,比较方便。[/quote]

vim都没有用过啊,唉,水平不行啊。

9 楼

数不清的学生和C++初学者怀疑C++能做什么,似乎Java和C#更加耀眼,尤其在语言趋于简单化的今天,很多语言进化的愈来愈简单,例如C#似乎就是VB的一个翻版,Java则从C/C++那里学了一点皮毛功夫,结果就牛气冲天了......

MS几乎所有的东西都离不开C++,Java语言的虚拟机恐怕最有技术含量了,但是是C编写的,比较新的高性能虚拟机是用C++编写的。有数不清的系统和应用用C++编写,涉及到各个领域。C#能做什么,Java能做什么?有目共睹......

我想,看了这篇文章(尤其英语不太好的朋友),你们就会明白:C++是否那么令你失望呢?

OK,啰嗦这么多吧,该睡觉了。

10 楼

[quote]数不清的学生和C++初学者怀疑C++能做什么,似乎Java和C#更加耀眼,尤其在语言趋于简单化的今天,很多语言进化的愈来愈简单,例如C#似乎就是VB的一个翻版,Java则从C/C++那里学了一点皮毛功夫,结果就牛气冲天了......

MS几乎所有的东西都离不开C++,Java语言的虚拟机恐怕最有技术含量了,但是是C编写的,比较新的高性能虚拟机是用C++编写的。有数不清的系统和应用用C++编写,涉及到各个领域。C#能做什么,Java能做什么?有目共睹......

我想,看了这篇文章(尤其英语不太好的朋友),你们就会明白:C++是否那么令你失望呢?

OK,啰嗦这么多吧,该睡觉了。[/quote]
勇气号上面的控制软件就是用JAVA写的。。。

我来回复

您尚未登录,请登录后再回复。点此登录或注册