該当キーワードの検索推移
wikipediaでの検索結果
C++
C++(シープラスプラス、日本においてはシープラプラ、シータスタス、さらに略してシープラとも)は、汎用プログラミング言語の一つである。高度な機能を使用してもプログラムの実行性能が低下しすぎないように、言語仕様・ライブラリに様々な工夫が施されている。1990年代以降、C++は、最もよく利用される商用のプログラミング言語の1つとなっている。静的な型システムを持ち、手続き型プログラミング・データ抽象・オブジェクト指向プログラミング・ジェネリックプログラミングといった複数のプログラミングパラダイムをサポートするマルチパラダイムプログラミング言語である。
C++は、1983年にベル研究所のコンピュータ科学者であったビャーネ・ストロヴストルップが、C言語の拡張として開発した。当時の名前は「C with Classes」(クラス付きのC言語)というものであった。拡張はクラスの追加に始まり、仮想関数、多重定義、多重継承、テンプレート、例外処理といった機能が続いていった。C++言語の標準は1998年にISO/IEC 14882:1998として承認され、現在のバージョンは2003年に制定されたISO/IEC 14882:2003である。非公式にであるが新しいバージョンが策定中で、2010年までには正式に制定されるであろうことを見越し、「C++0x」と呼ばれている。(多くの人はおそらくそれが09年ギリギリになるだろうと考えている。)
歴史ストロヴストルップはC with Classesの開発を1979年に開始した。彼は大規模なソフトウェアの開発に有用な特徴をSimulaが備えていることに気がついたが、Simulaは実行速度が遅く実用的でなかった。一方でBCPLは実行速度こそ速かったものの、大規模なソフトウェア開発を念頭に置いた場合にあまりにも低級であった。これらの事情を鑑みて、ストロヴストルップは当時既に汎用的な言語であったC言語にSimulaの特徴を取り入れることを試みた。この取り組みにあたってはALGOL68 やAda、 CLU、 ML等の言語の影響も受けている。最初はクラスと派生クラス、型検査機構の強化、インライン関数、デフォルト引数の機能を、Cfrontを介してC言語に追加した。1985年10月に最初の商用リリースがなされた。
1983年にはC with ClassesからC++に名称を変更した。この際に、仮想関数と、関数と演算子の多重定義、参照型、
const型、ユーザー制御可能な自由領域メモリ制御、型検査機構の改良、新しいコメント形式(「//」による行レベルのコメントアウト)などの機能が追加された。1985年には『The C++ Programming Language』の初版が出版された(邦訳『プログラミング言語C++』(1988年))。この時点では公式な標準が策定されていなかった為に、この本が事実上のリファレンスとなった。1989年C++のヴァージョン2.0として、多重継承と抽象クラス、静的メンバ関数、constメンバ関数、protectedメンバ等の機能が追加されたものがリリースされた。1990年に『The Annotated C++ Reference Manual (ARM)』が出版され、将来の標準化の土台となるものを提供した。後に追加された機能にはテンプレートと例外処理、名前空間、新形式のキャスト、ブール型が含まれた。C++言語の進化に伴い、標準ライブラリもまた進化していった。C++標準ライブラリに最初に追加されたのは、従来のC言語の
printf や scanf といった関数を置き換えるしくみを提供する、ストリームI/Oライブラリであった。それ以降の標準ライブラリへの追加で最も重要なものはStandard Template Library (STL)である。長年にわたる作業の後、ANSIとISOの合同委員会はC++言語を1998年に標準化した(ISO/IEC 14882:1998)。1998年の標準の公式なリリースから数年間に渡って委員会は不具合の報告を続け、2003年に訂正版を出版した。2005年に「Library Technical Report 1」 (TR1)というテクニカルレポートがリリースされた。これは標準の公式な一部ではないが、次のバージョンのC++に含まれると期待される、標準ライブラリへの数多くの拡張を与えている。現在メンテナンスされているC++コンパイラの大部分が、TR1のサポートに取り組んでいる。
C++という名称この名称はRick Mascittiの功績で、最初に使用されたのは1983年の12月である。初期の研究期間では、開発中の言語は「C with Classes」と呼ばれていた。最終名は、変数の値を1つ加算する、C言語の「++」演算子からの派生である。また一般的な命名規則での「+」の使用は、機能強化されたコンピュータプログラムを意味する。ストロヴストルップによれば「この名前は、C言語からの変更の革新的な本質を示している」ということである。C+は、より初期の無関係なプログラミング言語の名前であった。
ストロヴストルップは著書「The C++ Programming Language」の前文で名前の起源を語り、ジョージ・オーウェルの「1984年」の付録から「C++」が連想されるかもしれないと付け加えている。新語法という架空の言語の解説に宛てられた3つの章の中に、科学技術に関する専門用語とジャーゴンの解説に宛てられた「C vocabulary」という章がある。新語法で「ダブルプラス」は最上級の修飾語である。ゆえに新語法で「C++」は「最も極端な専門用語またはジャーゴン」という意味になるであろう。
1992年、Rick Mascittiは名前について非公式に質問されると、彼はおふざけのつもりで命名したという旨の回答をした。彼はこの言語の正式な名称になるとは夢にも思わなかったのである。
古くからの問題伝統的にC++コンパイラには多岐に渡る問題点がある。C++言語の標準では、名前修飾や例外処理の実装や、その他の実装依存の機能については規定しておらず、異なるコンパイラが生成するオブジェクトコードには互換性がない。しかし、C++言語の標準化とは別に、特定の機種やOS上で動作するコンパイラを標準化する試みがある(例:C++ ABI)。このような機能のために、現在では多くのコンパイラが第二の標準に対応している。
長年にわたって、異なるC++のコンパイラはC++言語を異なるレベルの遵守性を持って実装してきて、それらの実装はテンプレートの部分特殊化のようにさまざまな領域に広がっていた。最近のほとんどのC++のコンパイラは標準C++ 1998のほとんどの機能をサポートしている。論点の1つは 、テンプレートの宣言から離れてテンプレートを宣言することを許す
export というキーワードである。最初に export を実装したコンパイラは2003年初め(規格の発表の5年後)にリリースされたComeau C++であった。続いて2004年Borland C++ Builder Xのベータ版のコンパイラがやはり export を実装してリリースされた。これらどちらのコンパイラもEDG C++フロントエンドに基づいていた。多くのC++の本(例えばイヴァン・ホートンのBeginning ANSI C++)がコンパイルされないだろうが、export というキーワードに関する問題への参照がなかった export というキーワードを実装したコードの例を提供したということも心に留めておくべきである。Microsoft Visual C++やGCCのようなコンパイラはまったくそれをサポートしていない。C++標準化委員会の書記官ハーブ・サッターは、export は将来のC++の標準から除かれるべきである (http://anubis.dkuug.dk/jtc1/sc22/wg21/docs/papers/2003/n1426.pdf)と勧めていたが、結局結論はそれをC++の標準に残すというものに達した。将来C++に対しては、今もなお要望が絶えない。特にBoostはC++の方向性の決定に大きく貢献し、さらにC++標準化委員会へ改良すべき点などを意見している。現在はマルチパラダイムプログラミングをより自然に行えるようにすることに力が注がれており、たとえばBoostでは、C++の関数型プログラミングやメタプログラミングの可能性を模索している。
C++ 0xと呼ばれている新しいバージョンのC++標準ではこれらが取り込まれることになると思われる。
特徴
C言語に、オブジェクト指向プログラミングをサポートするための改良が加えられたものといえるが、他のオブジェクト指向を念頭において作られた言語と違い、旧来のCと同様に手続き型言語としても扱えるという特徴がある(このとき、C++をbetter Cというふうに呼ぶことがある)。また基本的にC言語に対して上位互換性がある。初期のC++はCへのトランスレータとして実装された(すなわち、C++プログラムを一旦Cプログラムに変換してからコンパイルしていた)。
その後、先祖であるC言語の標準規格制定時には、
const修飾など、C++の機能がC言語に取り入れられることにもなった。現在ではC言語とC++との間には厳密な互換性はない。特にC99の出現により、C言語との互換性は完全に失われている。次のような多種多様な機能を持っており、言語仕様は大変複雑である。言語仕様を完全に満たしているコンパイラは、現在数えるほどしかない。
単一行コメントかつてC言語とC++との分かりやすい差異として、
// で始まり改行で終わる、単一行コメントの有無があった。単一行コメントはもともと、C言語の祖先にあたるBCPLに含まれていた仕様である。現在のC++のコンパイラの多くがC言語のコンパイラとしても使えるようになっているのと同様に、C言語が生まれて間もない頃は、C言語に加えB言語やBCPLのコンパイルができるコンパイラが用いられていた。それらコンパイラは、C言語のソースであってもBCPLと同様に単一行コメントが使用できるよう独自の拡張がなされていたため、BCPLの単一行コメントに慣れ親しんでいたプログラマ達は、C言語でも単一行コメントを使い続けた。その慣習がC++の誕生時まで生き残っていたため、C++では単一行コメントを「復活」させることになったのである。
そのためもあって、C言語での仕様外の単一行コメントの使用は半ば常習と化し、現在ではC99によって、C言語でも正式に単一行コメントがサポートされるようになった。
(
//に対応していない古い仕様のCコンパイラでもcppを対応したものに変更することにより使用可能)標準ライブラリC++では、C言語には存在しなかった、スタックや動的配列などのデータ構造を表現するライブラリが存在する。
その標準ライブラリの中でも特にコンテナ、イテレータ、アルゴリズムを表現するものをSTLと呼ぶ。STLでは、C++のテンプレートと相まって、非常に強力で汎用的なデータ操作を行える。
外部ライブラリ以下に、C++で広く使われていると思われるライブラリを挙げる。
主なC++処理系脚注関連項目参考文献
*
X3014
---------------------------------------------- 出典:「フリー百科辞典ウィキペディア」(2009-01-01)
Text is available under GNU Free Documentation License.
|
ネットで人気のキーワード(2010年02月10日 14:50現在)
- 立松和平(320ポイント)
- 機動戦士ガンダム(141.6ポイント)
- ギリシャ問題(116.6ポイント)
- バレンタインデー(107.6ポイント)
- ベッキー・クルーエル(100ポイント)
- 次長課長(100ポイント)
- プリウスリコール(100ポイント)
- リトルの公式(100ポイント)
- プリウス(100ポイント)
- 笑顔がごちそう ウチゴハン(70ポイント)
MicroAD
googleブログ検索で「C++」を検索
- 標準カメラは位置情報が埋め込まれるので注意! - hellkite 日記と雑記 ...(hellkite 日記と雑記とメモ。様)【1時間前】
- PHP & RUBY » Blog Archive » Yahoo! UI Library fonts.css(PHP & RUBY様)【2時間前】
- hirochan's blog: パーツ補強したくなる(hirochan's blog様)【2時間前】
- i4mx9lu: SALE-RMT(i4mx9lu様)【2時間前】
- 台湾、中国を中心に欧米、東南アジア等に出張 商社営業(19613) - 中国 ...([ALA!中国] 最新求人情報様)【3時間前】
- Contactsパッケージ « Symbian Foundation Japan公式ブログ(Symbian Foundation Japan公式ブログ様)【3時間前】
- ゾーホージャパン、マルチプロトコル対応エージェント開発ツール ...(OpenPress オープンプレス|無料のプレスリリース投稿様)【5時間前】
- PSP xvi - PSPプログラミング DXライブラリPortable でプログラミング ...(PSP xvi様)【7時間前】
- axis of evil Google: 2/9 OpenOffice.org 3.2(axis of evil Google様)【7時間前】
- Windows Azure と インターオペラビリティ « Agile Cat — Azure ...(Agile Cat --- Azure & Hadoop --- Talking Book様)【7時間前】
- 本の虫: Variadicとは何ぞや(本の虫様)【9時間前】
- FreeBSD ports最新ニュース FreshPorts:devel/bouml - 4.18.1,1(FreeBSD ports最新ニュース FreshPorts様)【9時間前】
- たのしいRuby 第5章終了 めぐり逢う世界(めぐり逢う世界様)【9時間前】
- FreeBSD ports最新ニュース FreshPorts:devel/glui - 2.36(FreeBSD ports最新ニュース FreshPorts様)【10時間前】
- C++/HSPでSTGを作っていく blog 五月雨アーカイブ購入(C++/HSPでSTGを作っていく blog様)【10時間前】
- ブログレーダー(Blog Radar)(ブログレーダー(Blog Radar)様)【11時間前】
- 本の虫: C++0x本:データメンバーかメンバー変数か(本の虫様)【12時間前】
- 太陽の恵み やりがい(太陽の恵み様)【12時間前】
- 電脳研究部開発日誌 いろいろと深く考えると面白かったりする(電脳研究部開発日誌様)【12時間前】
- 黒塗り桐下駄配列 2010-02-10 版 - blechmusik2の日記(blechmusik2の日記様)【12時間前】
- 『GNU Make 第3版』 - かわちょ日記(かわちょ日記様)【12時間前】
- プログラミング日記 ウィンドウのクラス化(プログラミング日記様)【13時間前】
- Flash Rush : Mac OS X からlinuxへの引越し - livedoor Blog(ブログ)(Flash Rush様)【13時間前】
- 小物ツール改良と正規表現ライブラリ 新幻想的独り言3(新幻想的独り言3様)【13時間前】
- 堀アゲ隊の掘サゲ隊の googleのgoのお勉強(コメント編)(堀アゲ隊の掘サゲ隊の様)【13時間前】
- nDiki: Twilog で tweet をセカンダリロギング (2010-02-09)(nDiki様)【14時間前】
- C++グラフィカルユーザインタフェースで、OpenGLとそのビルトインGLUTエミュレーションを通して3Dグラフィックスを ...' target='_blank'>FreeBSD ports最新ニュース FreshPorts:x11-toolkits/fltk - 1.1.9_2(FreeBSD ports最新ニュース FreshPorts様)【14時間前】
- アイ・ティ・ブックス: 本日の新刊【2010.02.10】(アイ・ティ・ブックス様)【14時間前】
- 第16回 Scala 2.8の新機能 (2) --- コレクションライブラリの再実装 ...(ITpro総合様)【14時間前】
- パーツは揃ったが: T.Ishiiのソフト開発記(T.Ishiiのソフト開発記様)【14時間前】
yahooブログで「C++」を検索
- [C++][win32][アセンブラ]まあポインタってそういうものだよね(名古屋313の日記様)【2時間前】
- 2010/02/13の新刊(書籍新刊案内様)【6時間前】
- [C++]variantの実装(1) -みんな大好きテンプレートメタプロ ...(while( c++ );様)【11時間前】
- リスト(漆黒の翼を纏いこの命に誓う様)【15時間前】
- C++のキャスト演算子私的使用頻度順位(無為空間様)【15時間前】
- [日記][Memo][C++]有限体上での連立方程式(ガウスの消去法)(落書き、時々落学様)【17時間前】
- [C++]すなおにデシリアライザを書くのが精神衛生上よい気がする(エンジニアのソフトウェア的愛情様)【17時間前】
- ゾーホージャパン、マルチプロトコル対応エージェント開発ツ ...(ComSearch プレスリリース(無料記載)様)【19時間前】
- MT4EAに自作DLLを組み込む-その3(マルチスレッドの考慮)(ヘパイストスの錬金ロボット!様)【19時間前】
- C++がキライな理由(にがつうさぎ様)【19時間前】
- [C++] BoostCon 2010 : 5/11(Faith and Brave - C++で遊ぼう様)【20時間前】
- [Programming][Algorithm][C++]人材獲得作戦の問題を反復深 ...(簡潔で覚えやすいタイトルを3秒で思いつく程度の能力様)【20時間前】
- エイチ(.h-IT用語辞典バイナリ様)【22時間前】
- [AIZU Online Judge][JOI][C/C++]Volume 5 / 0540->0541(tnn-jp.hatenadiary様)【23時間前】
- SOA技術インフラ「Apache Tuscany SCA Java 1.6」リリース(SourceForge.JP Magazine様)【1日前】
- [emacs]開いている全てのバッファの.cppと.hをrevert-buffer ...(trotrの日記様)【1日前】
- C++には敵わない(はてなかよっ!様)【1日前】
- フィールドとプロパティの違い(R.Tanaka.Ichiro's Blog様)【1日前】
- xfy plannerの「山積みスケジューラ」(Florian’s NewestDiary様)【1日前】
- RubyでExcelを操作するときのTips(hirax.net様)【1日前】
- WinFXの蹉跌(Florian’s NewestDiary様)【1日前】
- diary(bsiyoの日記様)【1日前】
- [C++]virtual constructor...?(エンジニアのソフトウェア的愛情様)【1日前】
- ラブプラス PS3で発売!?(PSPを全力活用するBLOG様)【1日前】
- [本]ゲームプログラマになる前に覚えておきたい技術(半歩前で背走様)【1日前】
- [本]ロベールのC++入門講座(半歩前で背走様)【1日前】
- [C++] BoostCon 2010 : 5/9~5/10(Faith and Brave - C++で遊ぼう様)【1日前】
- [C/C++][Visual Studio][雑記]Visual C++ で std::min std:: ...(BiBoLoG様)【1日前】
- 素人が始めるSourceMODその2(シロウトが始めるカスタムマップ様)【2日前】
- 来年どうしよう?(毎日がEveryDay!様)【2日前】
![Validate my RSS feed [Valid RSS]](http://navig1.sakura.ne.jp//image/valid-rss.png)