回 帖 发 新 帖 刷新版面

主题: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个回复)

21 楼

19楼:

快速开发我们可以使用集成开发环境,利用现有的库,没有人乐意一行一行的写代码,这样写代码需要弄清任何一个数据结构和算法,并需要深入的相关知识。假如我需要一个高性能并行处理的傅立叶变换,我恐怕不得不弄明白怎么一回事,糟糕的是我可能不是学习数学的,即使学习数学的也忘记了,我眼下需要的仅仅是一个函数头,只要能调用就能解决问题,这样我们用集成开发环境配合手册和文档就搞定了,当然我们可以使用VB,C#,Java, Delphi,Fortran...。

C++仅仅是语言,我们至少还要熟练一种或者多种集成开发环境。其实Java,C#,VB...又何尝不是如此?都是靠库支持着,仅仅知道基本的语法是远远不够的,仅仅知道语法我们几乎“什么都做不了”,或者说很难做一个比较满意的大程序。

C++除了市面上丰富的商业性和开源的库外,即使某个团队想自己开发一个高质量的产品也是完全可能的,因为C++给程序员预留了极大的自主空间,相对而言,其他像C#,Java,VB...这样的高级语言则灵活性差多了。

好事不应总让一个人占全了,语言也一样,C++语法过分复杂,弄懂那么多复杂的语法需要更多的时间。而社会发展的今天却是另外一种景象,越来越多的年青人(包括我自己)变得十分浮躁,总希望短时间内什么都学明白,结果往往什么都弄不明白。到头来我们却埋怨这不好那不好,其实是我们自己努力不够,心太高,太贪婪。

VB是出了名的效率低下,但是VB的市场很大,很多人使用VB,远远超过使用C#的人,在数据通信和硬件方面C#远远不及VB,你觉得奇怪吗?Java获得广泛应用的主要原因不是James Gosling当初设计的跨平台技术,而是廉价的库支持,不是吗?C#又何尝不是如此?虚拟机简直就是扯淡,纯粹一个幌子。从这点上来看,Java和C#都是设计失败的语言,成功是因为歪打正着的廉价库支持。

使用什么,最终的决定权不是哪种语言设计是否优秀,而是商业利益。假如VC++,BC++,Intel C++ ...各种集成的开发环境都没有,仅仅只有一个,有一个大公司垄断着,就像Java和C#,而不是像今天的C++库百花齐放,那会怎样?恐怕C#和Java这样的语言根本就不存在!

既然用Java和C#甚至VB开发就能满足要求,而且有那么多廉价的库可以使用,那为什么不用呢?至少我不会用所谓的纯C++来做,除非老板要求必须用C++!

22 楼

[quote]从这点上来看,Java和C#都是设计失败的语言,成功是因为歪打正着的廉价库支持。[/quote]

C#应该是挟平台之威更多些。Java则是养肥了企业应用。至于那些个库,我不知道算不算“廉价”——当然,ms搞好和程序员之间的关系也是好棋;收买点写手进行鼓吹以及贬低对手更是居家旅行之必备。

23 楼


首先,狂顶10000次!楼主给大家做出了大贡献了!~~



我以前看过一篇文章,B.S.老大说:“C++在经过前10年(1985-1994)的爆炸性增长之后,后10年(1995-2004)的使用人数一直在稳定地增长。”

事实也的确如此,虽然这个增长的速度没有Java等语言快,但是使用C++的程序员人数仍然在增长。这说明,C++语言仍然跟得上“潮流”,仍然能够满足程序员和实际应用的需要。

目前,在Web开发上,C++没有多大的市场。在企业级的应用上,以Java、.NET(C#是其中重要的一员)居多,C++仍然占有一席之地。在系统级的开发上,C/C++应用居多。这3种语言各有特色。总的来说,C++的应用集中在如下主要领域。

游戏:C++的效率是一个很重要的原因。

科学计算:在科学计算领域,FORTRAN是使用最多的语言之一。但是近年来,C++凭借先进的数值计算库、泛型编程等优势在这一领域也应用颇多。

网络软件:C++拥有很多成熟的用于网络通信的库,其中最具有代表性的是跨平台的、重量级的ACE库,该库可以说是C++语言最重要的成果之一,在许多重要的企业、部门甚至是军方都有应用。

分布式应用。

操作系统:在该领域,C语言是主要使用的编程语言。但是C++凭借其对C的兼容性,面向对象性质也开始在该领域崭露头角。

设备驱动程序:也是因为效率的原因。

移动(手持)设备。

嵌入式系统。

教育与科研。


由于我是学通信工程专业的,所以对于C++也有一种由衷的感情,尽管我技术还是很烂,这是我学c++最原始的理由,但是事实上,rickone大侠一句“c++是最与时俱进的语言”更是一种动力,我一个高中同学现在学的就是java,也是时不时为java中各种飘逸的手法沉醉。


什么事情都是价值所驱动的,语言的运用也是。


24 楼

22楼:
我说的廉价不是说MS,是指Java的很多库都可以从SUN公司网站上免费下载,包括各中JDK等等,不过SUN公司还是比较大度的,MySQL、OpenOffice、OpenSolaris等也都免费下载。至于MS,贬低对手是一惯的宣传策略,还有收买,挖技术人员等,MS的东西当然谈不上廉价,我们国内只不过是盗版多了点罢了,MS至多出个express版本免费。

至于C#,传言说MS想让它在FreeBSD Unix上试试,不过至今都动静,问题是C#的确不怎么样,否则MS那么多东西干吗都用C++做?MS给大学招聘新手开出22万/年的价格还是比较有诱惑力的啦,参与者都知道,大部分题目都是C++的,C#的微乎其微甚至没有。但是无可厚非,MS的VC++的确做得相当到位,尽管加个.net平台为了商业利益导致性能下降不少,配合操作系统平台,老态龙钟臃肿的MFC一直没有退出,这就是技术垄断。

25 楼

cppreference.chm对于初学C++的朋友来说可以方便的查阅库函数,不过没有中文版,需要的请留下邮箱。
网站http://www.cppreference.com/wiki/

26 楼

"Without a good library, most interesting tasks are hard to do in C++;
 but given a good library, almost any task can be made easy."

                                                        Bjarne Stroustrup

27 楼

狂顶!!
楼主人品真是太让我辈敬重了!!

jacklinshi1004@gmail.com

谢谢!

28 楼

[quote]
jacklinshi1004@gmail.com
![/quote]

发送失败,下面是失败返回信息,你的邮箱是不是有问题?

Hi. This is the qmail-send program at yahoo.com.
I'm afraid I wasn't able to deliver your message to the following addresses.
This is a permanent error; I've given up. Sorry it didn't work out.

<jacklinshi1004@gmail.com>:
209.85.143.114 failed after I sent the message.
Remote host said: 552-5.7.0 Our system detected an illegal attachment on your message.
552-5.7.0 Please visit http://mail.google.com/support/bin/answer.py?answer=6590
552 5.7.0 to review our attachment guidelines. u12si3816072tia.3

29 楼

支持一下,最近不是很多时间来看

30 楼

不管爱迪生发明灯泡是为了自己赚钱还是造福人类,他确实为人类的进步做出了贡献。
不管微软发明c#,sun搞java是为了自己赚钱还是别的,他确实为软件发展做出了贡献。
c++很强,当然可以说是无所不能,这么会所汇编更加无所不能,甚至机器码更厉害,怎么不用他们去写呢?
不管做什么,我们的目标是让事情越来越简单,越来越方便,越来越好用,如果你觉得你c++很厉害,就去编一个即有c++效率,又简单掌握的语言。这才是社会和人类发展的必然进程,我想当初搞汇编的人看待高级语言,看待c++也和你现在一样的态度吧。

我来回复

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