1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

日々の隙間で何かを学ぶAdvent Calendar 2023

Day 20

PythonとC/C++を使っていて...

Posted at

PythonとC/C++を使っていて思ったこと

 pythonとC++をこれまで使ってきて、違っている点や困ったことについてまとめてみました。それぞれの違いを理解することで、各言語の強みや特徴をつかむことができると思っています。

まずは私のそれぞれの言語の使用歴を紹介させてください。

python歴

 数年前に本を読んで勉強しました。機械学習分野や便利なライブラリを使用するために身につけました。気象庁のホームページからダウンロードできる気象データで天気予報のプログラムなどを作成していました。
 今年に入りE資格を取るにあたり学びなおしをしました。最近は生成AIで簡単にコードを作成してくれるのでかなり効率よく勉強できました。マナビDXQuestでのAIモデル作成課題でもpythonを使用しました。

C/C++歴

 C++は現在の業務で使用しています。学生時代に作成していたロボットのプログラムはほぼすべて、CやC++でコーディングしていました。
 今回は、pythonとの比較のため、CとC++を同じくくりとして説明させていただきます。CとC++を同じ言語ととらえている訳ではありませんので、ご了承ください。

それぞれの違いで困ったこと

それでは、本題の2つの言語の違いで困ったことを挙げていきたいと思います。

コメントの違い

pythonでは、1行限りのコメントには#を使用します。

# pythonでのコメントです。

C++では、//でコメントを表します。

// cppでのコメントです。

この違いは理解していれば、何も問題ありません。しかし、pyhtonにも//が出てくるのです。

ans = 7 // 3 # pythonでは整数の割り算の商を求めるときに使用する。

各種エディタでは、シンタックスハイライトという機能で色分けされるため、わかりやすいですが、E資格の勉強で使用した書籍では、色分けされていなかったので//以降をコメントと思ってしまったのです。気づくのに時間を要してしまいました。

暗黙の型変換

 pythonでは、便利なことに暗黙の型変換がよく行われます。C++をよく使っていた私にとっては、現在使用している変数の型が何かを理解するのに少し苦戦しました。慣れてくるともう少し便利になるのでしょうか。精進したいと思います。

行列の扱い

 E資格の勉強のためpythonをよく使っていたため、ディープラーニングにおける行列計算などがよく出てきました。やはり、機械学習やデータ分析でよく使われるpythonでは行列や配列を簡単に扱えるようなライブラリが多くサポートされていました。C++をでは行列の計算をあまりやらなかったため、理解が不十分だったといえます。

メモリの管理

 C++の特徴と言えばメモリの制御や管理の柔軟性です。それゆえにメモリの確保や解放も意識しながらコーディングを行っていきます。pythonでは、メモリの管理は自動で行われるため、まったくと言っていいほど意識しませんでした。これも使用言語による違いといっていいでしょう。

もっと理解を深めていく

 今回挙げた違いを見てみるだけでも、各言語による特徴が表れていました。特にpythonでは、処理が簡略化や省略されていることが多くシンプルに記述できる言語と言えるでしょう。これからも各種言語を使用していくことになるので、もっと理解を深めていきたいと思います。

1
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?