概要
「C/C++」と表記されることが多く、プログラマーの中にも「CとC++は同じもの」あるいは「Cってなに?」な人、「C++はCの新しいバージョン」くらいの認識の人もいます。
ですが、実際には、C言語とC++言語は別の言語です。
まず、C言語とはいっても、2014年現在でも、様々なバージョンのC言語が存在します。
C++言語は、C言語と同じ仕様を多く含むため、そのコンパイラーもC/C++を、ほとんど同じものとして扱い、入力ファイル拡張子の違いくらいで、区別して扱っています。
さて、そんなこんなの、C/C++の深遠、見てみましょう。
C言語
大きく4種類のバージョンが存在しています。
1つが、「K&R」と呼ばれるバージョン。次が、1989/1990年に標準化された「C89」「C90」と呼ばれるバージョン(中身は同じなので、以降、「C90」と表記)。そして1999年に標準化された「C99」。そして2011年に標準化された「C11」があります。
それぞれのバージョンで、徐々に仕様が追加されたり、C++言語の仕様を取り込んだり、逆に削除された仕様も存在します。
また、一番最初の規格「K&R」は、国際的な仕様書があったわけではなく、書籍として発売されたものでした。このことから、少し曖昧な部分があったりしたため、K&Rを独自解釈し、コンパイラーを開発したメーカーが多かったため、K&Rには色んな「仕様」が存在します。
また、C99、C11に対応しているコンパイラーでも、すべての仕様を実装しているわけではありません。
ですが、それでも同じ構文で書くことで、同じ動作をすることが保証されていることが、どれだけ重要で、ソフトウェアの進歩に寄与したか、計ることなんてできません。
ちゃんと、言語仕様を知ることで、最大限にコスパのいい開発しましょう。
C++言語
最も最初のバージョンは、「C with Classes」と呼ばれていました。「C++」と呼ばれるようになったのは、1983年です。当初は、国際標準規格ではなく1985年出版の「The C++ Programming Language」がその仕様書でした。その後、1989年にバージョン2.0が公表され、1990年出版の「The Annotated C++ Reference Manual」(通称:ARM)が仕様書として使われていました。その後、1998年にようやく国際標準化され、ISO/IEC 14882:1998(通称:C++98)となりました。ただ、この時点では、まだ国際標準の意味を各社コンパイラメーカーも理解していなかったのか、コンパイラごとの方言、不具合といってもいい出力結果、独自解釈など様々な問題をはらんでいました。
その後、ISO/IEC 14882:2003(通称:C++03)、ISO/IEC 14882:2011(通称:C++11)として規格を膨らませながら、コンパイラも国際標準に沿うようになっていきました。また、徐々にではありますが、古き悪しき(バグを生みやすい)構文も排除されつつあります。
Boost Library
OpenCV Library
開発環境
統合環境
- Microsoft Visual Studio
- Eclipse
- NetBeans
- High-performance Embedded Workshop
- Wide Studio
- Xcode
ビルド
- make
- SCons
- Autotools
- waf
- CMake
- Ant
デバッガ
- gdb
解析
- Valgrind
コンパイラ
- ARM CC
- Borland C++ Compiler
- C++ Builder
- CINT
- clang
- Comeau C++
- Compaq C
- Cygwin
- DIGITAL C++
- Digital Mars C++
- Emx GNU C
- GNU C
- Intel C++ Compiler
- Microsoft Quick C
- Mix Power C
- Objective-C
- OpenC++ Compiler
- Renesas CC-RL Compiler
- Symantec C++
- TurboC
- Watcom C/C++
- Wind River Compiler
- Zortech C/C++