C++ アプリケーション (C++ Applications)
2011 年 12 月 27 日更新
Bjarne Stroustrup 氏 "C++ Applications" の日本語訳です。
これは,全部または大半が C++ で書かれているシステム,アプリケーション,ライブラリのリストです。当然,完全なリストであるつもりはありません。事実,主要な C++ プログラム全てのうちの 1000 番目を挙げることはやろうとしても出来ないでしょうし,私の聞いたものの 1000 番目はこのリストの中に多分あるでしょう。このリストは,読者に幾らか馴染みのあるかもしれないシステム,アプリケーション,ライブラリのリストです。初心者は C++ を使って何がされているのかを知ることが出来るだろうし,私は単純に "クール" だと思いました。
中国語訳 へのリンクです。
私 (Bjarne Stroustrup) はこのリストの正確性を一切保証しません。正確であることを信じています——私に事例を送ってくれた方々を信用していますが,そのソース コードを自分では見ていません。殆ど C なのに C++ と呼ばわれるコードより,C++ スタイルのコードを好み,C または "殆ど C" なプログラムは載せないように努めました。詳しい説明の多くは,各システムの開発者または使用者の言葉であり,私のものではありません。
このリスト中の組織は各個特有のものです。一組のアプリケーションが単一の組織に明確に関係している場合,アプリケーションはその組織名の下に載せます。ただし,そのパターン通りでないシステムもあります。
いいえ,私は全ての頭字語の意味を知っている訳ではありません。はい,たとえ非標準の拡張に依存していても,C++ として載せています。はい,更なる事例を教えていただければ感謝します——特に,主要なアプリケーションであれば。送ってくださるなら,サポート サイトへの URL も送っていただけると有り難いです。いいえ,多くの人にとって関心があるだろうと思われない限り,アプリケーション,システム,ライブラリをリストに載せません——私はそこまで完璧なリストを作ろうとしているのではありません。いいえ,まだ広汎に使われていないアプリケーションはリストに載せません (ごめんなさい)。このリストは主要な使用例を説明することを意図しており,新たな製品を含めることでそれが弱められるためです。ある製品をリストに載せる際に競合製品も全て載せることを約束するなど "公平" を気取ることはしません——このリストは全体的な印象を与えようというものであり,あなたの製品の選択を手助けするものではありません。説明の書き換えは出来る限り少なくしますが,明らかな広告は削除します。
私は項目を頻繁に見直している訳ではないことに注意してください。全く更新されていないものもあるでしょう。気軽に私に更新を届け出てください。
私に事例を送ってくださった全ての方に感謝します。追加や訂正の提案も歓迎します。
他の人のリスト:
明らかに単一の組織に関係したアプリケーション:
SID、 0X80041002を取得できませんでした
- 12D Solutions: 測量,土木工学などのためのコンピュータ支援設計 (CAD) システム。
- Adobe Systems: 全ての主要なアプリケーションは C++ で開発されています:
- Photoshop & ImageReady,
- Illustrator,
- Acrobat,
- InDesign,
- GoLive,
- Frame (主に C, 一部 C++)
- Alias|Wavefront: Maya。Maya は,コンピュータで生成されるエフェクトを含んだ主要な映画ほぼ全ての制作に,リリース時から使われています。スター・ウォーズ エピソード I, スパイダーマン, ロード・オブ・ザ・リング, スチュアート・リトル,他。"私は 3D アニメーションが大好きです。"
- Amadeus: ヨーロッパ最大の非軍用データセンター (1 秒当り 5000 超処理,端末 200000 機接続,24 時間稼働) を運営し,現在の開発の殆どを C++ で行っています。全ての Unix ベース サーバ アプリケーションは完全に C++ です。その一部:
- 車の予約
- 顧客プロフィール サーバ
- 電子航空券
- TCP/IP フロント エンド
- Amazon.com: 大規模 e-コマース用ソフトウェア。
- Apple: OS X は複数の言語の混合で書かれていますが,幾つかの重要な部分は C++ です。最も興味深い 2 者は
- Finder
- IOKit デバイス ドライバ。 (もっとも IOKit はカーネルの中で C++ を使う唯一の場所ですが。)
- AppleWorks
- iPod のユーザ インタフェース (C++ で書かれた Pixo アプリケーション フレームワークが使われています。)
- "私が推定するに,これまで発売されてきた何千という Macintosh アプリケーションの半数以上は C++ で書かれていました。"
- フレームワーク: Macintosh 用に開発された主要な C++ アプリケーション フレームワークは 3 つあります:Apple の MacApp (some MacApp applications),Symantec の Think Class Libraries,Metrowerks の PowerPlant。また,これまで開発されてきた (市場シェアの) 小さなフレームワークは数多く存在します。
- Arium: Sourcepoint; インテル 及び ARM システム用 (マルチプロセッサ システムを含む) のハードウェア デバッガ・エミュレータ。
- AT&T: アメリカ最大の電信プロバイダ。
- 1-800 サービス
- プロビジョニング システム
- 障害時のネットワーク回復システム
- Autodesk: CAD 界におけるアプリケーションのメジャー ナンバー多数。
- BeOS: マルチプロセッサ・マルチメディア・パーソナル OS。
- BigFix, Inc.: BigFix はテクニカル サポート情報を適切な人へ適切な時間に届けるための,コミュニケーション システムです。Autodesk や eMachines といった会社により,ソフトウェアとハードウェア両方のサポートに使われています。BigFix の全製品が C++ で書かれています。
- Bloomberg: 投資家にリアルタイムの金融情報を提供。
- Cabot Communications: ポータブルのセット トップ ボックス (STB),ディジタル TV ソフトウェア (ISO MHEG-5 を含む)。
- Caldera: システム管理ソフトウェアのための WBEM 標準のオープン ソース実装である OpenWBEM は C++ で書かれています (www.openwbem.com)。標準委員会自体で作られたもの以外では,私が見た殆どどのソースコードよりも,新しい C++ 98 の特徴を採り入れています。
- callas Software: PDF ファイルの分析・修正・最適化ソフトウェア:pdfInspektor, Acrobat Preflight 及びその他のプラグイン。
- CERN: 特に大規模高エネルギー物理実験用のデータ分析プログラム。ROOTツールセットとライブラリを使用。
- Codemill:
- SuperDoc: PalmOS のドキュメント リーダ,高速なフォント アンチエイリアシングで有名。
- カレント スレッドの OS セキュリティ コンテキストのクエリを単純化するための Win32 COM コンポーネント。
- Map: スレッドセーフを提供する Win32 COM コンポーネント。COM バリアント データ型の map (std::map のように),例えば IIS ウェブ アプリケーションでのデータ キャッシング用。
- Code Synthesis Tools: インメモリ・ストリーム指向プロセス モデルをサポートした C++ 用の XML データ バインディング ジェネレータ XSD を提供します。XSD は移植性の C++ で書かれており,広範囲の C++ コンパイラを用いてコンパイルします。XSD は,遠距離通信,金融,ハイパフォーマンス コンピューティング,集積回路の設計に使われます。
- Coverity: C++ で書かれた,C と C++ のための静的ソースコード分析ツール。Linux のバグ を見つけるのに使用。
- CoWare: システム,チップの仕様が C++ による。
- Credit Agricole Indosuez Cheuvreux: ヨーロッパ株式市場における注文のトラッキングに C++ を排他的に使用。
- Dantz Development Corporation: Windows 用のバックアップ ソフトウェア。
- D-Cubed: 幾何学的制約条件の解決,動作シミュレーション,衝突検出,隠線の除去,プロフィール管理のためのコンポーネント。強調すべきは正確性とスピードです。CAD アプリケーションの大多数に使われています (例えば CATIA,SolidWorks,AutoCAD,NX,SolidEdge)。
- D E Shaw: 金融分析・取引ソフトウェア。
- Digiquant: インターネット管理システム (IMS),IP ベース ネットワーク上のサービス用の基盤ソフトウェアです。C++ ベースの IMS の構成要素に,拡張性 AAA サーバ,サービス プロビジョニング,評価エンジン,ポート サーバがあります。
- Dassault Systems (ダッソー システムズ): Catia v5; 主要な CAD ソフトウェア。最近の Airbus 社の全飛行機 (A380, ...
クッキーを受け入れるようにコンピュータを設定する方法) がこれで作られました。また,Boeing 787 ソフトウェア。完全に C++ で書かれており,STL を用いています。
- EnterNet: PPPoE クライアント ドライバと設定アプリケーション
- Tango Qualifier: ユーザ環境における購入前査定
- Tango Installer: ウィザードライクなインストーラ プログラム
- Tango Access: PPPoE クライアント ドライバと設定アプリケーション
- Tango Support: ユーザレベルのネットワーク診断ツール
- TelORB - オブジェクト指向の分散オペレーティング システム
- 分散 RAM データベース,TSP アプリケーションのベース
- サーバ プラットフォーム。
- TDMA-CDMA HLR
- GSM-TDMA-CDMA モビリティ ゲートウェイ
- AAA サーバ。
- 新しい HP IA64 プラットフォーム用の C, C++, Fortran90 コンパイラ,リンカ (C++ のコードは 100 万行超増加)。
- SAM (HP のシステム管理ユーティリティ)
- HP-UX ネットワーキング ライブラリの一部
- Java VM コア
- Openview の一部
- ノンストップ XML パーサ (元々は Compaq から)
- OS/400。
- K42: キャッシュコヒーレント マルチプロセッサ用の,高性能,オープン ソース,汎用のオペレーティング システム カーネル。
- 可視化。このライブラリのセットは,移植性 GUI や高度なグラフィカル フィーチャを必要とするアプリケーションをビルドするのに使われます。
- 最適化。このライブラリのセットは,制約プログラミングやシンプレックス アルゴリズムが必要なプログラムをビルドするのに使われます。
- ルール。このライブラリのセットは,発生するかもしれないイベントによるファイヤ アクションに対してのルール エンジンが必要なアプリケーションをビルドするのに使われます。
- 2 台の非常に大きなストローク ディーゼル エンジン (100.
トップ5窓アンチウイルス000 ブレーキ馬力超まで) 用の,電子制御燃料噴射,排気弁制御システム。中型の組込みシステム上で動くハード リアルタイム システム。分散・冗長エラー リカバリを備え,完全に重要な 24 時間運転。数百行のアセンブラ コードを例外として,全体的に高パフォーマンス,高レベルな C++ で書かれています。
- Calibre: IC の物理検査,製造,解像度向上のためのソフトウェア。
- Formal Pro: 数百万ゲートの ASIC と SoC の検証を可能にする,形式的検証の同等性チェッカ。
- FastScan: ASIC と IC 用の自動テスト パターン生成ツール。
- FlexTest: テスト網羅度を最適化するためのテスト パターン ジェネレータ。
- TestKompress: ATE メモリを削減し,テストに必要な時間を 10 回までに削減するツール スイート。
- MachTA/PA: DSM と ミクストシグナル IC の設計のタイミング及び電力解析のための,高速,性格,高能力な,トランジスタ レベルの回路ミュレータ。
- Windows XP, Vista, System 7
- 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) (.NET Framework とリリースを共にする基本クラス ライブラリは C# を使って書かれましたが,C# コンパイラ自体は C++ で書かれています。)
- Exchange
- SQL
- FrontPage
- Money
- Picture It
- Project
- 全てのゲーム
- JPL (ジェット推進研究所,NASA): 火星探査車の自律運転システム (情景解析や経路選定を含む)。火星に C++! また多くの補助ソフトウェアが "地上" にあります (例えば地球)。
- James Webb 望遠鏡 James Webb は Hubble 宇宙望遠鏡の後継機です。
- 国際宇宙ステーション用ソフトウェアの (多くの) 部分。
- Timbuktu Pro — RMacintosh と Windows 用のリモートコントロール,ファイル交換,及び共同使用のためのツール。 Timbuktu Pro は約 10,000,000 台のノードにまでインストールされており,フォーチュン 500 の会社の 70% に使われています。Mac バージョンは 10 年にわたって多数の賞を受賞し,Windows バージョンは唯一 the 2002 World Class Award From PC World を獲得しました。
- netOctopus — Macintosh,Windows 向けのネットワークベース システム マネジメント。"4000 サイト ...
- Mobile Communications 無線局/インターネット ブリッジ: FlexiGGSN (Gateway GPRS Support Node),FlexiSGSN (Server GPRS Support Node)。
- MSC/HLR
- N シリーズ (及びその他の "スマートフォン") 用ソフトウェアの大半。
- 血液ガス分析器: データベースベースのアプリケーションを実行する医療血液分析機器。GUI は別として,このアプリケーションは完全に C++ で書かれています。
- 血液ガス機器管理システム: 完全に C++ で書かれた分散データ管理アプリケーションであり (TAO CORBA の ACE framework を使用),監視,報告を容易にします。
- Java 仮想マシン HotSpot は C++ で書かれています (これは,C で書かれた Sun の "Classic JVM" の最先端・高性能な代替製品です)。
- Sun のコンパイラは C++ で書かれた主要なコンポーネントを持ちます。 特に,C++ フロント エンド,Fortran 95 フロント エンドの一部,SPARC バックエンド。
- Solaris の一部は C++ で書かれています。互換性と安定性の理由から, 外部インタフェースは普通 C のような見た目に作られていますが。
- OpenOffice "オープン ソース オフィス スイート": "[...] 全てのテクノロジはプラットフォーム中立のアプローチに基づいています。コードの 10% 未満がプラットフォーム依存です。これは上位のソフトウェア コンポーネントのための抽象化レイヤとして働きます。主な各プラットフォームの C++ コンパイラの可用性のために,C++ は実装言語として使われます。これは,広範囲の異なるプラットフォームへの OpenOffice.org テクノロジ の移植を可能にしています。" "[...] それは,分散コンポーネント ベース アーキテクチャであるため,テンプレートや例外処理を扱い独立の言語の結合に対応する C++ のコードから主に成る,複合のアプリケーションです。"
明確に単一の組織に関係してはいないアプリケーション領域及びアプリケーション:
- CDE デスクトップ (多くの UNIX システムの標準デスクトップ) は C++ で書かれています。
- 計算幾何学: CGAL Open Source Project, Computational Geometry Algorithm Library は,アート幾何データ構造及びアルゴリズムの状態を提供します。主な設計目的は高性能,堅牢性,柔軟性です。後者を達成するために,CGAL の設計者は一般的なプログラミング パラダイムを選択し,CGAL は STL のようなものとなりました。GeometryFactory によるサポートされた製品として商用の利用も可能です。
- CORBA ORBs: MICO, omniORB, Orbix, TAO。
- ゲーム: Doom III エンジン。 Sierra On-line: Birthright, Hellfire, Football Pro, Bullrider I & II, Trophy Bear, Kings Quest, Antara, Hoyle Card games suite, SWAT, 他にもありますが多すぎて挙げきれません...。 Blizzard: StarCraft, StarCraft: Brood War, Diablo I, Diablo II: Lord of Destruction, Warcraft III, World of Warcraft。 Quicksilver: Shanghai Second Dynasty, Shanghai Mah Jongg Essentials, Starfleet Command, Invictus, PBS's Heritage: Civilization and the Jews, Master of Orion III, CS-XII。 Microsoft: 全ゲーム。 EA: テレビ ゲーム エンジン。 Byond: "世界" 開発プラットフォーム。
- インタラクティブ グラフィックス:
- Virtual Harlem (シカゴのイリノイ大学と中央ミズーリ州大学での プロジェクト) は,生徒が 1920 年代から 1930 年代のハーレム ルネサンスを文化体験ツアーとして体験できる学習環境です。Virtual Harlem は Yggdrasil と呼ばれる高水準 VR スクリプティング フレームワークの上の上に作られています。Yggdrasil は C++ で書かれており,他の C++ ライブラリ及びフレームワークを使用しています:
- SGI の OpenGL Performer グラフィックス ライブラリ。
- CAVElib VR ライブラリ。
- CAVEGui インタラクションに CAVE アプリケーションを提供するグラフィカル インタフェース ツール。
- CAVERNsoft G2 共同ネットワーク アプリケーション作成用の,オープンソース C++ ready2ware ツールキット。
- COANIM (the Collaborative Animator) AGAVE 上で 3D コンテンツを表示するためのアプリケーションです。AGAVE の背後にある全体的なコンセプトは,共同制作者が 3D コンテンツを共有できるよう,立体的なコンピュータ グラフィックスのプロジェクトに使われる Access Grid ノードに,低コスト PC ベースのグラフィックス ワークステーションを付け加えることです。
- Coin C++ アプリケーション プログラミング インタフェースを備えた高性能 3D グラフィックス ライブラリです。Coin では,殆ど全種類の科学・工学の可視化アプリケーションに適したリアルタイムのグラフィックスを描画する,シーングラフ データ構造が使われています。
- Agave: アクセス グリッド拡張仮想環境。
- Virtual Harlem (シカゴのイリノイ大学と中央ミズーリ州大学での プロジェクト) は,生徒が 1920 年代から 1930 年代のハーレム ルネサンスを文化体験ツアーとして体験できる学習環境です。Virtual Harlem は Yggdrasil と呼ばれる高水準 VR スクリプティング フレームワークの上の上に作られています。Yggdrasil は C++ で書かれており,他の C++ ライブラリ及びフレームワークを使用しています:
- Linux の KDE は C++ で書かれています。 K デスクトップ環境は Unix ワークステーション用の強力なオープン ソース デスクトップ環境です。Linux の主要なデスクトップ環境の一つです。C++ で書かれた約 300 の異なるパッケージが含まれており,オフィス スイート,ブラウザ,開発ツール,ゲーム,マルチメディア アプリケーションが含まれます。
- 主要な弾道ミサイル防御システムは C++ を使って出来ています。
- 電話システム: 少なくともここヨーロッパでは,C++ で書かれていないシステムを挙げるほうが殆ど容易だろうと思います:
- C++ は Alcatel通信システムに使われている唯一の開発言語であり,ネットワーク管理 (ILog Vies を使用) と実際の通信機器の両方に使われています。ドイツ (フランクフルト,ベルリン,ミュンヘン,及び北ドイツのどこか——私が思うにケルンかハンブルク) における主要通信ノードである FWIW は 100% C++ です。ドイツの異なる地域間の電話通信全てが,このマシンの一つを通過します。
- T-Mobile (ドイツ最大の携帯電話業者) は,料金請求システムと WAP ポータルの大半——動的 IP アドレス割当てなど——との両方に C++ を使っています。
- SETI@home データを分析し地球外生命体のサインを見つける,巨大な共同プロジェクト。一部が C++ で書かれています。
- Web 開発サポート ライブラリ Poco。 Poco 利用者の一覧 です。
訳責:長尾
許可を頂いて翻訳・公開しております。
誤訳等,この日本語訳に関するお問合せは 長尾 までお願いします。(まだ幾つか誤訳があるかと思います。)
2012-02-11 / 2012-02-11
0 コメント:
コメントを投稿