kuguru[クグル]kuguru[クグル]|人が、ITの世界をくぐり抜けるためのアイデアを。menuTOPビジネスプログラミングキャリアライフガジェットTOPプログラミングオブジェクト指向であるC++とJavaについて知りたいオブジェクト指向であるC++とJavaについて知りたいC++とJavaは、歴史が長く世界的に見ても汎用的に使われているうえ、ともにオブジェクト指向プログラミング言語です。両者ともGoogle社の開発に使われるGoogle三大言語(Java、C++、Python)に含まれています。本稿では、C++とJavaの特徴、および違いについて解説していきます。まとめ■C++とJavaC++とJava、それぞれの特徴をみていきましょう。▼C++の特徴C++は、オブジェクト指向、処理が高速、C言語と一緒に使えるといった特徴があります。Stroustrup(ビャーネ・ストロヴストルップ)によって開発されました。Classes」(クラス付きのC)という名称でしたが、1983年に現在のC++という名称になったのです。2011年に「C++11」へとメジャーバージョンアップされ、いろいろな機能が追加されました。2014年に「C++14」、2017年には「C++17」がリリースされています。OS(オペレーティングシステム)に使われています。3Dやシミュレーションゲーム用のプログラミングや、ロボット工学といった研究分野でもC++による開発が行われており、高速処理が求められる場面で活躍します。Machine)と呼ばれる仮想マシン上で実行するため、どんなプラットフォーム上でも動かせる点です。Microsystems(サン・マイクロシステムズ)社が始めた「Green」という名のプロジェクトで開発が始まりました。OS」と「Oak」と呼ばれるプログラミング言語を開発しました。「Oak」という名称は、すでに商標登録されていたため、Javaという名称に変更されたのです。1996年に、「Java1.0」が正式にリリースされ、2017年9月には最新版「Java9」がリリースされました。Microsystems社が買収され、現在はOracle社が管理、運営を行っています。システムのような基幹系システムや、比較的大規模なウェブアプリケーション開発に導入されることが多いです。Androidアプリケーション開発においては、標準言語と呼ばれるほどJavaがベースとなっています。■C++とJavaの違い続いて、C++とJavaの違いについて説明していきます。▼互換性Javaと互換性のある言語はありません。C++は、C言語の拡張版であるため、C言語と互換性があります。C++の環境下でC言語を動かすことができます。同一システム内でC言語とC++を合わせて使うこともでき、C言語で書かれた既存システムに、C++で機能追加することも可能となっています。▼テンプレートの有無C++の機能のひとつに、テンプレートがあります。テンプレートとは、データ型(文字データ型(String)など)をまとめた原形型を使えるようにし、データ型を気にせずコーディングが行えるという機能です。Javaにテンプレート機能はありませんが、テンプレートに似た機能に、ジェネリクスがあります。テンプレートとジェネリクスは、処理方法に違いがあります。テンプレートは、全展開方式であり、型の展開はコンパイル時に行われます。実行性能に優れている反面、ファイルサイズが大きくなるという欠点が特徴です。ジェネリクスは、型消去方式で、型の展開は実行時に行われます。パフォーマンスは劣りますが、コーディングがシンプルという利点があります。▼難易度C++の難易度は、かなり高く初心者にはおすすめし難い言語です。難易度の高いC言語の知識と、C++に追加されたオブジェクト指向の理解が必要となります。Javaに比べポインタの扱いやメモリ管理といった、よりコンピューターの深い部分に対する操作の実装が加わります。C言語を学習している場合には習得しやすいです。長い間、幅広く使われている言語のため、参考書やネット検索などでたくさんの情報を得ることができ、学習のしやすさは良いといえるでしょう。Javaの難易度は、C++に比べ低いです。C++にもいえますが、オブジェクト指向という概念や必要性の理解が難しいと感じる方もいます。ガベージコレクションと呼ばれるメモリ管理機能が標準で備わっているため、コーディング自体は、C++に比べ複雑ではありません。ライブラリが豊富なため、C++に比べ、さまざまな機能を容易に取り入れることができます。Javaにおいても、世界中で幅広く使われていることもあり、書籍やウェブラーニングなど学習材料が豊富で、学習に困ることはないでしょう。まとめC++とJavaは、オブジェクト指向という共通点がありながら、それぞれ異なる特徴をもっています。ともに、学習コストがかかりますので、初心者の方は用途に合わせて習得したい言語を選択しましょう。高速処理が求められるゲームが作りたい、研究開発で使うという場合にはC++、ウェブアプリケーションやAndroidアプリ開発がしたいということであれば、Javaの習得をおすすめします。