NTT DATA TECH
👴

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

に公開

はじめに

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

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

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

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

開発スタイルの違いを噛みしめる

まず、C/C++とPythonの大まかな違い、こうして並べてみると。。。

項目 C/C++ Python
抽象度 低い(ハードウェアに近い) 高い(人間に近い)
記述量 多くなりがち 少ない・簡潔
言語スタイル 手続き型、オブジェクト指向型 基本オブジェクト指向、スクリプト的にも使える

まずは抽象度か。

C/C++:低い(ハードウェアに近い)
Python:高い(人間に近い)

C/C++は、ハードウェアに近い。やけに近い。
メモリも、レジスタも、アドレスも。。。全部、自分に見せてくれた。
裸で歩いてる機械のようで、こっちも覚悟を決めて付き合わなきゃならない。

一方Pythonは。。。何も言わずにそっと布団をかけてくれるイメージか。
「何も気にしなくていいんだよ」と、言わんばかりに内部の仕組みを隠してくる。
まるで、やさしいコンシェルジュだな。
私が付き合って行きたいのはアルゴリズムか、それとも機械そのものか
今、問い直されている気がする。

次は、記述量だな

C/C++:多くなりがち
Python:少ない・簡潔

C/C++は、言いたいことを伝えるまでにやたらと時間がかかる。
構文、ヘッダ、ポインタ、セミコロン。。。書いても書いても、まだ足りない。
一行のために、五行くらい準備運動させられるような、そんな世界。

Pythonは。。。少しだけコードを見たことがあるが

# python
x = 10
print(x)

たった、これだけ。たったこれだけで、もう結果が出るらしい。
まるで会話じゃないか。
「これ、やって」って言うと、「うん」と返ってくる感じ。
余計な確認も、回りくどい説明もいらない。
初対面なのに、妙に気が合うタクシー運転手のように
無口だけど、目的地にはちゃんと連れて行ってくれる、そんな感じ。

最後は、言語スタイル。

C:手続き型 / C++:オブジェクト指向型
Python:オブジェクト指向、でもスクリプト的にも使える

Cは手続き型。それは昭和の職人。
一から十まで、自分で手を動かして、順番に仕上げていく。
無骨だけど、芯がある。嫌いじゃない。

C++のオブジェクト指向は、ちょっと小洒落てきた感じ。
名前を付けて、設計図を描いて、物事をモデル化していく。
一番自分が得意としてきた所だ。

Pythonは。。。オブジェクト指向にもなるし、気軽なスクリプトにもなる。
冷やし中華でもチャーハンでも対応してくれる街の中華屋みたいだ。
「どっちでもいいんです」それがPythonのスタンス。
自由すぎて、かえって身構えてしまっている自分がいる。

おわりに

C/C++とPythonには、どちらにも良さがある。
少し違いがわかってきたが、次回もう少し踏み込んでみるか。

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

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

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