#事の起こり
仕事でC++を学んでちょうど2ヶ月経ちました。私は学生時代はpythonを学んでいたので、両者の使用感の比較とプログラミング初学者にC++進めるべきか否か、個人的な感想を書いてみたいと思います。
#C++に関して感じること
やっぱり、噂に違わず難しい言語だと感じます。メモリ管理を意識しながらオブジェクト指向を活用するのはやはり難しいです。コンパイラもメモリに関するエラーとオブジェクト指向に関するエラーを吐いてくるので、何言っているのか分からない状態の時も非常に多く対処も大変です。(私は職場の研修でC言語をみっちりやりましたがそれでもきついです)。最も難しいと言われる所以を実感しています。
#C++の良い点
###①勉強になる
C++に取り組むだけで、オブジェクト指向からポインタまで、メモリ周りの知識を幅広く学ぶことができます。むしろ、最初からC++でモノを作ることは捨てて、プログラミングそのものの知識を深めるためだけに学んでも良い言語なのかも知れません。
###②言語仕様に精通するだけで市場価値が高まる
C++を使いこなせる人はあまりいません。それ故に、C++を使いこなせる人の市場価値は高いです。(そう信じたい)。それに組込みではpythonと比べて、圧倒的に使用されています。将来、ロボティクスという男の憧れの分野に携わりたい人は断然、C++ですね。
###③速い
C++は適当に書いても速いです。私がpythonから入ったからかも知れませんが比較するとやはり速いです。他の言語でアルゴリズムや処理の手順を工夫してもC++より遅いなんてことは多々あります。組み込みやゲームプログラミングなど速さ至上主義な現場で使われる理由も納得です。
###④他の言語習得のハードルを爆下げできます。
C++を学んで2ヶ月くらいでJavaのコードはほとんど読めるようになりました。最近は凋落したと言われているJavaですが、圧倒的に求人も多く安定しています。なので、C++を学ぶ事でJavaの学習のハードルも下げられる点はお得だと感じます。(C++が読めたらpythonも簡単に読めると思います。)
色んな記事で、C++を学ぶ事で他の言語の習得ハードルを下げることができると言われていますがこれは真実だと感じます。
#C++と比較したときのpythonの良い点・悪い点
###①言語仕様が簡単(良い点)
**誰が書いてもコードの意図が伝わりやすい。**これはpythonの素晴らしい利点の一つです。学習に行き詰まった時も、検索して出てきたコードが読みやすいので問題解決の時間も短くて済みます。C++だと適当に検索して出てきたコードすらも、工夫が凝らされており一筋縄では読めないことも多いです。問題に直面した時の解決の速さはpythonの圧勝だと感じます。
###②簡単になんでもできる。(良い点)
比喩抜きで、pythonはなんでもできます。人工知能もデータサイエンスも通信、パケット解析、本当になんでもできます。しかも、簡単です。pythonを使えるだけで人生で学べることの範囲が格段に増えて楽しいです。面白そうな分野の参考書も多いです。C++も昔からあるので、なんでもできることはできますが**ライブラリ自体が難しく、自由の代償を払わされている感じが拭えません。**あと、C++は人工知能などの面白そうな参考書が少ないです。(分厚い言語仕様の本の数ならC++はどの言語にも負けません!!)
###③他のpython使いの人との差別化が大変(悪い点)
①でも触れましたが、誰が書いても同じようなコードになるので初心者と中級者を隔てる壁が低く、pythonを書けるくらいでは市場価値は高まりません。pythonの求人を見たらわかることですが、pythonを使って活躍できる人は人工知能やデータサイエンスの知識を持っており、バックグラウンドが強いです。結果として、python自体の学習コストは低いがpythonで活躍するためのコストは高く、結果として求められる努力の量はC++と変わらないという印象を受けます。
#初学者はどちらを選択すべきか
私の個人的な意見ですがやはりpythonです。理由は単純で、色んなことができて楽しいからです。同じ学習時間をかけた場合に、できるようになることの幅の広さはpythonが圧倒的だと感じます。これは、プログラミング学習をする上で大きなモチベーションになります。(結局、C++だろうがpythonだろうが途中で挫折したら意味ないですしね)。
**私はC++は面白くやりがごたえのある言語だと感じていますが、大学でpythonからプログラミングの楽しさを学んで、研修でC言語とメモリ周りの知識を習得した上でそう感じています。**正直、pythonとcを学んでいなかったら、1週間くらいでc++学習に挫折しても不思議はなかったと思います。
#結論
ステマみたいになってしまいましたが、やっぱり、初心者はpython。これに尽きます。しかし、pythonはインタープリンタ言語でC++はコンパイラ言語なので一言に比較できない面もあります。両方利点があると言いたいところですが、初学者にオススメするなら私はpython一択です。