NTT DATA TECH
👴

C/C++の世界に閉じこもっていたオジサンがPythonに触れてみる  ~基礎編~ 第2/10回

に公開

はじめに

こんにちは、NTTデータに勤務する一人のオジサンです。

これまでC/C++言語を使って、がっつりとポインタやら参照やらに向き合いながら、プログラムを書いてきました。構造体と仲良くなり、クラスに振り回され、newとdeleteに責任を持つ。そんな人生でした。

しかし時代は変わり、AIだ、データサイエンスだ、機械学習だと騒がれる中、「とりあえずPythonに触れないとまずい」という危機感に駆られて、Pythonの世界へ足を踏み入れた。。。

そんなオジサンの独り言です。

実行速度・パフォーマンスを想う

項目 C/C++ Python
実行方式 コンパイル インタプリタ
実行速度 非常に高速 遅め
メモリ管理 手動 自動
利用シーン 組込み系、ゲーム開発、OS開発など データ分析、Webアプリ、スクリプト処理など

まずは実行方式

C/C++:コンパイル
Python:インタプリタ

C/C++は、まず構えてから始まる。
ソースを書いて、コンパイルして、リンクして。。。仕込みが命。

Pythonはインタプリタか。
要するにその場で調理して、その場で出すスタイル。
出たとこ勝負で、「熱いうちにどうぞ」って感じだな。

続いて実行速度

C/C++:非常に高速
Python:遅め

C++はエンジン積んで走る車タイプ。タイムを刻むならこっちだな。
でもPythonは速さじゃない。
近くのスーパーに行くなら、自転車で十分ってことなんだろうな。

メモリ管理。これは見逃せない項目だ

C/C++:手動
Python:自動

C/C++のメモリ管理は、まさに自己責任の世界だった。
mallocしたらfreeする。newしたら、deleteする。
やり忘れればリーク、間違えればクラッシュ。
それでも、きちんと片づけることで、初めて「ちゃんとやった」と思えた。
あれはもう、食べた器を自分で洗って、拭いて、棚に戻すような生活だったな。

それに対してPythonは自動か。
「食べ終わったら、席を立って帰ればいいんです」って顔してる
(そう、C++に更に++した奴。C#と同じだな)
いや、確かに楽だよ。
ガベージコレクションが勝手にやってくれるなら、それに越したことはない。
けど、どこかそわそわするんだよな。
「本当にあの皿、流しに持ってってくれたんだろうな?」って。

まぁ、それでも、時代はそういう流れだ。
自分で背負い込むばかりじゃなくて、任せる潔さってのもあるのかもしれない。
けど、たまに自分で洗いたくなるときがある。
そういう性分なんだよな、C/C++で育ったオジサンってやつは。。。

で、最後に利用シーン

C/C++:組込み系、ゲーム開発、OS開発など
Python:データ分析、Webアプリ、スクリプト処理など

今までの内容を踏まえると、当然ながらC/C++は
現場だ。まさに現場仕事。汗とコードと仕様書のにおいがする。

Pythonは、データ分析、Webアプリ、スクリプト処理
ノートPC一つで、サクサクと世界を相手にしてる。
しかも涼しい顔して、だ。

なんだか、明らかに違う時代の匂いがする。
昔ながらの定食屋と、最近できたカフェみたいな。
ただ、どっちが正しいとかじゃない。
腹が減ってるときに、どっちの暖簾をくぐりたいか
それだけの話なんだろうな。

おわりに

外からC/C++とPythonの違い眺めてはきたものの、結局のところは食べてみないと味はわからない。
そう。外から見ているだけじゃPythonの本当の顔はわからない。
料理も、言語も、最後は手を動かさなきゃ始まらない。

よし。そろそろ、コードを書いてみるとするか。

デジタルテクノロジーディレクター®

デジタルテクノロジーディレクター®

NTT DATA TECH
NTT DATA TECH
設定によりコメント欄が無効化されています