【C++】なぜC++を習得しようと思ったのか(Javaとの比較)

みなさん、こんにちは!
こうへい(@kohei72901660)です。
C++ってどんなプログラム言語?
他のプログラム言語と比べると何がいいの?
今回はそんな疑問に答えます。
Javaを5年以上経験してきた私がなぜC++を習得したいと思ったのかを、その理由をふまえながらC++の特徴について書きたいと思います。
そもそもC++ってなんだろう

Wikipediaには以下のように書いてます。
C++(シープラスプラス)は、汎用プログラミング言語のひとつである。派生元であるC言語の機能や特徴を継承しつつ、オブジェクト指向、ジェネリック機能、例外処理といったプログラミングパラダイムが追加されている[1]。出典元:Wikipedia – C++
なるほど、1983年に登場した言語でらc言語のきのうを拡張した言語なんですね。
オブジェクト指向。私はjavaをメインに扱ってきたので親しみやすいです(^^)
では、javaとは何が違うのでしょうか。
Javaの特徴

javaもオブジェクト指向言語です。
そして、「中間言語」とも呼ばれます。
その由来は「コンパイラ言語」と「インタプリタ言語」の2つの特徴を持っているからです(^^)
一回クラスファイルにしてから、インタプリタであるJVM(java virtual machine )で実行します。
また、メモリを自分で管理しなくてもいいです。ガベージコレクションという機能のおかげで自動的にメモリを解放してくれます。メモリを意識しなくてもいいのでjavaは習得する時間が短時間かと思います。
しかし、メモリを管理しなくても良いのですが処理に時間がかかります。スクリプト言語と比較すると処理は早いと思いますが、C++と比較するとやはり処理に時間がかかります。
C++の特徴

コンパイラ言語です。
javaとの大きな違いは、処理が早い、メモリを自分で操作できることかと思います。
処理が早い理由としてはjavaでは便利な機能がすでに用意されています。ただ、その中で実際何をしているかを知らなくてもよくても使えるので便利なのですが、実際メモリを多く使ってしまいます。
一方、C++はもっと低レベルな処理を行う機能があるので細かな調整が可能であるのと同時にメモリを最低限で抑えることができます。(ちゃんとメモリ管理ができていればですが笑)
よって、処理が早いのです。
使用するリソースを最低限に抑えることができるのは開発をする上でとても重要なことかと思います。(サーバのスペックをあげるのもいいですがお金かかるので笑)
以上のことから、勉強するにはとっつきやすいイメージではありますが自ら考えなければいけないことが多いため習得するには時間がかかります。
C++を習得しようと思った理由
これまでjavaとの比較をしてきました。
なぜ私がC++を習得しようと思ったのか。について説明します。
使用するメモリを少なくでき、処理を高速化できる。
1点目に上げる理由としては、何度も話してきましたが、処理が早いことが大きいです。
以下の記事でも話していますが、開発工程の中でシステムテストがあります。簡単に言うと利用可能かどうか性能を確認します。
膨大なデータを扱うシステムであると、javaだと処理に時間がかかりすぎる経験があります。感覚的に実際のデータ量の100倍ぐらいのメモリを確保してるイメージです。
データ量が少なければとくに気にしなくてもいいのですが、壁にぶち当たりました。笑
JNI、JNAを使う機会があったから
javaのフレームワークにJNIとJNAがあります。いわゆる、C/C++で書かれたプログラムとjavaで書かれたプログラムを連携させるフレームワークです。
処理が重い機能をC++で書くことになり、コントロール側をjavaで書く機会がありました。
少しC++に触れたので勉強したくなっちゃいました笑
プログラミング言語習得やシステム開発をする上で役立つ
2点目は言語習得やシステム開発をする上でC++の知識はとても役に立つと思ったからです。
私はjavaをメインに扱いますが、javaでさえもオブジェクト指向言語であるので、同じオブジェクト指向言語を理解するのにあまり時間がかかりません。(習得とは言ってません。あくまで理解です笑)
同じようにC++を習得した場合、javaの知識がより深くなることや、他言語習得の役に立つと思ってます。前でも話しましたが低レベル層の機能を使えるので(^^)
また、linux OS はc言語で書かれているので、開発をする上で役立つと思います。システムエラーがあった場合もソースを無理やり読めれば原因究明できそうです。
最後に
以上、C++を習得しようと思った理由をjavaと比較しながら書いてみました。
同じようなこれからC++習得したいと思っている方の参考になれば幸いです!
人気記事①:【決定版】Java初心者におすすめの入門書5選【結論:関連技術も学ぶべき】
人気記事②:現役エンジニアがおすすめするプログラミングスクール5社:無料あり
