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公式アカウントです。 技術を愛するNTT DATAの技術者が、気軽に楽しく発信していきます。 当社のサービスなどについてのお問い合わせは、 お問い合わせフォーム nttdata.com/jp/ja/contact-us/ へお願いします。
